CN106462585B - 用于特定列物化调度的系统和方法 - Google Patents
用于特定列物化调度的系统和方法 Download PDFInfo
- Publication number
- CN106462585B CN106462585B CN201580013931.8A CN201580013931A CN106462585B CN 106462585 B CN106462585 B CN 106462585B CN 201580013931 A CN201580013931 A CN 201580013931A CN 106462585 B CN106462585 B CN 106462585B
- Authority
- CN
- China
- Prior art keywords
- rel
- node
- function call
- sentence
- dag
- 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
Links
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- 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/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/83—Querying
- G06F16/835—Query processing
- G06F16/8365—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Operations Research (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- General Factory Administration (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种用于在面向列的RDBMS中动态计算各列的最佳物化调度的方法。通过基于执行成本选择物化策略,使在分布式面向列的RDBMS中的动态特定列物化调度最佳化,其中所述执行成本包括每个单独的交换运算符的中央处理单元(central processing unit,CPU)、磁盘以及网络成本。子计划的最佳调度在与路径无关,因此,该动态编程法在计算上是可行的。
Description
相关申请案交叉申请
本发明要求于2014年3月21日递交的发明名称为“特定列物化调度”的第61/968,793号美国临时专利申请案的在先申请优先权,以及要求于2015年3月19日递交的发明名称为“用于特定列物化调度的系统和方法”的第14/663,210号美国非临时专利申请案的在先申请优先权,这些申请以引入的方式并入本文。
技术领域
本发明主要涉及关系数据库管理系统(relational data base managementsystem,RDBMS),更具体地,涉及一种用于面向列的RDBMS中的特定列物化的系统和方法。
背景技术
面向列的RDBMS为将数据表存储为数据列而不是数据行的部分的DBMS。在面向列的RDBMS中执行查询期间,经常需要整合记录的多个列。在执行查询期间,其中一些列被添加到中间结果。该过程称作物化。在面向列的RDBMS中,如何将列物化是确定查询性能的重要因素。现有的面向列的RDBMS通常采用固定的早期物化或固定的后期物化。早期物化中,在运算符图的叶子节点上提取查询中参考的列,如果上游运算符需要,将这些列从子运算符传输至父运算符。后期物化中,在进行处理之前,从列的源头提取运算符所需的列,之后丢弃。对于大多数面向列的RDBMS,列物化策略是硬编码的。
发明内容
本发明涉及在面向列的RDBMS中确定查询执行中的各列的最佳物化调度。
一个示例实施例包括一种在RDBMS中动态建立物化调度的方法。该方法包括:接收查询文本;将所述查询文本转换成Rel无回路有向图(directed acyclic graph,DAG);对所述Rel DAG进行自底向上的横断操作,以创建平行Rel DAG;计算所述平行Rel DAG的特定列物化调度。所述平行Rel DAG被转换成函数调用和数据重整动作的DAG,以创建平行语句林。根据所述平行语句林生成了调用所述函数调用和数据重整动作的协调语句林。所述平行语句林和所述协调语句林被转换成一批二元关联表(binary association table,BAT)运算符列表,从而为表格的各列计算最佳物化调度。
在另一示例实施例中,RDBMS用于动态建立物化调度。
在另一示例实施例中,关系数据库管理系统(relational data base managementsystem,RDBMS)用于动态建立物化调度。所述RDBMS包括:接收工具,用于接收查询文本;转换工具,用于将所述查询文本转换成Rel无回路有向图(directed acyclic graph,DAG);执行工具,用于对所述Rel DAG进行自底向上的横断操作,以创建平行Rel DAG;计算工具,用于计算所述平行Rel DAG的特定列物化调度。所述平行Rel DAG被转换成函数调用和数据重整动作的DAG,以创建平行语句林。根据所述平行语句林生成了调用所述函数调用和数据重整动作的协调语句林。所述平行语句林和所述协调语句林被转换成一批二元关联表(binary association table,BAT)运算符列表,从而为表格的各列计算最佳物化调度。
附图说明
为了更完整地理解本发明及其优点,现在参考下文结合附图进行的描述,相同的数字表示相同的对象,其中:
图1示出了事物处理性能委员会(TPC)基准H(TPC-H)的表模式;
图2示出了结构化查询语言(SQL)语句的查询计划的语法树;
图3示出了本发明提供的特定列物化算法的示例;
图4示出了本发明提供的平行查询最佳化的示例方法;
图5示出了平行语句林的示例;
图6示出了协调语句林的示例;
图7示出了本发明提供的平行查询最佳化的计算设备的示例。
具体实施方式
以下讨论的图1至7以及该专利文档中的各种实施例仅通过举例说明的方式描述本发明的原理,而不应以任何方式理解为对本发明范围的限制。本领域技术人员可以理解的是,本发明的原理可通过任何一种设置合理的设备和系统实现。
在面向列的RDBMS中的特定查询中,运算符的不同集合访问不同的列。因此,对查询中的所有列使用单一的物化方法可能会导致在最佳方式中一些列不能被物化。本发明实施例提供用于分布式面向列的RDBMS中的动态特定列物化调度的方法和装置。通过基于执行成本选择物化策略,使物化调度最佳化,其中所述执行成本包括每个单独的交换运算符的中央处理单元(central processing unit,CPU)、磁盘以及网络成本。所揭示的实施例使用动态编程技术确定最佳物化调度。子计划的最佳调度与路径无关,因此,针对所揭示的实施例,动态编程在计算上是可行的。
如前文描述的,传统物化方案包括早期物化和后期物化。为更好说明这些物化方案,下面将描述每个物化方案的例子。
为说明早期物化的例子,考虑以下示例查询1,该示例查询1基于图1所示的事物处理性能委员会(TPC)基准H(TPC-H)的表模式中的现有表格。
示例查询1:
SELECT l_suppkey from lineitem,part
WHERE l_partkey=p_partkey
AND l_shipdate>‘2008-01-01’;
为达到该示例的目的,假设表格PART由列p_partkey划分,表格LINEITEM由列l_orderkey划分。基于PART和LINEITEM表格中的已知数据,可以表明,对于查询1,连接选择性大约为50%。如本领域中已知的,连接选择性为连接结果中的记录间存在多少变化(例如,多少个不同的值)的测量。低选择性意味着列中的值没有很多变化,而高选择性意味着列中的值有大量的变化。在表格LINEITEM中的记录重排之前,可以检查该连接选择性,从而确定早期物化和后期物化的成本。计算该成本之后,发现对于查询1,早期物化(即,整合l_suppkey与l_partkey,然后重排)更好。这是因为发送50%的行ID和l_suppkey列数据的通信/CPU成本将会比重整全部的l_suppkey列数据成本更高。
为说明后期物化的例子,考虑以下示例查询2,该示例查询2也基于图1所示的TPC-H表格模式。
示例查询2:
SELECT l_suppkey from lineitem,part
WHERE l_partkey=p_partkey
AND l_shipdate>‘2014-10-01’;
再次假设表格PART由列p_partkey划分,表格LINEITEM由列l_orderkey划分。基于查询2中不同的shipdate值,可以表明针对查询2的连接选择性大约为1%。能够确定使用早期物化和后期物化在表格LINEITEM中重排记录的成本。计算该成本之后,发现对于查询2,后期物化(即,首先连接,然后提取有用的l_suppkey数据)更好。这是因为分别发送1%的行ID和l_suppkey列数据的通信/CPU成本将会比重整全部的带有l_partkey数据的l_suppkey列成本更低。
对于具有多个表格连接的一些查询,可以使用本发明提供的混合物化方案。例如,考虑示例查询3,该示例查询3基于图1所示的TPC-H表格模式。
示例查询3:
SELECT l_suppkey from lineitem,part a,part b
WHERE l_partkey=a.p_partkey
AND l_suppkey=b.p_partkey
AND l_shipdate>‘2008-10-01’;
再次假设表格PART由列p_partkey划分,表格LINEITEM由列l_orderkey划分。查询3中,有两个表格连接。对于表格中已知数据,可以表明针对“l_partkey=a.p_partkey”的连接选择性(第一表格连接)为50%,针对“l_suppkey=b.p_partkey”的连接选择性(第二表格连接)为1%。计算表格LINEITEM中重排记录的成本后,发现对于查询3,混合物化更好。也就是,针对查询3的最佳物化方案是在第一表格连接中使用早期物化,在第二表格连接中使用后期物化。
图2示出了示例查询3的查询计划的语法树。如图2所示,语法树200包括查询3中每个运算符的节点。该语法树200为包括多个节点201–207的无回路有向图(directedacyclic graph,DAG)。该节点201代表查询3中的LINEITEM表格。该节点201处在语法树200底部,因为LINEITEM为查询3中的第一个运算符。节点202为代表查询3中数据重排或再分布操作的交换节点。这里,在LINEITEM表格中的数据连接到PART表格之前,重排该数据。节点203代表PART表格的第一实例(实例A)。节点204代表重排的LINEITEM表格与PART表格的实例A的连接,以及SELECT语句。节点205为代表来自节点204的结果集的数据重排的其他交换节点。节点206代表PART表格的第二实例(实例B)。节点207代表来自节点205的重排的结果集与PART表格的实例B的连接。
物化成本
在这里揭示的实施例中,特定列物化算法为平行查询最佳化编译过程的一部分,该过程将结构化查询语言(SQL)语句转换成并行执行计划。根据所揭示的实施例,使用早期物化或后期物化的决定能够基于以下递归推理。
如果并行执行计划表示为交换节点的DAG(如图2所示的语法树200),交换节点E(例如,交换节点205)上的C列实现物化的最好方法取决于该列是否在E的子交换节点E_1(例如,交换节点202)上实现物化。
例如,如果C列在交换节点E_1上实现物化,使C列在交换节点E上物化的成本将为使C列在交换节点E_1上物化的成本加上在交换节点E上重整C列的通信/CPU成本。如果C列没有在交换节点E_1上实现物化,成本将为交换节点E上的后期物化成本,该成本为发送行ID和C列数据的通信/CPU成本。
基于先前的推理,给定交换节点E和并行执行交换节点DAG,可以将计算C列的最佳物化调度的问题归纳为:
选择物化调度M,从而通过递归的方法使交换节点E上各级L的以下成本最小化。
最小化(基于M【L-1】转换C列数据的成本+根据M【L-1】在E【L-1】上使C物化的成本
其中,M【L-1】为L-1级上的物化选择,E【L-1】为L-1级上的交换节点。
再转向图2和查询3,基于先前的推理,可以表明在节点202(交换_1)上使l_suppkey物化的最好方法为早期物化,而在节点205(交换_2)上使l_suppkey物化的最好方法为后期物化。
根据本发明,提供了一种计算列的最佳物化调度的方法。在所揭示的方法中,假设交换节点的DAG,如图2所示的语法树200,和关系运算符代表分布式执行计划。当父交换节点需要使列物化,如果成本低于从父交换节点中的行ID提取该列的成本,所述父交换节点使该列物化。可以将该方法归纳为以下大纲:
在各交换节点决定是否使列物化。这基于成本比较。
如果在前一个交换节点使列物化:
如果在下一个交换节点使列物化:
如果在当前交换节点使列物化:
前一个节点上的物化成本=下一节点至当前节点的列转换成本+下一节点的物化成本
如果在当前交换节点没有使列物化:
前一个节点上的物化成本=将行ID发送至源节点的成本+生成的列的转换成本
如果在下一个交换节点没有使列物化:
前一个节点上的物化成本=将行ID发送至源节点的成本+生成的列的转换成本
作为(a)的结果,如果当前交换节点上需要使该列物化或如果(a.i.1)上的成本小于(a.i.2)上的成本,在当前交换节点上使该列物化。
如果在前一个交换节点没有使列物化:
如果在下一个交换节点使列物化:
如果在当前交换节点使列物化:
不在前一个节点上物化的成本=0
如果在当前交换节点没有使列物化:
不在前一个节点上物化的成本=0
如果在下一个交换节点没有使列物化:
不在前一个节点上物化的成本=0
作为(b)的结果,在当前交换节点上没有使列物化。
物化调度算法
图3示出了本发明提供的特定列物化算法300的示例。该算法300为能够代表DAG(或由DAG代表)的无环算法的伪代码。该算法300可以为平行查询最佳化编译过程的一部分,该过程将结构化查询语言(SQL)语句转换成并行执行计划。在特定实施例中,该算法300可以用于进行可以包括混合物化的SQL操作,如查询3。该算法300可以由能够进行RDBMS操作的计算设备执行,如图7(下文描述的)的计算设备700。
该算法300包括三个输入:交换节点E,L级,C列。如前文所述,交换节点为用于重排一个或多个表格中的记录的数据库运算符。L级由系统提供并用于识别查询树中的级。这里,为查询树中的级编号,这样,查询树的最低级显示或指示在树的底部,查询树的最高级显示或指示在树的顶部。
该算法300中的阵列K包含不同级的物化成本。也就是说,该阵列K的各元素对应一个级的物化成本。基于1级的物化成本,算法300中301上指示的IF-THEN-ELSE参数确定是否有早期调度或晚期调度将用于该级。因此,首先为1级确定调度。302中指示的SET COST运算为递归函数,该递归函数通过将交换节点E的子节点作为输入调用物化调度算法300,从而在下一个低级执行该算法300。例如,如果查询树包括四个级,且在4级上执行该算法300,SET COST运算302用于调用算法300,从而在3级上执行该算法300。303中指示的SETSCHEDULE运算用于通过在(a)下一个低级的成本+早期物化成本和(b)下一个低级的成本+后期物化成本之间选择最小成本为除了1级的级别设定调度(早期调度或后期调度)。然后,304中指示的运算基于下一个低级(L–1)的成本和L级的物化成本设定L级上的成本。
动态编程
算法300基于动态编程原则。动态编程为通过将复杂问题分解为更简单的子问题解决复杂问题的技术。动态编程通常用于数学、计算机科学、经济学和其他领域。频繁使用动态编程的复杂问题的一个经典例子是在地图上的两个城市或位置之间确定最短路径,考虑了该区域可用的不同路线和中间点。
为能够使用动态编程解决复杂问题,该复杂问题本身必须具备某种属性。首先,该复杂问题必须包括重叠的子问题。其次,该复杂问题必须具有最佳子结构。如果一个问题不具备这些属性,那么使用动态编程解决该问题也许是不可能的或可能导致次佳的解决方案。
物化算法300包括重叠的子问题。例如,L级上的最佳调度是基于L-1级上的最佳调度确定的,而L-1级上的最佳调度是基于L-2级上的最佳调度确定的,依此类推。因此,可以认为不同级的决定是重叠的。
同样地,物化算法300包括最佳子结构。例如,算法300中的301上的IF-THEN-ELSE参数基于1级的物化成本为该级确定最佳调度,然后算法300基于下一个低级上的调度为较高级确定最佳调度。因此,基于最低级性能成本(即最快执行时间),物化算法300包括最佳子结构。
已经证明使用动态编程得到了解决复杂问题的全局的最佳方案。动态编程与贪婪算法不同。贪婪算法可以查找解决子问题的局部最佳方案,但是经常可以得出全局的次佳解决方案。例如,就两个城市之间的最短路径的问题而论,贪婪算法可以得到解决一个交叉口的交通堵塞的局部最佳方案,但是该局部最佳方案可能只对于该交叉口是最佳的,当在全局的解决方案中考虑该两个城市之间的全部路线时,可能会得到整体上的次佳路线。
如上文所述,该算法300可以为平行查询最佳化编译过程的一部分,该算法将SQL语句转换成并行执行计划。可以将一种针对该查询文本至并行计划转换过程的用于锚定执行特定列算法300的上下文的方法总结在图4描述的下列方法中。
图4示出了本发明提供的平行查询最佳化的示例方法。为便于说明,方法400被描述为与图3的算法300一起使用。然而,方法400可以与任何合适的算法一起使用以及在任何合适的系统中使用。该方法400可以由能够进行RDBMS操作的计算设备,如图7(下文描述的)的计算设备700执行,或由其他合适的设备或系统执行。
在步骤401中,将查询文本转换成语法树。
在步骤402中,检测该语法树的语义正确性。
在步骤403中,将该语法树转换成关系运算符(rel)的DAG,如本领域中已知的,可以将该DAG称作Rel DAG。
在步骤404中,该Rel DAG的叶子节点上注释有聚类信息。
在步骤405中,当子Rel的输出的聚类属性与父Rel的输入的聚类属性不相容时,通过该Rel DAG的自底向上的横断操作,在该父Rel和该子Rel之间插入交换节点。将产生的DAG称为平行Rel DAG。该平行Rel DAG可能与图2所述的DAG 200相似。
在步骤406中,执行特定列物化算法(例如,算法300),从而为各列计算最佳物化调度。
在步骤407中,根据下述详细说明,将平行Rel DAG转换成函数调用和数据重整动作的DAG。每个函数对应两个相邻交换节点之间的平行Rel DAG的分片。每个数据重整动作对应一个交换节点。将每个函数转换成语句林,其中,语句代表逻辑BAT运算符。基于其子语句产生的表达式,该逻辑BAT运算符产生表达式。
为产生表达式,该逻辑BAT运算符对Rel DAG分片进行深度优先的横断操作。针对每个Rel,针对Rel输出的每个表达式,且针对源表格分区的每个组合,为所述表达式生成语句DAG。
每个函数将其子交换节点输出的列数据作为输入。每个函数的输出为该函数的顶部Rel输出的表达式。该函数的输出变成该函数的父交换节点的数据重整动作的输入。需要注意的是,行ID通常由Rel输出。
在该交换节点上,每个数据重整动作重整待物化的列。通过行ID提取子交换节点没有输出的待物化的列。将每个数据重整动作转换成包含每个重整的列的一个语句DAG的语句林。所产生的语句林称作平行语句林。图5示出了平行语句林500的示例。
然后,在步骤408中,根据平行语句林的深度优先遍历序列,生成调用函数和数据重整动作的语句DAG。所产生的语句DAG称作协调语句林。图6示出了协调语句林600的示例。
在步骤409中,将平行语句林和协调语句林转换成一批BAT运算符列表。每个列表对应函数、数据重整动作或协调程序。
虽然图4示出了用于平行查询最佳化的方法400的一个例子,图4可能出现各种变化。例如,虽然显示为一系列步骤,图4中的各步骤可以重叠、平行出现、以不同顺序出现或出现任意次。
图7示出了用于执行图3的物化算法300或图4的平行查询最佳化方法400的计算设备700的例子。如图7所示,该计算设备700包括计算块703,其带有处理块705和系统存储器707。该处理块705可以为用于执行软件指令的任何类型的可编程电子设备,但通常为一个或多个微处理器。该系统存储器707可以同时包括只读存储器(read-only memory,ROM)709和随机存取存储器(random access memory,RAM)711。如本领域的技术人员所理解的,该只读存储器709和该随机存取存储器711都可以存储该处理块705执行的软件指令。
该处理块705和该系统存储器707通过总线713或交替的通信结构直接或间接连接至一个或多个外部设备。例如,该处理块705或该系统存储器707可以直接或间接连接至一个或多个其他存储设备715。该存储设备715可以包括,例如,“硬”磁盘驱动器、固体状态磁盘驱动器、光盘驱动器和可移动磁盘驱动器等。该处理块705和该系统存储器707也可以直接或间接连接至一个或多个输入设备717和一个或多个输出设备719。该输入设备717可以包括,例如,键盘、定点设备(如鼠标、触摸板、手写笔、轨迹球或操纵杆)、触摸屏、扫描仪、摄像机和麦克风等。该输出设备719可以包括,例如,显示设备、打印机和扬声器等。这样的显示设备可以用于显示视频图像。由计算设备700的各个例子可知,外部设备715–719中的一个或多个中可以内置计算块703。或者,外部设备715–719中的一个或多个可以在计算块703的外壳的外面并通过,例如,通用串行总线(Universal Serial Bus,USB)连接或数字视频接口(digital visual interface,DVI)连接与总线713相连接。
随着一些实施,计算块703也可以直接或间接连接至一个或多个网络接口卡(network interfaces cards,NIC)721,从而与组成网络的其他设备通信。根据一个或多个通信协议,如传输控制协议(transmission control protocol,TCP)和互联网协议(Internet protocol,IP),网络接口卡721将来自计算块703的数据和控制信号转化为网络消息。并且,网络接口卡721可以使用任何合适的连接代理(或代理的组合)连接到网络,包括例如无线收发器、调制解调器或以太网连接。
需要理解的是,计算设备700只是作为一个例子说明,而不是为了限定。可以通过一个或多个计算设备实现本发明各实施例,该一个或多个计算设备包括图7所示的计算设备700的组件,或包括组件的交替组合,包括图7未示出的组件。例如,可以通过多处理器计算机、部署在网络中的多个单和/或多处理器计算机或二者的一些组合实现本发明各实施例。
本发明描述的算法为查询中每个交换运算符上各列计算最佳物化调度。这优于针对查询中所有交换运算符使用固定的早期物化或固定的后期物化的现有的物化调度算法。可以通过从上到下遍历并行执行图,识别没有调度的列来实现这里揭示的算法。对于每个这样的列,动态编程应用于计算递归(或自下而上)方式中的物化调度。L-1级上的最小物化成本不会随着大于或等于L级的级上的物化的选择而变化。计算复杂性与并行执行图的高度和列数成线性比例关系。
本发明的实施例已经在模拟测试中证实,将分布式查询处理的互连带宽要求平均减少10%–30%。假设节点间通信成本大约为总查询处理成本的25%,这将分布式查询处理的总成本减少2.5%–7.5%。
在某些实施例中,一个或多个所述设备的部分或全部功能或流程由计算机可读程序代码构成的且内嵌于计算机可读介质中的计算机程序来实现或提供支持。术语计算机可读程序代码摂包括任意类型的计算机代码,包括源代码、目标代码以及可执行代码。术语“计算机可读介质”包括任何类型的可以被计算机访问的非易失性介质,比如,只读存储器(ROM)、随机存取存储器(RAM)、硬盘驱动器、光盘(CD)、数字化视频光盘(DVD)或者任何其他类型的存储器。
为本专利文档中使用的特定术语和短语进行定义是有帮助的。术语“包括”和“包含”以及它们的派生词表示没有限制的包括。术语“或者”是包容性的,意为和/或。短语“与……关联”和“与其关联”以及其派生的短语意味着包括,被包括在内、与……互连、包含、被包含在内、连接到或与……连接、耦合到或与……耦合、可与……通信、与……配合、交织、并列、接近、被绑定到或与……绑定、具有、具有……属性,等等。
虽然本发明就某些实施例和一般相关方法方面进行了描述,但是对本领域技术人员而言,对实施例和方法的各种更改和变更将是显而易见的。因此,示例实施例的上述描述不限定或约束本发明。正如以下权利要求定义,其它修改、替代以及变更也是可能的,而不偏离本发明的精神和范围。
Claims (20)
1.一种用于在关系数据库管理系统(relational data base management system,RDBMS)中通过动态编程技术建立物化调度的方法,其特征在于,所述方法包括:
接收查询文本;
将所述查询文本转换成Rel无回路有向图(directed acyclic graph,DAG);
对所述Rel DAG进行自底向上的横断操作,以创建平行Rel DAG,其中,当子Rel节点的输出的聚类属性与父Rel节点的输入的聚类属性不兼容时,通过在所述父Rel节点与所述子Rel节点之间插入交换节点进行所述横断操作;
计算所述平行Rel DAG的特定列物化调度;
将所述平行Rel DAG转换成函数调用和数据重整动作的DAG,以创建平行语句林,包括:每个数据重整动作在各自Rel节点上重整待物化的列,且通过行ID提取子Rel节点没有输出的已物化的列;将每个数据重整动作转换成包含一个语句DAG的语句林,用于为每个重整的列创建平行语句林;
根据所述平行语句林生成调用所述函数调用和数据重整动作的协调语句林,包括:根据所述平行语句林的深度优先遍历序列,生成调用函数调用和数据重整动作的语句DAG,从而创建协调语句林;
将所述平行语句林和所述协调语句林转换成一批二元关联表(binary associationtable,BAT)运算符列表,从而为表格的各列计算最佳物化调度。
2.根据权利要求1所述的方法,其特征在于:
每个函数调用对应两个相邻交换节点之间的平行Rel DAG的分片;
每个数据重整动作对应一个交换节点。
3.根据权利要求1所述的方法,其特征在于,所述Rel DAG的叶子节点上注释有聚类信息。
4.根据权利要求2所述的方法,其特征在于,所述Rel DAG的叶子节点上注释有聚类信息。
5.根据权利要求1至4中任一项所述的方法,其特征在于,将每个函数调用转换成语句林,其中,语句代表BAT运算符,从而产生所述函数调用的子语句产生的表达式。
6.根据权利要求5所述的方法,其特征在于,所述表达式通过以下方式产生:
对相应的Rel DAG分片进行深度优先横断操作;
针对每个Rel,针对Rel输出的每个表达式,且针对源表格分区的每个组合,为所述表达式生成语句DAG。
7.根据权利要求1至4中任一项所述的方法,其特征在于:
每个函数调用将其子Rel节点输出的列数据作为输入;
每个函数调用的输出为所述函数调用的顶部Rel输出的表达式;
所述函数调用的输出为所述函数调用的父节点的数据重整动作的输入,其中,行ID由Rel输出。
8.根据权利要求5所述的方法,其特征在于:
每个函数调用将其子Rel节点输出的列数据作为输入;
每个函数调用的输出为所述函数调用的顶部Rel输出的表达式;
所述函数调用的输出为所述函数调用的父节点的数据重整动作的输入,其中,行ID由Rel输出。
9.根据权利要求6所述的方法,其特征在于:
每个函数调用将其子Rel节点输出的列数据作为输入;
每个函数调用的输出为所述函数调用的顶部Rel输出的表达式;
所述函数调用的输出为所述函数调用的父节点的数据重整动作的输入,其中,行ID由Rel输出。
10.一种关系数据库管理系统(relational data base management system,RDBMS),其特征在于,用于:
接收查询文本;
将所述查询文本转换成Rel无回路有向图(directed acyclic graph,DAG);
对所述Rel DAG进行自底向上的横断操作,以创建平行Rel DAG,其中,当子Rel节点的输出的聚类属性与父Rel节点的输入的聚类属性不兼容时,通过在所述父Rel节点与所述子Rel节点之间插入交换节点进行所述横断操作;
计算所述平行Rel DAG的特定列物化调度;
将所述平行Rel DAG转换成函数调用和数据重整动作的DAG,以创建平行语句林,包括:每个数据重整动作在各自Rel节点上重整待物化的列,且通过行ID提取子Rel节点没有输出的已物化的列;将每个数据重整动作转换成包含一个语句DAG的语句林,用于为每个重整的列创建平行语句林;
根据所述平行语句林生成调用所述函数调用和数据重整动作的协调语句林,包括:根据所述平行语句林的深度优先遍历序列,生成调用函数调用和数据重整动作的语句DAG,从而创建协调语句林;
将所述平行语句林和所述协调语句林转换成一批二元关联表(binary associationtable,BAT)运算符列表,从而为表格的各列计算最佳物化调度。
11.根据权利要求10所述的RDBMS,其特征在于:
每个函数调用对应两个相邻交换节点之间的平行Rel DAG的分片;
每个数据重整动作对应一个交换节点。
12.根据权利要求10所述的RDBMS,其特征在于,所述Rel DAG的叶子节点用于被注释聚类信息。
13.根据权利要求11所述的RDBMS,其特征在于,所述Rel DAG的叶子节点用于被注释聚类信息。
14.根据权利要求10至13中任一项所述的RDBMS,其特征在于,每个函数调用用于被转换成语句林,其中,语句代表BAT运算符,从而产生所述函数调用的子语句产生的表达式。
15.根据权利要求14所述的RDBMS,其特征在于,所述表达式通过以下方式产生:
对相应的Rel DAG分片进行深度优先横断操作;
针对每个Rel,针对Rel输出的每个表达式,且针对源表格分区的每个组合,为所述表达式生成语句DAG。
16.根据权利要求10至13中任一项所述的RDBMS,其特征在于:
每个函数调用将其子Rel节点输出的列数据作为输入;
每个函数调用的输出为所述函数调用的顶部Rel输出的表达式;
所述函数调用的输出为所述函数调用的父节点的数据重整动作的输入,其中,行ID由Rel输出。
17.根据权利要求14所述的RDBMS,其特征在于:
每个函数调用将其子Rel节点输出的列数据作为输入;
每个函数调用的输出为所述函数调用的顶部Rel输出的表达式;
所述函数调用的输出为所述函数调用的父节点的数据重整动作的输入,其中,行ID由Rel输出。
18.根据权利要求15所述的RDBMS,其特征在于:
每个函数调用将其子Rel节点输出的列数据作为输入;
每个函数调用的输出为所述函数调用的顶部Rel输出的表达式;
所述函数调用的输出为所述函数调用的父节点的数据重整动作的输入,其中,行ID由Rel输出。
19.一种用于在关系数据库管理系统(relational data base management system,RDBMS)中通过动态编程技术建立物化调度的方法,其特征在于,所述方法包括:
接收查询文本;
将所述查询文本转换成Rel无回路有向图(directed acyclic graph,DAG);
对所述Rel DAG进行自底向上的横断操作,以创建平行Rel DAG,其中,当子Rel节点的输出的聚类属性与父Rel节点的输入的聚类属性不兼容时,通过在所述父Rel节点与所述子Rel节点之间插入交换节点进行所述横断操作;
计算所述平行Rel DAG的特定列物化调度;
将所述平行Rel DAG转换成函数调用和数据重整动作的DAG,以创建平行语句林,包括:每个数据重整动作在各自Rel节点上重整待物化的列,且通过行ID提取子Rel节点没有输出的已物化的列;将每个数据重整动作转换成包含一个语句DAG的语句林,用于为每个重整的列创建平行语句林,
其中
每个函数调用将其子Rel节点输出的列数据作为输入;
每个函数调用的输出为所述函数调用的顶部Rel输出的表达式;
所述函数调用的输出为所述函数调用的父节点的数据重整动作的输入,其中,行ID由Rel输出;
根据所述平行语句林生成调用所述函数调用和数据重整动作的协调语句林,包括:根据所述平行语句林的深度优先遍历序列,生成调用函数调用和数据重整动作的语句DAG,从而创建协调语句林;
将所述平行语句林和所述协调语句林转换成一批二元关联表(binary associationtable,BAT)运算符列表,从而为表格的各列计算最佳物化调度。
20.一种用于动态建立物化调度的关系数据库管理系统(relational data basemanagement system,RDBMS),其特征在于,所述RDBMS包括:
接收工具,用于接收查询文本;
转换工具,用于将所述查询文本转换成Rel无回路有向图(directed acyclic graph,DAG);
执行工具,用于对所述Rel DAG进行自底向上的横断操作,以创建平行Rel DAG,其中,当子Rel节点的输出的聚类属性与父Rel节点的输入的聚类属性不兼容时,通过在所述父Rel节点与所述子Rel节点之间插入交换节点进行所述横断操作;
计算工具,用于计算所述平行Rel DAG的特定列物化调度,其中
所述转换工具用于将所述平行Rel DAG转换成函数调用和数据重整动作的DAG,以创建平行的语句林,包括:每个数据重整动作在各自Rel节点上重整待物化的列,且通过行ID提取子Rel节点没有输出的已物化的列;将每个数据重整动作转换成包含一个语句DAG的语句林,用于为每个重整的列创建平行语句林;
生成工具,用于根据所述平行语句林生成调用所述函数调用和数据重整动作的协调语句林,包括:根据所述平行语句林的深度优先遍历序列,生成调用函数调用和数据重整动作的语句DAG,从而创建协调语句林,其中
所述转换工具用于将所述平行语句林和所述协调语句林转换成一批二元关联表(binary association table,BAT)运算符列表,从而为表格的各列计算最佳物化调度。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461968793P | 2014-03-21 | 2014-03-21 | |
US61/968,793 | 2014-03-21 | ||
US14/663,210 | 2015-03-19 | ||
US14/663,210 US10073873B2 (en) | 2014-03-21 | 2015-03-19 | System and method for column-specific materialization scheduling |
PCT/CN2015/074819 WO2015139670A1 (en) | 2014-03-21 | 2015-03-21 | System and method for column-specific materialization scheduling |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106462585A CN106462585A (zh) | 2017-02-22 |
CN106462585B true CN106462585B (zh) | 2019-10-22 |
Family
ID=54142311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580013931.8A Active CN106462585B (zh) | 2014-03-21 | 2015-03-21 | 用于特定列物化调度的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10073873B2 (zh) |
EP (1) | EP3108388A4 (zh) |
CN (1) | CN106462585B (zh) |
BR (1) | BR112016021702A8 (zh) |
WO (1) | WO2015139670A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106354829A (zh) * | 2016-08-31 | 2017-01-25 | 天津南大通用数据技术股份有限公司 | 一种列存数据库的物化方法及装置 |
US10970284B2 (en) * | 2017-05-12 | 2021-04-06 | Oracle International Corporation | Dynamic self-reconfiguration of nodes in a processing pipeline |
US11132366B2 (en) * | 2019-04-01 | 2021-09-28 | Sap Se | Transforming directed acyclic graph shaped sub plans to enable late materialization |
CN110321210A (zh) * | 2019-06-28 | 2019-10-11 | 京东数字科技控股有限公司 | 数据处理方法、装置、计算机可读介质及电子设备 |
CN112380286B (zh) * | 2020-11-17 | 2022-03-18 | 平安科技(深圳)有限公司 | 数据库的数据对象关系图谱生成方法、装置、设备及介质 |
CN116737763B (zh) * | 2023-08-16 | 2023-11-21 | 腾讯科技(深圳)有限公司 | 结构化查询语句执行方法、装置、计算机设备、存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1609856A (zh) * | 2003-06-23 | 2005-04-27 | 微软公司 | 查询中间语言的方法和系统 |
EP2439656A1 (en) * | 2010-10-07 | 2012-04-11 | Sap Ag | Hybrid query execution plan |
CN102567527A (zh) * | 2011-12-30 | 2012-07-11 | 华东师范大学 | 按列存储环境下分布式系统中物化视图布局及其维护方法 |
CN102609451A (zh) * | 2012-01-11 | 2012-07-25 | 华中科技大学 | 面向流式数据处理的sql查询计划生成方法 |
CN103324765A (zh) * | 2013-07-19 | 2013-09-25 | 西安电子科技大学 | 一种基于列存储的多核并行数据查询优化方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9141670B2 (en) * | 2007-08-27 | 2015-09-22 | Teradata Us, Inc. | Methods and systems for hardware acceleration of streamed database operations and queries based on multiple hardware accelerators |
EP2040180B1 (en) | 2007-09-24 | 2019-01-16 | Hasso-Plattner-Institut für Digital Engineering gGmbH | ETL-less zero-redundancy system and method for reporting OLTP data |
US8078652B2 (en) | 2007-12-06 | 2011-12-13 | Oracle International Corporation | Virtual columns |
US20140075350A1 (en) | 2012-09-10 | 2014-03-13 | Sap Ag | Visualization and integration with analytics of business objects |
WO2015116997A1 (en) * | 2014-01-31 | 2015-08-06 | Futurewei Technologies, Inc. | Pipelined re-shuffling for distributed column store |
US9576072B2 (en) * | 2014-02-13 | 2017-02-21 | Sap Se | Database calculation using parallel-computation in a directed acyclic graph |
-
2015
- 2015-03-19 US US14/663,210 patent/US10073873B2/en active Active
- 2015-03-21 BR BR112016021702A patent/BR112016021702A8/pt not_active Application Discontinuation
- 2015-03-21 WO PCT/CN2015/074819 patent/WO2015139670A1/en active Application Filing
- 2015-03-21 EP EP15764647.2A patent/EP3108388A4/en not_active Ceased
- 2015-03-21 CN CN201580013931.8A patent/CN106462585B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1609856A (zh) * | 2003-06-23 | 2005-04-27 | 微软公司 | 查询中间语言的方法和系统 |
EP2439656A1 (en) * | 2010-10-07 | 2012-04-11 | Sap Ag | Hybrid query execution plan |
CN102567527A (zh) * | 2011-12-30 | 2012-07-11 | 华东师范大学 | 按列存储环境下分布式系统中物化视图布局及其维护方法 |
CN102609451A (zh) * | 2012-01-11 | 2012-07-25 | 华中科技大学 | 面向流式数据处理的sql查询计划生成方法 |
CN103324765A (zh) * | 2013-07-19 | 2013-09-25 | 西安电子科技大学 | 一种基于列存储的多核并行数据查询优化方法 |
Also Published As
Publication number | Publication date |
---|---|
BR112016021702A8 (pt) | 2023-01-10 |
EP3108388A4 (en) | 2017-02-22 |
CN106462585A (zh) | 2017-02-22 |
US10073873B2 (en) | 2018-09-11 |
US20150269202A1 (en) | 2015-09-24 |
EP3108388A1 (en) | 2016-12-28 |
BR112016021702A2 (zh) | 2018-07-10 |
WO2015139670A1 (en) | 2015-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106462585B (zh) | 用于特定列物化调度的系统和方法 | |
CN110705709B (zh) | 训练图神经网络模型的方法和装置 | |
CN105550268B (zh) | 大数据流程建模分析引擎 | |
CN106598591B (zh) | 一种网页动态菜单生成方法及装置 | |
CN102722542B (zh) | 一种资源描述框架图模式匹配方法 | |
CN104267938B (zh) | 一种流式计算的应用快速开发部署的方法及装置 | |
CN105210058A (zh) | 使用多个引擎来进行图查询处理 | |
CN107798017B (zh) | 分布式数据库中的执行计划信息生成方法和系统 | |
CN109933311A (zh) | 一种信息系统创建方法及相关装置 | |
CN102203736A (zh) | 开放应用程序编程接口调用方法及设备 | |
CN102456050A (zh) | 从网页中抽取数据的方法和装置 | |
CN108121742A (zh) | 用户分类模型的生成方法及装置 | |
CN110045982A (zh) | 一种基于源代码聚合的嵌入式系统配置方法 | |
CN102521706A (zh) | Kpi 数据的分析方法及装置 | |
CN110502520A (zh) | 一种数据入库的方法、系统、设备及计算机可读存储介质 | |
Mehler et al. | Towards logical hypertext structure: a graph-theoretic perspective | |
Singh et al. | Spatial data analysis with ArcGIS and MapReduce | |
CN111813739A (zh) | 数据迁移方法、装置、计算机设备及存储介质 | |
CN117194501B (zh) | Dcs趋势测点跳转逻辑组态的方法、系统、设备及介质 | |
CN117610491A (zh) | 一种芯片设计方法、装置、设备及计算机可读存储介质 | |
CN106294530A (zh) | 规则匹配的方法和系统 | |
CN110110153A (zh) | 一种节点搜索的方法和装置 | |
CN107180024A (zh) | 一种中心连通子图的多源异构数据实体识别方法及系统 | |
CN108830030B (zh) | 原子类型定义系统及其原子类型匹配方法 | |
CN102930021A (zh) | 云计算系统的数据处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |