数据处理设备和操作数据处理设备的方法与流程

文档序号:14420435阅读:193来源:国知局
本发明涉及一种数据处理设备和操作数据处理设备的方法。特别地,本发明涉及一种数据处理设备,用于从诸如数据库等数据存储库中提取数据以响应数据查询。
背景技术
::自关系数据库的早期阶段以来,为提升数据库的性能,尝试将数据查询编译为本地代码而不是解析该查询。这些尝试的主要目的是减少解析开销,从而提高查询的执行速度。通常,使用一些基于模式的代码生成器将查询编译为本地机器代码。通常,该方法非常复杂,不可移植,并且不允许对生成的本地代码进行进一步的优化,例如通用子表达式消除、代码融合和循环展开等。几年前,已经开发了一个名为volcano的可扩展和并行查询评估系统。它为数据库系统设计、查询优化的启发式方法、并行查询执行和资源分配提供了研究环境。volcano系统使用两个元运算符,即选择方案元运算符,其支持动态查询评估方案,即直到运行时仍允许延迟选定的优化决策,例如,对于具有自由变量的嵌入式查询;以及交换元运算符,其支持分区数据集上的运算符内部并行以及垂直和水平运算符间并行,在进程之内的需求驱动数据流和进程之间的数据驱动数据流之间进行转换。随着智能编译器生成具有可接受性能的机器代码,许多高级编程语言开发得越来越多,这带来了几次尝试,即将查询执行方案转换为这种高级编程语言,而不是本地代码。其中一项尝试称为legobase,它是一种以高级编程语言scala编写的内存查询执行引擎,并且通过生成编程来实现抽象概念。legobase中的数据查询用scala语言编写,然后转换成专门的scala或c代码。这样,查询引擎结构本身可以适应于特定的查询。例如,根据tpc-h标准对legobase进行了评估,其明显优于大多数商用内存数据库系统以及现有的查询编译器。此外,只需几百行高级语言代码编程改进这些性能,而无需其他查询编译器所需的复杂低级语言代码编程。尽管上述尝试已经改进了性能,但仍然需要进一步改进,特别是针对从数据库中提取数据的数据查询的执行性能方面。因此,需要一种改进的数据处理设备和操作这种数据处理设备的改进方法,特别是用于从诸如数据库等数据存储库中提取数据以响应数据查询的数据处理设备。技术实现要素:本发明的目的是提供一种改进的数据处理设备和操作这种数据处理设备的改进方法,特别是用于从诸如数据库等数据存储库中提取数据以响应数据查询的数据处理设备。上述和其它目的通过独立权利要求的主题来实现。根据所述独立权利要求、描述以及附图,其他实施形式是显而易见的。第一方面,提供了一种数据处理设备,用于从存储库或存储器中提取数据以响应数据查询。所述数据处理设备包括转换器,用于将所述查询转换成高级编程语言查询;优化器,用于基于所述存储库的配置来优化所述高级编程语言查询以生成优化查询。所述存储库或所述存储器可以是数据库。或者,所述存储库或所述存储器可以是至少临时存储数据的其他任何设备,例如rom、ram和数据通信信道等。高级编程语言中的查询比低级编程语言中的同一查询具有更高层次的抽象定义。通过考虑存储库的具体配置,即使得查询适应于存储库的特定配置,这样有利于获得查询,相较于使用传统的方法进行优化的查询,这种查询优化得更好。这具有极大的优越性,尤其是对提供许多不同模型的组织数据(例如分库、列式存储、垂直和水平分布和复制等)的数据库。因此,提供了一种改进的数据处理设备,特别是用于从诸如数据库等数据存储库中提取数据以响应数据查询的数据处理设备。根据本发明第一方面,在所述数据处理设备的第一种可能的实现方式中,所述优化器用于通过执行所述高级语言查询的同构专业化并基于所述存储库的所述配置来优化所述高级语言查询。所述高级语言查询的同构专业化是针对所述存储库的所述配置通过所述存储库中用于存储数据的表的不同实现方式之中的至少一种同构来实现查询的专业化。通过执行所述高级语言查询的同构专业化,可以获得查询,相较于使用传统的方法进行优化的查询,这种查询优化得更好。根据本发明第一方面的第一种实现方式,在所述数据处理设备的第二种可能的实现方式中,所述数据处理设备的所述优化器用于通过执行作为所述高级语言查询的阶段评估的一部分的所述高级语言查询的同构专业化并基于所述存储库的所述配置来优化所述高级语言查询。阶段评估是一种特殊的查询评估,它采用所述查询的抽象语法树(abstractsyntaxtree,简称ast)表示,并生成所述查询的基于图形的中间表示(intermediaterepresentation,简称ir)。或者,可以将阶段评估定义为阶段代码的标准评估,其中查询q的分段代码是查询q',使得q'的标准评估产生中间表示,其在语义上等同于查询q。查询的标准评估(或解析)是将中间表示和一些数据作为输入并产生新数据作为输出的过程。阶段评估允许进一步的优化措施,这些优化措施在现有技术的方法中不可用于优化查询,特别是以sql编写的查询。根据第一方面的第二种实现方式,在所述数据处理设备的第三种可能的实现方式中,所述优化器用于通过所述高级语言查询的基于图形的中间表示来执行作为所述高级语言查询的阶段评估的一部分的所述高级语言查询的同构专业化。根据第一方面的第三种实现方式,在所述数据处理设备的第四种可能的实现方式中,所述优化器还用于执行所述高级语言查询的基于图形的中间表示的进一步低级优化步骤,特别是通用子表达式消除、代码融合、循环展开、数据结构转换、积极内联、持续传播和/或不可达代码去除。这提供了代码的进一步优化。根据第一方面的第四种实现方式,在所述数据处理设备的第五种可能的实现方式中,所述优化器还用于在编译和代码生成框架的环境中执行所述高级语言查询的基于图形的中间表示的进一步低级优化步骤。可以进一步编译和执行输出。领域专用编译和代码生成框架可能是轻量级模块化分级(lightweightmodularstaging,简称lms)。根据本发明第一方面或第一方面的第一种至第五种实现方式的任一实现方式,在所述数据处理设备的第六种可能的实现方式中,所述优化器还用于执行所述高级语言查询的进一步高级优化步骤,特别是谓词下推优化。该实现方式提供了所述高级语言查询的进一步高级优化,特别是谓词下推优化。谓词下推优化将过滤操作符移到查询执行树的根部,以减少处理的数据量。根据本发明第一方面或第一方面的第一种至第六种实现方式的任一实现方式,在所述数据处理设备的第七种可能的实现方式中,所述优化器用于以高级语言优化查询的形式生成所述优化查询。这种实现方式可以提供优化查询,例如在scala或c++中,这样可以进一步编译所述高级语言优化查询。根据本发明第一方面或第一方面的第一种至第七种实现方式的任一实现方式,在所述数据处理设备的第八种可能的实现方式中,所述数据处理设备还包括执行器,用于通过执行所述优化查询从所述存储库中提取数据。使用优化查询来进行数据搜索,这样所述数据处理设备的性能更好。根据本发明第一方面或第一方面的第一种至第八种实现方式的任一实现方式,在所述数据处理设备的第九种可能的实现方式中,所述存储库的所述配置由所述存储库内的数据表的配置来定义。在一种可能的实现方式中,所述存储库中的所述数据表可以配置为“localrowtable”、“localpairtable”、“shardedrowtable”或“shardedpairtable”。可以使用类型声明来定义这些不同的配置。根据本发明第一方面或第一方面的第一种至第九种实现方式的任一实现方式,在所述数据处理设备的第十种可能的实现方式中,所述优化器还用于从与所述存储库的数据一同存储的数据中或从单独的元数据存储库中获得关于所述存储库的所述配置的信息。根据本发明第一方面或第一方面的第一种至第十种实现方式的任一实现方式,在所述数据处理设备的第十一种可能的实现方式中,所述高级语言查询是scala查询。根据本发明第一方面或第一方面的第一种至第十一种实现方式的任一实现方式,在所述数据处理设备的第十二种可能的实现方式中,所述查询是sql查询。根据本发明第一方面或第一方面的第一种至第十二种实现方式的任一实现方式,在进一步的实现方式中,数据可以通过范围分区、轮循调度和散列分区等在所述存储库的节点之间分布。根据本发明第一方面或第一方面的第一种至第十二种实现方式的任一实现方式,在进一步的实现方式中,所述优化器还用于基于所述存储库的配置来优化高级编程语言查询,以通过针对所述存储库的至少两个不同配置生成至少两个查询,并通过用于生成优化查询的所述至少两个查询的加权平均值来生成所述优化查询。作为加权平均值的替代,也可以通过优化损失函数来生成所述优化查询,例如通过加权线性函数、二次函数或其他优化数学模型。第二方面,本发明涉及一种操作数据处理设备的方法,其用于从存储库中提取数据以响应查询,所述方法包括以下步骤:将所述查询转换为高级语言查询;基于所述存储库的配置来优化所述高级语言查询以生成优化查询。根据本发明第二方面所述的方法可以由根据本发明第一方面所述的数据处理设备执行。根据本发明第二方面所述的方法的进一步特征可以直接从根据本发明第一方面及其不同实现方式所述的数据处理设备的功能中得到。第三方面,本发明涉及一种计算机程序,包括:程序代码,用于在计算机上运行时执行根据本发明第二方面所述的方法。本发明可以以硬件和/或软件形式来实现。附图说明本发明的具体实施方式将结合以下附图进行描述,其中:图1示出了一实施例提供的用于从存储库中提取数据以响应查询的数据处理设备的示意图。图2示出了一实施例提供的一种操作数据处理设备的方法的步骤的示意图。图3示出了一实施例提供的本发明的不同方面的示意图。图4示出了一实施例提供的本发明的不同方面的示意图。图5示出了一实施例提供的本发明的不同方面的示意图。图6示出了一实施例提供的本发明的不同方面的示意图。图7示出了一实施例提供的本发明的不同方面的示意图。图8示出了一实施例提供的本发明的不同方面的示意图。图9示出了一实施例提供的本发明的不同方面的示意图。具体实施方式以下结合附图进行详细描述,所述附图是描述的一部分,并通过图解说明的方式示出可以实施本发明的具体方面。可以理解的是,在不脱离本发明范围的情况下,可以利用其他方面,并可以做出结构上或逻辑上的改变。因此,以下详细的描述并不当作限定,本发明的范围由所附权利要求书界定。可以理解的是,与所描述的方法有关的内容对于与用于执行方法对应的设备或系统也同样适用,反之亦然。例如,如果描述了一个具体的方法步骤,对应的设备可以包括用于执行所描述的方法步骤的单元,即使此类单元未在图中详细阐述或说明。此外,应理解,除非另外具体指出,否则本文中描述的各种示例性方面的特征可彼此组合。图1示出了一实施例提供的用于从数据存储库107中提取数据以响应查询的数据处理设备100的示意图。尽管在图1中,所述存储库107以数据库示出,但是本发明也适用于其他类型的存储库,其用于至少临时存储数据,诸如rom,ram和数据通信信道等。所述数据处理设备100包括:转换器101,用于将查询转换成高级编程语言查询。所述高级编程语言中的查询比原始查询具有更高层次的抽象定义。在一个实施例中,所述查询是sql查询。在一个实施例中,所述高级语言查询是所述高级编程语言scala中的查询。此外,数据处理设备100包括:优化器103,用于优化由转换器101提供的所述高级编程语言查询,从而创建优化查询。如图中虚线箭头所示,所述优化器103用于基于所述存储库107的配置来优化所述高级编程语言查询以生成优化查询。在一个实施例中,所述数据处理设备100还包括:执行器105,用于通过执行由所述优化器103提供的所述优化查询从所述存储库107提取数据。在一个实施例中,所述优化器103用于通过执行所述高级语言查询的同构专业化并基于所述存储库107的所述配置来优化所述高级语言查询。所述高级语言查询的同构专业化是针对所述存储库的所述配置通过所述存储库中用于存储数据的表的不同实现方式之中的至少一种同构来实现查询的专业化。在下面图4和图5的上下文中会进行更详细的描述。在一个实施例中,所述数据处理设备100,即所述优化器103用于通过执行作为所述高级语言查询的阶段评估的一部分的所述高级语言查询的同构专业化并基于所述存储库107的所述配置来优化所述高级语言查询。阶段评估是一种特殊的查询评估,它采用所述查询的抽象语法树(abstractsyntaxtree,简称ast)表示,并生成所述查询的基于图形的中间表示(intermediaterepresentation,简称ir)。或者,可以将阶段评估定义为阶段代码的标准评估,其中查询q的分段代码是查询q',使得q'的标准评估产生中间表示,其在语义上等同于查询q。查询的标准评估(或解析)是将中间表示和一些数据作为输入并产生新数据作为输出的过程。阶段评估允许进一步的优化措施,这些优化措施在现有技术的方法中不可用于优化查询,特别是以sql编写的查询。在一个实施例中,所述优化器103用于通过所述高级语言查询的基于图形的中间表示来执行作为所述高级语言查询的阶段评估的一部分的所述高级语言查询的同构专业化。包括基于图形的中间表示(intermediaterepresentation,简称ir)的所述阶段评估可以如文档wo2015/012711a1中所述来实现,其以引入的方式完全并入本文中。在一个实施例中,所述优化器103还用于执行所述高级语言查询的基于图形的中间表示的进一步低级优化步骤,特别是通用子表达式消除、代码融合、循环展开、数据结构转换、积极内联、持续传播和/或不可达代码去除。在一个实施例中,所述优化器103还用于在编译和代码生成框架的环境中执行所述高级语言查询的基于图形的中间表示的进一步低级优化步骤。可以进一步编译和执行输出。领域专用编译和代码生成框架可能是轻量级模块化分级(lightweightmodularstaging,简称lms)。在一个实施例中,所述优化器103还用于执行所述高级语言查询的进一步高级优化步骤,特别是谓词下推优化。谓词下推优化将过滤操作符移到查询执行树的根部,以减少处理的数据量。在一个实施例中,所述优化器103用于以高级语言优化查询的形式生成所述优化查询。所述优化器103可以提供优化查询,例如在scala或c++中,这样可以进一步编译所述高级语言优化查询。在一个实施例中,所述存储库107的所述配置由所述存储库内的数据表的配置来定义。在一种可能的实现方式中,所述存储库中的所述数据表可以配置为“localrowtable”、“localpairtable”、“shardedrowtable”或“shardedpairtable”。在下面图4和图5的上下文中会进行更详细的描述。可以使用例如scalan框架等类型声明来定义这些不同的配置。在一个实施例中,所述优化器103还用于从与所述存储库107的数据一同存储的数据(或元数据)中或从单独的元数据存储库中获得关于所述存储库107的所述配置的信息。在一个实施例中,数据可以通过范围分区、轮循调度和散列分区等在所述存储库107的节点之间分布。在一个实施例中,所述优化器103还用于基于所述存储库107的配置来优化所述高级编程语言查询,以通过针对所述存储库107的至少两个不同配置生成至少两个查询,并通过用于生成优化查询的所述至少两个查询的加权平均值来生成所述优化查询。在pct/ru2015/00020中公开了可用于选择最佳配置的方法。作为加权平均值的替代,也可以通过优化损失函数来生成所述优化查询,例如通过加权线性函数、二次函数或其他优化数学模型。图2示出了一实施例提供的操作数据处理设备的方法200的步骤的示意图,例如图1所示的数据处理设备100。所述方法200包括:步骤201,将查询转换为高级语言查询;步骤203,基于存储库的配置来优化所述高级语言查询以生成优化查询。下面描述了所述数据处理设备100和所述方法200的进一步实现方式、实施例和相关方面。作为示例,图3示出了一实施例提供的本发明的不同方面的示意图。作为第一步,可以生成标准sql查询。然后可以使用scalasql领域专用语言(domain-specificlanguage,简称dsl)来定义数据库配置。查询代码和所述数据库配置可以混合在一起,这将在下文详细描述。该代码的阶段评估产生可以表示为基于图形的中间表示的查询执行方案。因此,该执行方案是原始计划的专门版本,其中将考虑特定数据库配置的具体情况。然后可以通过应用各种高级查询优化规则,如谓词下推等来进一步优化该计划。最后,轻量级模块化分级(lightweightmodularstaging,简称lms)可用于生成不受任何高级抽象影响的scala代码,其可以应用于低级优化,例如持续传播、通用子表达式消除和代码融合等。另一实施例中,方法200包括以下步骤。在一个实施例中,使用sql数据定义语言(datadefinitionlanguage,简称ddl)来定义数据库模型,即创建表和索引。在一个实施例中,可以使用sql数据操作语言(datamanipulationlanguage,简称dml)来编写查询。在一个实施例中,sql-to-sqldsl转换器用于将这些sql语句转换为scalansqldsl代码。在一个实施例中,该代码使用scalansqldsl抽象,例如表[t]和主索引[k,t]等。在一个实施例中,可以使用scalansqldsl和生成的代码来定义数据库配置。在一个实施例中,提供了针对每份声明表的特定实现方式,并且定义了索引。在一个实施例中,将代码写入scalan中,其将数据加载到数据库中并执行对该数据的查询。在一个实施例中,scalan在分段评估模式中评估上一步骤的代码。在一个实施例中,同构专业化规则应用于分段评估期间。作为分段评估的结果,原始查询代码针对数据库配置进行优化,并转换为纯scala代码。此外,在此步骤中,可以应用各种高级sql优化(例如谓词下推)。在一个实施例中,将这样的优化定义为scalan中的图变换规则。在一个实施例中,可以使用轻量级模块化分级(lightweightmodularstaging,简称lms)来进一步转化最终的scala代码。lms可以执行各种低级代码优化和转换,例如内联、代码融合、不可达代码去除、通用子表达式消除和循环展开等。在一个实施例中,lms可以生成scala和c++代码。由于sql是数据库访问方法的实际标准。因此,在本发明实施例中,可以描述数据库模型,并且可以使用标准sql编写数据查询。下文提供了“lineitem”表的定义和附加索引,以及由众所周知的tpc-h基准定义的所谓的q1查询的示例。在一个实施例中,以上查询由sql-to-scalan转换器转换为以下代码:在此示例中,“lineitem”是针对“lineitem”表生成的scala类型。table[lineitem]和readonlytable都属于scalandsl类。因此,该查询给出了抽象表“lineitem”(这里的抽象意味着在编写查询时可能不知道表的具体实现方式),并返回查询的结果作为临时表。作为示例,图4示出了可用于在所述数据库107中存储数据的示例性数据表的不同同构表示。图4示出了基于行的表、基于列的表和混合表,它们与图4顶部所示的抽象表是同构的。实际上,给定的存储库或数据库,例如图1所示的所述数据库107,将使用图4所示的示例性表示之一或使用在其中存储数据的另外的表示,从而就本发明而言定义了所述数据库107的配置。通常,本发明适用于存储库的节点之间分布数据的不同方式,例如范围分区、轮循调度和散列分区等。作为示例,如图4所示的数据表的示例性同构表示,其定义了就本发明而言的所述数据库107的不同配置,可以使用如图5所示的类型声明在scalan中定义。例如,通过选择列/行表表示和分片/局部分布模型,可以使用例如scalansqldsl来创建图5所示的四种配置。作为示例,可以通过以下方式使用sqldsl在scalan中定义这四种不同的配置:localrowtable:局部行定向表localpairtable:局部列定向表shardedrowtable:分区行定向表shardedpairtable:分区列定向表在上述示例中,函数“readonlytable(数据)”创建具有给定输入数据(其作为scala数组提供)的水平非分片只读表。函数“createlineitem”由sql-to-scalan转换器生成,并构造此表的垂直表示。函数“shardedtable.create”创建具有给定数量的分片和指定的分片密钥的分片表,其中该密钥用于在分片之间分配记录。在一个实施例中,共享表的节点可以具有水平或垂直表示。在一个实施例中,考虑到原始查询和所述存储库107的所述具体配置,可以使用诸如scalan之类的框架并基于该具体配置来优化代码。在一个实施例中,可以在该阶段使用数据库优化器执行的各种sql优化。在一个实施例中,可以将所述sql优化定义为scalan变换规则。在一个实施例中,所述sql优化包括谓词下推优化。在这样的实施例中,如果查询结合了几个表,并且对于所得到的表的内容存在一些过滤条件,则应尽快检查谓词,减少在每个查询阶段产生的数据量处理。图6中示出了这样的查询优化示例,其中中间的框包含非优化的查询代码,并且图6底部的框包含优化的查询代码。在一个实施例中,诸如scalan等框架可以在执行同构专业化时从查询代码中消除高级抽象,从而仅使用基本的scala集合进行操作。在一个实施例中,还可以进一步进行编译步骤。在一个实施例中,不同于生成机器代码的通用编译器,诸如scalan等框架可以产生基于图形的中间表示(intermediaterepresentation,简称ir)的高级scala代码。该ir可进一步优化。在一个实施例中,轻量级模块化分段(lightweightmodularstaging,简称lms)可用于最终处理,但也可以使用其他编译框架。在一个实施例中,lms可以执行多次域特定优化。通过有关程序域的信息,lms可以执行这种优化,这种优化不能由标准的scala编译器来执行。这些优化可以包括积极内联、代码融合、循环展开和数据结构转换等。此外,lms可以执行持续传播、不可达代码去除以及通用子表达式消除。图7示出了原始查询代码和由lms处理得到的最终查询代码的示例。本发明的示例性实施例的性能已经与现有的商业可用数据库和诸如legobase等研究项目的性能进行了比较。作为基准,已经选择了众所周知的tpc-h决策支持基准,其中包括一系列的业务定向临时查询和并发数据修改。已经选择了查询和填充数据库的数据,使其具有广泛的行业相关性。此基准示出了决策支持系统,其检测大量数据,执行高复杂度的查询并提供关键业务问题的答案。使用了缩放因子1,大约产生了1gb的表。图8所示的表中示出了执行查询q1得到的结果,其中该表的最后四个表项示出了本发明的不同实施例的相应性能。图9示出了针对数据库107的不同配置的不同查询,本发明的不同实施例的相应性能(即以毫秒为单位的查询的执行时间)的表。本发明的实施例允许针对特定查询集合,直接测试不同配置的功效以及自动选择配置,以使得对于单个查询以及对于多个查询的组合(即平均值),该查询都具有最佳性能。查询“row+seq”可以指按顺序进行处理的横向表或柱状表。相应地,查询“row+par”可以指并行处理。该查询可以采用tpc-h基准中的定义。尽管本发明的特定特征或方面可能已经仅结合几种实施方式或实施例中的一种进行公开,但此类特征或方面可以和其它实施方式或实施例中的一个或多个特征或方面相结合,只要对于任何给定或特定的应用是有需要或有利。而且,在一定程度上,术语“包括”、“有”、“具有”或这些词的其他变形在详细的说明书或权利要求书中使用,这类术语和所述术语“包含”是类似的,都是表示包括的含义。同样,术语“示例性地”,“例如”仅表示为示例,而不是最好或最佳的。可以使用术语“耦合”和“连接”及其派生词。应当理解,这些术语可以用于指示两个元件彼此协作或交互,而不管它们是直接物理接触还是电接触,或者它们彼此不直接接触。尽管本文中已说明和描述特定方面,但所属领域的技术人员应了解,多种替代和/或等效实施方式可在不脱离本发明的范围的情况下所示和描述的特定方面。该申请旨在覆盖本文论述的特定方面的任何修改或变更。尽管以上权利要求书中的元件是利用对应的标签按照特定顺序列举的,除非对权利要求的阐述另有暗示用于实施部分或所有这些元件的特定顺序,否则这些元件不必限于以所述特定顺序来实施。通过以上启示,对于本领域技术人员来说,许多替代、修改和变化是显而易见的。当然,所属领域的技术人员容易认识到除本文所述的应用之外,还存在本发明的众多其它应用。虽然已参考一个或多个特定实施例描述了本发明,但所属领域的技术人员将认识到在不偏离本发明的范围的前提下,仍可对本发明作出许多改变。因此,应理解,只要是在所附权利要求书及其等效物的范围内,可以用不同于本文具体描述的方式来实践本发明。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1