CN115516443B - 根据架构生成优化逻辑 - Google Patents

根据架构生成优化逻辑 Download PDF

Info

Publication number
CN115516443B
CN115516443B CN202180019193.3A CN202180019193A CN115516443B CN 115516443 B CN115516443 B CN 115516443B CN 202180019193 A CN202180019193 A CN 202180019193A CN 115516443 B CN115516443 B CN 115516443B
Authority
CN
China
Prior art keywords
data
data sets
attributes
logical
dataset
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202180019193.3A
Other languages
English (en)
Other versions
CN115516443A (zh
Inventor
J·埃格诺夫
马歇尔·A·伊斯曼
I.谢克特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ab Initio Technology LLC
Original Assignee
Ab Initio Technology LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ab Initio Technology LLC filed Critical Ab Initio Technology LLC
Priority to CN202410025045.8A priority Critical patent/CN117891869A/zh
Publication of CN115516443A publication Critical patent/CN115516443A/zh
Application granted granted Critical
Publication of CN115516443B publication Critical patent/CN115516443B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2423Interactive query statement specification based on a database schema
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation
    • G06F16/24524Access plan code generation and invalidation; Reuse of access plans
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation
    • G06F16/24526Internal representations for queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24544Join order optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24545Selectivity estimation or determination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/288Entity relationship models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0241Advertisements
    • G06Q30/0242Determining effectiveness of advertisements
    • G06Q30/0243Comparative campaigns

Abstract

本发明提供一种方法,该方法包括:访问架构,该架构指定数据集之间的关系、对该数据集的计算或该数据集的变换,从该数据集中选择数据集,以及从该架构中选择与所选数据集相关的其他数据集。识别该数据集的属性,并且生成表示所识别属性和该属性之间的关系的逻辑数据。向开发环境提供该逻辑数据,该开发环境提供对表示所识别属性的该逻辑数据的部分的访问。从该开发环境接收在执行操作时指定所识别属性中的至少一个属性的规范。基于该规范和由该逻辑数据表示的所识别属性之间的关系,生成计算机程序,以通过从存储装置访问具有该规范中指定的该属性中的该至少一个属性的至少一个数据集来执行该操作。

Description

根据架构生成优化逻辑
优先权
本申请要求2020年9月18日提交的美国专利申请号17/025,751和2020年3月6日提交的临时专利申请号62/986,374的优先权和权益,这些专利申请中的每个专利申请的全部内容均以引用方式并入本文。
背景技术
本公开涉及根据架构(诸如数据库架构)生成逻辑。
复杂的计算通常可以表示为通过有向图的数据流,其中计算的组件与图的顶点相关联,并且组件之间的数据流对应于图的链接(弧、边)。实施此类基于图的计算的系统在名称为“执行表示为图的计算(Executing Computations Expressed as Graphs)”的美国专利号5,966,072中进行描述,该专利的全部内容以引用方式并入本文。在一些情况下,与顶点相关联的计算以人类可读的形式被描述,称为“业务规则”。
用于生成数据流图的一种技术使用业务规则编辑器。商业规则编辑器的示例在名称为“编辑和编译业务规则(Editing and Compiling Business Rules)”的美国专利号8,069,129中进行公开,该专利的全部内容以引用方式并入本文。
发明内容
一般来讲,在第一方面,一种由数据处理系统实施的用于提供开发环境和存储具有一个或多个属性的数据集的存储装置的方法,并且其中该开发环境提供对该数据集的该一个或多个属性的访问,该方法包括:访问架构,该架构指定在该架构中表示的数据集之间的关系、对该数据集中的一个或多个数据集的一个或多个计算或者该数据集中的一个或多个数据集的一个或多个变换;通过以下操作从该数据集中识别存储装置中的多个该数据集:从该数据集中选择数据集;以及从该架构中识别与所选数据集相关的一个或多个其他数据集;识别该多个该数据集的属性;生成表示该多个该数据集的所识别属性并进一步表示该属性之间的一个或多个关系的逻辑数据;向开发环境提供该逻辑数据;由该开发环境提供对表示该多个该数据集的所识别属性的该逻辑数据的一个或多个部分的访问;从该开发环境接收在执行操作时指定所识别属性中的至少一个属性的规范;以及基于该规范和由该逻辑数据表示的所识别属性之间的该一个或多个关系,生成计算机程序,该计算机程序被配置为通过从存储装置访问该多个数据集中的至少一个数据集来执行该操作,其中该至少一个所访问的数据集具有在该规范中指定的该属性中的该至少一个属性。
一般来讲,在可与该第一方面组合的第二方面,一种开发环境提供对该逻辑数据的该一个或多个部分的访问,而无需从存储装置访问该多个数据集。
一般来讲,在可与第一方面或第二方面组合的第三方面,该方法包括:从该多个数据集识别数据集,该数据集包括该规范中指定的该属性中的该至少一个属性;以及从存储装置访问所识别的数据集。
一般来讲,在可与该第一方面至该第三方面中的任一者组合的第四方面,该方法包括使用从存储装置访问的该至少一个数据集执行该计算机程序。
一般来讲,在可与该第一方面至该第四方面中的任一者组合的第五方面,该方法包括优化该计算机程序以产生优化的计算机程序,该优化的计算机程序被配置为通过从存储装置仅访问该多个数据集中具有该规范中指定的该属性中的该至少一个属性的那些数据集来执行该操作。
一般来讲,在可与该第一方面至该第五方面中的任一者组合的第六方面,该一个或多个属性包括该多个数据集的字段名称。
一般来讲,在可与该第一方面至该第六方面中的任一者组合的第七方面,该一个或多个属性包括用于访问存储装置中的该多个该数据集的信息。
一般来讲,在可与该第一方面至该第七方面中的任一者组合的第八方面,该方法包括从该架构中识别用于连接所选数据集和该一个或多个其他数据集的一个或多个参数。
一般来讲,在可与该第一方面至该第八方面中的任一者组合的第九方面,该一个或多个参数包括用于连接所选数据集和该一个或多个其他数据集中的至少一个其他数据集的关键字。
一般来讲,在可与该第一方面至该第九方面中的任一者组合的第十方面,该方法包括从客户端设备接收指定所选数据集的选择数据。
一般来讲,在可与该第一方面至该第十方面中的任一者组合的第十一方面,所选数据集包括该逻辑数据的根节点,并且其中该一个或多个其他数据集中的至少一个数据集连接到所选数据集。
一般来讲,在可与该第一方面至该第十一方面中的任一者组合的第十二方面,对该数据集中的一个或多个数据集的该一个或多个计算或者该数据集中的一个或多个数据集的一个或多个变换定义该多个数据集中的至少一个数据集的虚拟字段。
一般来讲,在可与该第一方面至该第十二方面中的任一者组合的第十三方面,该方法包括基于该规范和由该逻辑数据表示的所识别属性之间的该一个或多个关系,生成可执行数据流图,该可执行数据流图被配置成执行该操作,其中该可执行数据流图包括该一个或多个属性中的至少一个属性作为输入。
一般来讲,在可与该第一方面至该第十三方面中的任一者组合的第十四方面,该方法包括从该计算机程序中移除用于从存储装置访问该多个数据集中不包括该规范中指定的该属性中的该至少一个属性的至少一个数据集的操作。
一般来讲,在可与该第一方面至该第十四方面中的任一者组合的第十五方面,该计算机程序被配置为通过选择语句从存储装置访问来自该多个数据集的至少一些数据,其中该选择语句被最小化以仅选择该规范中指定的该属性中的该至少一个属性。
一般来讲,在可与该第一方面至该第十五方面中的任一者组合的第十六方面,该开发环境读取该逻辑数据作为数据源。
一般来讲,在可与该第一方面至该第十六方面中的任一者组合的第十七方面,该计算机程序被配置为从存储装置仅访问具有该规范中指定的该属性中的该至少一个属性的那些数据集。
一般来讲,在可与该第一方面至该第十七方面中的任一者组合的第十八方面,一种用于提供开发环境和存储具有一个或多个属性的数据集的存储装置的系统,并且其中该开发环境提供对该数据集的该一个或多个属性的访问,该系统包括:一个或多个处理器和存储指令的一个或多个存储设备,该指令在由该一个或多个处理器执行时可操作以使该一个或多个处理器执行包括以下的操作:访问架构,该架构指定在该架构中表示的数据集之间的关系、对该数据集中的一个或多个数据集的一个或多个计算或者该数据集中的一个或多个数据集的一个或多个变换;通过以下操作从该数据集中识别存储装置中的多个该数据集:从该数据集中选择数据集;以及从该架构中识别与所选数据集相关的一个或多个其他数据集;识别该多个数据集的属性;生成表示该多个数据集的所识别属性并进一步表示该属性之间的一个或多个关系的逻辑数据;向开发环境提供该逻辑数据;由该开发环境提供对表示该多个该数据集的所识别属性的该逻辑数据的一个或多个部分的访问;从该开发环境接收在执行操作时指定所识别属性中的至少一个属性的规范;以及基于该规范和由该逻辑数据表示的所识别属性之间的该一个或多个关系,生成计算机程序,该计算机程序被配置为通过从存储装置访问该多个数据集中的至少一个数据集来执行该操作,其中该至少一个所访问的数据集具有在该规范中指定的该属性中的该至少一个属性。
一般来讲,在可与该第一方面至该第十八方面中的任一者组合的第十九方面,一种存储指令的非暂态计算机可读存储介质,该指令用于使计算系统:访问架构,该架构指定在该架构中表示的数据集之间的关系、对该数据集中的一个或多个数据集的一个或多个计算或者该数据集中的一个或多个数据集的一个或多个变换;通过以下操作从该数据集中识别存储装置中的多个该数据集:从该数据集中选择数据集;以及从该架构中识别与所选数据集相关的一个或多个其他数据集;识别该多个数据集的属性;生成表示该多个数据集的所识别属性并进一步表示该属性之间的一个或多个关系的逻辑数据;向开发环境提供该逻辑数据;由该开发环境提供对表示该多个该数据集的所识别属性的该逻辑数据的一个或多个部分的访问;从该开发环境接收在执行操作时指定所识别属性中的至少一个属性的规范;以及基于该规范和由该逻辑数据表示的所识别属性之间的该一个或多个关系,生成计算机程序,该计算机程序被配置为通过从存储装置访问该多个数据集中的至少一个数据集来执行该操作,其中该至少一个所访问的数据集具有在该规范中指定的该属性中的该至少一个属性。
上述实施方式中的一个或多个实施方式可以提供以下优点中的一个或多个优点。此处描述的技术使用有关数据集和数据集之间关系的信息来生成包含有关数据集属性的信息的逻辑数据。通过在开发环境中提供逻辑数据作为数据源,逻辑数据可提供对数据集的逻辑访问,而不会产生访问物理数据集本身的成本。以此方式,可减少与从数据库存储装置访问物理数据集相关联的计算资源的消耗。除此之外,可通过开发环境使用数据集的属性来指定计算逻辑,而无需访问实际数据集,这允许保护数据集免受不必要的访问。也就是说,数据集保持安全,同时仍允许指定计算逻辑,并从中编译涉及数据集的应用程序。另外,此处描述的技术可改善开发环境用户的生产力,因为用户能够使用逻辑数据中的属性灵活地开发计算逻辑,而无需访问和处理物理数据集时所需的开销和处理时间。
一旦开发了计算逻辑,此处描述的技术允许以高度优化的方式处理逻辑。例如,在开发计算逻辑时,用户原则上可能会考虑或访问大量不必要的数据集。使用逻辑数据所提供的信息,可生成应用程序(诸如数据流图),该应用程序可最小限度地载入和连接处理中所需的数据子集,以创建期望的输出。在这样做时,此处描述的技术提高了计算逻辑的生成和执行速度,同时减少了处理逻辑所需的计算资源。
一种或多种具体实施的详细内容在附图及下文的具体实施方式中进行说明。此处描述的技术的其他特征、目标和优点将从描述和附图以及从权利要求书中显而易见。
附图说明
图1是架构的框图。
图2A是用于产生逻辑数据并使用该逻辑数据生成计算机程序的系统的框图。
图2B是用于产生逻辑数据的系统的框图。
图2C和图2D是开发环境的框图。
图2E是用于执行计算机程序的系统的框图。
图3是用于产生逻辑数据并使用该逻辑数据生成计算机程序的过程的图。
图4A至图4C是用于产生逻辑数据的系统的框图。
图5A是用于产生逻辑数据并使用该逻辑数据生成计算机程序的系统的框图。
图5B和图5C是用于产生逻辑数据的系统的框图。
图5D至图5I是用于生成计算机程序的系统的框图。
图5J至图5Q是用于测试计算机程序的系统的框图。
图6A是开发环境的框图。
图6B是用于生成计算机程序的系统的框图。
图6C是用于执行计算机程序的系统的框图。
图7A是开发环境的框图。
图7B至图7E是用于生成计算机程序的系统的框图。
图8是用于产生逻辑数据并使用该逻辑数据生成计算机程序的过程的流程图。
具体实施方式
本文描述了一种用于生成表示存储在存储系统或存储器中的物理数据集的逻辑数据的系统。该逻辑数据通过包括物理数据集的属性、通过包括指定这些物理数据集存储位置地址的指针、或通过指定表示如何访问物理数据集的其他信息、或它们的组合等等来表示这些物理数据集。在该示例中,可在开发环境中访问逻辑数据或逻辑数据的各部分,以支持开发指定使用和访问哪些数据集(或数据集的属性)的规范。一般来讲,规范指定要对数据集或数据集的属性执行的操作(例如,计算逻辑)。规范被编译成或以其他方式用于创建能够在计算系统上执行的计算机程序(例如,可执行数据流图)。在一些示例中,计算机程序包括可执行机器代码。由于无需物理访问数据集或其属性即可在开发环境中访问逻辑数据,因此逻辑数据提供逻辑访问而不会产生物理成本。
出于方便而非限制的目的,本文描述的一些特征的视觉表示可称为特征本身。例如,数据流图的视觉表示可称为数据流图。逻辑数据的视觉表示可称为逻辑数据。数据库架构的视觉表示可称为数据库架构。组件的视觉表示可称为组件等等。
参考图1,示出了架构2,该架构指定存储在存储系统中的数据集6a、6b、6c、6d之间的关系4a、4b、4c,诸如层级关系。在一些示例中,架构2是以数据库管理系统(DBMS)支持的正式语言描述数据库的结构的数据库架构。可基于关于存储在存储系统中的数据集6a、6b、6c、6d以及那些数据集之间的关系4a、4b、4c的信息来生成架构2。在一些示例中,关于所存储的数据集中的每个数据集的信息包括数据集的名称、数据集的访问参数(例如,文件名、位置)、数据集的记录格式、数据集中包含的数据类型或它们的组合,以及其他信息。在一些示例中,关于数据集之间的关系的信息包括关于可如何连接数据集的信息,诸如关于数据集之间的关系类型的信息(例如,一对一、一对多(诸如关系4b和4c)、多对多(诸如关系4a))或用于连接数据集中的数据的关键字(例如,主关键字、外部关键字),或两者兼有,以及其他信息。
用于生成架构2的信息可由用户(例如,技术用户)指定,也可从存储系统自动检索(例如,由耦合到存储系统的一个或多个计算系统),或两者都可以。例如,在一些示例中,通信地耦合到存储系统的一个或多个计算系统可导入元数据或关于数据集6a、6b、6c、6d的其他信息,以使用数据发现、语义发现或其他机器学习技术生成架构2。在一些示例中,处理信息(诸如对数据集6a、6b、6c、6d中的一个或多个数据集的计算,或数据集6a、6b、6c、6d中的一个或多个数据集的变换)被指定(例如,由技术用户指定)并包含在架构2中。例如,架构2包括用于执行计算或操作的指令(或用于调用诸如可执行数据流图的计算机程序以执行操作的指令)。这些计算或变换可修改数据集6a、6b、6c、6d内的现有字段,在数据集内创建新字段(有时称为虚拟字段或计算字段),或者完全创建新数据集。在一些示例中,经修改或新创建的字段或数据集的值直到运行时才被填充(例如,当由使用字段或数据集的计算机程序执行时),如下所述。
图2A示出了具有存储系统12和客户端设备14的环境10。在该示例中,环境10还包括逻辑数据生成器16。逻辑数据生成器16被配置为生成逻辑数据,该逻辑数据包括例如关于实际物理数据集(或基于物理数据集的逻辑数据集)的属性的信息。在该示例中,逻辑数据提供对可存储在例如存储系统12中的物理数据集的逻辑访问,而无需从存储系统12对数据集进行物理访问。在该示例中,逻辑访问是指本身存储在存储系统12中的物理数据集的属性的列表或其他规范。在另一示例中,逻辑数据可包括标识可根据其从存储系统12访问以逻辑数据表示的物理数据集的地址和位置的指针或其他信息,或用于访问物理数据集的指令或参数,或两者兼有。
在该示例中,存储系统12被配置用于与逻辑数据生成器16通信,以向逻辑数据生成器提供用于生成逻辑数据的信息,诸如指定物理数据集的位置的信息、指定物理数据集的属性的信息、指定物理数据集之间的关系的信息、或物理数据集本身、或它们的组合,以及其他信息。客户端设备14还被配置用于与逻辑数据生成器16通信,使得客户端设备14可向逻辑数据生成器16发送用于生成逻辑数据的信息,诸如指定从逻辑数据中包括(或省略)哪些物理数据集或物理数据集的哪些属性的信息、指定逻辑数据的根节点的信息或它们的组合,以及其他信息。
环境10还包括开发环境18,该开发环境为用户(例如,客户端设备14的用户,该客户端设备可通信地耦合到开发环境18)提供图形用户界面或其他用户界面,以指定在生成计算机程序(诸如数据流图)时,用户想要访问或使用的以逻辑数据表示的哪些数据集(或数据集的哪些属性)。开发环境18与图生成器22耦合,该图生成器被配置为根据从开发环境18所接收的信息生成数据流图。从开发环境18所接收的信息通常被称为规范,因为该信息指定计算机程序的功能(例如,可执行数据流图)以及在执行规范或将规范编译到应用程序本身期间要访问哪些数据集(或哪些属性)。
环境10还包括编译器24,该编译器被配置为将规范和/或数据流图编译成可由数据处理系统26执行(例如,以机器代码形式)的计算机程序。在该示例中,开发环境18将规范传输到图生成器22,该图生成器生成数据流图。继而,图生成器22将数据流图传输到编译器24,该编译器将数据流图编译成计算机程序(例如,可执行数据流图)。编译器24将计算机程序传输到数据处理系统26以执行和/或存储计算机程序。在该示例中,计算机程序被配置为从存储系统12访问多个数据集中的至少一个数据集,这些数据集的属性包括在逻辑数据中或在规范中指定,或两者兼有。
参考图2B,环境20示出了环境10的附加细节。在该示例中,存储系统12将架构21传输到逻辑数据生成器16。数据库架构21指定存储在存储系统12中的数据集21a、21b、21c、21d之间的关系,诸如层级关系。在示例中,架构21是数据库架构。架构21可与参考图1描述的架构2相同或类似。
客户端设备14还将选择数据23发送到逻辑数据生成器16。选择数据23指定根节点,例如在定义逻辑数据时作为上代节点的数据集。在该示例中,根节点是定义初始数据集的视角,该初始数据集是逻辑数据中的根节点。在该示例中,视角是信息的提取,并指定架构中的选定起点。视角包括架构中的选定起点并表示感兴趣的根逻辑实体。为了生成选择数据23,客户端设备14显示图形用户界面27。图形用户界面27包括数据集部分28和所选视角部分29,该所选视角部分被更新为具有图标29a,该图标表示数据集21d被选为逻辑数据的根节点。数据集部分28分别显示数据集21a、21b、21c、21d的视觉表示28a、28b、28c、28d。所选视角部分29包括可选择部分29b,该可选择部分可为按钮。在选择可选部分29b时,用户可选择视觉表示28a、28b、28c、28d中的一个视觉表示作为逻辑数据的根节点。在该示例中,用户选择视觉表示28d以指定数据集21d是逻辑数据的根节点。在选择视觉表示28d并与可选部分292b交互时,更新所选视角部分29以显示图标28a,该图标指定数据集21d是逻辑数据的根节点。选择数据23指定根节点是数据集21d。
一旦针对逻辑数据指定了感兴趣的根逻辑实体,就扩展逻辑数据使其包括与该感兴趣的根逻辑实体相关的其他数据集的信息。如本文所述,该其他信息可包括属性、字段、源、指令、参数或指向感兴趣的根逻辑实体和相关数据集的指针等。在该示例中,逻辑数据可物化为具有感兴趣的根逻辑实体的字段的条目和与感兴趣的源逻辑实体相关的其他数据集的字段的广泛记录。一般来讲,广泛记录包括保存在同一结构中的一组相关数据。逻辑数据也可物化为其他属性的广泛记录,诸如指向感兴趣的逻辑实体和其他相关数据集的存储器中的物理位置的指针。
使用架构21和选择数据23,逻辑数据生成器16生成逻辑数据25。例如,逻辑数据生成器16接收指定数据集21d是根节点的选择数据23,并在逻辑数据25中包括关于数据集21d的属性或可用字段的信息。在一些示例中,该信息包括数据集21d的可用属性或字段的向量。使用架构21,逻辑数据生成器16识别与数据集21d相关的其他数据集。例如,在该示例中,逻辑数据生成器16确定数据集21a、21b、21c与数据集21d相关,并且因此在逻辑数据25中包括关于数据集21a、21b和21c的属性或可用字段的信息。在该示例中,逻辑数据25包括针对数据集21a、21b和21c中的每个数据集指定属性或可用字段的向量。这些属性或可用字段的向量指定、指示如何访问或以其他方式表示属性或字段名称,而无需实际访问字段或字段本身内的数据。因此,逻辑数据25提供对数据集21a、21b、21c和21d的逻辑访问,而不会产生从存储系统12实际访问这些数据集的物理成本。
参考图2C,环境30示出了接收逻辑数据25的开发环境18。例如,开发环境18从逻辑数据生成器16或从存储装置(例如,存储系统12)接收逻辑数据25。在该示例中,业务规则编辑器界面32由开发环境18生成,用于定义业务规则和其他逻辑规则。一般来讲,编辑器界面32可以图形方式识别包含表达式的单元格。这将帮助用户了解将自行评估为真或假的表达式与返回与列变量进行比较的值的表达式之间的区别。当用户正在键入时,用户可通过例如在表达式的开头键入星号来指示特定单元格将是表达式单元格。在该示例中,编辑器界面32包括输入部分33和规则定义部分34。输入部分33提供在逻辑数据25中表示的那些属性(例如,字段)和数据集以及其他数据源(其可能对应于或可能不对应于逻辑数据)的视觉表示。例如,输入部分33包括表示数据集21a(如图2B所示)的视觉表示35。输入部分33还包括表示数据集21a中的“字段A”的视觉表示35a。在该示例中,通过从视觉表示35缩进,视觉表示35a在视觉上描绘为数据集21a中的字段。输入部分33还包括分别表示数据集21b和数据集21b中的“字段B”的视觉表示36和36a。输入部分33还包括分别表示数据集21c和数据集21c中的“字段C”的视觉表示37和37a。输入部分33还包括分别表示数据集21d和数据集21d中的“字段D”的视觉表示38和38a。在该示例中,输入部分33中的视觉表示表示用户在定义业务规则时可用的那些数据集和字段。从逻辑数据25识别输入部分33中表示的可用数据集和字段,由此为用户提供对数据集和数据字段的访问,而实际上不必从物理存储器访问这些数据集(或字段)。
规则定义部分34包括一系列规则案例。在该示例中,规则定义部分34包括电子表格格式。电子表格中的触发列对应于可用数据值,并且行对应于规则案例,例如,与可用数据值相关的标准集。如果给定记录的数据值满足每个触发列的触发条件,则规则案例适用于该记录,其中规则案例具有标准。如果规则案例适用,则基于输出列生成输出。满足其所有输入关系的规则案例可称为“已触发”。输出列对应于潜在输出变量,并且适用行的对应单元格中的值确定该变量的输出(如果有的话)。单元格可包含分配给变量的值,也可包含必须求值才能生成输出值的表达式,如下文所讨论。可能存在多于一个输出列,尽管图2C中仅示出一个输出列。
在通过针对规则定义部分34中的单元格指定输入而完成定义规则时,开发环境18生成规则规范39a,该规则规范指定规则案例以及需要访问哪些字段以实施规则。然而,在定义规则的这个级,逻辑数据25为用户提供对那些字段的逻辑访问,而无需物理访问。例如,通过能够查看来自存储在输入部分33中的存储系统12中的各种数据集的可用字段,为用户提供了逻辑访问。开发环境18将规则规范39a传输到图生成器22。开发环境18还将逻辑数据25传输到图生成器22。
参考图2D,环境40示出了开发环境18的另一示例。在该示例中,开发环境18呈现具有组件部分42、输入部分43和画布区段44的图形用户界面41。组件部分42包括视觉表示42a至42f,这些视觉表示表示可用于定义计算逻辑的各种操作。输入部分43显示在逻辑数据25中表示的数据集和属性(例如,字段)的视觉表示45、45a、46、46a、47、47a、48b、48a。输入部分43还显示在其他数据源(例如,除逻辑数据25之外的数据源)中表示的数据集和字段的视觉表示49和49a。也就是说,输入部分43中的视觉表示表示可用于定义计算逻辑的那些数据集和字段。
画布部分44用于以数据流图的形式定义计算逻辑,该数据流图在视觉上被描绘为可视化44a(并且出于方便而非限制的目的,在下文称为“数据流图44a”)。由可视化44a表示的数据流图包括具有节点的数据结构。这些节点中的每个节点包括至少一个操作占位符字段和至少一个数据占位符字段,这些字段填充有用户在画布部分44中指定的操作和数据(例如,逻辑数据、其他数据源,诸如“数据集V”)。在该示例中,通过将一个或多个视觉表示42a至42f从组件部分42拖放到画布部分44上,生成数据流图44a。视觉表示42a-42f中的每个视觉表示均表示将由数据结构执行或在数据结构上执行的操作。一旦视觉表示被置于画布部分44上,它们就变成画布部分44上的图标。开发环境18使用由数据流图44a在视觉上表示的计算逻辑来生成规范39b。规范39b指定了在画布部分44中在视觉上描绘的计算逻辑。开发环境18将规范39b和逻辑数据25传输到图生成器22。图生成器22可使用规范39b和逻辑数据25来针对数据流图44a的每个节点填充操作占位符字段和数据占位符字段,如下文详述。
参考图2E,环境50示出了环境10的附加细节。在该示例中,图生成器22根据从开发环境18所接收的信息(例如,规范和逻辑数据)生成数据流图52。编译器24接收数据流图52并将其编译成可执行程序54(例如,计算机程序,诸如可执行数据流图)。编译器24将可执行程序54传输到数据处理系统26以执行和/或存储计算机程序。在该示例中,计算机程序被配置为从存储系统12访问多个数据集中的至少一个数据集,这些数据集的属性包括在逻辑数据中或在规范中指定,或两者兼有。
参考图3,泳道图300示出了用于生成逻辑数据并使用该逻辑数据来生成优化的数据流图的过程。在操作中,存储系统12将架构传输到逻辑数据生成器16(302)。逻辑数据生成器16接收架构(304)。逻辑数据生成器16生成用于呈现表示架构的数据的图形用户界面(GUI)数据(306)。逻辑数据生成器16将GUI数据传输到客户端设备14(308)。客户端设备14呈现GUI数据,使得其被显示给用户(310)。客户端设备14接收根节点选择数据(例如,来自与在客户端设备上呈现的GUI交互的用户)(312)。根节点选择数据包括指定被选择为逻辑数据的根节点的数据集的数据。客户端设备14将根节点选择数据传输到逻辑数据生成器16(314)。逻辑数据生成器16接收根节点选择数据(316)。然后,逻辑数据生成器16使用所接收的根节点选择数据和架构生成逻辑数据(318)。逻辑数据生成器16将逻辑数据传输到开发环境18和图生成器22(320)。在一些示例中,逻辑数据生成器16将逻辑数据传输到开发环境18,该开发环境然后将逻辑数据传递到图生成器22。
开发环境18和图生成器22中的每一者接收逻辑数据(322,324)。开发环境18生成用于显示逻辑数据的字段或其他属性的GUI数据(326)。开发环境18将GUI数据传输到客户端设备14(328)。GUI数据表示属性,诸如字段属性或包括在逻辑数据中的其他属性,由此提供逻辑访问而不会产生物理成本。客户端设备14呈现所接收的GUI数据(330)并接收指定所选字段、数据集或其他属性的选择数据(332)。为清楚起见,如本文所述的所选字段或数据集是指选自逻辑数据本身的信息。在一些示例中,选择数据还指定要对所选字段执行的操作或逻辑。客户端设备14将指定所选文件的选择数据传输到开发环境18(334)。开发环境18接收指定所选字段的选择数据(336)并生成具有所选字段(以及要对所选字段执行的操作)的规范(338)。开发环境18将规范传输到图生成器22(340)。
图生成器22接收规范(102)(342)。图生成器22使用规范和逻辑数据生成数据流图(344)。一般来讲,数据流图(或持久性计算机程序)从规范生成,如下所示:规范指定将由计算机程序实施的多个模块,用于处理结构化数据项(例如,数据记录)中的一个或多个字段的一个或多个值。这些多个模块可包括规则、指令、数据流图的组件等等。本文描述的系统将规范变换为实施多个模块的计算机程序,其中该变换包括:对于多个模块中的一个或多个第一模块中的每个第一模块:识别多个模块中的一个或多个第二模块,每个第二模块接收至少部分地基于第一模块的输出的输入;以及格式化第一模块的输出数据格式,使得第一模块仅输出结构化数据项目的一个或多个字段的一个或多个值,每个字段(i)可由第一模块访问,并且(ii)至少部分地基于第一模块的输出而被指定为对一个或多个第二模块中的至少一个第二模块的输入;以及在持久性存储器中保存计算机程序,其中所保存的计算机程序针对一个或多个第一模块中的每个第一模块指定格式化的输出数据格式,如名称为“将规范变换为持久性计算机程序(Transforming a Specification into a PersistentComputer Program)”的美国公布的专利申请号2019/0130048A1中所描述,该专利申请的全部内容以引用方式并入本文。该系统还包括各种规则,该各种规则指定每个模块的内容包括在计算机程序中和/或转换为计算机程序的适当格式的指令。在该示例中,图生成器22最初生成具有在逻辑数据中表示的数据源的数据流图。图生成器22还向数据流图添加数据宿,因为数据流图需要数据宿。然后,图生成器22向数据流图添加图生成器22被配置为自动添加以提高数据流图的计算效率的各种组件(诸如排序组件)。图生成器22还被配置为添加连接组件以将来自各种数据源的数据适当连接在一起。用于访问或连接数据源的指令、参数或其他信息可包含在逻辑数据中。最后,图生成器22添加包括规范中指定的计算逻辑的变换组件。当规范如上所述变换为数据流图时,变换组件本身可包括表示另一数据流图的各种组件或子组件。
在示例中,图生成器22优化数据流图以生成优化的数据流图(346)。一般来讲,图生成器22执行优化器,该优化器通过分析规范以识别哪些字段和相关联数据源被规范识别为被访问来优化数据流图。然后,优化器识别那些在规范中没有引用字段的数据源,并且优化器从数据流图中删除那些在规范中没有引用字段的数据源。在一些示例中,优化器最小化选择语句(例如,以数据库语言发布的数据库选择语句),使得仅检索规范中引用的那些数据集和字段。在一些示例中,优化器通过应用一系列优化规则来实现这一点,如名称为“数据流图优化的系统和方法(Systems and Methods for Dataflow GraphOptimization)”的美国发布的专利申请号2019/0370407A1中所述,该专利申请的全部内容以引用方式并入本文。在这样做时,优化器可创建数据流图,该数据流图仅最小程度地载入和连接逻辑数据为其提供逻辑访问以创建期望输出的数据子集。优化器还可执行其他优化,诸如重新布置数据流图中的组件顺序以改善计算效率。例如,将过滤组件放在连接组件之前可能在计算上更有效,使得连接组件不会将最终过滤掉的数据连接在一起。因此,优化器可将过滤器组件移动到连接组件之前。
参考图4A,环境60示出逻辑数据生成器16使用选择数据23来识别数据集21d作为逻辑数据的根节点。这通过在图4A中将数据集21d加星号和概述来显示。逻辑数据生成器16还使用架构21来识别与数据集21d相关的其他数据集。其他相关数据集包括数据集21a、21b和21c。使用数据集21d作为根节点,逻辑数据生成器16生成逻辑数据25。如先前所述,逻辑数据25包括条目25a,该条目指定数据集21d是逻辑数据25的视角或根节点。条目25a包括数据集21d的字段和/或属性。数据集(例如,数据集21d)的属性可包括数据集中的字段的名称或表示数据集中的字段的其他信息。通过包括数据集21d中的字段的名称以及其他信息,逻辑数据25提供对数据集21d中的字段的访问,而不必物理地访问存储装置中的数据集21d。逻辑数据25还包括分别用于数据集21c、21b和21a的条目25b、25c和25d。在该示例中,条目25b、25c、25d根据它们与数据集21d的关系进行排序。在该示例中,数据集21d是根节点,并且数据集21c是下代节点。因此,表示数据集21c的条目25b直接排序在逻辑数据25中的条目25a下方。另外,数据集21a、21b是数据集21c的下代。因此,条目25c、25d在条目25b下方排序,以表示数据集21a、21b和21c之间的关系。条目25b、25c和25d中的每个条目包括相应数据集的属性和/或字段。如先前所描述,这些属性和/或字段可以是字段的名称或其他标识信息,其允许逻辑数据25提供对数据集21a、21b、21c和21d的逻辑访问,而不会产生从存储装置中实际访问这些数据集的物理成本。逻辑数据25能够提供逻辑访问,因为其包括可用于识别数据集21a、21b、21c和21d的属性或字段和/或可用于访问那些数据集的信息,视情况而定。
参考图4B,环境70示出了环境60(图4A)的变型,其中选择数据集21b作为根节点,如虚线和星号轮廓所指示。例如,当用户选择图2B中的视觉表示28b时,数据集21b被选择为根节点。当数据集21b被选择为根节点时,逻辑数据生成器16生成逻辑数据72,其中数据集21b被指定为根节点,并且逻辑数据中的其他数据集的顺序相对于逻辑数据25中的数据集的排序已改变,如图4A所示。在该示例中,逻辑数据72包括表示数据集21b的条目72a。在该示例中,数据集21b是数据集21c的下代,并且条目72b包括在表示数据集21c的逻辑数据72中。数据集21a是数据集21c的下代,并且条目72c包括在表示数据集21a的逻辑数据72中。数据集21c是数据集21d的下代,并且条目72d包括在表示数据集21d的逻辑数据72中。如上文参考图4A所描述,条目72a、72b、72c和72d中的每个条目均包括关于相应数据集中的每个数据集的属性或字段的信息和/或指定数据集的特性或访问数据集的方式的其他信息。
参考图4C,环境80示出了用于数据库架构84的逻辑数据82的生成。在该示例中,逻辑数据生成器16接收数据库架构84并且还接收指定架构84中的数据集84d是根节点的选择数据23(如虚线和星号轮廓所指示)。在该示例中,架构84包括数据集84a、84b、84c、84d和84e。在示例中,架构84包括用于对数据集84d(例如,数据集84d的字段或字段值)执行计算或以其他方式变换数据集84d以产生数据集84e的指令。例如,架构84可包括用于执行一个或多个操作的指令,或者用于调用可执行程序(例如,数据流图)的指令,该可执行程序包括数据集84d(或其部分)作为输入,并产生数据集84e(或其一部分)作为输出。在一些示例中,这些计算、变换或其他操作直接在架构84中定义,诸如通过在架构84中包括指定操作的指令来定义。在一些示例中,架构84可包括用于访问执行操作的指令的链路、指针或其他信息。在一些示例中,这些操作是先前执行的,并且操作产生的数据集84e是存储在存储系统中的物理数据集。在一些示例中,数据集84e包括虚拟数据,诸如在运行时填充的一个或多个计算或虚拟属性、虚拟字段或其他虚拟元素(例如,当数据集84e用于计算机程序,诸如数据流图时)。
由于数据集84d是根节点,因此逻辑数据生成器16生成具有条目82a至82e的逻辑数据82。条目82a表示数据集84d,该数据集为根节点。条目82a可包括数据集84d的属性。如本文先前所描述,属性包括字段名称、字段的指针等。由于数据集84c和84e是数据集84d的下代,因此逻辑数据82中的接下来的条目是表示数据集84e的条目82b和表示数据集84c的条目82c。条目82b和82e中的每一者均包括字段属性。由于数据集84a和84b是数据集84c的下代,因此逻辑数据82中的接下来的条目是表示数据集84b的条目82d和表示数据集84a的条目82e。条目82d和82e中的每一者均包括字段属性。
参考图5A,环境90示出了生成逻辑数据并使用该逻辑数据生成优化的数据流图的真实世界示例的概览。在该示例中,逻辑生成器16从存储系统接收架构91。逻辑数据生成器16还从客户端设备14接收指示所选根节点的选择数据92。使用架构91和选择数据92,逻辑数据生成器16根据本文描述的技术生成逻辑数据94。逻辑数据生成器16将逻辑数据94传输到开发环境18。使用逻辑数据94,开发环境18生成使得与开发环境18交互的用户(例如,使用客户端设备14)可查看或访问逻辑数据94中包括的信息(诸如属性或字段)而无需访问存储装置中的底层物理数据集的图形用户界面或其他用户界面。用户使用开发环境18来选择逻辑数据94中的至少一个属性,以及用于对所选属性执行或使用所选属性的一个或多个操作。基于该信息,开发环境18产生规范96a,该规范指定在生成数据流图的过程中将包括逻辑数据94的哪些属性和/或字段。图生成器22接收逻辑数据94和规范96a并产生数据流图98a,该数据流图经优化以仅访问与规范96a中指定的属性相关联的那些物理数据集(或者执行规范96a的操作所需的其他数据集)。
相同或不同的用户可使用开发环境18来选择逻辑数据94的一个或多个不同属性或对所选属性执行的一个或多个不同操作,或两者兼有。例如,用户可响应于在数据流图98a的处理中识别的错误而改变规范96a中指定的所选属性或操作,或者可选择不同的属性和操作以完全产生新的数据流图。使用该信息,开发环境产生不同于规范96a的规范96b。图生成器22接收逻辑数据94和规范96b,并产生数据流图98b,该数据流图以与数据流图98a不同的方式优化,以仅访问与规范96b中指定的属性相关联的那些物理数据集。以此方式,逻辑数据94实现对其中包括的所有数据集和属性的逻辑访问,而不会产生这样做的物理成本。这为最终用户(例如,开发环境18的用户)提供了极大的灵活性,最终用户可从逻辑数据94中包括的所有物理数据中进行查看和选择(而不会产生物理访问此类数据的成本),并且可获得高度优化的数据流图,该数据流图经定制以仅访问执行其规范所需的物理数据。
参考图5B,环境100示出了环境90的附加细节。在该示例中,存储系统12将架构91与数据集101、102、103、104一起存储。“报价状态”数据集101包括“关键字”字段101a和“报价接受”字段101b。字段101a可包括例如主关键字、外部关键字或两者(其可以单独的字段定义)。“分钟数”数据集102包括字段102a、102b、102c和102d。“客户”数据集103包括字段103a和103b。“重新载入日期”数据集104包括字段104a和104b。在该示例中,“剩余分钟数”字段102d是在例如上述架构91中定义的虚拟字段或计算字段。例如,架构91可指定根据数据集102或另一数据集中的一个或多个其他字段生成字段102d的一个或多个操作或其他指令。具体地,架构91可将字段102d定义为字段102b和102c之间的差异。在该示例中,方括号用于指示字段102d是虚拟字段或计算字段。在该示例中,数据集101、102、103、104通过其关键字的值彼此相关。也就是说,数据集101、102、103、104中的每个数据集都具有彼此匹配的关键字的值,并且可用于将来自一个数据集的数据与另一个数据集中的数据连接。
逻辑数据生成器16从存储系统12接收架构91。客户端设备14显示图形用户界面105(例如,基于指定哪些数据集包括在从逻辑数据生成器16(未示出)接收的架构91中的GUI数据)。GUI 105包括数据集部分106和所选视角部分107。数据集部分106分别包括数据集101、102、103、104的视觉表示106a、106b、106c、106d。所选视角部分107包括按钮107a,对该按钮的选择允许观察者选择视觉表示106a-106d中的一个视觉表示。在该示例中,用户选择表示数据集103的视觉表示106c。在该选择之后,所选视角部分107被更新为具有图标107b,该图标指定数据集107已被选为要由逻辑数据生成器16生成的逻辑数据的根节点。客户端设备14生成指定数据集103被选为根节点的选择数据92。客户端设备14将选择数据92传输到逻辑数据生成器16。逻辑数据生成器16使用架构91和选择数据92来产生逻辑数据94。
参考图5C,环境110示出了根据架构91和选择数据92生成逻辑数据94的图示。在该示例中,逻辑数据94包括指定如何访问数据集101、102、103、104及其相应字段的一系列指令、参数或其他信息,如图5B所示。在一些示例中,逻辑数据94包括指定如何生成或以其他方式访问虚拟字段或计算字段(诸如字段102d)的指令、参数或其他信息。在一些示例中,逻辑数据物化成包含底层数据集的属性、字段或其他特征的广泛记录。逻辑数据生成器16将逻辑数据94传输到开发环境18。
参考图5D,环境120示出了由开发环境18生成的用于定义业务规则和其他逻辑规则的业务规则编辑器界面121的示例。一般来讲,编辑器界面121可以图形方式识别包含表达式的单元格。这将帮助用户了解将自行评估为真或假的表达式与返回与列变量进行比较的值的表达式之间的区别。当用户正在键入时,用户可通过例如在表达式的开头键入星号来指示特定单元格将是表达式单元格。在该示例中,编辑器界面121包括输入部分122和规则定义部分123。输入部分122提供逻辑数据94中表示的那些字段和数据集(以展开视图示出,如向下箭头所指示)以及其他数据源(以折叠视图示出,如向右箭头所指示)的视觉表示。例如,输入部分122包括表示数据集101(如图5B所示)的视觉表示124。输入部分122还包括表示数据集101中的“报价接受”字段101b的视觉表示124a。在该示例中,通过从视觉表示124缩进,视觉表示124a在视觉上描绘为数据集101中的字段。输入部分122还包括分别表示数据集102和字段102b、102c和102d的视觉表示125和125a、125b和125c。输入部分122还包括分别表示数据集103和字段86b的视觉表示126和126a。输入部分122还包括分别表示数据集104和字段104b的视觉表示127和127a。在该示例中,输入部分122中的视觉表示表示用户在定义业务规则时可用的那些数据集和字段。从逻辑数据94识别输入部分122中表示的可用数据集和字段,由此为用户提供对数据集和数据字段的访问,而实际上不必从物理存储器访问这些数据集(或字段)。
规则定义部分123包括一系列规则案例。在该示例中,规则定义部分106包括电子表格格式。电子表格中的触发列128a、128b和128c对应于可用数据值,并且行129c-129g对应于规则案例(例如,与可用数据值相关的标准集)。如果给定记录的数据值满足每个触发列的触发条件,则规则案例适用于该记录,其中规则案例具有标准。如果规则案例适用,则基于输出列129a生成输出。满足其所有输入关系的规则案例可称为“已触发”。输出列129a对应于潜在输出变量,并且适用行的对应单元格中的值确定该变量的输出(如果有的话)。单元格可包含分配给变量的值,也可包含必须求值才能生成输出值的表达式,如下文所讨论。可能存在多于一个输出列,尽管图5D中仅示出一个输出列。
具体地,行129a指定规则的相对输入和输出。行129b指定定义规则时要使用的字段以及输出内容。在该示例中,行129b包括单元格128a、128b和128c。在用户选择视觉表示126a时,将单元格128a添加到规则定义部分123,如输入部分122中的视觉表示126a周围的虚线在视觉上所描绘。作为该选择的结果,单元格128a指定在定义规则定义部分123中指定的规则时,使用“名称”字段103b(如图5B所示)作为输入。单元格128b指定在定义规则定义123中所示的规则时,也使用“剩余分钟数”字段102d(如图5B所示)作为输入。在该示例中,在选择视觉表示125c时,更新单元格128b以表示使用“剩余分钟数”字段102d作为对规则的输入。类似地,单元格128c指定在选择表示“使用分钟数”字段102c的视觉表示125b之后,在定义规则定义123中所示的规则时也使用“使用分钟数”字段102c(如图5B所示)作为输入。单元格128a、128b和128c说明用户能够从存储在存储系统12中的数据集访问字段的属性(诸如字段的名称),而不必物理访问那些数据集(或字段)。规则定义部分123还包括指定各种规则案例的行129c、129d、129e、129f和129g并且在满足规则案例的各种标准时输出。
在通过针对规则定义部分123中的单元格指定输入而完成定义规则时,开发环境18生成规则规范96a,该规则规范指定规则案例以及需要访问哪些字段以实施规则。在该示例中,规则规范96a指定使用“名称”字段103b、“剩余分钟数”字段102d和“使用分钟数”字段102c(各自如图5B所示)作为对规则的输入。也就是说,使用那些字段的值作为对规则的输入。因此,在执行规则本身时,将需要在执行规则时物理访问那些字段。然而,在定义规则的这个级,逻辑数据94为用户提供对那些字段的逻辑访问,而无需物理访问。例如,通过能够查看来自存储在输入部分122中的存储系统12中的各种数据集的可用字段,为用户提供了逻辑访问。开发环境18将规则规范96a传输到图生成器22。开发环境18还将逻辑数据94传输到图生成器22。
参考图5E,环境130示出了根据规则规范96a和逻辑数据94生成和优化数据流图的示例。图生成器22接收规则规范96a和逻辑数据94。图生成器22在生成优化的数据流图98a时将优化器132应用于规则规范96a和逻辑数据94两者。在该示例中,图生成器22使用规则规范96a和逻辑数据94来生成数据流图134。在该示例中,数据流图134包括组件134a至134m。然后,图生成器22将优化器132应用于数据流图134。一般来讲,优化器132减少数据流图(例如,数据流图134)中的冗余并消除数据流图未使用的数据源。也就是说,如果规则规范96a并未指定规则访问来自特定数据源(例如,数据集)的字段,则优化器132将从数据流图中移除该数据源。在一些示例中,优化器132通过最小化选择语句(例如,当源数据存储在关系数据库中时)来做到这一点,使得仅访问在规则规范96a中指定并包括在逻辑数据94中的那些数据集和字段。
最初,图生成器22基于例如用于访问逻辑数据94中指定的数据集的指令、参数或其他信息来生成数据流图134,其中包括在逻辑数据94中的数据集和字段作为数据源。在该示例中,数据流图134中的组件134a至134m基于逻辑数据94中表示的数据源(例如,数据集)。在一些示例中,图生成器22还可依赖于指定如何将包含在规范96a或逻辑数据94或两者中的信息变换成数据流图134的内置功能。例如,内置功能可包括用以基于例如来自规范96a或逻辑数据94或两者的信息将各种操作(诸如排序操作、分区操作或连接操作等等)插入到数据流图中的功能。
数据流图134还可包括一个或多个变换组件。一般来讲,变换组件从一个或多个数据源(例如,输入数据集)接收输入记录,并基于计算逻辑产生输出记录。为了产生变换组件,图生成器22可接收要应用于输入的逻辑规范(例如,来自规范96a的规则集,或者来自逻辑数据94的指令、参数或其他信息)。然后,图生成器22可生成变换并将其实施为基于图的计算,该基于图的计算具有通过链接表示数据流的元素而连接的数据处理组件。在该示例中,数据流图134包括变换组件134l,该变换组件包括用于执行规则规范96a中指定的规则的逻辑。在该示例中,数据流图134还包括变换组件134i,该变换组件包括用于生成计算字段102d的逻辑。在该示例中,生成的变换是数据流图134中的组件(例如,组件134l)。图生成器22还可例如在编辑规则集时更新变换。例如,当编辑规则集时,编辑器(例如,开发环境18)可将整个规则集提供给图生成器22,或者该编辑器可仅提供新的或修改的规则或规则案例。图生成器22可生成全新的变换来替换原始变换,或者该图生成器可提供包含该变换的新组件,这取决于使用该变换的系统的能力和需要。
图生成器22将优化器132应用于数据流图134以生成数据流图136。优化器132从数据流图134中移除组件134a、134c、134f、134g、134j,如数据流图136的划掉部分所示。优化器132确定移除这些组件,因为这些组件与规则规范96a未引用或使用的数据集相关。也就是说,规则规范96a不包括对包括在已移除数据集中的任何字段的引用。需注意,在一些示例中,用作根节点的数据集(例如,本示例中的数据集103或组件134b)可能不会被优化掉,无论其是否由规则规范96a使用。优化的最终结果是数据流图98a,该数据流图经优化以移除执行规则规范96a指定的规则不需要的所有数据集,以及经实例化以访问那些数据集的其他组件(例如,排序、连接等)。
参考图5F,环境140示出了由开发环境18生成的用于定义业务规则和其他逻辑规则的业务规则编辑器界面121的另一示例。在环境140中,规则定义123相对于图5D所示的环境120中的规则定义已改变。具体地,触发单元格128b和128c已被移除,并且单元格128a已经修改以指定在选择表示“使用分钟数”字段102c的视觉表示125b之后,在定义规则定义123中所示的规则时,“使用分钟数”字段102c(如图5B所示)是唯一的输入。行129d、129e、129f和129g中的规则案例也已更新。因此,开发环境18生成规则规范142,该规则规范是图5D中所示的规则规范96a的经修改版本。在该示例中,规则规范142指定使用“使用分钟数”字段102c作为对规则的唯一输入。开发环境18将规则规范142传输到图生成器22。开发环境18还将逻辑数据94传输到图生成器22。
参考图5G,环境150示出了根据经修改的规范142和逻辑数据94生成和优化数据流图的示例。最初,图生成器22生成数据流图152,该数据流图与图5E中所示的数据流图134类似,不同之处在于变换组件152l包括用于执行经修改的规范142中指定的规则的逻辑。在该示例中,变换组件152l不同于变换组件134l(如图5E所示),因为在经修改的规范142中指定并由组件152l实施的规则不同于在规范96a中指定并由组件134l实施的那些规则。图生成器22将优化器132应用于数据流图152以生成数据流图154。在这样做时,优化器132从数据流图154中移除组件134a、134c、134f、134g、134j和134i,如数据流图154的划掉部分所示。优化器132确定移除这些组件,因为这些组件与规则规范142未引用或使用的数据集相关。需注意,尽管在规范140中未引用用作根节点的数据集(例如,本示例中的数据集103或组件134b),但并未将其优化掉。优化的最终结果是数据流图156,该数据流图经优化以移除执行规则规范142指定的规则不需要的所有数据集,以及经实例化以访问那些数据集的其他组件(例如,排序、连接等)。由于相应图的规范96a、142中依赖的不同属性,尽管使用相同的逻辑数据94源,数据流图156与数据流图98a不同。
参考图5H,环境160示出了由开发环境18生成的用于定义业务规则和其他逻辑规则的业务规则编辑器界面121的又一示例。在环境140中,规则定义123相对于分别如图5D和图5F所示的环境120和140中的规则定义已改变。现在,单元格128a指定在选择表示“上次重新载入”字段103b的视觉表示127a之后,在定义规则定义123中所示的规则时,“上次重新载入”字段103b(如图5B所示)是唯一的输入。行129c、129d、129e、129f和129g中的规则案例也已改变。因此,开发环境18生成与规则规范96a、142中的每个规则规范不同的规则规范96b(如图5A中最初所示)。在该示例中,规则规范96b指定使用“上次重新载入”字段103b作为对规则的唯一输入。开发环境18将规则规范96b传输到图生成器22。开发环境18还将逻辑数据94传输到图生成器22。
参考图5I,环境170示出了根据规范96b和逻辑数据94生成和优化数据流图的示例。最初,图生成器22生成数据流图172,该数据流图与图5E和图5G中分别所示的数据流图134和152类似,不同之处在于变换组件172l包括用于执行经修改规范96b中指定的规则的逻辑(其与本示例中的变换组件134l和152l中的每个变换组件不同)。图生成器22将优化器132应用于数据流图172以生成数据流图174。在这样做时,优化器132从数据流图154中移除组件134a、134c、134f、134e、134h和134i,如数据流图174的划掉部分所示。优化器132确定移除这些组件,因为这些组件与规则规范96b未引用或使用的数据集相关。需注意,尽管在规范140中未引用用作根节点的数据集(例如,本示例中的数据集103或组件134b),但并未将其优化掉。优化的最终结果是数据流图98b(如图5A最初所示),该数据流图经优化以移除执行规则规范96b指定的规则不需要的所有数据集,以及经实例化以访问那些数据集的其他组件(例如,排序、连接等)。由于相应图的规范中依赖的不同属性,尽管使用相同的逻辑数据94源,数据流图98b与数据流图98a和156不同。
参考图5J,环境180示出了数据流图96a的执行结果。图生成系统18将数据流图96a传输到编译器24。编译器24将数据流图96a编译成可执行程序182,如下:
数据流图将计算表示为:多个顶点,该多个顶点表示计算过程,每个顶点具有相关联的访问方法;和多个链路,每个链路将至少两个顶点彼此连接并且表示连接的顶点之间的数据流。通过以下操作执行数据流图:(1)将数据流图接受到计算系统中作为用户输入;(2)通过在计算系统上执行图变换步骤,直到每个顶点处于可运行状态,并且每个链路与至少一种与该链路所连接的顶点的访问方法兼容的通信方法相关联,来准备数据流图以供执行;(3)通过使用计算系统创建适合于链路通信方法的通信信道和/或数据存储的组合来启动每个链路;以及(4)通过调用计算系统上进程的执行来启动每个进程。
一般来讲,数据流图准备执行如下:
驱动器程序(或简称为“驱动器”)提供了一种用于基于通过用户界面所接收的来自用户的输入来描绘数据流图的方式。表示数据流图的视觉表示的一个或多个数据流图数据结构由驱动器生成。驱动器访问最初由用户描绘的数据流图,并通过应用图变换来准备该数据流图以供执行。在执行这些变换时,以已知方式遍历定义初始数据流图的数据流图数据结构,以获取每个顶点和任何相关联的链路。在一些示例中,对获取的数据结构使用五个数据流图变换来准备数据流图以供执行,如下所述。
虽然数据流图仍并非处于可执行形式,但以下描述的五种数据流图变换可按任何顺序选择并应用,并且可根据需要经常应用(包括根本不应用),直到获得可执行的数据流图。五种数据流图变换包括:(1)插入文件适配器;(2)插入通信适配器;(3)将文件顶点的状态设置为“完全”;(4)将进程顶点的状态设为“可运行”或“不可运行”;以及(5)设置数据链路的通信方法。现在将描述这些变换中的每个变换以及每个变换可执行的条件。
插入文件适配器
在该变换中,驱动器将链路替换为文件适配器(即,替换为链路、文件顶点和另一链路)。也就是说,随着表示链路的每个数据流图数据结构在数据流图数据结构的遍历期间被提取或访问,可创建修改、扩展或替代原始数据结构的新数据结构。
对于源(目标)文件适配器,文件顶点的宿主与源(目标)顶点的宿主相同,并且文件顶点的文件是位于源(目标)顶点工作目录中的新文件。如果满足以下条件,则可执行该变换:
(1)源是不处于“完成”状态的文件顶点或进程顶点;以及
(2)目标是处于“不完全”状态的文件顶点,或者是不处于“完成”
状态的进程顶点。
插入通信适配器
在该变换中,驱动器将链路替换为通信适配器(即,替换为链路、进程顶点和另一链路)。进程顶点运行复制程序,该复制程序将数据从其输入复制到其输出,并且可从底层基板所支持的任何通信信道或数据存储进行读取/写入到底层基板所支持的任何通信信道或数据存储。对于源(目标)通信适配器,进程顶点的宿主与源(目标)顶点的宿主相同,并且工作目录与源(目标)顶点的工作目录相同。在“启用”状态下创建进程顶点。如果满足以下条件,则可执行该变换:
(1)源是处于“完成”状态以外的状态的进程顶点,或者是文件顶点;以及
(2)目标是处于“完成”状态以外的状态的进程顶点,或者是处于“不完全”状态的文件顶点。
将文件顶点的状态设置为“完全”
在该变换中,文件顶点的状态设置为“完全”。如果文件顶点的状态是“不完全”,并且对文件顶点的所有输入都是处于“完成”状态的进程顶点,则可执行该变换。
将进程顶点的状态设置为“可运行”或“不可运行”
在该变换中,进程顶点的状态设置为“可运行”或“不可运行”。如果进程顶点的状态是“启用”,可执行该变换。
设置数据链路的通信方法
在该变换中,针对数据链路设置通信方法。如果数据链路的通信方法是“未绑定”,则可执行该变换。
具有以下三个特性的数据流图是可执行的:
(1)所有进程顶点都处于以下状态中的一种状态:“完成”、“可运行”、“不可运行”或“禁用”。
(2)所有数据链路都满足以下所有标准:
1)如果数据链路的源或目标是“可运行”进程顶点,则数据链路的通信方法必须绑定到特定通信方法。
2)如果数据链路的通信方法是除“文件”以外的任何东西,则数据链路的源和目标两者都必须是进程顶点,并且如果一个进程顶点是“可运行”,则者两个进程顶点都必须是“可运行”。
3)如果数据链路的通信方法是“文件”,则数据链路的源或目标必须是文件顶点。如果目标是“可运行”进程顶点,则源必须是“完全”文件顶点。如果源是“可运行”文件顶点,则目标必须是“不完全”文件顶点。
(3)绑定到通信方法的所有链路都满足通信方法中固有的约束:
1)通信方法必须与其源端口和目标端口的访问方法兼容(这可通过查阅程序模板来确定)。在已描述的扩展基板的情况下,所有通信方法都与SOC访问兼容;除共享存储器外,所有存储器都与“文件描述符”访问兼容;“命名管道”和“文件”与“命名管道”访问兼容;并且仅文件与“文件”访问兼容。
2)一些通信方法要求源顶点和目标顶点的节点相同。对于已描述的扩展基板,这适用于TCP/IP以外的所有通信方法。
数据流图变换可以任何顺序应用(例如,可重复遍历数据流图数据结构,直到完成所有变换),直到获得可执行图。在一些示例中,数据流图变换按以下顺序应用:(1)插入文件适配器;(2)替换文件到文件链路;(3)识别“完全”文件顶点;(4)识别“不可运行”进程顶点;(5)识别“可运行”进程顶点;(6)将剩余“启用”顶点设置为“不可运行”;(7)在满足条件的地方插入更多文件适配器;(8)选择通信方法;和(9)插入通信适配器。现在将更详细地描述该示例的步骤:
(1)插入文件适配器
为了插入文件适配器,对数据流图中的所有链路执行以下步骤。如果链路的源端口具有需要使用文件的数据访问方法,并且目标不是同一节点上的文件,则插入源文件适配器。如果链路的目标端口具有需要使用文件的数据访问方法,并且源不是同一节点上的文件,则插入目标文件适配器。如果链路的目标是处于“禁用”状态的进程顶点,而源是处于“启用”状态的进程顶点,则插入目标文件适配器。
(2)替换文件到文件链路
为了替换文件到文件链路,对数据流图中的所有链路执行以下步骤。如果源和目标都是文件顶点,则插入源通信适配器。(另外,如果源和目标在不同节点上,则还插入目标通信适配器;未示出)。
(3)识别“完全”文件顶点
为了识别“完全”文件顶点,对数据流图中的所有文件顶点执行以下步骤。如果所有上游顶点都是处于“完成”状态的进程顶点,则将其状态设置为“完全”。
(4)识别“不可运行”进程顶点
为了识别“不可运行”进程顶点,对数据流图中的所有链路执行以下步骤。“不可运行性”测试如下执行:如果链路的源是“不完全”文件顶点并且其目标是处于“启用”状态的进程顶点,则将进程顶点的状态设置为“不可运行”;如果源是处于“启用”状态以外的任何状态的进程顶点,并且目标是处于“启用”状态的进程顶点,则将目标进程顶点标记为“不可运行”。重复此测试,直到不再有顶点可能被标记为“不可运行”。
(5)识别“可运行”进程顶点
为了识别“可运行”进程顶点,对数据流图中的所有进程顶点执行以下步骤。“可运行性”测试如下执行:如果顶点处于“启用”状态,并且所有上游顶点都是“完全”文件顶点或“可运行”进程顶点,则将顶点的状态设置为“可运行”。重复此测试,直到不再有顶点可标记为“可运行”。
(6)将剩余“启用”顶点设置为“不可运行”
为了将剩余“启用”顶点设置为“不可运行”,对图中的所有进程顶点执行以下步骤。如果顶点处于“启用”状态,则将其状态设置为“不可运行”。
(7)插入更多文件适配器
为了插入更多文件适配器,对数据流图中的所有链路执行以下步骤。如果链路的源是“可运行”进程顶点,而目标是“不可运行”进程顶点,则插入源文件适配器。
(8)选择通信方法
为了选择通信方法,对数据流图中的所有链路执行以下步骤。该步骤仅适用于任一端附接到可运行进程且未绑定到通信方法的链路。如果链路的源(目标)是文件顶点,并且其目标(源)是同一节点上的进程顶点,则将链路的通信方式设置为“文件”。否则,选择可用通信方法中的一种可用通信方法,以便满足该方法的所有约束。为了提高速度,可按照“共享存储器”、“命名管道”和TCP/IP的顺序考虑通信方法。在一些示例中,选择满足上述约束的第一方法。在参考基板中,可使用以下规则:首先,如果链路附接到接受SOC连接的端口,则如果源和目标位于同一节点上,链路将使用“共享存储器”;如果源和目标位于不同节点上,则使用TCP/IP。否则,如果源和目标位于同一节点上,则将使用“命名管道”方法。在所有其他情况下,没有单一的通信方法是足够的,并且系统将恢复到通信适配器(如下)。
(9)插入通信适配器
如果在选择通信方法的前一步骤中未选择任何单一的通信方法,并且所有通信方法都已尝试过,则继续插入源通信适配器并尝试为适配器的两个链路选择通信方法。如果失败,则尝试用目标通信适配器替换新插入的源通信适配器。如果失败,则同时插入源通信适配器和目标通信适配器,并为所得双适配器中的三个链路选择通信方法。在参考基板中,仅当源和目标位于不同节点上并且链路连接到不接受SOC连接方法的文件顶点或进程顶点时,才需要通信适配器。在这种情况下,适配器可如下选择:
如果源是文件顶点,则插入源通信适配器。源通信适配器中的两个链路将依次使用“文件”通信方法和TCP/IP通信方法。
如果源是不接受SOC通信方法的端口,则插入源通信适配器。源通信适配器中的两个链路将依次使用TCP/IP通信方法和“文件”通信方法。
如果目标是文件顶点,则插入目标通信适配器。
适配器中的两个链路将依次使用TCP/IP通信方法和“文件”通信方法。
如果目标是不接受SOC通信方法的端口,则插入目标通信适配器。适配器中的两个链路将依次使用TCP/IP通信方法和“命名管道”通信方法。
阶段C:启动数据链路
数据链路是在“未启动”状态下创建的并且必须启动。为了启动链路,扫描链路以查找“未启动”、绑定到通信方法并具有“可运行”源或目标的链路。对于所有此类链路,生成可由各种通信方法使用的标识符。对于上述扩展基板,标识符如下创建。所有链路都具有两个标识符:流对象标识符和通信信道/文件标识符。流对象标识符由SOC机制使用,并且与链路的名称相同。信道/文件标识符用于标识链路采用的文件、命名管道、共享存储器区域或TCP/IP连接。另外,在进程顶点需要“命名管道”通信方法或“文件”通信方法的情况下,信道/文件标识符将变得可用,使得进程顶点在启动时将能够使用UNIX文件系统附加到信道/文件。
生成标识符后,调用基板以创建信道或流对象。如果通信方法为“命名管道”,则还将调用基板以创建命名管道。
一旦生成可执行程序182,编译器24就将可执行程序182传输到数据处理系统26。数据处理系统26从存储系统12接收记录并以批处理模式执行可执行程序136以产生例如批处理结果184。批处理结果184显示特定规则案例“触发”的次数(例如,规则被处理的数据记录触发了多少次)。在该示例中,相对于其他规则,“黄金”报价触发了过多的次数。因此,用户可能想要测试他或她创建的规则,以便确定是否可做出改变,例如减少黄金报价被触发的次数。
参考图5K,环境190示出了由开发环境18生成的用于定义和测试业务规则和其他逻辑规则的业务规则编辑器和测试界面191的示例。在该示例中,界面191允许多种测试类别192,包括按记录192a测试、按表达式192b测试、按错误192c测试、按基线增量192d测试和按规则案例192e测试。在该示例中,开发环境18的用户已选择按规则案例192e测试并已指定案例2(对应于黄金报价)。从这里,用户可通过与按钮193a交互来逐步浏览触发指定规则案例(即,规则案例2)的记录193,如图5L所示。在该示例中,记录4已触发规则案例2,如界面191的规则定义部分123中带阴影填充的粗体轮廓所指示。由于已执行数据流图(并且因此已访问物理数据),因此输入部分122中所示的字段填充有当前记录(图5L中的记录4)的数据值194。从这些值可以看出,记录4完全符合触发案例2的定义规则。与按钮193a交互前进到触发案例2的下一记录,如图5M所示。从数据值194可以看出,记录24明显更接近规则案例2的“使用分钟数”阈值。
因此,为了减少黄金报价的数量,用户可增加“已用分钟数”阈值,如图5N所示。在该示例中,用户已将规则案例2中“已用分钟数”的触发值更改为“>400”,如粗体和阴影单元格195所示。在执行另一批处理测试以查看更改的总体结果之前,用户可能希望在单个或少量记录上测试规则更改,以确保规则按预期工作。为此,用户可将要测试的记录输入窗口193中,并与“测试记录”按钮196交互。在该示例中,用户已选择测试记录24。响应于“测试记录”按钮196的选择,开发环境18生成经修改的规范197,并将规范197传输到图生成器22。开发环境18可传输整个规范197或仅传输经修改的部分。图生成器22使用经修改的规范197和逻辑数据(未示出)产生经修改的数据流图198。数据流图198被发送到编译器以进行编译和后续执行。开发环境18还将指定要测试的记录的数据199传输到数据处理系统26以供执行。
参考图5O,环境200示出了数据流图198对指定测试记录204的执行。在该示例中,编译器24接收数据流图198并对其进行编译以产生可执行程序202,该可执行程序被传输到数据处理系统26。数据处理系统26接收指定要测试的记录的数据199,并从存储系统12中检索指定的测试记录204(例如,在本示例中为记录24)。然后,数据处理系统26使用测试记录204执行可执行程序202以产生更新结果206,即使用更新的可执行数据流图处理指定记录的结果。这些结果被呈现给在界面191中执行测试的用户,如图5P所示。如图5P所见,根据经修改的规则,记录24现在触发案例3(代表白银报价),而不是案例2(代表黄金报价)。
确认经修改的规则案例和数据流图按预期工作后,可执行批处理测试,如图5Q所示。为此,数据处理系统26从存储系统12接收记录并以批处理模式执行可执行程序202以产生批处理结果208。批处理结果208表明,相对于图5J所示的修改之前的批处理结果184,黄金报价的数量显著减少。
参考图6A,环境210示出了由开发环境18生成的用于定义业务规则和其他逻辑规则的业务规则编辑器界面121的另一示例。在该示例中,逻辑数据211包括“账户数据”数据集作为根节点,其与各种其他数据集(包括“交易”数据集、“付款数据”数据集和“提款数据”数据集)相关。这些数据集中的每个数据集以及它们的相应字段在界面121的输入部分122中可视化。具体地,输入部分122包括“账户数据”及其字段的视觉表示212、212a、212b和212c,“交易”及其字段的视觉表示213、213a和213b,“付款数据”及其字段的视觉表示214和214a,以及“提款数据”及其字段的视觉表示215和215a。
规则定义部分123包括一系列输入和规则案例。在该示例中,“价格”和“位置”字段用作定义规则时的输入,分别如单元格128a和128b所示。“账户位置”和“账户余额”字段用作定义规则定义部分120中指定的规则案例时的表达式的一部分。如果规则案例适用,则基于输出列129a生成输出。如该列中所示,规则案例129c、129d、129e中的每个规则案例的输出都与基于指定的触发标准批准、拒绝或标记某些交易以供审查有关。在通过针对规则定义部分123中的单元格指定输入而完成定义规则时,开发环境18生成规则规范216,该规则规范指定规则案例以及需要访问哪些字段以实施规则。开发环境18将规则规范216传输到图生成器22。开发环境18还将逻辑数据211传输到图生成器22。
参考图6B,环境220示出了根据规则规范216和逻辑数据211生成和优化配置用于连续操作的数据流图的示例。图生成器22接收规则规范216和逻辑数据211。类似于批处理设置或非连续设置,图生成器22最初生成数据流图222,该数据流图被配置为基于例如用于访问逻辑数据211中指定的数据集的指令、参数或其他信息来访问作为数据源的逻辑数据211中包括的数据集和字段。然而,数据流图222的组件以及数据访问和处理的方式在连续设置中是不同的。在该示例中,订阅组件222a用于订阅来自根节点“账户数据”的数据流。然后,通过复制组件222b复制来自根节点的每个传入流单元(或其一部分),以用于随后使用例如查找组件222c查找逻辑数据211中定义的相关记录。
在生成初始数据流图222之后,图生成器22将优化器132应用于数据流图222以生成数据流图224。优化器132从数据流图222中移除组件222d、222f、222g、222h和222i,如数据流图224的划掉部分所示。优化器132确定移除这些组件,因为这些组件与规则规范216未引用或使用的数据集相关。也就是说,规则规范216不包括对包括在已移除数据集中的任何字段的引用。优化的最终结果是数据流图226,该数据流图经优化以移除执行规则规范96a指定的规则不需要的所有数据集,以及经实例化以访问那些数据集的其他组件(例如,排序、连接等)。因此,无论输入数据是连续的、半连续的还是非连续的,这里描述的逻辑数据都能有效地提供逻辑访问,而不会产生物理成本,并有助于优化。
参考图6C,环境230示出了连续数据流图226的执行结果。图生成系统18将数据流图226传输到编译器24,该编译器将数据流图96a编译成可执行程序232(例如,可执行数据流图)。编译器23将可执行程序232传输到数据处理系统26。数据处理系统26接收数据流12(例如,连续数据)并执行可执行程序232以处理数据流并产生实时或近实时结果234。
参考图7A,环境240示出了开发环境18生成规范252的另一真实世界示例。在该示例中,开发环境18呈现具有组件部分242、输入部分243和画布部分244的图形用户界面241。组件部分242包括视觉表示242a至242f,这些视觉表示表示可用于定义计算逻辑的各种操作。输入部分243显示逻辑数据94中表示的数据集和字段的视觉表示245、245a、246、246a、246b、246c、247、247a、248、248a。输入部分243还显示其他数据源中表示的数据集和字段的视觉表示249和249a。也就是说,输入部分243中的视觉表示表示可用于定义计算逻辑的那些数据集和字段。
画布部分244用于以数据流图的形式定义计算逻辑,其在视觉上被描绘为可视化250(并且出于方便而非限制的目的,在下文称为“数据流图250”)。由可视化250表示的数据流图包括具有节点的数据结构。这些节点中的每个节点均包括至少一个操作占位符字段和至少一个数据占位符字段,这些字段填充有用户在画布部分244中指定的操作和数据。在该示例中,通过将视觉表示242a至242f中的一个或多个视觉表示从组件部分242拖放到画布部分244上,生成数据流图250。视觉表示242a-242f中的每个视觉表示均表示将由数据结构执行或将在数据结构上执行的操作。一旦视觉表示被置于画布部分244上,它们就变成画布部分244上的图标。这些图标中的一些图标(诸如图标251a)指定要针对特定数据集或字段执行的操作(例如,过滤器操作)。在该示例中,图标251a指定对由输入部分243中的视觉表示246a表示的“添加分钟数”字段执行过滤操作。图标251b指定对由逻辑数据部分243中的视觉表示246c表示的“剩余分钟数”字段执行过滤操作。开发环境18使用由数据流图250在视觉上表示的计算逻辑来生成规范252。规范252指定在画布部分244中在视觉上描绘的计算逻辑。开发环境18将规范252和逻辑数据94传输到图生成器22。图生成器22可使用规范252和逻辑数据94来针对数据流图250的每个节点填充操作占位符字段和数据占位符字段。
参考图7B,环境260示出了图生成器22生成优化数据流图的示例,该优化数据流图的可视化由可视化268示出(出于方便而非限制的目的,在本文称为“数据流图268”)。图生成器22接收规范252和逻辑数据94。使用规范252和逻辑数据94,图生成器22生成包括组件262a至262r的数据流图262,如图7C所示。具体地,图生成器22通过针对数据流图252的每个节点填充操作占位符字段和数据占位符字段并使用先前描述的技术,从规范252和逻辑数据94生成数据流图262。例如,与其中指定计算逻辑由变换组件134l实施的数据流图98a不同,数据流图262包括基于规范252中指定的计算逻辑的单独组件262o、262p、262q。数据流图262表示在逻辑数据94中表示并与单独的“报价”数据集249及其“月度”字段249a连接的数据集,并且还表示生成数据流图所需的附加内置功能(例如,排序、分区等)。
在该示例中,图生成器22将优化器132应用于图7C所示的数据流图262以产生优化数据流图268。图7D和图7E中示出优化的各个中间级。优化器132分析规范252或逻辑数据94或两者,以识别在规范252中使用的那些字段,并继而识别包括那些字段的那些数据集。优化器132从数据流图262中移除规范252未使用或引用的那些数据集。优化器132还可在必要时负责将分区组件添加到图中。在一些示例中,优化器132通过最小化选择语句来做到这一点,使得仅访问规则规范252中指定并包括在逻辑数据94中的那些数据集和字段。如图7D所示,优化器132从数据流图262中移除组件262a、262s、262c、262f、262i、262v和262h(从而在时间T2产生数据流图264)。这是因为组件262a表示数据集“报价状态”,并且其字段“报价接受”未被规范252引用或使用。类似地,组件262c表示数据集“重新载入日期”,并且其字段“上次重新载入”未被规范引用或使用。移除这些输入源(即,由组件262a和262i表示的那些输入源)会使剩余组件变得不必要(有时称为“死组件”),因此也可移除这些组件(即,262s、262c、262v、262h)。
优化器132还执行在组件262k指定的连接操作之前移动过滤器组件262o和262p的进一步优化,从而在时间T3产生数据流图266,如图7E所示。通过这样做,优化器122产生更快、更有效且使用更少计算资源的数据流图,因为过滤操作在连接操作之前执行,这减少了需要连接的数据量。当在连接操作之后执行过滤操作时,会使用更多的组成资源,因为系统必须将最终过滤掉的数据连接在一起。优化的结果是数据流图268。
一般来讲,优化器132根据数据流图中指定的操作中的一个或多个操作来执行处理数据可能需要的优化或其他变换,或者相对于在无优化或变换的情况下处理数据,根据数据流图中指定的操作中的一个或多个操作来改善处理数据,或两者兼有。例如,优化器添加一个或多个排序操作、数据类型操作、连接操作(包括基于在数据流图中指定的关键字的连接操作)、分区操作、自动并行操作或指定元数据的操作等等,以产生具有数据流图262的期望功能性的变换后的数据流图268。在一些实施方式中,通过将一个或多个数据流图优化规则应用于变换后的数据流图以相对于在应用优化之前变换后的数据流图的计算效率改善变换后的数据流图的计算效率,变换后的数据流图268s是(或变换成)优化数据流图。数据流图优化规则可包括例如死或冗余组件消除、早期过滤或记录缩小等等,如名称为“用于生成计算图的编辑器(Editor for Generating Computational Graphs)”的美国专利申请号62/966,768中所述,该专利申请的全部内容以引用方式并入本文。
本文描述的技术使用关于数据集之间的关系的信息来改善使用开发环境的用户(例如,商业用户)的生产力并实现优化的数据处理。尽管用户(例如,技术用户)最初可能需要定义逻辑数据以发布到开发环境(例如,通过选择数据集以用作根节点或通过定义虚拟字段),但随后使业务用户能够根据已发布的逻辑数据灵活地开发自己的计算逻辑,并且基于该逻辑,可生成各种各样的数据流图,以优化方式执行逻辑。
本文描述的技术使用户能够快速而有力地从存储在存储系统中的一组复杂数据集转到将逻辑数据发布到开发环境。在一些示例中,技术用户选择他们感兴趣从中工作的一组数据集,并在所有这些数据集中发现或以其他方式获得架构定义。例如,可从数据库中的那些数据集导出架构,这些数据集是使用数据发现、语义发现或其他机器学习发现的,或者是通过接收来自技术用户的附加输入发现的,或者是以它们的组合等方式发现的。在一些示例中,技术用户可在架构中生成附加的计算字段或虚拟字段,诸如来自其他数据元素的聚合。在一些示例中,技术用户能够选择逻辑数据的根节点或视角。
然后,在开发环境中操作的业务用户可使用逻辑数据中包含的任何属性(可能对应于实际的物理数据元素或技术用户已定义的逻辑数据元素)来开发适用于其业务需求的计算逻辑。在一些示例中,业务用户能够查看输出并测试他们在开发环境中编写的逻辑(例如,规则)。
一旦业务用户对他们开发的计算逻辑感到满意(并且任选地进行了测试),图生成器就可生成优化的数据流图,该优化的数据流图只处理该数据流图所需的数据集。例如,业务用户在开发计算逻辑时可能有权访问大量不必要的数据集。由于图生成器和优化器具有来自逻辑数据的关于数据集的详细信息,因此它生成的数据流图可得到显著优化。
一旦生成了优化的数据流图,其就可由例如数据处理系统执行。在一些示例中,数据流图可以两种不同的模式执行:批处理模式或实时模式。在一些示例中,如果业务用户对依赖于不同数据集的不同规则集感兴趣,则业务用户可生成期望的数据流图,并且该数据流图也可优化,而无需技术用户参与。
图8示出了用于产生逻辑数据并使用该逻辑数据生成计算机程序的示例性过程800的流程图。过程800可由本文描述的系统和组件中的一者或多者(包括配置为实施参考图1至图7描述的技术的一个或多个计算系统)实施。
过程800的操作包括访问架构,该架构指定在该架构中表示的数据集之间的关系、对该数据集中的一个或多个数据集的一个或多个计算或者该数据集中的一个或多个数据集的一个或多个变换(802)。在示例中,该架构为数据库架构。在示例中,对该数据集中的一个或多个数据集的该一个或多个计算或者该数据集中的一个或多个数据集的一个或多个变换定义该多个数据集中的至少一个数据集的逻辑字段、虚拟字段或计算字段。
通过以下操作从该数据集中识别存储装置中的多个数据集:从该数据集中选择数据集;以及从该架构中识别与所选数据集相关的一个或多个其他数据集(802)。在示例中,所选数据集为该逻辑数据的根节点,并且该一个或多个其他数据集中的至少一个数据集连接到所选数据集。在示例中,从该客户端设备接收指定所选数据集的选择数据。在示例中,从该架构中识别用于连接所选数据集和该一个或多个其他数据集的一个或多个参数(诸如一个或多个关键字)。
识别该多个数据集的属性(806)。在示例中,一个或多个属性包括该多个数据集的字段名称。在示例中,该一个或多个属性包括用于访问该多个该数据集的信息。生成表示该多个该数据集的所识别属性并进一步表示该属性之间的一个或多个关系的逻辑数据(808)。
将该逻辑数据提供到开发环境(810)。该开发环境提供对表示该多个该数据集的所识别属性的该逻辑数据的一个或多个部分的访问(812)。在示例中,该开发环境提供对该逻辑数据的该一个或多个部分的访问,而无需从存储装置访问该多个数据集。在示例中,该开发环境读取该逻辑数据作为数据源。
从该开发环境接收在执行操作时指定所识别属性中的至少一个属性的规范(814)。基于该规范和由该逻辑数据表示的所识别属性之间的该一个或多个关系,生成计算机程序,该计算机程序被配置为通过从存储装置访问该多个数据集中的至少一个数据集来执行该操作,其中该至少一个所访问的数据集具有在该规范中指定的该属性中的至少一个属性(816)。在示例中,使用从存储装置访问的至少一个数据集来执行计算机程序。在示例中,该操作包括:从该多个数据集识别包括该规范中指定的该属性中的该至少一个属性的数据集;以及从存储装置访问所识别的数据集。
在示例中,优化该计算机程序以产生优化的计算机程序,该优化的计算机程序被配置为通过从存储装置仅访问该多个数据集中具有该规范中指定的该属性中的至少一个属性的那些数据集来执行该操作。在示例中,从该计算机程序中移除用于从存储装置访问该多个数据集中不包括该规范中指定的该属性中的该至少一个属性的至少一个数据集的操作。在示例中,该计算机程序被配置为通过选择语句从存储装置访问来自该多个数据集的至少一些数据,其中该选择语句被最小化以仅选择该规范中指定的该属性中的该至少一个属性。在示例中,该操作包括基于该规范和由该逻辑数据表示的所识别属性之间的该一个或多个关系,生成可执行数据流图,该可执行数据流图被配置成执行该操作,其中该可执行数据流图包括该一个或多个属性中的至少一个属性作为输入。
本说明书中描述的主题和操作的实施方式可在数字电子电路中实施,或在计算机软件、固件或硬件中实施,包括本说明书中公开的结构和其结构等同物,或在其中的一者或多者的组合中实施。本说明书中描述的主题的实施方式可实施为一个或多个计算机程序(也称为数据处理程序)(即计算机程序指令的一个或多个模块,所述一个或多个计算机程序指令编码在计算机存储介质上以供数据处理装置执行或控制所述数据处理装置的操作)。计算机存储介质可以是或可被包括在计算机可读存储设备、计算机可读存储基板、随机或串行存取存储器阵列或设备或它们中的一者或多者的组合中。计算机存储介质也可以是或被包括在一个或多个单独的物理部件或介质(例如,多个CD、盘或其他存储设备)中。主题可以在存储在非暂态计算机存储介质上的计算机程序指令上实施。
本说明书中描述的操作可以被实施为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其他源接收的数据执行的操作。
术语“数据处理装置”涵盖用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机、片上系统或前述项中的多个项或前述项的组合。装置可包括专用逻辑电路(例如FPGA(现场可编程门阵列)或ASIC(专用集成电路))。除了硬件之外,所述装置还可包括为相关计算机程序提供执行环境的代码(例如构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或它们中的一者或多者的组合的代码)。装置和执行环境可实现各种不同计算模型基础设施,诸如web服务、分布式计算和网格计算基础设施。
计算机程序(也称为程序、软件、软件应用程序、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释语言、声明性或过程性语言,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程、对象或适用于计算环境的其他单元。计算机程序可但不必需对应于文件系统中的文件。程序可以存储在保存其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中,专用于所讨论的程序的单个文件中,或者存储在多个协调文件中(例如,存储一个或多个模块、子程序或部分代码的文件)。计算机程序可以部署为在一台计算机上或在多台计算机上执行,这些计算机位于一个站点或跨多个站点分布并通过通信网络互连。
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行动作。这些过程和逻辑流程也可以由专用逻辑电路(例如FPGA(现场可编程门阵列)或ASIC(专用集成电路))来执行,并且装置也可以被实施为专用逻辑电路。
适合于执行计算机程序的处理器包括例如通用和专用微处理器两者,以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或这两者接收指令和数据。计算机的基本元件是用于根据指令执行动作的处理器以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘),或者可操作地耦合以从其接收数据或向其传送数据或两者,然而,计算机不需要具有此类设备。此外,计算机可以嵌入另一设备(例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备(例如,通用串行总线(USB)闪存驱动器))中。适用于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备(例如,EPROM、EEPROM和闪存设备)、磁盘(例如,内部硬盘或可移动磁盘)、磁光盘以及CD-ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或并入其中。
本说明书描述的主题的实施方式可以在计算系统中实施,所述计算系统包括后端组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有图形用户界面或Web浏览器的用户计算机,用户可以通过所述图形用户界面或Web浏览器与本说明书中描述的主题的实施方式交互),或者一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件可以通过数字数据通信的任何形式或介质(例如通信网络)互连。通信网络的示例包括局域网(LAN)和广域网(WAN)、网间网络(例如,互联网)和对等网络(例如,自主对等网络)。
计算系统可以包括用户和服务器。用户和服务器通常彼此远离并且通常通过通信网络进行交互。用户与服务器的关系是由于运行在相应计算机上的计算机程序产生的,并且彼此具有用户-服务器关系。在一些实施方式中,服务器将数据(例如,HTML页面)传输到用户设备(例如,出于向与用户设备交互的用户显示数据和从所述用户接收用户输入的目的)。可以在服务器处从用户设备接收在用户设备处生成的数据(例如,用户交互的结果)。
虽然本说明书包含许多特定实施方式细节,但是这些不应被解释为对任何实施方式或可能要求保护的内容的范围的限制,而是作为特定于特定实施方式的特征的描述。在本说明书中在单独实施方式的上下文中描述的某些特征也可以在单个实施方式中组合实施。反过来,在单个实施方案的上下文中描述的各个特征也可单独地或者以任何合适的子组合在多个实施方式中实施。此外,尽管上文所述特征可呈某些组合来发挥作用,甚至在最初照此要求保护,但在一些情况下,要求保护的组合中的一个或多个特征可从此组合中删除,并且要求保护的组合可以是针对某子组合或子组合的变型。
类似地,尽管附图按具体顺序示出各操作,但是这不应理解为此类操作必须按照所示的具体顺序或相继顺序来执行,或者执行所有所示操作必须获得理想结果。在某些情形下,多重任务处理和并行处理会是有利的。此外,上述实施方式中的各种系统组件的分离不应被理解为在所有实施方式中都需要此类分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或封装到多个软件产品中。
其他实施方式均在以下权利要求书的范围内。

Claims (21)

1.一种由数据处理系统实施的用于提供一个或多个界面和存储具有一个或多个属性的数据集的存储装置的方法,并且其中所述一个或多个界面提供对所述数据集的所述一个或多个属性的访问,所述方法包括:
访问架构,所述架构指定在所述架构中表示的数据集之间的关系、对所述数据集中的一个或多个数据集的一个或多个计算或者所述数据集中的一个或多个数据集的一个或多个变换;
通过以下操作从所述数据集中识别存储装置中的多个所述数据集:
从所述数据集中选择数据集;以及
从所述架构中识别与所选数据集相关的一个或多个其他数据集;
识别所述多个数据集的属性;
生成表示所述多个所述数据集的所识别属性并进一步表示所述属性之间的一个或多个关系的逻辑数据;
经由一个或多个界面提供对表示所述多个所述数据集的所识别属性的所述逻辑数据的一个或多个部分的访问;
从所述一个或多个界面接收在执行操作时指定所识别属性中的至少一个属性的规范;以及
基于所述规范和由所述逻辑数据表示的所识别属性之间的所述一个或多个关系,生成计算机程序,所述计算机程序被配置为通过从存储装置访问所述多个数据集中的至少一个数据集来执行所述操作,其中所访问的所述至少一个数据集具有在所述规范中指定的所述属性中的所述至少一个属性。
2.根据权利要求1所述的方法,其中所述一个或多个界面提供对所述逻辑数据的所述一个或多个部分的访问,而无需从存储装置访问所述多个数据集。
3.根据权利要求1所述的方法,所述方法包括:
从所述多个数据集识别包括所述规范中指定的所述属性中的所述至少一个属性的数据集;以及
从存储装置访问所识别的数据集。
4.根据权利要求1所述的方法,所述方法包括使用从存储装置访问的所述至少一个数据集执行所述计算机程序。
5.根据权利要求1所述的方法,所述方法包括优化所述计算机程序以产生优化的计算机程序,所述优化的计算机程序被配置为通过从存储装置仅访问所述多个数据集中具有所述规范中指定的所述属性中的所述至少一个属性的那些数据集来执行所述操作。
6.根据权利要求1所述的方法,其中所述一个或多个属性包括所述多个数据集的字段名称。
7.根据权利要求1所述的方法,其中所述一个或多个属性包括用于访问存储装置中的所述多个数据集的信息。
8.根据权利要求1所述的方法,所述方法包括从所述架构中识别用于连接所选数据集和所述一个或多个其他数据集的一个或多个参数。
9.根据权利要求8所述的方法,其中所述一个或多个参数包括用于连接所选数据集和所述一个或多个其他数据集中的至少一个其他数据集的关键字。
10.根据权利要求1所述的方法,所述方法包括从客户端设备接收指定所选数据集的选择数据。
11.根据权利要求1所述的方法,其中所选数据集包括所述逻辑数据的根节点,并且其中所述一个或多个其他数据集中的至少一个其他数据集连接到所选数据集。
12.根据权利要求1所述的方法,其中对所述数据集中的一个或多个数据集的所述一个或多个计算或者所述数据集中的一个或多个数据集的一个或多个变换定义所述多个数据集中的至少一个数据集的虚拟字段。
13.根据权利要求1所述的方法,所述方法包括基于所述规范和由所述逻辑数据表示的所识别属性之间的所述一个或多个关系,生成可执行数据流图,所述可执行数据流图被配置为执行所述操作,其中所述可执行数据流图包括所述一个或多个属性中的至少一个属性作为输入。
14.根据权利要求1所述的方法,所述方法包括从所述计算机程序中移除用于从存储装置访问所述多个数据集中不包括所述规范中指定的所述属性中的所述至少一个属性的至少一个数据集的操作。
15.根据权利要求1所述的方法,其中所述计算机程序被配置为通过选择语句从存储装置访问来自所述多个数据集的至少一些数据,其中所述选择语句被最小化以仅选择所述规范中指定的所述属性中的所述至少一个属性。
16.根据权利要求1所述的方法,其中读取所述逻辑数据作为数据源。
17.根据权利要求1所述的方法,所述方法还包括:
提供开发环境,所述开发环境包括一个或多个图形用户界面,所述一个或多个图形用户界面用于查看表示所述多个数据集的所识别属性的所述逻辑数据的所述一个或多个部分并且进一步用于定义在执行所述操作时指定所识别属性中的至少一个属性的所述规范。
18.一种用于提供一个或多个界面和存储具有一个或多个属性的数据集的存储装置的系统,并且其中所述一个或多个界面提供对所述数据集的所述一个或多个属性的访问,所述系统包括:
一个或多个处理器和存储指令的一个或多个存储设备,所述指令在由所述一个或多个处理器执行时能够操作以使所述一个或多个处理器执行包括以下的操作:
访问架构,所述架构指定在所述架构中表示的数据集之间的关系、对所述数据集中的一个或多个数据集的一个或多个计算或者所述数据集中的一个或多个数据集的一个或多个变换;
通过以下操作从所述数据集中识别存储装置中的多个所述数据集:
从所述数据集中选择数据集;以及
从所述架构中识别与所选数据集相关的一个或多个其他数据集;
识别所述多个数据集的属性;
生成表示所述多个所述数据集的所识别属性并进一步表示所述属性之间的一个或多个关系的逻辑数据;
经由一个或多个界面提供对表示所述多个所述数据集的所识别属性的所述逻辑数据的一个或多个部分的访问;
从所述一个或多个界面接收在执行操作时指定所识别属性中的至少一个属性的规范;以及
基于所述规范和由所述逻辑数据表示的所识别属性之间的所述一个或多个关系,生成计算机程序,所述计算机程序被配置为通过从存储装置访问所述多个数据集中的至少一个数据集来执行所述操作,其中所访问的所述至少一个数据集具有在所述规范中指定的所述属性中的所述至少一个属性。
19.根据权利要求18所述的系统,其中所述计算机程序被配置为从存储装置仅访问具有在所述规范中指定的所述属性中的所述至少一个属性的那些数据集。
20.一种存储指令的非暂态计算机可读存储介质,所述指令用于使计算系统:
访问架构,所述架构指定在所述架构中表示的数据集之间的关系、对所述数据集中的一个或多个数据集的一个或多个计算或者所述数据集中的一个或多个数据集的一个或多个变换;
通过以下操作从所述数据集中识别存储装置中的多个所述数据集:
从所述数据集中选择数据集;以及
从所述架构中识别与所选数据集相关的一个或多个其他数据集;
识别所述多个数据集的属性;
生成表示所述多个所述数据集的所识别属性并进一步表示所述属性之间的一个或多个关系的逻辑数据;
经由一个或多个界面提供对表示所述多个所述数据集的所识别属性的所述逻辑数据的一个或多个部分的访问;
从所述一个或多个界面接收在执行操作时指定所识别属性中的至少一个属性的规范;以及
基于所述规范和由所述逻辑数据表示的所识别属性之间的所述一个或多个关系,生成计算机程序,所述计算机程序被配置为通过从存储装置访问所述多个数据集中的至少一个数据集来执行所述操作,其中所访问的所述至少一个数据集具有在所述规范中指定的所述属性中的所述至少一个属性。
21.根据权利要求20所述的非暂态计算机可读存储介质,其中所述计算机程序被配置为从存储装置仅访问具有在所述规范中指定的所述属性中的所述至少一个属性的那些数据集。
CN202180019193.3A 2020-03-06 2021-03-04 根据架构生成优化逻辑 Active CN115516443B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410025045.8A CN117891869A (zh) 2020-03-06 2021-03-04 数据处理系统实施的方法、系统和存储介质

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202062986374P 2020-03-06 2020-03-06
US62/986,374 2020-03-06
US17/025,751 2020-09-18
US17/025,751 US11210285B2 (en) 2020-03-06 2020-09-18 Generation of optimized logic from a schema
PCT/US2021/020871 WO2021178665A1 (en) 2020-03-06 2021-03-04 Generation of optimized logic from a schema

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202410025045.8A Division CN117891869A (zh) 2020-03-06 2021-03-04 数据处理系统实施的方法、系统和存储介质

Publications (2)

Publication Number Publication Date
CN115516443A CN115516443A (zh) 2022-12-23
CN115516443B true CN115516443B (zh) 2024-01-23

Family

ID=77555716

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202180019193.3A Active CN115516443B (zh) 2020-03-06 2021-03-04 根据架构生成优化逻辑
CN202410025045.8A Pending CN117891869A (zh) 2020-03-06 2021-03-04 数据处理系统实施的方法、系统和存储介质

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202410025045.8A Pending CN117891869A (zh) 2020-03-06 2021-03-04 数据处理系统实施的方法、系统和存储介质

Country Status (9)

Country Link
US (2) US11210285B2 (zh)
EP (1) EP4115301A1 (zh)
JP (1) JP2023517310A (zh)
CN (2) CN115516443B (zh)
AU (1) AU2021230348A1 (zh)
BR (1) BR112022017705A2 (zh)
CA (1) CA3170453A1 (zh)
MX (1) MX2022011037A (zh)
WO (1) WO2021178665A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11210285B2 (en) * 2020-03-06 2021-12-28 Ab Initio Technology Llc Generation of optimized logic from a schema
US11663203B2 (en) * 2020-10-01 2023-05-30 Sigma Computing, Inc. Optimizing database statements using a query compiler
US11436237B2 (en) * 2020-12-17 2022-09-06 International Business Machines Corporation Ranking datasets based on data attributes
US11841872B2 (en) * 2021-07-26 2023-12-12 Salesforce, Inc. Interactively building previews of extract, transform, load (ETL) graphs using cached previews of subgraphs
US20240078237A1 (en) * 2022-09-07 2024-03-07 Google Llc Database Join Operations With Early Filtering

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101361088A (zh) * 2005-11-23 2009-02-04 瑞士银行股份有限公司 用于产生、处理并管理结构化数据集的计算机实现的系统
CN107135663A (zh) * 2014-11-05 2017-09-05 起元技术有限责任公司 影响分析
CN108701257A (zh) * 2016-08-22 2018-10-23 甲骨文国际公司 用于实时可视模拟内的动态、增量推荐的系统和方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2575117A (en) 1950-02-25 1951-11-13 Naken William Sanding device
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US6681383B1 (en) * 2000-04-04 2004-01-20 Sosy, Inc. Automatic software production system
EP1990760A4 (en) * 2006-02-28 2010-05-19 Fujitsu Ltd OFFICE MANAGEMENT PROGRAM, OFFICE MANAGEMENT DEVICE AND OFFICE MANAGEMENT PROCEDURE
US8069129B2 (en) 2007-04-10 2011-11-29 Ab Initio Technology Llc Editing and compiling business rules
CA2814835C (en) * 2010-10-25 2019-01-08 Ab Initio Technology Llc Managing data set objects in a dataflow graph that represents a computer program
US10754877B2 (en) * 2013-01-15 2020-08-25 Datorama Technologies, Ltd. System and method for providing big data analytics on dynamically-changing data models
US11423083B2 (en) 2017-10-27 2022-08-23 Ab Initio Technology Llc Transforming a specification into a persistent computer program
US20190370407A1 (en) 2018-05-30 2019-12-05 Ab Initio Technology Llc Systems and methods for dataflow graph optimization
US11210285B2 (en) * 2020-03-06 2021-12-28 Ab Initio Technology Llc Generation of optimized logic from a schema

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101361088A (zh) * 2005-11-23 2009-02-04 瑞士银行股份有限公司 用于产生、处理并管理结构化数据集的计算机实现的系统
CN107135663A (zh) * 2014-11-05 2017-09-05 起元技术有限责任公司 影响分析
CN108701257A (zh) * 2016-08-22 2018-10-23 甲骨文国际公司 用于实时可视模拟内的动态、增量推荐的系统和方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Oracle9i Developer Suite;ANONYMOUS;ORACLE DEVELOPER SUITE TECHNICAL WHITE PAPER;第1-51页 *

Also Published As

Publication number Publication date
BR112022017705A2 (pt) 2022-10-18
US11210285B2 (en) 2021-12-28
US11734264B2 (en) 2023-08-22
CN117891869A (zh) 2024-04-16
US20220147529A1 (en) 2022-05-12
WO2021178665A1 (en) 2021-09-10
AU2021230348A1 (en) 2022-09-08
MX2022011037A (es) 2022-12-13
JP2023517310A (ja) 2023-04-25
CA3170453A1 (en) 2021-09-10
EP4115301A1 (en) 2023-01-11
US20210279043A1 (en) 2021-09-09
CN115516443A (zh) 2022-12-23

Similar Documents

Publication Publication Date Title
CN115516443B (zh) 根据架构生成优化逻辑
EP2633398B1 (en) Managing data set objects in a dataflow graph that represents a computer program
CN107533453B (zh) 用于生成数据可视化应用的系统和方法
Görlach et al. Conventional workflow technology for scientific simulation
US10073867B2 (en) System and method for code generation from a directed acyclic graph using knowledge modules
EP3726375B1 (en) Source code translation
JP6626823B2 (ja) サブグラフから構成されるデータフローグラフ用のインターフェースの管理
JP6449173B2 (ja) プロセスを構成するためのアプリケーションの構築
CN108351796B (zh) 用于在各种运行时环境中与模型交互并执行模型的统一接口规范
US9507838B2 (en) Use of projector and selector component types for ETL map design
US20120060141A1 (en) Integrated environment for software design and implementation
US20240126748A1 (en) Generation of optimized logic from a schema
Christensen Result specification and model connection in the Mobius modeling framework
Karastoyanova et al. Conventional workflow technology for scientific simulation
Rundensteiner Design views for synthesis: Providing both uniform data integration and diverse data customization
Lopes Modeling stochastic optimization: from idea to instance
Bubak et al. Collection and storage of provenance data
JP2000235496A (ja) コンパイル処理方法、コンパイル処理装置、記録媒体およびクライアントサーバシステム
Poly VisTrails Documentation
Rundensteiner DESIGN VIEWS FOR SYNTHESIS
Trepanier et al. A Data-Centric Infrastructure for Multidisciplinary Analysis Integration and Management
Finnigan et al. 14 The Software Bookshelf

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant