CN105556504A - 从物理流生成逻辑表示 - Google Patents
从物理流生成逻辑表示 Download PDFInfo
- Publication number
- CN105556504A CN105556504A CN201380078997.6A CN201380078997A CN105556504A CN 105556504 A CN105556504 A CN 105556504A CN 201380078997 A CN201380078997 A CN 201380078997A CN 105556504 A CN105556504 A CN 105556504A
- Authority
- CN
- China
- Prior art keywords
- engine
- dictionary
- logical
- language
- unknowable
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本文描述的用于处理分析流的技术。物理流可被解析成多个元素。可使用字典,基于物理流生成逻辑表示。随后,可使用字典,基于逻辑表示生成引擎专用逻辑表示或第二物理流。
Description
背景技术
存在用于处理分析流的许多执行引擎。这些引擎可仅接受以特定编程语言(例如,PigLatin、结构化查询语言(SQL))写的、或使用特定流设计工具(例如,Pentaho数据整合(PDI)平台)设计的输入流。此外,即使支持相同编程语言或流设计工具的数据分析引擎也可能提供分析操作等的不同实现方式,且因此针对输入流可能具有引擎专用需求。在今天的异构分析环境中,由于这些限制,可能很难对分析流进行管理,尤其是在分析流是包括针对不同引擎的多个子流的混合流时更难。
附图说明
下面的详细描述涉及附图,其中:
图1示出根据示例的生成逻辑表示的方法。
图2示出根据示例的用于生成逻辑表示的处理系统的概览。
图3示出根据示例的用于生成逻辑表示的字典。
图4示出根据示例的用于生成逻辑表示的字典的图解。
图5示出根据示例的逻辑运算符的字典条目。
图6示出根据示例的更新字典的方法。
图7示出根据示例的生成逻辑表示的计算系统。
图8示出根据示例的用于生成逻辑表示的计算机可读介质。
具体实施方式
如本文所描述的,可从一个或多个物理分析流生成逻辑分析流(本文称为“逻辑表示”)。物理流包括诸如实现类型、资源、存储路径等的实现细节,且专用于一种执行引擎。物理流可以用特定的编程语言写成,或者可以用特定的流设计工具设计。物理流还可以是混合流,其包括针对不同执行引擎的多个子流。比较而言,生成的逻辑流可包括用逻辑语言写的逻辑运算符,且可以是引擎不可知的,意味着其不是设计用于在任何专用执行引擎上运行。
存在生成物理流的引擎不可知的逻辑表示的许多优势。例如,在混合流的情况下,如果将流以一个表示写成单个流,则可更容易地理解流并对流进行管理。在采用逻辑表示时混合流可被优化,且可分解成更适于在给定执行环境(其可包括多个异构引擎)中执行的不同子流。即使对于非混合流,生成物理流的逻辑表示也可提供流的有用的抽象,且可使流能够转换成另一种物理形式,以供在与最初专用的执行引擎不同的执行引擎上执行。
根据示例,实现本文描述的原理的技术可包括将与至少一个执行引擎关联的第一物理流解析成多个元素。第一物理流可以是与多个异构执行引擎关联的混合流。可通过将多个元素转换成用逻辑语言表示的逻辑元素,使用字典生成物理流的逻辑表示。字典可包括逻辑语言和与至少一个执行引擎关联的编程语言之间的映射。随后,可使用字典从逻辑表示生成第二物理流。下面结合附图描述附加示例、优势、特征和修改等。
图1示出根据示例的生成逻辑表示的方法。方法100可由计算设备、系统、或计算机实施,例如由处理系统200、计算系统700、或计算机800实施。实现方法100的计算机可读指令可存储在计算机可读存储介质上。存储在介质上的这些指令本文可称为“模块”,且可由计算机执行。
这里将结合图2的示例处理系统200描述方法100。系统200可包括一个或多个计算机,和/或可由一个或多个计算机实现。例如,计算机可以是服务器计算机、工作站计算机、台式计算机、便携式电脑或移动设备,等等,且可以是分布式系统的一部分。计算机可包括一个或多个控制器以及一个或多个机器可读存储介质。
控制器可包括实现机器可读指令的处理器和存储器。处理器可包括至少一个中央处理单元(CPU)、至少一个基于半导体的微处理器、至少一个数字信号处理器(DSP)(例如,数字图像处理单元)、适用于获取并执行存储器中存储的指令的其他硬件设备或处理元件、或其结合。处理器可包括一个芯片上的单个或多个核、多个芯片上的多个核、多个设备上的多个核、或其结合。处理器可从存储器提取、解码、并执行指令,以实施各种功能。除获取并执行指令之外或者作为获取并执行指令的替代,处理器可包括:包括实施各种任务或功能的多个电子部件的至少一个集成电路(IC)、其他控制逻辑、其他电子电路、或其结合。
控制器可包括存储器,例如,机器可读存储介质。机器可读存储介质可以是任意电的、磁的、光的、或包含或存储可执行指令的其他物理存储设备。因此,机器可读存储介质可包括例如:各种随机存取存储器(RAM)、只读存储器(ROM)、闪存、及其结合。例如,机器可读介质可包括非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、存储驱动、NAND闪存,等等。此外,机器可读存储介质可以是计算机可读的且非暂时性的。此外,系统200可包括独立于一个或多个控制器的一个或多个机器可读存储介质。
方法100可始于110,在110,与至少一个执行引擎关联的第一物理流210可解析成多个元素。物理流可包括诸如实现类型、资源、存储路径等的实现细节,且专用于一种执行引擎。如本文所用的,物理流可以用特定编程语言(例如,SQL、PigLatin)写成,或可以用特定流设计工具(例如,抽取-转换-加载(ETL)流设计工具PDI)设计。因此,物理流可以是一个或多个脚本、流设计工具生成的流图和元数据、或二者的结合。
由于物理流可以是混合流,因此其可包括针对不同执行引擎的多个部分(即,子流)。例如,物理流的第一部分可以是用SQL写成,第二部分可以是用PigLatin写成。此外,支持相同编程语言的各执行引擎之间可能存在差异。例如,第一SQL执行引擎(例如,HPVerticaSQL引擎)的脚本可能不兼容第二SQL执行引擎(例如,OracleSQL引擎)(例如,可能不能在其上正确运行)。
第一物理流210可由流解析器222解析,流解析器222是负责“物理到逻辑”转换的模块220的一部分。流解析器222可采用各种形式。例如,在第一物理流210是用像PigLatin或SQL这样的编程语言写成的脚本的情况下,这种流可由与其关联的引擎来解析。然后,引擎生成此流的执行计划。脚本解析器可对执行计划进行分析,并获得流的每个运算符或数据储存的引擎专用信息。脚本解析器可输出构成流图的各节点(本文称作“元素”)。由于脚本解析器是引擎专用的,因此可能存在针对所支持的每个引擎的分立的脚本解析器。这种脚本解析器可作为插件增加到系统。
在第一物理流210是由流设计工具创建的分析流或具有是由流设计工具创建的分析流的一部分时,与流关联的执行引擎的流解析器可用于生成流的各元素。这可通过访问引擎代码库并重写引擎的默认打印机以将解析的流信息传递到xLM生成器226(逻辑表示生成器)来完成。如果不允许访问引擎代码库,则可能需要写显式变换(例如,如果工具专用流表示是可扩展标记语言(XML),则可使用可扩展样式表语言转换(XSLT))。
在120,可使用字典生成第一物理流的逻辑表示。此逻辑表示可被认为是逻辑流。逻辑表示可通过使用字典224由xLM生成器226将多个元素转换成用逻辑语言表示的逻辑元素而生成。这里,示例的逻辑语言是xLM,xLM是惠普公司的HP实验室为分析流开发的逻辑语言。但是,可使用其他逻辑语言。由于不专用于任何特定执行引擎,因此本文将逻辑表示称为“引擎不可知的”。
字典224包括逻辑语言和与第一物理流的至少一个执行引擎关联的编程语言之间的映射。因此,字典224使得能够将引擎专用的多个元素转换成构成逻辑表示的引擎不可知的逻辑元素。现在将结合图3-5更详细地描述字典224。
图3示出根据示例的用于生成逻辑表示的字典300。字典300可包括三个逻辑分组:类别310、运算符320、以及语言专用映射(“ls映射”)330。分类310表示字典的结构。运算符320包含对代码生成有用的信息,但也具有可在流处理期间使用的属性,例如每个运算符、每个实现方式、以及每个引擎的成本模型。ls映射330可在“逻辑到物理”转换期间使用,以对逻辑流进行分析并生成引擎专用逻辑表示。下面结合图4更详细地描述这些分组。
图4示出根据示例的用于生成逻辑表示的字典的图解400。所示出的图解表示JavaScript对象表示法(JSON)格式的字典的实现方式。也可使用其他选项和格式。此外,所示的分类410、运算符420以及ls映射430仅为字典中的示例条目。完整的字典会具有更多的条目。
分类410表示字典中使用的映射类型。这些映射连接多个引擎的流构造的不同体现。示例的映射类型为:运算符类型、布尔型、数学或其他复合表达式、聚合器、以及其他函数。
ls映射430处理每个引擎的固有特性。因此,ls映射430是引擎专用映射。这些是有用的,因为许多引擎将查询或流中使用的逻辑运算符名字与对应于专用实现方式的内部物理名字区分开。例如,如图所示,ls映射430显示:对于PigLatin,在PigLatin执行引擎将代码转换成逻辑执行计划时,FILTER运算符被翻译成LOFilter。类似地,PigLatin中的函数ROUND用作对库org.apache.pig.builtin.ROUND’的调用。
运算符420表示支持的逻辑运算符。运算符420表示FILTER(过滤)运算符的部分条目。图5根据示例更详细地示出此部分条目。运算符的每个字典条目可具有关联的属性。示例的属性包括抽象逻辑运算符名字(‘hfms.name’=‘FILTER’)、允许运算符翻译到引擎中的专用物理实现方式的模板结构、以及到成本模型模块的链接,其中成本模型模块用于计算运算符在执行引擎中实现时的成本。从成本模型模块推出的成本信息可用于推出流的每个逻辑元素的成本信息,且因此推出整个逻辑流的成本信息。此外,成本信息可(例如,由逻辑流处理器230)用于流的优化、分解及调度执行。
在图5中,存在三种可能的实现方式:PigLatin的涉及“FILTER”运算符(例如,Z=由Y过滤X)的第一实现方式510,SQL的涉及“SELECTION”运算符(例如,在Y的情况下从X中选择Z)的第二实现方式520,以及用于构建ETL流设计工具PDI的过滤运算符的第三实现方式,其针对过滤运算符具有两个模板结构530,540。第一模板结构530用于称为FilterRows的过滤运算符。第二模板结构540用于称为JavaFilter的过滤运算符。因此,图5示出具有在三种不同引擎中的实现方式以及在一个引擎中的多个实现方式的运算符的示例。
上述的示例具有逻辑运算符和物理运算符之间的一对一映射。也许并非总是如此。例如,xLM中的单个逻辑运算符“Aggregation(聚合)”在所支持的语言中可通过不只一个运算符实现。例如,在PigLatin中,可通过以下两个表达式(涉及两个运算符)实现聚合:
N=GROUPCBY(l_orderkey);
F=FOREACHNGENERATEgroup,SUM(C.l_quantity)asqty
比较而言,在SQL中,聚合可通过单个表达式(用单个运算符)实现如下:
SELECTsum(C.l_quantity)asqtyFROMlineitemGROUPBYl_orderkey
可如上所述那样实施SQL实现方式的映射。PigLatin的映射可完成如下。字典中可仍存在分别将PigLatin.GROUPBY和PigLatin.FOREACH_GENERATE映射成SQL.GROUPBY和SQL.PROJECT的一对一映射。随后,语言专用解析器可被配置为实施特定处理,以处理这种情况。例如,解析器可被配置为在逻辑GROUPER运算符后面是逻辑PROJECT运算符时,且当且仅当涉及的图解匹配(例如,PROJECT运算符应仅使用GROUPER运算符的分组属性以及聚合)且组合有效时,将两个运算符组合成单个概括的GROUPER。
返回图1和2,根据在字典224中找到的映射,可用引擎不可知的逻辑元素替换引擎专用元素。例如,引擎专用运算符类型可转换成逻辑运算符,且引擎专用表达式可转换成字典支持的常规表达式形式。可从xLM生成器226输出用引擎不可知的xLM指定的逻辑流228。
尽管未在方法100中引用,但可对逻辑表示/逻辑流228实施各种处理。这种处理在系统200中由逻辑流处理器230表示。例如,可在图形用户界面(GUI)中以图形显示逻辑流。这可以给用户提供对流的(与其物理体现相比)更好的理解,尤其在物理流是混合流时更是如此。此外,可以自动化的方式或通过GUI中的手动操控,对逻辑流实施各种优化。
由于各种原因,例如由于物理流是混合流,由于物理流执行引擎不可优化包括物理流的用户定义函数,等等,在仅处理物理流时,这种优化可能仍不可能。关联地,可收集物理流的统计资料。此外,逻辑流可分解成子流,以利用特定执行环境的优势。例如,执行环境可具有各种异构执行引擎,这些引擎可通过杠杆作用一起工作,从而以更有效的方式完整地执行流。在这方面,可使用流执行调度器。在逻辑流处理之后,采用引擎不可知的xLM的流232可输出到“逻辑到物理”模块240。
在130,可使用字典从逻辑表示生成第二物理流。第二物理流是可在一个或多个执行引擎上执行的流。这些一个或多个执行引擎可由逻辑流处理器230、由用户等指定。因此,第二物理流是引擎专用的,而不是像逻辑流232那样的引擎不可知的。
可在框152通过首先从逻辑表示生成引擎专用的第二逻辑表示来生成第二物理流。可通过将逻辑流232传递到xLM解析器242来生成引擎专用的第二逻辑表示。xLM解析器可使用字典244(可与字典224相同)生成第二逻辑表示248,其构成引擎专用xLM。虽然xLM描述主要的流结构,但是在到xLM的最初转换期间不包括许多引擎专用细节。这些细节包括脚本中的到数据存储器的路径,或者流设计中的坐标或其他设计元数据。这种细节可以在产生引擎专用xLM时获取。此外,像运算符类型或用于表示运算符参数的表达式的常规表达式形式这样的其他xLM构造应转换成引擎专用格式。这些转换可由xLM解析器242使用字典244实施。
某些引擎需要一些额外的流元数据(例如,流设计工具可能需要流构造的形状、颜色、大小以及位置),以处理并使用流。字典244可包含具有不同引擎中的运算符表示的默认元数据信息的模板。这是下面描述的语言专用映射的一部分。此外,能够改变并定制这样的元数据。
由于引擎可能支持相同运算符类型(“optype”)的各种实现方式,且由于可能在多个引擎间存在用于转换的optype的不同变体,因此xLM图形的实现方式和引擎信息可用于在词典中查找合适的模板实例。例如,对于optype=Join,实现方式=HASH,且引擎=PDI,xLM解析器242可访问字典244,以获得StreamLoopkupoptype,这是PDI引擎专用的。
在将表达式从引擎不可知的形式转换成xLM的引擎专用形式时,xLM解析器242应理解如何使用给定的表达式。这可能被编码为参数类型(“ptype”),且保留在字典244中的ptype属性中。例如,对于optype=Filter,ptype=filter_cond,且引擎=PigLatin,在字典中查找可能返回ptype‘BY’,其是PigLatin专用的。说明这点的示例PigLatin表达式如下:
C=FILTERMBY(I_extendedprice>ROUND(p_retailprice)*(1+I_tax))
除了解释表达式元数据外,xLM解析器242还应解析此表达式。像数学表达式或内置函数这样的几种表达式在不同的引擎中可不同地表示。例如,联合(conjunction)可写成‘XANDY’或‘AND(X,Y)’或‘X&&Y’,等等。类似地,不同的引擎间内置函数也可能不同。例如,SQL中的SQRT(A),PDI中的Math.sqrt(A),PigLatin中的org.apache.pig.builtin.SQRT(A),等等。考虑到这点,xLM解析器242可将逻辑形式映射到引擎专用形式。从xLM的引擎不可知的表达式开始,解析器242可建立表达式树。该树的节点可以是表达式中找到的运算符以及内置函数,而树的叶子可以是包括在表达式中的属性和值。对表达式树进行处理时,xLM解析器242可使用字典获取表达式的构造(例如,像“AND”或“&&”以及内置函数这样的运算符)和这种表达式的正确使用(例如,“XANDY”或“AND(X,Y)”)的合适的引擎专用映射。为了完成上述的示例PigLatin表达式的转换,需要从字典244获取“FILTER”的适当的(引擎专用)optype模板,并用表达式信息实例化。
最终,可在框154,通过从引擎专用的第二逻辑表示(引擎专用xLM249)生成代码,来生成第二物理流。代码可在一个或多个执行引擎上执行。引擎专用代码生成器246可使用代码模板248从引擎专用xLM249生成可执行代码252。可通过解析引擎专用xLM249的每个xLM元素来解析引擎专用xLM249,确保考虑到每个元素可能具有的依赖关系。具体地,可针对每个元素检索代码模板248,以找出对应于xLM元素所指示的专用optype、实现方式、以及引擎的模板。
对于包括多个部分的流(例如,混合流),逻辑流可表示经由连接器运算符连接的多个部分。为了产生执行代码,依赖于所选择的执行引擎以及存储库,连接器运算符可被实例化为合适的格式(例如,数据库到映射归约连接器、将数据从库A传送到库B的脚本)。可输出构成引擎可执行代码252的第二物理流250。随后,可包含针对不同引擎的子流的第二物理流250可被发送到适当的引擎,以供执行。
图6示出根据示例的更新字典的方法。方法600可由计算设备、系统、或计算机实施,例如由处理系统200、计算系统700或计算机800实施。用于实现方法600的计算机可读指令可存储在计算机可读存储介质上。存储在介质上的这些指令在本文可称作“模块”,且可由计算机执行。
可更新像字典224,244这样的字典,以支持新的执行引擎和实现方式。由于字典可包括到多个执行引擎的映射,所以可在包含多个异构执行引擎的各种执行环境中实现本文描述的系统和技术。为了解释方便,术语“语言”将用于指示希望字典支持的引擎专用表示。
方法600始于610,在610,确定字典是否支持所选择的语言。这可通过在字典中检索所选择的语言的条目来确定。在610如果是“是”,则可针对所选择的语言锁定字典(620)。在622,可获取所选择语言的现有字典模板。在624,可接收更新所选择的语言的现有字典模板的输入。例如,输入可增加对新的实现方式的支持。在626,所选择语言的更新的字典模板可与字典合并。在628,可针对所选择的语言对字典进行解锁。在610如果是“否”,则可生成所选择语言的新的字典模板(630)。在632,可接收填入新的字典模板的输入。在634,新的模板可与字典合并。
图7示出根据示例的用于生成逻辑表示的计算系统。计算系统700可包括一个或多个计算机,和/或可由一个或多个计算机实现。例如,计算机可以是服务器计算机、工作站计算机、台式计算机、便携式电脑、或移动设备,等等,且可以是分布式系统的一部分。例如如结合处理系统200所描述的,计算机可包括一个或多个控制器以及一个或多个机器可读存储介质。
计算系统700可包括存储器710、流解析器720、引擎不可知生成器730、逻辑流处理器740、引擎专用生成器750、代码生成器760、以及字典更新器770。这些组件中的每一个可由单个计算机或多个计算机实现。各组件可包括软件、用于存储软件的一个或多个机器可读介质、用于执行软件的一个或多个处理器。软件可以是包括机器可执行指令的计算机程序。
此外,计算系统700的用户可通过一个或多个其他计算机与计算系统700交互,该一个或多个其他计算机可被认为或者不被认为是计算系统700的一部分。作为示例,用户可经由位于系统700或另一个计算机(例如,台式计算机、工作站计算机、或平板电脑,等等)上的计算机应用程序与系统700交互。计算机应用程序可包括用户接口(例如,触摸界面、鼠标、键盘、手势输入设备)。
计算机系统700可实施方法100和600,及其变形,组件720-770可被配置为实施方法100和600的各种部分,及其变形。此外,由组件720-770实现的功能可以是更大的软件平台、系统、或应用等的一部分。例如,这些组件可以是数据分析系统的一部分。
在示例中,存储器710可被配置为存储字典712,字典712可类似于系统200的字典224,244。流解析器720可被配置为将物理流解析成多个元素。物理流可包括用于在一个或多个执行引擎上执行的一个或多个子流。引擎不可知生成器724可被配置为使用字典生成物理流的引擎不可知的逻辑表示。字典可包括模板,用于将多个元素转换成逻辑语言(例如,xLM)的逻辑元素。
逻辑流处理器740可被配置为处理引擎不可知的逻辑表示。例如,逻辑流处理器740可被配置为以下中的至少一种:优化引擎不可知的逻辑表示、分解引擎不可知的逻辑表示、或呈现引擎不可知的逻辑表示的图形视图。
引擎专用生成器750可被配置为使用字典712生成引擎不可知的逻辑表示的引擎专用逻辑表示。代码生成器760可被配置为使用代码模板,从适于在所选择的执行引擎上执行的引擎专用逻辑表示生成可执行代码。字典更新器770可被配置为更新字典712,例如通过实现方法600来更新。
图8示出根据示例的用于生成逻辑表示的计算机可读介质。计算机800可以是例如结合系统200和700所描述的各种计算设备或系统中的任一种。
计算机800可访问数据库830。如本文描述的,数据库830可包括一个或多个计算机,且可包括一个或多个控制器以及机器可读存储介质。计算机800可经由网络连接至数据库830。网络可以是任意类型的通信网络,包括但不限于:基于有线(例如,线缆)的网络、无线网络(例如,蜂窝网、卫星)、蜂窝电信网络、以及基于IP的电信网络(例如,因特网协议上语音网络)。网络还可包括传统的固网或共公共交换电话网络(PSTN)、或前述的结合。
处理器810可以是至少一个中央处理单元(CPU)、至少一个基于半导体的微处理器、适用于获取及执行存储在机器可读存储介质820中的指令的其他硬件设备或处理元件、或其结合。处理器810可包括一个芯片上的单个或多个核、多个芯片上的多个核、多个设备上的多个核、或其结合。此外,处理器810可提取、解码、并执行指令822-828,以实现各种处理。除获取并执行指令之外或者作为获取并执行指令的替代,处理器810可包括:包括用于实施指令822-828的功能的多个电子组件的至少一个集成电路(IC)、其他控制逻辑、其他电子电路、或其结合。因此,处理器810可在多个处理单元上实现,且指令822-828可由计算机800的不同区域中的不同的处理单元实现。
机器可读存储介质820可以是任意电的、磁的、光的、或包含或存储可执行指令的其他物理存储设备。因此,机器可读存储介质可包括例如:各种随机存取存储器(RAM)、只读存储器(ROM)、闪存、及其结合。例如,机器可读介质可包括非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、存储驱动、NAND闪存,等等。此外,机器可读存储介质820可以是计算机可读的且非暂时性的。机器可读存储介质820可编码有用于管理处理元件的一系列可执行指令。
指令822-828在由处理器810(例如,经由处理器的一个处理元件或多个处理元件)执行时,可使处理器810实施多种过程,例如方法100和600及其变形。此外,计算机800可类似于上述的系统200和700,且可具有类似的功能,且可以类似的方式使用。
例如,解析指令822可使处理器810将包括为第一执行引擎写的第一部分以及为第二执行引擎写的第二部分的物理流解析成多个元素。引擎不可知指令824可使处理器810使用存储在数据库830中的字典832生成物理流的引擎不可知的逻辑表示。字典832可包括模板,用于将多个元素转换成用逻辑语言(例如,xLM)的逻辑元素。
例如,字典832可包括逻辑语言的对应运算符的名字、与第一执行引擎关联的第一编程语言的对应运算符的名字、以及与第二执行引擎关联的第二编程语言的对应运算符的名字。此外,字典832可包括用于在逻辑语言和第一编程语言之间转换的模板结构,以及用于在逻辑语言和第二编程语言之间的转换的模板结构。字典832还可包括第三执行引擎的引擎专用信息,用于使得能够生成第三执行引擎的引擎专用逻辑表示。
引擎专用指令826可使处理器810使用字典832生成引擎不可知的逻辑表示的引擎专用逻辑表示。可执行代码指令828可使处理器810使用代码模板从适于在第三执行引擎上执行的引擎专用逻辑表示生成可执行代码。
在前面的描述中,为了提供对本文公开的主题的理解而陈述了许多细节。但是,各实现方式可在没有这些细节中的一些或全部的情况下实施。其他实现方式可包括上面讨论的细节的修改和变形。所附的权利要求旨在覆盖这样的修改和变形。
Claims (15)
1.一种方法,包括由处理系统:
将与至少一个执行引擎关联的第一物理流解析成多个元素;
通过将所述多个元素转换成用逻辑语言表示的逻辑元素,使用字典生成所述第一物理流的逻辑表示,所述字典包括所述逻辑语言和与所述至少一个执行引擎关联的编程语言之间的映射;以及
使用所述字典从所述逻辑表示生成第二物理流。
2.根据权利要求1所述的方法,
其中,所述逻辑表示是引擎不可知的,且
其中,使用所述字典从所述逻辑表示生成第二物理流包括:
从所述逻辑表示生成引擎专用的第二逻辑表示;以及
从所述第二逻辑表示生成在执行引擎上可执行的代码。
3.根据权利要求1所述的方法,其中:
所述第一物理流是包括与第一执行引擎关联的第一部分以及与第二执行引擎关联的第二部分的混合流,且
所述字典包括所述逻辑语言和与所述第一执行引擎关联的第一编程语言之间的、以及所述逻辑语言和与所述第二执行引擎关联的第二编程语言之间的映射。
4.根据权利要求1所述的方法,其中,所述第一物理流包括用编程语言写的脚本或由流设计工具生成的流元数据中的至少一种。
5.根据权利要求1所述的方法,其中,所述字典包括所述逻辑语言的运算符的条目,所述条目包括所述逻辑语言的所述运算符的名字、支持的编程语言的所述运算符的指示、以及用于在所述逻辑语言和所述支持的编程语言之间进行转换的模板结构。
6.根据权利要求5所述的方法,其中,每个条目进一步包括到成本模块的链接,所述成本模块用于计算所述支持的编程语言的对应运算符的成本。
7.根据权利要求5所述的方法,其中,所述字典进一步包括引擎专用映射,所述引擎专用映射用于提供实现特定引擎中的运算符的附加细节。
8.一种系统,包括:
流解析器,用于将物理流解析成多个元素;
引擎不可知生成器,用于使用字典生成所述物理流的引擎不可知的逻辑表示,所述字典包括用于将所述多个元素转换成逻辑语言的逻辑元素的模板;
逻辑流处理器,用于处理所述引擎不可知的逻辑表示;以及
引擎专用生成器,用于使用所述字典生成所述引擎不可知的逻辑表示的引擎专用逻辑表示。
9.根据权利要求8所述的系统,进一步包括代码生成器,所述代码生成器用于使用代码模板,从所述引擎专用逻辑表示生成适于在选择的执行引擎上执行的可执行代码。
10.根据权利要求8所述的系统,其中,所述逻辑流处理器被配置为以下中至少之一:优化所述引擎不可知的逻辑表示、分解所述引擎不可知的逻辑表示、或呈现所述引擎不可知的逻辑表示的图形视图。
11.根据权利要求8所述的系统,其中,所述物理流包括第一执行引擎的用第一编程语言写的第一部分以及第二执行引擎的用第二编程语言写的第二部分。
12.根据权利要求8所述的系统,进一步包括字典更新器,所述字典更新器用于通过以下操作更新所述字典:
确定所述字典是否支持选择的语言;
如果支持,则
针对所述选择的语言锁定所述字典,
获取所述选择的语言的现有字典模板,
接收更新所述现有字典模板的输入,
将更新的字典模板与所述字典合并,以及
针对所述选择的语言解锁所述字典;且
如果不支持,则
针对所述选择的语言生成新的字典模板,
接收填到所述新的字典模板中的输入,以及
将所述新的字典模板与所述字典合并。
13.一种存储供计算机执行的指令的非暂时性计算机可读存储介质,所述指令在被执行时使所述计算机:
将包括为第一执行引擎写的第一部分以及为第二执行引擎写的第二部分的物理流解析成多个元素;
使用字典生成所述物理流的引擎不可知的逻辑表示,所述字典包括模板,所述模板用于将所述多个元素转换成逻辑语言的逻辑元素;并且
使用所述字典生成所述引擎不可知的逻辑表示的引擎专用逻辑表示。
14.根据权利要求13所述的计算机可读介质,其中所述字典包括运算符的条目,每个条目包括:
所述逻辑语言的对应运算符的名字,
与所述第一执行引擎关联的第一编程语言的对应运算符的名字,
与所述第二执行引擎关联的第二编程语言的对应运算符的名字,
用于在所述逻辑语言和所述第一编程语言之间进行转换的模板结构,以及
用于在所述逻辑语言和所述第二编程语言之间进行转换的模板结构。
15.根据权利要求13所述的计算机可读介质,进一步存储用于使所述计算机执行以下操作的指令:
使用代码模板,从所述引擎专用逻辑表示生成适于在第三执行引擎上执行的可执行代码。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/047252 WO2014209253A1 (en) | 2013-06-24 | 2013-06-24 | Generating a logical representation from a physical flow |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105556504A true CN105556504A (zh) | 2016-05-04 |
Family
ID=52142407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380078997.6A Pending CN105556504A (zh) | 2013-06-24 | 2013-06-24 | 从物理流生成逻辑表示 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9846573B2 (zh) |
EP (1) | EP3014472B1 (zh) |
CN (1) | CN105556504A (zh) |
WO (1) | WO2014209253A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110088754A (zh) * | 2016-10-26 | 2019-08-02 | 联邦科学和工业研究组织 | 立法到逻辑的自动编码器 |
CN111798751A (zh) * | 2019-07-24 | 2020-10-20 | 友达光电股份有限公司 | 显示装置 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10419586B2 (en) | 2015-03-23 | 2019-09-17 | Sap Se | Data-centric integration modeling |
US10795867B2 (en) * | 2017-11-06 | 2020-10-06 | International Business Machines Corporation | Determining available remote storages in a network to use to replicate a file based on a geographical requirement with respect to the file |
US10768908B1 (en) * | 2019-02-25 | 2020-09-08 | Microsoft Technology Licensing, Llc | Workflow engine tool |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1299482A (zh) * | 1998-12-14 | 2001-06-13 | 因芬尼昂技术股份公司 | 混和计算机程序设计环境 |
US20080320486A1 (en) * | 2003-06-12 | 2008-12-25 | Reuters America | Business Process Automation |
US20120072391A1 (en) * | 2010-09-22 | 2012-03-22 | Alkiviadis Simitsis | Apparatus and method for an automatic information integration flow optimizer |
US20120143589A1 (en) * | 2010-12-07 | 2012-06-07 | Andrew Ward Beale | Multi-modal compiling apparatus and method for generating a hybrid codefile |
US20120151457A1 (en) * | 2010-09-19 | 2012-06-14 | Micro Focus (Us), Inc. | Cobol to bytecode translation |
US20130081004A1 (en) * | 2002-11-20 | 2013-03-28 | Byron D. Vargas | System for Translating Diverse Programming Languages |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0810534B1 (en) * | 1996-05-13 | 2003-03-19 | Oki Electric Industry Co., Ltd. | Document display system and electronic dictionary |
US5930512A (en) * | 1996-10-18 | 1999-07-27 | International Business Machines Corporation | Method and apparatus for building and running workflow process models using a hypertext markup language |
AU2002366158A1 (en) * | 2001-11-21 | 2003-06-10 | Enterasys Networks, Inc. | Translating configuration files among network devices |
GB2395299B (en) * | 2002-09-17 | 2006-06-21 | Micron Technology Inc | Control of processing elements in parallel processors |
WO2006087728A1 (en) * | 2005-02-15 | 2006-08-24 | Codito Technologies | System for creating parallel applications |
US8035650B2 (en) * | 2006-07-25 | 2011-10-11 | Qualcomm Incorporated | Tiled cache for multiple software programs |
US8850414B2 (en) | 2007-02-02 | 2014-09-30 | Microsoft Corporation | Direct access of language metadata |
US8281290B2 (en) | 2007-06-22 | 2012-10-02 | Alcatel Lucent | Software diversity using context-free grammar transformations |
US8543534B2 (en) | 2007-09-11 | 2013-09-24 | Oracle International Corporation | Concurrency in event processing networks for event server |
US8458682B2 (en) | 2009-04-27 | 2013-06-04 | National Instruments Corporation | Conversion of a class oriented data flow program to a structure oriented data flow program with dynamic interpretation of data types |
US20100280990A1 (en) | 2009-04-30 | 2010-11-04 | Castellanos Maria G | Etl for process data warehouse |
US8725487B2 (en) * | 2009-08-07 | 2014-05-13 | Sas Institute, Inc. | Techniques to automatically generate simulated information |
JP5468615B2 (ja) * | 2009-10-26 | 2014-04-09 | 株式会社東芝 | 事前条件生成装置およびその方法、ならびにプログラム |
US8224614B2 (en) * | 2009-10-30 | 2012-07-17 | International Business Machines Corporation | Generating a combination exerciser for executing tests on a circuit |
US10437846B2 (en) | 2010-05-28 | 2019-10-08 | Oracle International Corporation | System and method for providing data flexibility in a business intelligence server using an administration tool |
US20120260252A1 (en) * | 2011-04-08 | 2012-10-11 | International Business Machines Corporation | Scheduling software thread execution |
US20120259762A1 (en) * | 2011-04-11 | 2012-10-11 | Amir Tarighat | Network-Based Systems, Methods, and Apparatuses for Constructing and Executing Transactions |
KR101264615B1 (ko) | 2011-06-17 | 2013-05-27 | (주)네오위즈게임즈 | 게임 서버의 작업 파일 실행 장치 및 방법 |
-
2013
- 2013-06-24 WO PCT/US2013/047252 patent/WO2014209253A1/en active Application Filing
- 2013-06-24 EP EP13888068.7A patent/EP3014472B1/en active Active
- 2013-06-24 CN CN201380078997.6A patent/CN105556504A/zh active Pending
- 2013-06-24 US US14/897,299 patent/US9846573B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1299482A (zh) * | 1998-12-14 | 2001-06-13 | 因芬尼昂技术股份公司 | 混和计算机程序设计环境 |
US20130081004A1 (en) * | 2002-11-20 | 2013-03-28 | Byron D. Vargas | System for Translating Diverse Programming Languages |
US20080320486A1 (en) * | 2003-06-12 | 2008-12-25 | Reuters America | Business Process Automation |
US20120151457A1 (en) * | 2010-09-19 | 2012-06-14 | Micro Focus (Us), Inc. | Cobol to bytecode translation |
US20120072391A1 (en) * | 2010-09-22 | 2012-03-22 | Alkiviadis Simitsis | Apparatus and method for an automatic information integration flow optimizer |
US20120143589A1 (en) * | 2010-12-07 | 2012-06-07 | Andrew Ward Beale | Multi-modal compiling apparatus and method for generating a hybrid codefile |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110088754A (zh) * | 2016-10-26 | 2019-08-02 | 联邦科学和工业研究组织 | 立法到逻辑的自动编码器 |
CN110088754B (zh) * | 2016-10-26 | 2023-04-28 | 联邦科学和工业研究组织 | 立法到逻辑的自动编码器 |
CN111798751A (zh) * | 2019-07-24 | 2020-10-20 | 友达光电股份有限公司 | 显示装置 |
CN111798751B (zh) * | 2019-07-24 | 2022-02-25 | 友达光电股份有限公司 | 显示装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3014472A4 (en) | 2017-01-04 |
WO2014209253A1 (en) | 2014-12-31 |
US9846573B2 (en) | 2017-12-19 |
EP3014472B1 (en) | 2018-04-18 |
EP3014472A1 (en) | 2016-05-04 |
US20160147510A1 (en) | 2016-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106648662B (zh) | 基于工程造价计算描述语言bcl的报表生成装置及生成方法 | |
US10949381B2 (en) | Reusable transformation mechanism to allow mappings between incompatible data types | |
CN104598635B (zh) | 一种基于xml描述的复杂文档自动生成方法 | |
US9390127B2 (en) | RDF graphs made of RDF query language queries | |
CN104133772A (zh) | 一种自动生成测试数据的方法 | |
CN103778107A (zh) | 一种基于excel快速动态生成表单的方法与平台 | |
CN108694214A (zh) | 数据报表的生成方法、生成装置、可读介质及电子设备 | |
KR102133906B1 (ko) | 데이터 분석 및 처리 방법, 장치, 컴퓨터 장치 및 저장 매체 | |
CN105556504A (zh) | 从物理流生成逻辑表示 | |
CN109857458B (zh) | 基于ANTLR的AltaRica 3.0的扁平化的转化方法 | |
CN105164667B (zh) | 修改分析流 | |
CN111814449A (zh) | 表单解析方法、装置、设备及存储介质 | |
CN103678396A (zh) | 一种基于数据模型的数据备份方法和装置 | |
US10732938B2 (en) | System design apparatus and method | |
US20140214731A1 (en) | Method and System for Automated Computer Program Generation | |
US20190121620A1 (en) | Extensible javascript-based data visualization toolkit | |
CN104598636A (zh) | 复杂文档分离组织方法以及复杂文档自动生成方法 | |
CN102486731A (zh) | 增强软件的软件调用栈的可视化的方法、设备和系统 | |
Mezei et al. | The dynamic sensor data description and data format conversion language. | |
CN114281797A (zh) | 基于敏捷低代码平台快速创建基层数据汇聚仓库的方法 | |
Athan et al. | The MYNG 1.01 Suite for Deliberation RuleML 1.01: Taming the Language Lattice. | |
Nguyen et al. | The TTC 2021 OCL2PSQL case | |
Chen et al. | Navigation Flow Modeling as a Basis for the Automatic Generation of Android APPs. | |
Al Dallal | UPSS: a tool for synthesizing UML concurrent communication protocol entities | |
Mit et al. | FOTool: Modelling Indigenous Community Cultures in Sarawak |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160504 |
|
WD01 | Invention patent application deemed withdrawn after publication |