CN114996307A - 一种对数据的联邦处理方法及装置 - Google Patents
一种对数据的联邦处理方法及装置 Download PDFInfo
- Publication number
- CN114996307A CN114996307A CN202110225589.5A CN202110225589A CN114996307A CN 114996307 A CN114996307 A CN 114996307A CN 202110225589 A CN202110225589 A CN 202110225589A CN 114996307 A CN114996307 A CN 114996307A
- Authority
- CN
- China
- Prior art keywords
- instruction
- target
- instructions
- operator
- execution
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种对数据的联邦处理方法及装置。通过本申请,结合各自支持的算子不全相同的至少两个执行引擎来联合在数据库中处理数据,以使至少两个执行引擎中的其中一个执行引擎能够被其他执行引擎补充,也即,在其中一个执行引擎支持的算子有限的情况下,其他执行引擎支持的算子可以提供补充,进而使得可以以更多的处理方式在数据库中处理数据,可以实现对在数据库中对数据进行联邦处理(例如联邦查询等),可以实现在其中一个执行引擎支持的算子有限的情况下能够享受到更多的数据库功能,以提高用户对数据库的使用体验。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种对数据的联邦处理方法及装置。
背景技术
随着技术的飞速发展,数据库的应用越来越广泛,广大用户可以在数据库中存储数据,之后还可以在数据库中对数据进行处理(例如合并、过滤、映射以及聚合等),以满足需求。
为了支持用户能够在数据库中对数据进行处理,开发商可以开发执行引擎,如此,用户可以基于执行引擎(例如计算引擎等)来在数据库中对数据进行处理。
然而,在开发执行引擎的过程中,往往无法将执行引擎的功能一次性地完善。例如,基于执行引擎在数据库中对数据进行处理的处理方式理论上可以有很多,每一种处理方式需要使用一种算子,也即,使用一个算子可以实现一种处理方式,最初开发的执行引擎支持的算子可能不完整,如此,用户基于执行引擎只能以有限的处理方式在数据库中处理数据,这样可能无法满足用户的实际需求,开发商后续会对执行引擎的功能不断完善,例如,对执行引擎开发更多的处理方式对应的算子以使用户可以逐渐地可以以更多的处理方式在数据库中处理数据。
但是,在开发商后续对执行引擎的功能不断完善的过程中,用户基于执行引擎只能以有限的处理方式在数据库中处理数据,无法享受到更多的数据库功能,会影响用户对数据库的使用体验。
发明内容
本申请示出了一种对数据的联邦处理方法及装置。
第一方面,本申请示出了一种对数据的联邦处理方法,所述方法包括:
获取数据处理语句,所述数据处理语句中包括多个原始指令,且各个原始指令中包括算子和操作对象;
对所述数据处理语句解析,得到所述数据处理语句中的各个原始指令、各个原始指令中的操作对象以及算子;
根据各个原始指令中的操作对象以及算子生成用于在至少两个执行引擎上运行的数据处理计划,所述至少两个执行引擎各自支持的算子不全相同,所述数据处理计划中包括多个目标指令,各个目标指令中包括算子以及操作对象,各个目标指令中的算子分别被所述至少两个执行引擎中的至少一个执行引擎支持;
将各个目标指令分别调度至支持其包括的算子的执行引擎中,以使各个执行引擎响应各自被调度的目标指令。
在一个可选的实现方式中,所述根据各个原始指令中的操作对象以及算子生成用于在至少两个执行引擎上运行的数据处理计划,包括:
对于任意一个原始指令,在所述至少两个执行引擎中分别确定支持所述原始指令中的算子的目标执行引擎,根据所述原始指令中的操作对象以及算子生成所述目标执行引擎支持的目标指令;
至少根据生成的各个目标指令生成所述数据处理计划。
在一个可选的实现方式中,所述在所述至少两个执行引擎中分别确定支持所述原始指令中的算子的目标执行引擎,包括:
在执行引擎与执行引擎支持的算子的集合之间对应关系中,查找包括所述原始指令中的算子的集合;
在执行引擎与执行引擎支持的算子的集合之间对应关系中,查找与查找到的集合相对应的执行引擎,并作为支持所述原始指令中的算子的目标执行引擎。
在一个可选的实现方式中,所述根据所述原始指令中的操作对象以及算子生成所述目标执行引擎支持的目标指令,包括:
根据所述原始指令中的操作对象以及算子生成语法能够被所述目标执行引擎支持的指令;
在生成的指令中设置属性信息,得到目标指令,属性信息至少包括:操作对象的顺序信息、操作对象的分布信息以及支持生成的指令中的算子的目标执行引擎的执行引擎标识。
在一个可选的实现方式中,生成的目标指令中至少包括第一目标指令和第二目标指令,所述第一目标指令中的操作对象包括:执行所述第二目标指令后得到的输出数据;
所述至少根据生成的各个目标指令生成所述数据处理计划,包括:
确定所述输出数据的顺序信息是否被所述第一目标指令中的算子支持;
在所述输出数据的顺序信息不被所述第一目标指令中的算子支持的情况下,生成辅助指令,所述辅助指令用于将所述输出数据的顺序信息调整为能够被所述第一目标指令中的算子支持的顺序信息;
至少根据生成的各个目标指令以及辅助指令生成所述数据处理计划。
在一个可选的实现方式中,生成的目标指令中至少包括第一目标指令和第二目标指令,所述第一目标指令中的操作对象包括:执行所述第二目标指令后得到的输出数据;
所述至少根据生成的各个目标指令生成所述数据处理计划,包括:
确定所述输出数据的分布信息是否被所述第一目标指令中的算子支持;
在所述输出数据的分布信息不被所述第一目标指令中的算子支持的情况下,生成辅助指令,所述辅助指令用于将所述输出数据的分布信息调整为被所述第一目标指令中的算子支持的分布信息;
至少根据生成的各个目标指令以及辅助指令生成所述数据处理计划。
在一个可选的实现方式中,生成的目标指令中至少包括第一目标指令和第二目标指令,所述第一目标指令中的操作对象包括:执行所述第二目标指令后得到的输出数据;
所述至少根据生成的各个目标指令生成所述数据处理计划,包括:
确定所述第一目标指令中的算子与所述第二目标指令中的算子是否被同一执行引擎支持;
在所述第一目标指令中的算子与所述第二目标指令中的算子不被同一执行引擎支持的情况下,生成辅助指令,所述辅助指令用于将所述输出数据传递至支持所述第一目标指令中的算子的一个执行引擎;
至少根据生成的各个目标指令以及辅助指令生成所述数据处理计划。
在一个可选的实现方式中,所述至少根据生成的各个目标指令以及辅助指令生成所述数据处理计划,包括:
获取生成的各个目标指令之间的执行顺序;设置所述辅助指令在生成的各个目标指令之间的执行顺序,所述辅助指令在生成的各个目标指令之间的执行顺序包括:所述辅助指令位于所述第二目标指令之后且位于所述第一目标指令之前;
根据生成的各个目标指令之间的执行顺序以及所述辅助指令在生成的各个目标指令之间的执行顺序,将生成的各个目标指令以及辅助指令组合,得到所述数据处理计划。
第二方面,本申请示出了一种对数据的联邦处理装置,所述装置包括:
获取模块,用于获取数据处理语句,所述数据处理语句中包括多个原始指令,且各个原始指令中包括算子和操作对象;
解析模块,用于对所述数据处理语句解析,得到所述数据处理语句中的各个原始指令、各个原始指令中的操作对象以及算子;
生成模块,用于根据各个原始指令中的操作对象以及算子生成用于在至少两个执行引擎上运行的数据处理计划,所述至少两个执行引擎各自支持的算子不全相同,所述数据处理计划中包括多个目标指令,各个目标指令中包括算子以及操作对象,各个目标指令中的算子分别被所述至少两个执行引擎中的至少一个执行引擎支持;
调度模块,用于将各个目标指令分别调度至支持其包括的算子的执行引擎中,以使各个执行引擎响应各自被调度的目标指令。
在一个可选的实现方式中,所述生成模块包括:
确定单元,用于对于任意一个原始指令,在所述至少两个执行引擎中分别确定支持所述原始指令中的算子的目标执行引擎,第一生成单元,用于根据所述原始指令中的操作对象以及算子生成所述目标执行引擎支持的目标指令;
第二生成单元,用于至少根据生成的各个目标指令生成所述数据处理计划。
在一个可选的实现方式中,所述确定单元包括:
第一查找子单元,用于在执行引擎与执行引擎支持的算子的集合之间对应关系中,查找包括所述原始指令中的算子的集合;
第二查找子单元,用于在执行引擎与执行引擎支持的算子的集合之间对应关系中,查找与查找到的集合相对应的执行引擎,并作为支持所述原始指令中的算子的目标执行引擎。
在一个可选的实现方式中,所述第一生成单元包括:
第一生成子单元,用于根据所述原始指令中的操作对象以及算子生成语法能够被所述目标执行引擎支持的指令;
设置子单元,用于在生成的指令中设置属性信息,得到目标指令,属性信息至少包括:操作对象的顺序信息、操作对象的分布信息以及支持生成的指令中的算子的目标执行引擎的执行引擎标识。
在一个可选的实现方式中,生成的目标指令中至少包括第一目标指令和第二目标指令,所述第一目标指令中的操作对象包括:执行所述第二目标指令后得到的输出数据;
所述第二生成单元包括:
第一确定子单元,用于确定所述输出数据的顺序信息是否被所述第一目标指令中的算子支持;
第二生成子单元,用于在所述输出数据的顺序信息不被所述第一目标指令中的算子支持的情况下,生成辅助指令,所述辅助指令用于将所述输出数据的顺序信息调整为能够被所述第一目标指令中的算子支持的顺序信息;
第三生成子单元,用于至少根据生成的各个目标指令以及辅助指令生成所述数据处理计划。
在一个可选的实现方式中,生成的目标指令中至少包括第一目标指令和第二目标指令,所述第一目标指令中的操作对象包括:执行所述第二目标指令后得到的输出数据;
所述第二生成单元包括:
第二确定子单元,用于确定所述输出数据的分布信息是否被所述第一目标指令中的算子支持;
第四生成子单元,用于在所述输出数据的分布信息不被所述第一目标指令中的算子支持的情况下,生成辅助指令,所述辅助指令用于将所述输出数据的分布信息调整为被所述第一目标指令中的算子支持的分布信息;
第五生成子单元,用于至少根据生成的各个目标指令以及辅助指令生成所述数据处理计划。
在一个可选的实现方式中,生成的目标指令中至少包括第一目标指令和第二目标指令,所述第一目标指令中的操作对象包括:执行所述第二目标指令后得到的输出数据;
所述第二生成单元包括:
第三确定子单元,用于确定所述第一目标指令中的算子与所述第二目标指令中的算子是否被同一执行引擎支持;
第六生成子单元,用于在所述第一目标指令中的算子与所述第二目标指令中的算子不被同一执行引擎支持的情况下,生成辅助指令,所述辅助指令用于将所述输出数据传递至支持所述第一目标指令中的算子的一个执行引擎;
第七生成子单元,用于至少根据生成的各个目标指令以及辅助指令生成所述数据处理计划。
在一个可选的实现方式中,所述第三生成子单元/第五生成子单元/第七生成子单元具体用于:获取生成的各个目标指令之间的执行顺序;设置所述辅助指令在生成的各个目标指令之间的执行顺序,所述辅助指令在生成的各个目标指令之间的执行顺序包括:所述辅助指令位于所述第二目标指令之后且位于所述第一目标指令之前;根据生成的各个目标指令之间的执行顺序以及所述辅助指令在生成的各个目标指令之间的执行顺序,将生成的各个目标指令以及辅助指令组合,得到所述数据处理计划。
第三方面,本申请示出了一种电子设备,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行如第一方面所述的对数据的联邦处理方法。
第四方面,本申请示出了一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如第一方面所述的对数据的联邦处理方法。
第五方面,本申请示出了一种计算机程序产品,当所述计算机程序产品中的指令由电子设备的处理器执行时,使得电子设备能够执行如第一方面所述的对数据的联邦处理方法。
与现有技术相比,本申请实施例包括以下优点:
在本申请中,获取数据处理语句。数据处理语句中包括多个原始指令,且各个原始指令中包括算子和操作对象对数据处理语句解析,得到数据处理语句中的各个原始指令、各个原始指令中的操作对象以及算子。根据各个原始指令中的操作对象以及算子生成用于在至少两个执行引擎上运行的数据处理计划。至少两个执行引擎各自支持的算子不全相同。数据处理计划中包括多个目标指令,各个目标指令中包括算子以及操作对象。各个目标指令中的算子分别被至少两个执行引擎中的至少一个执行引擎支持。将各个目标指令分别调度至支持其包括的算子的执行引擎中,以使各个执行引擎响应各自被调度的目标指令。
通过本申请,结合各自支持的算子不全相同的至少两个执行引擎来联合在数据库中处理数据,以使至少两个执行引擎中的其中一个执行引擎能够被其他执行引擎补充,也即,在其中一个执行引擎支持的算子有限的情况下,其他执行引擎支持的算子可以提供补充,进而使得可以以更多的处理方式在数据库中处理数据,可以实现对在数据库中对数据进行联邦处理(例如联邦查询等),可以实现在其中一个执行引擎支持的算子有限的情况下能够享受到更多的数据库功能,以提高用户对数据库的使用体验。
附图说明
图1是本申请一示例性实施例示出的一种对数据的联邦处理方法的流程示意图。
图2是本申请一示例性实施例示出的一种对数据的联邦处理方法的流程示意图。
图3是本申请一示例性实施例示出的一种对数据的联邦处理装置的结构框图。
图4是本申请一实施例提供的装置的结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
参照图1,示出了本申请一种对数据的联邦处理方法的流程示意图,该方法应用于电子设备中,该方法可以包括:
在步骤S101中,获取数据处理语句。数据处理语句中包括多个原始指令,且各个原始指令中包括算子和操作对象。
在本申请中,数据库中存储有数据,数据库包括分布式数据库等,电子设备中加载有至少两个执行引擎,至少两个执行引擎各自支持的算子不全相同,算子包括用于在数据库中处理数据的处理方式等,处理方式包括映射、过滤、聚合以及连接等。每一个执行引擎均可以按照各自支持的算子在数据库中处理数据。在数据库中处理数据的目的包括在数据库中对数据进行增、删、改以及查等。
本申请可以适用当前已存在的各种数据库,例如MySQL数据库、SqlServer数据库以及SQLite数据库等。每一个数据库都具有接口,接口用于使得外部可以处理数据库中的数据,以使得本申请可以基于至少两个执行引擎通过数据库的接口来对数据库中的数据进行联邦处理。
本申请的“对数据库中的数据进行联邦处理”所基于的执行引擎的数量为两个以上,具体需要使用几个执行引擎可以根据实际需求或者实际情况而定,本申请对此不加以限定。
由于至少两个执行引擎各自支持的算子不全相同,因此,本申请可以结合至少两个执行引擎在数据库中处理数据,以使得本申请可以支持以更多的算子在数据库中处理数据,也即,可以支持以更多的处理方式在数据库中处理数据,以尽可能地满足用户的实际需求。
在一个例子中,在至少两个执行引擎中,其中一个执行引擎可以包括开发人员自主开发出的执行引擎,其他执行引擎可以包括市面上已经存在的执行引擎等。例如,至少两个执行引擎中的其中一个执行引擎包括自主开发出的执行引擎Hologres等,执行引擎Hologres支持PostgreSQL语法,至少两个执行引擎中的另外一个执行引擎包括执行引擎PostgreSQL等,执行引擎PostgreSQL支持的算子更加全面,因此,在自主开发出的执行引擎的基础上,结合执行引擎PostgreSQL可以以更多的算子在数据库中处理数据,也即,可以支持以更多的处理方式在数据库中处理数据,以尽可能地满足用户的实际需求。
在本申请中,数据处理语句可以包括用户开发出的用于在数据库中处理数据的计算机程序代码等。数据处理语句中包括多个原始指令,且各个原始指令中包括算子和操作对象。
对于数据处理语句中的任意一个原始指令,该原始指令中的操作对象可以作为该原始指令中的算子的输入数据,该原始指令中的算子可以对该原始指令中的操作对象处理,得到输出数据。其中,该原始指令中的操作对象可以包括数据库中的数据,或者,包括其他原始指令的输出数据等,例如,各个原始指令之间具有执行顺序包括执行顺序位于该原始指令之前且相邻的上一个原始指令的输出数据等。对于数据处理语句中的其他每一个原始指令,同样如此。
在用户需要在数据库中处理数据的情况下,用户可以向电子设备输入数据处理语句。之后,电子设备可以接收用户输入的数据处理语句,然后可以执行步骤S102。
在一个例子中,假设数据处理语句包括:“SELECT A.id FROM Table1Join Table2on A.id=B.id where B.id>10”。
其中,数据库中包括表1和表2,表1和表2中均存储有数据,该数据处理语句用于将从表1获取到的id为A的数据与从表2中获取的id大于10且与id与A的id相同的数据连接。
该数据处理语句中包括的原始指令包括有:
原始指令1:从表1中扫描出A id。
原始指令2:在表1中映射出id为A的第一数据。
原始指令3:从表2中扫描出与A相同的且大于10的id。
原始指令4:在表2中过滤出与A相同的且大于10的id的第二数据。
原始指令5:将第一数据与第二数据连接。
5个原始指令之间的执行顺序包括:原始指令1的执行顺序位于原始指令2的执行顺序之前,原始指令3的执行顺序位于原始指令4的执行顺序之前,原始指令2和4的执行顺序位于原始指令5的执行顺序之前。原始指令1和2可以并行执行等。
原始指令1中的算子包括过滤(Filter),操作对象包括表1以及A id,原始指令1用于根据A id对表1执行过滤(Filter)操作,得到表1中的所有的A id。
原始指令2中的算子包括映射(Project),操作对象包括表1以及Aid,原始指令2用于根据A id对表1执行映射(Project)操作,得到表1中的所有id为A的数据。
原始指令3中的算子包括过滤(Filter),操作对象包括表2、A id以及id大于10。原始指令3用于根据A id以及id大于10对表2执行过滤(Filter)操作,得到表2中的所有的与A相同的且大于10的id。
原始指令4中的算子包括映射(Project),操作对象包括表2以及与A相同的且大于10的id。原始指令4用于根据与A相同的且大于10的id对表2执行映射(Project)操作,得到表2中的所有id与A相同的且大于10的数据。
原始指令5中的算子连接(Join),操作对象包括表1中的所有id为A的数据以及表2中的所有id与A相同的且大于10的数据。原始指令5用于将表1中的所有id为A的数据与表2中的所有id与A相同的且大于10的数据执行连接(Join)操作,得到一数据,即为最终需要得到的数据。
在步骤S102中,对数据处理语句解析,得到数据处理语句中的各个原始指令、各个原始指令中的操作对象以及算子。
在本申请中,可以使用市面上已存在的解析方式对数据处理语句解析,例如,数据处理语句进行语法分析、语义分析以及查询重写等处理,得到数据处理语句中的各个原始指令、各个原始指令中的操作对象以及算子。本申请对具体的解析方式不做限定。
另外,还可以得到各个原始指令之间的执行顺序,以及各个原始指令中的算子得到的输出数据与其他原始指令中的算子的输入数据之间的关系等。
例如,在上述例子中,可以对数据处理语句“SELECT A.id FROM Table1JoinTable2 on A.id=B.id where B.id>10”解析,得到数据处理语句“SELECT A.id FROMTable1 Join Table2 on A.id=B.id where B.id>10”中的原始指令1~5、各个原始指令中的操作对象以及算子,还可以得到原始指令1~5之间的执行顺序。
在步骤S103中,根据各个原始指令中的操作对象以及算子生成用于在至少两个执行引擎上运行的数据处理计划。
其中,至少两个执行引擎各自支持的算子不全相同。数据处理计划中包括多个目标指令,各个目标指令中包括算子以及操作对象,各个目标指令中的算子分别被至少两个执行引擎中的至少一个执行引擎支持。
在本申请一个实施例中,可以基于优化器ORCA来根据各个原始指令中的操作对象以及算子生成用于在至少两个执行引擎上运行的数据处理计划。
在本申请另一个实施例中,基于优化器ORCA可以生成至少两个候选数据处理计划,至少两个候选数据处理计划不全相同,例如,包括的目标指令的数量不全相同,或者目标指令中的算子不全相同,或者,各个目标指令之间的执行顺序不全相同等等。
然后可以基于CBO(Cost-Based Optimization,基于代价的优化)优化器分别对至少两个候选数据处理计划进行代价估算,以分别确定出至少两个候选数据处理计划的执行代价,例如,执行过程耗费的时长和/或执行过程耗费的计算资源等,然后在至少两个候选数据处理计划中选择代价最小的数据处理计划,作为最终的用于在至少两个执行引擎上运行的数据处理计划,从而可以降低执行代价,例如,降低执行过程耗费的时长和/或执行过程耗费的计算资源等,以提高数据处理的效率以及节省系统资源。
本步骤的生成数据处理计划的具体方式可以参见之后的实施例,在此不做详述。
例如,在上述例子中,假设至少两个执行引擎包括执行引擎A和执行引擎B,执行引擎A具有扫描(Scan)、映射(Project)以及过滤(Filter)的功能,不具有连接(Join)的功能,而执行引擎B具有连接(Join)的功能。
因此,在原始指令1-5中,可以在执行引擎A上执行映射(Project)以及过滤(Filter)的操作,在执行引擎B上执行连接(Join)的操作。
例如,在一个方式中,如果执行引擎A能够支持数据处理语句的语法,则可以直接将原始指令1作为目标指令1,将原始指令2作为目标指令2,将原始指令3作为目标指令3,将原始指令4作为目标指令4。如果执行引擎A不支持数据处理语句的语法,则可以根据原始指令1中的算子以及操作对象生成语法能够被执行引擎A支持的目标指令1,根据原始指令2中的算子以及操作对象生成语法能够被执行引擎A支持的目标指令2,根据原始指令3中的算子以及操作对象生成语法能够被执行引擎A支持的目标指令3,根据原始指令4中的算子以及操作对象生成语法能够被执行引擎A支持的目标指令4。以及根据原始指令5中的算子以及操作对象生成语法能够被执行引擎B支持的目标指令5。目标指令1-4用于被执行引擎A执行,以及目标指令5用于被执行引擎B执行。
之后可以至少根据目标指令1-5生成数据处理计划,数据处理计划中可以至少包括目标指令1-5,目标指令1-5之间的执行顺序可以参照原始指令1-5之间的执行顺序等。
在步骤S104中,将各个目标指令分别调度至支持其包括的算子的执行引擎中,以使各个执行引擎响应各自被调度的目标指令。
对于任意一个目标指令,可以在至少两个执行引擎中确定支持该目标指令中的算子的其中一个执行引擎,然后将该目标指令调度至确定出的该一个执行引擎中,对于其他每一个目标指令,同样如此。
其中,数据处理计划中的各个目标指令之间是具有执行顺序的,将各个目标指令调度至支持其包括的算子的执行引擎之后,可以使得各个执行引擎按照各个目标指令之间的执行顺序响应各自被调度的目标指令,从而完成数据处理计划,进而实现在数据库中处理数据的目的。
其中,各个目标指令中的执行顺序为最后一位的目标指令在被一个执行引擎执行完毕之后,会输出一个输出数据,该输出数据即为对数据的最终处理结果。
例如,在上述例子中,可以将目标指令1-4调度至执行引擎A中,以使执行引擎A执行目标指令1-2,得到表1中的所有id为A的数据,以及执行目标指令3-4,得到表2中的所有id与A相同的且大于10的数据。
将目标指令5调度至执行引擎B中,且将表1中的所有id为A的数据以及表2中的所有id与A相同的且大于10的数据调度至执行引擎B中,以使执行引擎B执行目标指令5,以将表1中的所有id为A的数据与表2中的所有id与A相同的且大于10的数据执行连接(Join)操作,得到一数据即为最终需要得到的数据。
在本申请中,获取数据处理语句。数据处理语句中包括多个原始指令,且各个原始指令中包括算子和操作对象对数据处理语句解析,得到数据处理语句中的各个原始指令、各个原始指令中的操作对象以及算子。根据各个原始指令中的操作对象以及算子生成用于在至少两个执行引擎上运行的数据处理计划。至少两个执行引擎各自支持的算子不全相同。数据处理计划中包括多个目标指令,各个目标指令中包括算子以及操作对象。各个目标指令中的算子分别被至少两个执行引擎中的至少一个执行引擎支持。将各个目标指令分别调度至支持其包括的算子的执行引擎中,以使各个执行引擎响应各自被调度的目标指令。
通过本申请,结合各自支持的算子不全相同的至少两个执行引擎来联合在数据库中处理数据,以使至少两个执行引擎中的其中一个执行引擎能够被其他执行引擎补充,也即,在其中一个执行引擎支持的算子有限的情况下,其他执行引擎支持的算子可以提供补充,进而使得可以以更多的处理方式在数据库中处理数据,可以实现对在数据库中对数据进行联邦处理(例如联邦查询等),可以实现在其中一个执行引擎支持的算子有限的情况下能够享受到更多的数据库功能,以提高用户对数据库的使用体验。
在本申请一个实施例中,参见图2,步骤S103包括:
在步骤S201中,对于任意一个原始指令,在至少两个执行引擎中分别确定支持该原始指令中的算子的目标执行引擎。根据该原始指令中的操作对象以及算子生成目标执行引擎支持的目标指令。
在本申请一个实施例中,在至少两个执行引擎中分别确定支持该原始指令中的算子的执行引擎时,可以通过如下流程实现,包括:
11)、在执行引擎与执行引擎支持的算子的集合之间对应关系中,查找包括该原始指令中的算子的集合。
在本申请中,对于在电子设备上加载的至少两个执行引擎中的任意一个执行引擎,事先可以将该执行引擎支持的算子组成算子的集合,然后将该执行引擎与组成的算子的集合组成对应表项,并存储在执行引擎与执行引擎支持的算子的集合之间对应关系中。对于在数据库中集成的至少两个执行引擎中的其他每一个执行引擎,同样如此。
因此,在至少两个执行引擎中分别确定支持该原始指令中的算子的执行引擎时,可以在执行引擎与执行引擎支持的算子的集合之间对应关系中,查找包括该原始指令中的算子的集合,然后执行步骤12)。
12)、在执行引擎与执行引擎支持的算子的集合之间对应关系中,查找与查找到的集合相对应的执行引擎,并作为支持该原始指令中的算子的目标执行引擎。
在本申请另一实施例中,在根据该原始指令中的操作对象以及算子生成目标执行引擎支持的目标指令时,可以通过如下流程实现,包括:
21)、根据该原始指令中的操作对象以及算子生成语法能够被目标执行引擎支持的指令。
在本申请中,目标指令中包括算子以及操作对象。在一个实施例中,目标指令中包括算子以及操作对象是根据原始指令中的算子以及操作对象得到的,一个示例中,目标指令中包括算子以及操作对象与原始指令中的算子以及操作对象可以相同等。
“目标执行引擎支持的目标指令”可以理解为包括至少两方面的支持,一方面为:目标指令中的算子被目标执行引擎支持以及目标指令的语法被目标执行引擎支持等。
22)、在生成的指令中设置属性信息,得到目标指令。其中,属性信息至少包括:操作对象的顺序信息、操作对象的分布信息以及支持生成的指令中的算子的目标执行引擎的执行引擎标识。
在本申请一个实施例中,在目标指令的属性信息中,操作对象的顺序信息用于指示目标指令中的算子对操作对象(输入数据)的顺序信息的要求,也即,目标指令中的算子对满足“操作对象的顺序信息的要求”的操作对象据才能进行处理,得到输出数据。
顺序信息包括:在操作对象为至少两个的情况下,至少两个操作对象之间的先后顺序信息等。
例如,假设目标指令中的算子包括“过滤(Filter)”,算子“过滤(Filter)”对操作对象的顺序信息没有特殊要求,因此,目标指令的属性信息的操作对象的顺序信息可以为“none”,用于指示算子“过滤(Filter)”对满足任意顺序信息要求的操作对象据均能进行处理,得到输出数据。
在本申请一个实施例中,在目标指令的属性信息中,操作对象的分布信息用于指示目标指令中的算子对操作对象(输入数据)的分布信息的要求,也即,目标指令中的算子对满足“操作对象的分布信息的要求”操作对象据才能进行处理,得到输出数据。
分布信息包括:操作对象为至少两个且操作对象分布在分布式数据库中的情况下,至少两个操作对象在分布式数据库中的分布信息,例如,包括任意分布或哈希分布等。
例如,假设目标指令中的算子包括“连接(Join)”,算子“连接(Join)”对操作对象的分布信息没有特殊要求,可以是任意分布,因此,目标指令的属性信息的操作对象的分布信息可以为“any”,用于指示算子“连接(Join)”对任意分布的操作对象均能进行处理,得到输出数据。
再例如,假设目标指令中的算子包括“哈希连接(Hash Join)”,算子“哈希连接(Hash Join)”对操作对象的分布信息具有特殊要求,例如,对操作对象的分布信息的要求是操作对象需要按照哈希分布的形式分布,例如,需要将Join Key(Key可以理解为数据标识等)以Hash的方式散列分布,因此,目标指令的属性信息的操作对象的分布信息可以为“Hash Distribution(哈希分布)”,用于指示算子“哈希连接(Hash Join)”对HashDistribution(哈希分布)的操作对象才能进行处理,得到输出数据。
在步骤S202中,至少根据生成的各个目标指令生成数据处理计划。
在本申请一个实施例中,在本步骤中,可以获取生成的各个目标指令之间的执行顺序,例如,可以参考数据处理语句中的各个原始指令之间的执行顺序来确定生成的各个目标指令之间的执行顺序等,当然,也可以通过其他方式来获取生成的各个目标指令之间的执行顺序,本申请对各个目标指令之间的执行顺序的具体获取方式不做限定。然后可以根据生成的各个目标指令之间的执行顺序,将生成的各个目标指令组合,得到数据处理计划。
在本申请另一实施例中,生成的目标指令中至少包括第一目标指令和第二目标指令,第一目标指令中的操作对象包括:执行第二目标指令后得到的输出数据。也即,第二目标指令的执行顺序位于第一目标指令的执行顺序之前,执行第二目标指令之后得到的输出数据可以作为第一目标指令的至少一个输入数据,因此,第一目标指令需要得到第二目标指令的输出数据,然后使用第一目标指令中的算子对得到的第二目标指令的输出数据处理。但是有时候。
但是,有时候第二目标指令的输出数据的顺序信息并不被第一目标指令中的算子支持,这样就可能导致第一目标指令中的算子无法对第二目标指令的输出数据处理,导致数据处理计划中断,无法实现对数据处理的目的。
因此,为了避免这种情况发生,在本申请另一实施例中,在至少根据生成的各个目标指令生成数据处理计划时,可以确定输出数据的顺序信息是否被第一目标指令中的算子支持。在输出数据的顺序信息不被第一目标指令中的算子支持的情况下,生成辅助指令,该辅助指令用于将第二目标指令的输出数据的顺序信息调整为能够被第一目标指令中的算子支持的顺序信息。
其中,该辅助指令中包括算子以及操作对象,操作对象包括第二目标指令的输出数据,算子用于将第二目标指令的输出数据的顺序信息进行调整,得到顺序信息被调整后的第二目标指令的输出数据,顺序信息被调整后的第二目标指令的输出数据的顺序信息被第一目标指令中的算子支持。
顺序信息被调整后的第二目标指令的输出数据可以作为第一目标指令中的操作对象(输入数据),也即,第一目标指令中的算子可以对顺序信息被调整后的第二目标指令的输出数据处理。
之后可以至少根据生成的各个目标指令以及辅助指令生成数据处理计划。例如,可以获取生成的各个目标指令之间的执行顺序,例如可以参考数据处理语句中的各个原始指令之间的执行顺序来确定生成的各个目标指令之间的执行顺序等,以及可以设置辅助指令在生成的各个目标指令之间的执行顺序,辅助指令的执行顺序包括:辅助指令位于第二目标指令之后且位于第一目标指令之前。然后可以根据生成的各个目标指令之间的执行顺序以及辅助指令的执行顺序,将生成的各个目标指令以及辅助指令组合,得到数据处理计划。
在本申请另一实施例中,生成的目标指令中至少包括第一目标指令和第二目标指令,第一目标指令中的操作对象包括:执行第二目标指令后得到的输出数据。也即,第二目标指令的执行顺序位于第一目标指令的执行顺序之前,执行第二目标指令之后得到的输出数据可以作为第一目标指令的至少一个输入数据,因此,第一目标指令需要得到第二目标指令的输出数据,然后使用第一目标指令中的算子对得到的第二目标指令的输出数据处理。
但是,有时候第二目标指令的输出数据的分布信息并不被第一目标指令中的算子支持,这样就可能导致第一目标指令中的算子无法对第二目标指令的输出数据处理,导致数据处理计划中断,无法实现对数据处理的目的。
因此,为了避免这种情况发生,在本申请另一实施例中,在至少根据生成的各个目标指令生成数据处理计划时,可以确定输出数据的分布信息是否被第一目标指令中的算子支持。在输出数据的分布信息不被第一目标指令中的算子支持的情况下。生成辅助指令,该辅助指令用于将输出数据的分布信息调整为被第一目标指令中的算子支持的分布信息。
其中,该辅助指令中包括算子以及操作对象,操作对象包括第二目标指令的输出数据,算子包括enforcer节点,例如包括motion节点等,例如Hash motion节点,算子用于将第二目标指令的输出数据的分布信息进行调整,得到分布信息被调整后的第二目标指令的输出数据,分布信息被调整后的第二目标指令的输出数据的分布信息被第一目标指令中的算子支持。
分布信息被调整后的第二目标指令的输出数据可以作为第一目标指令中的操作对象(输入数据),也即,第一目标指令中的算子可以对分布信息被调整后的第二目标指令的输出数据处理。
之后可以至少根据生成的各个目标指令以及辅助指令生成数据处理计划。例如,可以获取生成的各个目标指令之间的执行顺序,例如可以参考数据处理语句中的各个原始指令之间的执行顺序来确定生成的各个目标指令之间的执行顺序等,以及可以设置辅助指令在生成的各个目标指令之间的执行顺序,辅助指令的执行顺序包括:辅助指令位于第二目标指令之后且位于第一目标指令之前。然后可以根据生成的各个目标指令之间的执行顺序以及辅助指令的执行顺序,将生成的各个目标指令以及辅助指令组合,得到数据处理计划。
在本申请另一实施例中,生成的目标指令中至少包括第一目标指令和第二目标指令,第一目标指令中的算子与第二目标指令中的算子分别被不同的执行引擎支持,第一目标指令中的操作对象包括:执行第二目标指令后得到的输出数据。也即,第二目标指令的执行顺序位于第一目标指令的执行顺序之前,执行第二目标指令之后得到的输出数据可以作为第一目标指令的至少一个输入数据,因此,第一目标指令需要得到第二目标指令的输出数据,然后使用第一目标指令中的算子对得到的第二目标指令的输出数据处理。但是有时候。
但是,由于第一目标指令中的算子与第二目标指令中的算子分别被不同的执行引擎支持,因此,执行第一目标指令中的算子的执行引擎与执行第二目标指令中的算子的执行引擎不同,第二目标指令中的算子的执行引擎在通过第二目标指令中的算子对第二目标指令中的操作对象处理,得到第二目标指令的输出数据之后,需要将第二目标指令的输出数据传递至支持第一目标指令中的算子的执行引擎,以供支持第一目标指令中的算子的执行引擎能够得到第二目标指令的输出数据,并第一目标指令中的算子对得到的第二目标指令的输出数据处理。
因此,本实施例中需要将第二目标指令的输出数据传递至支持第一目标指令中的算子的执行引擎,否则支持第一目标指令中的算子的执行引擎无法得到第二目标指令的输出数据,导致数据处理计划中断,无法实现对数据处理的目的。
因此,为了避免这种情况发生,在本申请另一实施例中,在至少根据生成的各个目标指令生成数据处理计划时,可以确定第一目标指令中的算子与第二目标指令中的算子是否被同一执行引擎支持。在第一目标指令中的算子与第二目标指令中的算子不被同一执行引擎支持的情况下,生成辅助指令,该辅助指令用于将输出数据传递至支持第一目标指令中的算子的一个执行引擎。
其中,该辅助指令中包括算子以及操作对象,操作对象包括第二目标指令的输出数据,算子包括enforcer节点,例如forward节点等,算子用于将第二目标指令的输出数据传递至支持第一目标指令中的算子的执行引擎。
其中,若支持第一目标指令中的算子的执行引擎与支持第二目标指令中的算子的执行引擎分别承载在不同的硬件设备中,则可以通过网络连接传递第二目标指令的输出数据。
之后可以至少根据生成的各个目标指令以及辅助指令生成数据处理计划。例如,可以获取生成的各个目标指令之间的执行顺序,例如可以参考数据处理语句中的各个原始指令之间的执行顺序来确定生成的各个目标指令之间的执行顺序等,以及可以设置辅助指令在生成的各个目标指令之间的执行顺序,辅助指令在生成的各个目标指令之间的执行顺序包括:辅助指令位于第二目标指令之后且位于第一目标指令之前。然后可以根据生成的各个目标指令之间的执行顺序以及辅助指令在生成的各个目标指令之间的执行顺序,将生成的各个目标指令以及辅助指令组合,得到数据处理计划。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作并不一定是本申请所必须的。
参照图3,示出了本申请一种对数据的联邦处理装置的实施例的结构框图,具体可以包括如下模块:
获取模块11,用于获取数据处理语句,所述数据处理语句中包括多个原始指令,且各个原始指令中包括算子和操作对象;
解析模块12,用于对所述数据处理语句解析,得到所述数据处理语句中的各个原始指令、各个原始指令中的操作对象以及算子;
生成模块13,用于根据各个原始指令中的操作对象以及算子生成用于在至少两个执行引擎上运行的数据处理计划,所述至少两个执行引擎各自支持的算子不全相同,所述数据处理计划中包括多个目标指令,各个目标指令中包括算子以及操作对象,各个目标指令中的算子分别被所述至少两个执行引擎中的至少一个执行引擎支持;
调度模块14,用于将各个目标指令分别调度至支持其包括的算子的执行引擎中,以使各个执行引擎响应各自被调度的目标指令。
在一个可选的实现方式中,所述生成模块包括:
确定单元,用于对于任意一个原始指令,在所述至少两个执行引擎中分别确定支持所述原始指令中的算子的目标执行引擎,第一生成单元,用于根据所述原始指令中的操作对象以及算子生成所述目标执行引擎支持的目标指令;
第二生成单元,用于至少根据生成的各个目标指令生成所述数据处理计划。
在一个可选的实现方式中,所述确定单元包括:
第一查找子单元,用于在执行引擎与执行引擎支持的算子的集合之间对应关系中,查找包括所述原始指令中的算子的集合;
第二查找子单元,用于在执行引擎与执行引擎支持的算子的集合之间对应关系中,查找与查找到的集合相对应的执行引擎,并作为支持所述原始指令中的算子的目标执行引擎。
在一个可选的实现方式中,所述第一生成单元包括:
第一生成子单元,用于根据所述原始指令中的操作对象以及算子生成语法能够被所述目标执行引擎支持的指令;
设置子单元,用于在生成的指令中设置属性信息,得到目标指令,属性信息至少包括:操作对象的顺序信息、操作对象的分布信息以及支持生成的指令中的算子的目标执行引擎的执行引擎标识。
在一个可选的实现方式中,生成的目标指令中至少包括第一目标指令和第二目标指令,所述第一目标指令中的操作对象包括:执行所述第二目标指令后得到的输出数据;
所述第二生成单元包括:
第一确定子单元,用于确定所述输出数据的顺序信息是否被所述第一目标指令中的算子支持;
第二生成子单元,用于在所述输出数据的顺序信息不被所述第一目标指令中的算子支持的情况下,生成辅助指令,所述辅助指令用于将所述输出数据的顺序信息调整为能够被所述第一目标指令中的算子支持的顺序信息;
第三生成子单元,用于至少根据生成的各个目标指令以及辅助指令生成所述数据处理计划。
在一个可选的实现方式中,生成的目标指令中至少包括第一目标指令和第二目标指令,所述第一目标指令中的操作对象包括:执行所述第二目标指令后得到的输出数据;
所述第二生成单元包括:
第二确定子单元,用于确定所述输出数据的分布信息是否被所述第一目标指令中的算子支持;
第四生成子单元,用于在所述输出数据的分布信息不被所述第一目标指令中的算子支持的情况下,生成辅助指令,所述辅助指令用于将所述输出数据的分布信息调整为被所述第一目标指令中的算子支持的分布信息;
第五生成子单元,用于至少根据生成的各个目标指令以及辅助指令生成所述数据处理计划。
在一个可选的实现方式中,生成的目标指令中至少包括第一目标指令和第二目标指令,所述第一目标指令中的操作对象包括:执行所述第二目标指令后得到的输出数据;
所述第二生成单元包括:
第三确定子单元,用于确定所述第一目标指令中的算子与所述第二目标指令中的算子是否被同一执行引擎支持;
第六生成子单元,用于在所述第一目标指令中的算子与所述第二目标指令中的算子不被同一执行引擎支持的情况下,生成辅助指令,所述辅助指令用于将所述输出数据传递至支持所述第一目标指令中的算子的一个执行引擎;
第七生成子单元,用于至少根据生成的各个目标指令以及辅助指令生成所述数据处理计划。
在一个可选的实现方式中,所述第三生成子单元/第五生成子单元/第七生成子单元具体用于:获取生成的各个目标指令之间的执行顺序;设置所述辅助指令在生成的各个目标指令之间的执行顺序,所述辅助指令在生成的各个目标指令之间的执行顺序包括:所述辅助指令位于所述第二目标指令之后且位于所述第一目标指令之前;根据生成的各个目标指令之间的执行顺序以及所述辅助指令在生成的各个目标指令之间的执行顺序,将生成的各个目标指令以及辅助指令组合,得到所述数据处理计划。
在本申请中,获取数据处理语句。数据处理语句中包括多个原始指令,且各个原始指令中包括算子和操作对象对数据处理语句解析,得到数据处理语句中的各个原始指令、各个原始指令中的操作对象以及算子。根据各个原始指令中的操作对象以及算子生成用于在至少两个执行引擎上运行的数据处理计划。至少两个执行引擎各自支持的算子不全相同。数据处理计划中包括多个目标指令,各个目标指令中包括算子以及操作对象。各个目标指令中的算子分别被至少两个执行引擎中的至少一个执行引擎支持。将各个目标指令分别调度至支持其包括的算子的执行引擎中,以使各个执行引擎响应各自被调度的目标指令。
通过本申请,结合各自支持的算子不全相同的至少两个执行引擎来联合在数据库中处理数据,以使至少两个执行引擎中的其中一个执行引擎能够被其他执行引擎补充,也即,在其中一个执行引擎支持的算子有限的情况下,其他执行引擎支持的算子可以提供补充,进而使得可以以更多的处理方式在数据库中处理数据,可以实现对在数据库中对数据进行联邦处理(例如联邦查询等),可以实现在其中一个执行引擎支持的算子有限的情况下能够享受到更多的数据库功能,以提高用户对数据库的使用体验。
本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备时,可以使得该设备执行本申请实施例中各方法步骤的指令(instructions)。
本申请实施例提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得电子设备执行如上述实施例中一个或多个所述的方法。本申请实施例中,所述电子设备包括服务器、网关、子设备等,子设备为物联网设备等设备。
本公开的实施例可被实现为使用任意适当的硬件,固件,软件,或及其任意组合进行想要的配置的装置,该装置可包括服务器(集群)、终端设备如IoT设备等电子设备。
图4示意性地示出了可被用于实现本申请中所述的各个实施例的示例性装置1300。
对于一个实施例,图4示出了示例性装置1300,该装置具有一个或多个处理器1302、被耦合到(一个或多个)处理器1302中的至少一个的控制模块(芯片组)1304、被耦合到控制模块1304的存储器1306、被耦合到控制模块1304的非易失性存储器(NVM)/存储设备1308、被耦合到控制模块1304的一个或多个输入/输出设备1310,以及被耦合到控制模块1306的网络接口1312。
处理器1302可包括一个或多个单核或多核处理器,处理器1302可包括通用处理器或专用处理器(例如图形处理器、应用处理器、基频处理器等)的任意组合。在一些实施例中,装置1300能够作为本申请实施例中所述网关等服务器设备。
在一些实施例中,装置1300可包括具有指令1314的一个或多个计算机可读介质(例如,存储器1306或NVM/存储设备1308)以及与该一个或多个计算机可读介质相合并被配置为执行指令1314以实现模块从而执行本公开中所述的动作的一个或多个处理器1302。
对于一个实施例,控制模块1304可包括任意适当的接口控制器,以向(一个或多个)处理器1302中的至少一个和/或与控制模块1304通信的任意适当的设备或组件提供任意适当的接口。
控制模块1304可包括存储器控制器模块,以向存储器1306提供接口。存储器控制器模块可以是硬件模块、软件模块和/或固件模块。
存储器1306可被用于例如为装置1300加载和存储数据和/或指令1314。对于一个实施例,存储器1306可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,存储器1306可包括双倍数据速率类型四同步动态随机存取存储器(DDR4SDRAM)。
对于一个实施例,控制模块1304可包括一个或多个输入/输出控制器,以向NVM/存储设备1308及(一个或多个)输入/输出设备1310提供接口。
例如,NVM/存储设备1308可被用于存储数据和/或指令1314。NVM/存储设备1308可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(HDD)、一个或多个光盘(CD)驱动器和/或一个或多个数字通用光盘(DVD)驱动器)。
NVM/存储设备1308可包括在物理上作为装置1300被安装在其上的设备的一部分的存储资源,或者其可被该设备访问可不必作为该设备的一部分。例如,NVM/存储设备1308可通过网络经由(一个或多个)输入/输出设备1310进行访问。
(一个或多个)输入/输出设备1310可为装置1300提供接口以与任意其他适当的设备通信,输入/输出设备1310可以包括通信组件、拼音组件、传感器组件等。网络接口1312可为装置1300提供接口以通过一个或多个网络通信,装置1300可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如WiFi、2G、3G、4G、5G等,或它们的组合进行无线通信。
对于一个实施例,(一个或多个)处理器1302中的至少一个可与控制模块1304的一个或多个控制器(例如,存储器控制器模块)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器1302中的至少一个可与控制模块1304的一个或多个控制器的逻辑封装在一起以形成系统级封装(SiP)。对于一个实施例,(一个或多个)处理器1302中的至少一个可与控制模块1304的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器1302中的至少一个可与控制模块1304的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(SoC)。
在各个实施例中,装置1300可以但不限于是:服务器、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)等终端设备。在各个实施例中,装置1300可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,装置1300包括一个或多个摄像机、键盘、液晶显示器(LCD)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC)和扬声器。
本申请实施例提供了一种电子设备,包括:一个或多个处理器;和,其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如本申请中一个或多个所述的对数据的联邦处理方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种对数据的联邦处理方法及装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (18)
1.一种对数据的联邦处理方法,其特征在于,所述方法包括:
获取数据处理语句,所述数据处理语句中包括多个原始指令,且各个原始指令中包括算子和操作对象;
对所述数据处理语句解析,得到所述数据处理语句中的各个原始指令、各个原始指令中的操作对象以及算子;
根据各个原始指令中的操作对象以及算子生成用于在至少两个执行引擎上运行的数据处理计划,所述至少两个执行引擎各自支持的算子不全相同,所述数据处理计划中包括多个目标指令,各个目标指令中包括算子以及操作对象,各个目标指令中的算子分别被所述至少两个执行引擎中的至少一个执行引擎支持;
将各个目标指令分别调度至支持其包括的算子的执行引擎中,以使各个执行引擎响应各自被调度的目标指令。
2.根据权利要求1所述的方法,其特征在于,所述根据各个原始指令中的操作对象以及算子生成用于在至少两个执行引擎上运行的数据处理计划,包括:
对于任意一个原始指令,在所述至少两个执行引擎中分别确定支持所述原始指令中的算子的目标执行引擎,根据所述原始指令中的操作对象以及算子生成所述目标执行引擎支持的目标指令;
至少根据生成的各个目标指令生成所述数据处理计划。
3.根据权利要求2所述的方法,其特征在于,所述在所述至少两个执行引擎中分别确定支持所述原始指令中的算子的目标执行引擎,包括:
在执行引擎与执行引擎支持的算子的集合之间对应关系中,查找包括所述原始指令中的算子的集合;
在执行引擎与执行引擎支持的算子的集合之间对应关系中,查找与查找到的集合相对应的执行引擎,并作为支持所述原始指令中的算子的目标执行引擎。
4.根据权利要求2所述的方法,其特征在于,所述根据所述原始指令中的操作对象以及算子生成所述目标执行引擎支持的目标指令,包括:
根据所述原始指令中的操作对象以及算子生成语法能够被所述目标执行引擎支持的指令;
在生成的指令中设置属性信息,得到目标指令,属性信息至少包括:操作对象的顺序信息、操作对象的分布信息以及支持生成的指令中的算子的目标执行引擎的执行引擎标识。
5.根据权利要求2所述的方法,其特征在于,生成的目标指令中至少包括第一目标指令和第二目标指令,所述第一目标指令中的操作对象包括:执行所述第二目标指令后得到的输出数据;
所述至少根据生成的各个目标指令生成所述数据处理计划,包括:
确定所述输出数据的顺序信息是否被所述第一目标指令中的算子支持;
在所述输出数据的顺序信息不被所述第一目标指令中的算子支持的情况下,生成辅助指令,所述辅助指令用于将所述输出数据的顺序信息调整为能够被所述第一目标指令中的算子支持的顺序信息;
至少根据生成的各个目标指令以及辅助指令生成所述数据处理计划。
6.根据权利要求2所述的方法,其特征在于,生成的目标指令中至少包括第一目标指令和第二目标指令,所述第一目标指令中的操作对象包括:执行所述第二目标指令后得到的输出数据;
所述至少根据生成的各个目标指令生成所述数据处理计划,包括:
确定所述输出数据的分布信息是否被所述第一目标指令中的算子支持;
在所述输出数据的分布信息不被所述第一目标指令中的算子支持的情况下,生成辅助指令,所述辅助指令用于将所述输出数据的分布信息调整为被所述第一目标指令中的算子支持的分布信息;
至少根据生成的各个目标指令以及辅助指令生成所述数据处理计划。
7.根据权利要求2所述的方法,其特征在于,生成的目标指令中至少包括第一目标指令和第二目标指令,所述第一目标指令中的操作对象包括:执行所述第二目标指令后得到的输出数据;
所述至少根据生成的各个目标指令生成所述数据处理计划,包括:
确定所述第一目标指令中的算子与所述第二目标指令中的算子是否被同一执行引擎支持;
在所述第一目标指令中的算子与所述第二目标指令中的算子不被同一执行引擎支持的情况下,生成辅助指令,所述辅助指令用于将所述输出数据传递至支持所述第一目标指令中的算子的一个执行引擎;
至少根据生成的各个目标指令以及辅助指令生成所述数据处理计划。
8.根据权利要求5-7任一项所述的方法,其特征在于,所述至少根据生成的各个目标指令以及辅助指令生成所述数据处理计划,包括:
获取生成的各个目标指令之间的执行顺序;设置所述辅助指令在生成的各个目标指令之间的执行顺序,所述辅助指令在生成的各个目标指令之间的执行顺序包括:所述辅助指令位于所述第二目标指令之后且位于所述第一目标指令之前;
根据生成的各个目标指令之间的执行顺序以及所述辅助指令在生成的各个目标指令之间的执行顺序,将生成的各个目标指令以及辅助指令组合,得到所述数据处理计划。
9.一种对数据的联邦处理装置,其特征在于,所述装置包括:
获取模块,用于获取数据处理语句,所述数据处理语句中包括多个原始指令,且各个原始指令中包括算子和操作对象;
解析模块,用于对所述数据处理语句解析,得到所述数据处理语句中的各个原始指令、各个原始指令中的操作对象以及算子;
生成模块,用于根据各个原始指令中的操作对象以及算子生成用于在至少两个执行引擎上运行的数据处理计划,所述至少两个执行引擎各自支持的算子不全相同,所述数据处理计划中包括多个目标指令,各个目标指令中包括算子以及操作对象,各个目标指令中的算子分别被所述至少两个执行引擎中的至少一个执行引擎支持;
调度模块,用于将各个目标指令分别调度至支持其包括的算子的执行引擎中,以使各个执行引擎响应各自被调度的目标指令。
10.根据权利要求9所述的装置,其特征在于,所述生成模块包括:
确定单元,用于对于任意一个原始指令,在所述至少两个执行引擎中分别确定支持所述原始指令中的算子的目标执行引擎,第一生成单元,用于根据所述原始指令中的操作对象以及算子生成所述目标执行引擎支持的目标指令;
第二生成单元,用于至少根据生成的各个目标指令生成所述数据处理计划。
11.根据权利要求10所述的装置,其特征在于,所述确定单元包括:
第一查找子单元,用于在执行引擎与执行引擎支持的算子的集合之间对应关系中,查找包括所述原始指令中的算子的集合;
第二查找子单元,用于在执行引擎与执行引擎支持的算子的集合之间对应关系中,查找与查找到的集合相对应的执行引擎,并作为支持所述原始指令中的算子的目标执行引擎。
12.根据权利要求10所述的装置,其特征在于,所述第一生成单元包括:
第一生成子单元,用于根据所述原始指令中的操作对象以及算子生成语法能够被所述目标执行引擎支持的指令;
设置子单元,用于在生成的指令中设置属性信息,得到目标指令,属性信息至少包括:操作对象的顺序信息、操作对象的分布信息以及支持生成的指令中的算子的目标执行引擎的执行引擎标识。
13.根据权利要求10所述的装置,其特征在于,生成的目标指令中至少包括第一目标指令和第二目标指令,所述第一目标指令中的操作对象包括:执行所述第二目标指令后得到的输出数据;
所述第二生成单元包括:
第一确定子单元,用于确定所述输出数据的顺序信息是否被所述第一目标指令中的算子支持;
第二生成子单元,用于在所述输出数据的顺序信息不被所述第一目标指令中的算子支持的情况下,生成辅助指令,所述辅助指令用于将所述输出数据的顺序信息调整为能够被所述第一目标指令中的算子支持的顺序信息;
第三生成子单元,用于至少根据生成的各个目标指令以及辅助指令生成所述数据处理计划。
14.根据权利要求10所述的装置,其特征在于,生成的目标指令中至少包括第一目标指令和第二目标指令,所述第一目标指令中的操作对象包括:执行所述第二目标指令后得到的输出数据;
所述第二生成单元包括:
第二确定子单元,用于确定所述输出数据的分布信息是否被所述第一目标指令中的算子支持;
第四生成子单元,用于在所述输出数据的分布信息不被所述第一目标指令中的算子支持的情况下,生成辅助指令,所述辅助指令用于将所述输出数据的分布信息调整为被所述第一目标指令中的算子支持的分布信息;
第五生成子单元,用于至少根据生成的各个目标指令以及辅助指令生成所述数据处理计划。
15.根据权利要求10所述的装置,其特征在于,生成的目标指令中至少包括第一目标指令和第二目标指令,所述第一目标指令中的操作对象包括:执行所述第二目标指令后得到的输出数据;
所述第二生成单元包括:
第三确定子单元,用于确定所述第一目标指令中的算子与所述第二目标指令中的算子是否被同一执行引擎支持;
第六生成子单元,用于在所述第一目标指令中的算子与所述第二目标指令中的算子不被同一执行引擎支持的情况下,生成辅助指令,所述辅助指令用于将所述输出数据传递至支持所述第一目标指令中的算子的一个执行引擎;
第七生成子单元,用于至少根据生成的各个目标指令以及辅助指令生成所述数据处理计划。
16.根据权利要求13-15任一项所述的装置,其特征在于,所述第三生成子单元/第五生成子单元/第七生成子单元具体用于:获取生成的各个目标指令之间的执行顺序;设置所述辅助指令在生成的各个目标指令之间的执行顺序,所述辅助指令在生成的各个目标指令之间的执行顺序包括:所述辅助指令位于所述第二目标指令之后且位于所述第一目标指令之前;根据生成的各个目标指令之间的执行顺序以及所述辅助指令在生成的各个目标指令之间的执行顺序,将生成的各个目标指令以及辅助指令组合,得到所述数据处理计划。
17.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行如权利要求1-8任一项所述的对数据的联邦处理方法。
18.一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如权利要求1-8任一项所述的对数据的联邦处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110225589.5A CN114996307A (zh) | 2021-03-01 | 2021-03-01 | 一种对数据的联邦处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110225589.5A CN114996307A (zh) | 2021-03-01 | 2021-03-01 | 一种对数据的联邦处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114996307A true CN114996307A (zh) | 2022-09-02 |
Family
ID=83018798
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110225589.5A Pending CN114996307A (zh) | 2021-03-01 | 2021-03-01 | 一种对数据的联邦处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114996307A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116226237A (zh) * | 2023-04-27 | 2023-06-06 | 天津南大通用数据技术股份有限公司 | 一种支持多个计算引擎的分布式查询计划生成方法及装置 |
-
2021
- 2021-03-01 CN CN202110225589.5A patent/CN114996307A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116226237A (zh) * | 2023-04-27 | 2023-06-06 | 天津南大通用数据技术股份有限公司 | 一种支持多个计算引擎的分布式查询计划生成方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7021228B2 (ja) | ブロックチェーンベースのデータ記憶および照会方法およびデバイス | |
US20130326538A1 (en) | System and method for shared execution of mixed data flows | |
KR102133906B1 (ko) | 데이터 분석 및 처리 방법, 장치, 컴퓨터 장치 및 저장 매체 | |
US20140245068A1 (en) | Using linked data to determine package quality | |
CN113177062A (zh) | 一种数据查询方法及装置 | |
CN104484413A (zh) | 一种获得搜索结果的方法和装置 | |
CN114996307A (zh) | 一种对数据的联邦处理方法及装置 | |
CN114253798A (zh) | 指标数据采集方法和装置、电子设备、存储介质 | |
US10866960B2 (en) | Dynamic execution of ETL jobs without metadata repository | |
CN113704291A (zh) | 数据查询方法、装置、存储介质及电子设备 | |
CN111324470B (zh) | 用于生成信息的方法及装置 | |
CN112506887A (zh) | 车辆终端can总线数据处理方法及装置 | |
CN110704099B (zh) | 联盟链的构建方法、装置和电子设备 | |
CN113297305A (zh) | 会话状态处理方法、装置、设备和存储介质 | |
CN113448739B (zh) | 一种数据处理方法及装置 | |
CN111444148A (zh) | 基于MapReduce的数据传输方法和装置 | |
CN113849524B (zh) | 一种数据处理方法及装置 | |
CN112199443B (zh) | 数据同步方法、装置、计算机设备和存储介质 | |
US10089369B2 (en) | Searching method, searching apparatus and device | |
US10049159B2 (en) | Techniques for data retrieval in a distributed computing environment | |
US10223393B1 (en) | Efficient processing of source code objects using probabilistic data structures | |
US10114864B1 (en) | List element query support and processing | |
CN109902067B (zh) | 文件处理方法、装置、存储介质及计算机设备 | |
CN111859230B (zh) | 一种用于监控互联网信息的热点趋势的控制方法 | |
CN114904216B (zh) | 一种用于虚拟现实跑步机的反馈增强处理方法及系统 |
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 |