CN104737162B - 用于大规模集群中的分析型查询处理的自动反规范化 - Google Patents
用于大规模集群中的分析型查询处理的自动反规范化 Download PDFInfo
- Publication number
- CN104737162B CN104737162B CN201380054274.2A CN201380054274A CN104737162B CN 104737162 B CN104737162 B CN 104737162B CN 201380054274 A CN201380054274 A CN 201380054274A CN 104737162 B CN104737162 B CN 104737162B
- Authority
- CN
- China
- Prior art keywords
- denormalization
- relation
- potential
- summit
- income
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- 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/24539—Query rewriting; Transformation using cached or materialised query results
-
- 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/24561—Intermediate data storage techniques for performance improvement
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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
公开了用于改善连接操作的性能的系统和方法。在一个实施例中该方法包括建立含顶点和边的图,该顶点和边表示特定数据库架构的表和连接条件。所述方法然后遍历该图以找到候选连接操作的集合。所述方法还包括从该集合中选择连接操作的子集,该子集最好利用了给定的存储器量,这意味着找到反规范化的集合,该反规范化集合在驻留于存储器中时为给定的存储器量提供最大收益和最小成本。所述方法然后部署该反规范化,使得查询处理系统中的当前查询能够使用它们来代替实际地执行连接。
Description
技术领域
本发明一般涉及数据库管理系统,并且更具体地涉及用于处理存储器中查询的反规范化。
背景技术
数据仓库中的分析型查询处理通常涉及大型数据集合,该数据集合很少以面向批处理的方式被更新。在许多情况下,期望在更大量的数据上执行查询(通常跨越更长的时间段),但查询处理系统的性能限制了数据集合的大小。
可以通过在存储器中处理查询以及通过增加运行该查询的服务器的数目来改善性能。然而,更多的服务器增加了用于服务器的功率以及与功率相关的基础设施的成本,从而限制了服务器的数量继而限制了数据集合的大小。
作为替代,通过在低功率处理单元的集群中执行存储器中数据库查询,能够在低功率的情况下改善性能。每个处理单元具有低的计算能力,但具有成千上万个处理单元的集群却具有非常高的性能。尽管在集群中的存储器中数据库查询处理改善了性能,但一种查询操作仍然构成挑战。大型表连接(join)的性能不随集群的大小而成比例缩放。因此,需要在大型表连接的存储器中处理的性能方面寻求更大的改善。
附图说明
在附图中:
图1根据一个实施例示出整体操作的流程图;
图2示出常规的连接;
图3和图4示出用于TPC-H工作负荷的数据库架构;
图5根据一个实施例示出发现阶段的流程图;
图6和图7示出用于图3和图4所示的数据库架构的有向图;
图8示出用于图3所示的数据库架构的有向子图;
图9根据一个实施例示出优化阶段的流程图;
图10根据一个实施例示出优化函数的流程图;
图11根据一个实施例示出部署的流程图;及
图12示出实施例在其中运行的系统设置。
具体实施例
在下面的描述中,为了解释的目的,阐明了众多具体的细节以便提供对本发明的全面理解。但是,应当很明显的是,本发明可以在没有这些特定的细节的情况下实施。在其它情况下,众所周知的结构和设备以框图的形式来示出,以便避免不必要地使本发明变得晦涩难懂。
总体概况
一实施例执行大型关系型连接的自动反规范化。使反规范化适合于集群的每个处理单元中的查询工作负荷和存储器量。在图1所示的一个实施例中,自动反规范化具有三个阶段:(i)发现102;(ii)优化104,及(iii)部署106。
在发现阶段中,该实施例为给定的架构构造表和连接条件的表示,并然后分析该表示来找到可能的反规范化的集合。
在优化阶段,任务是选择最好利用了给定存储器量的反规范化。优化阶段具有两个部分,(i)减少每个单独的反规范化所需的存储器量,以及(ii)确定可能的反规范化的最优集合。通过压缩所涉及的表的列或行来减少存储器。通过对每个可能的反规范化计算成本和收益来发现可能的反规范化的最优集合。成本是反规范化所需的存储器量,并且该成本基于查询工作负荷统计数据或基于表的大小。该收益基于被反规范化消除的连接的数量。最优子集包括在可用存储器中以最小成本提供最大收益的那些反规范化。
在部署阶段,该实施例将最优集合中的每个反规范化整合到实时系统中,以便到来的查询能够找到和使用该反规范化。
详细讨论
有许多种类的关系型连接。一种是图2所示的自然连接。在该连接中,基于列DeptName连接两张表,即Employee 202和Dept 204。自然连接被定义为满足条件的两张表中的元组的合并,该条件为元组是兼容的。这意味着这两张表具有至少一个共同的属性。在图2示出的示例中,Employee表和Dept表都具有共同的DeptName。自然连接产生连接表206,该连接表206只具有来自Dept表的、其DeptName列中的值与Employee表中DeptName列中的值相匹配的条目。
另一种连接是笛卡尔连接。如果连接中的两张表没有共同属性,则这种连接产生其中第一张表的每个元组与第二张表的每个元组合并的表。
反规范化指连接的物化,或换句话说,连接的永久存储的数据表示。因此,根据实施例,反规范化可以是例如,连接表206的永久存储的表示。连接的反规范化可以被重新用于要求连接的多个查询的计算,并通过消除重新计算整个连接的需要而提高这种计算的效率。
发现阶段
数据库架构通常包括表的集合,包括它们的列定义,以及可选的表之间的约束或关系的集合。例如,TPC-H工作负荷具有图3和图4所示的数据库架构。在发现阶段,如图5所示,系统在步骤502中根据给定的架构创建有向图,并然后在步骤504中遍历该有向图以定位可能的反规范化的集合。
图3中的架构包括下列表:Part表302、Supplier表304、PartSupp表306、Customer表308、Nation表310、Region表312、Lineltem表314和Orders表316。图3中的架构也指出表之间的引用约束。例如,下面的约束,
contraint->lineitem.orderkey references orders.orderkey,
基于LineItem表中的orderkey引用Orders表中orderkey。此外,partkey引用Lineltem表、Part表和PartSupp表;custkey引用Order表和Customer表;suppkey引用Lineltem表、Supplier表和PartSupp表;nationkey引用Customer表、Supplier表和Nation表;以及regionkey引用Nation表和Region表。
用于TPC-H工作负荷的备选架构如图4中所示,包括下列表:LineOrder表402、Customer表404、Supplier表406、Part表408和Date表410。也指出了引用约束。custkey引用Customer;suppkey引用Supplier表;partkey引用Part表,以及orderdate和commitdate引用Date表。
图6示出了根据图3的架构创建的有向图。在图6中,每个顶点602、604、606、608、610、612、614、616是图3的架构中的表。每对顶点间的边618、620、622、624、626、628、630、632、634表示由顶点表示的表的对之间的有向关系,并且每条边注释有该两张表之间的连接条件。
图7示出了根据图4的架构创建的有向图。同样,顶点702、704、706、708、710表示架构中的表,并且边712、714、716、718表示这些表之间的连接条件,并且注释有这些条件。
在图6和图7的有向图中,用于注释边的信息是从相应的架构得到的。在另一个实施例中,查询工作负荷间接提供注释边所需的信息。注释是通过分析最近的工作负荷或训练工作负荷而推断的。在实施例中,系统对给定的查询集合进行解析以找到连接谓词,该连接谓词是引用两张不同的表的列的谓词。在每个连接谓词中的表别名被映射到适当的表,并且边被添加到图中相应的顶点之间并使用连接条件进行注释。边的方向是从两张表的大小推断的,其中该大小指每张表中的行数。每条边的方向是从较大的表到较小的表。检查查询工作负荷很快达到稳定状态,在该稳定状态中没有边被添加到图中,因为架构的表之间的连接条件在各种查询之间大体是相同的。
用于星形或雪花图案的图结构
图7示出了用于图4的架构的有向图并具有星形图案。在其它实施例中,工作负荷被布置成雪花图案。
星形或雪花布置具有两种表:事实表和维度表。事实表保存关于具体事件的值并且只具有传出的边。维度表保存由事实数据描述的值并且只具有传入的边。图7中的LineOrder表是“星形”的中心,并且是事实表。Customer表、Supplier表、Part表和Date表被布置在星形的中心的周围,并且是维度表。
在图6中,Lineltem表可被看作事实表,而Region表和PartSupp表可被看作维度表。
遍历图
在为给定的架构创建图之后,系统遍历该图来找到潜在的反规范化。这开始于具有零个流入边的顶点,即事实表(比如图6中的Lineltem表或图7中的LineOrder表),并沿着传出的边到达维度表。每个事实表及其一个或多个维度表(比如图6中的Orders表或图7中的Customer表)是可能的反规范化。为了限制可能的反规范化的数量,遍历可以被约束为第一层,即,在基于将第一层维度表看作事实表来查找额外的反规范化之前,首先考虑事实表的所有维度表。以这种方式来看,图形遍历函数是递归的。通过控制递归的深度来限制可能的反规范化的数量。
子图
每个可能的反规范化由原始有向图的子图表示,比如用于图3的架构的如图8所示的那些子图802、804。
形成SQL查询
发现还包括为每个可能的反规范化形成SQL查询。通过以下步骤生成SQL查询:向查询的FROM子句添加对应于子图中的顶点的表;向SELECT子句添加这些表中的每张表的所有列;以及向WHERE子句添加每条边上的连接条件,使用‘AND’合并这些条件。
优化
如上所述,图9中所示的优化阶段试图找到最好利用了给定的存储器量的反规范化的子集。
压缩
如上所述,在反规范化关系中表的列和行被压缩以减少该关系所需的存储器量。压缩过程有两个步骤,即排序和编码。在图9的步骤902中,在步骤904,基于维度表的主键,从距离事实表最远的表开始,对表的行进行排序。排序确保来自在反规范化关系中被复制的维度表的行是连续的。可以通过向SQL查询添加‘ORDER BY’子句来执行排序。
在步骤906,当关系处于按列优先的次序时,对关系中的列执行编码。可以对按行优先或混合的表示执行编码,其中维度表的行以按行优先的形式被存储。在按行优先的情况下,对于维度表的每行,只需要指定一次行程长度(run-length)。
在一个实施例中,使用行程长度编码。这种编码使用一个或最多几个字节来指定值的重复次数,该重复次数后面跟着值本身;这大大减少了用于反规范化关系中的排序表的存储器量,并且是足够简单的以使得仍然能在表的编码表示上高效地执行查询操作。
列数据可以使用其它类型的编码来进行编码。例如,基于词典的编码是基于向列中的每个不同值分配一个数字码;然后可以通过将该值出现的任何地方替换成该数值码来编码该列。行程长度编码也可与词典编码结合使用。
最优集合
如上所述,确定反规范化关系的最优子集包括执行在步骤908中的成本计算以及步骤910中的收益计算,其中成本是关系所使用的存储器量,而收益是通过使用该反规范化而消除的连接的“成本”。
在一个实施例中,通过从已经在系统中运行的查询中收集大小估计值来计算每个反规范化的成本Mi∈M。如果查询工作负荷是可用的,则这种技术是最准确的。这种技术查看查询,并跟踪每个连接的实际大小。
在另一个实施例中,通过找到关系中的表的大小和用于指定表的编码的开销的总和来计算成本。对于每个事实表,系统从最大事实表的大小开始计算总和,并按大小的降序方式添加其维度表的大小与编码每张表的开销。若事实表总和未超过可用的存储器,则也计算从具有传出的边的任何维度表及其编码开销开始的总和。若对于从事实表开始的总和或从维度表开始的总和,可用的存储器被超出,则停止该过程。用于成本的存储器的总量以存储器块为单位,存储器块是可用存储器的总量的便于使用的子单位。
在使用行程长度编码的实施例中,用于表的开销是平均行程长度。平均行程长度是事实表的大小与维度表的大小的比值,四舍五入到最接近的2的幂次。
通过找到否则可能已经被执行的连接的成本(即,没有该反规范化时连接的成本)的总和来确定每个反规范化关系的收益Bi∈B。总成本是连接跨查询工作负荷中的所有查询的成本,并且以存储器块为单位。
在已经对每个潜在的反规范化计算成本和收益后,在步骤912中发现反规范化的最优子集。令M为成本的集合,B为收益的集合,L是以块为单位的存储器的大小,以及N是可能的反规范化的数量。然后反规范化的最优子集是S(L,N),并且总收益是T(L,N),其中(S(L,N),T(L,N))=f(M,B)。函数f对每个可能的反规范化(1..N)和每个可能的存储器大小(1..L)确定收益和成本,以便在计算结束时产生最优集合S和总收益T。
在一个实施例中,函数f(M,B)是图10所示的一个函数。在该函数中,集合S(L,N)、T(L,N)分别被实现为二维数组S(i,j)、T(i,j),其中i=[0..L]并且j=[0..N]。在步骤1002中,通过设置 以及,并且通过清除位和来初始化T数组和S数组。在步骤1004和1006中,初始化两个循环,一个是j=1…N,一个是i=1..L。外层循环j,步进通过可能的反规范化的数量,并且内层循环i,步进通过存储器大小直至最大的大小L。因此,外层循环选择反规范化,并且存储器循环针对每个存储器大小检查所选择的反规范化的成本和收益。在步骤1008中,该函数在M[j]和T(i,j-1)上执行测试。如果M[j]>i,那么用于第j个反规范化的存储器块的数量大于存储器的当前大小。如果T(i,j-1)>T(i-M[j],j-1)+B[j],那么前一个反规范化的收益大于当前反规范化的收益。在任何一种情况下,该函数然后在步骤1010中将前一收益复制到当前收益,并且在步骤1012中将提供前一收益的前一个反规范化的集合复制到当前集合。否则,在步骤1014和1015中,该函数更新当前收益量并且提供该收益的当前反规范化的集合。当该函数完成时,数组条目T(L,N)对于给定的存储器大小L具有最大收益,并且数组条目S具有提供该收益的反规范化集合。
部署
如果可以通过反规范化关系来执行连接,那么该连接可以作为对反规范化关系的扫描而被执行。假设实施严格的引用约束,则反规范化关系的基(cardinality)与事实表的基相同。因此,不需要在存储器中单独存储事实表。此外,只要连接谓词与反规范化关系中的谓词匹配,则在反规范化关系中涉及事实表和任何维度表的任何连接都能够被消除。
为了验证一张较小和另一张较大的两张表之间的引用约束,当图中的边是从查询推断时,核查两张表之间的子集条件。首先,系统确保较小的表中的列是唯一的。接着,系统核查较大的表中的不同值的列表是较小的表中的不同值的列表的子集,其中该列中的不同值的数量等于列值不为空(non-null)的行的总数。
查询处理系统将最优集合中的反规范化关系与到来的查询相匹配,如图11所示。在一个实施例中,系统匹配被显露为‘虚拟物化视图’的存储器反规范化关系。在另一实施例中,系统在运行时期间匹配存储器反规范化关系。
为了将反规范化关系显露为物化视图,在步骤1104中,向数据库系统添加称为‘虚拟物化视图’的新的元数据对象。在步骤1106中,使用关于虚拟物化视图对象的信息来填充元数据高速缓存,一个虚拟物化视图对象用于每个反规范化关系,并且在步骤1108中,增强查询优化器来将反规范化关系仅仅看作除了I/O成本被设置为0的常规物化视图。此外,在步骤1110中,增强表/视图扫描行源,以处理这种新的类型的视图。行源得到包含反规范化关系的存储器块的列表,而不是获得待读取的块的列表。在步骤1112中,匹配物化视图被用于当前查询。创建虚拟物化视图尽管具有利用数据库系统中的现有机制的优势,但也有反规范化关系不能从存储器移除的缺点,因为编译的查询可能依赖于它。
代替使用物化视图,查询处理系统能够使反规范化在运行时期间可用,如图11所示。在步骤1112中,查询处理系统针对任何连接结点评估用于到来的查询的查询计划。该系统还遍历该查询计划下的任何子树,并识别任何直接与该连接结点相邻的进一步连接,即,不位于诸如排序或分组行源的阻塞(blocking)行源之下。若存在候选连接结点(行源),则如果涉及任何事实表,就对照可用的存储器中反规范化关系来核查该事实表。维度表和连接条件也被核查。在步骤1114中,若找到匹配,则连接就被实现为对反规范化存储器内关系的扫描(即,过滤和投影)。这种访问反规范化关系的方式不在编译的查询和反规范化关系之间产生任何依赖性。
硬件概况
根据一种实施例,在此所描述的技术由一个或多个专用计算设备来实现。专用计算设备可以被硬连线以执行这些技术,或者可以包含被永久编程来执行这些技术的、比如一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)的数字电子设备,或者可以包含被编程来依照在固件、存储器、其他存储装置或者它们的组合中的程序指令而执行这些技术的一个或多个通用硬件处理器。这样的专用计算设备还可以将定制的硬连线逻辑、ASIC或FPGA与定制编程结合,以实现这些技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、网络设备,或者用于合并硬连线和/或程序逻辑来实现这些技术的任何其他设备。
例如,图12是示出本发明的实施例可以实施于其上的计算机系统1200的框图。计算机系统1200包含总线1202或者用于传输信息的其他通信机构,以及与总线1202耦合用于处理信息的硬件处理器1204。硬件处理器1204可以是例如通用微处理器。
计算机系统1200还包含与总线1202耦合用于存储信息以及待由处理器1204执行的指令的主存储器1206,例如,随机存取存储器(RAM)或者其他动态存储设备。主存储器1206还可以用于在待由处理器1204执行的指令的执行期间存储临时变量或者其他中间信息。这样的指令在被存储于可由处理器1204访问的非瞬时存储介质时使计算机系统1200成为被定制用于执行在指令中指定的操作的专用机器。
计算机系统1200还包含与总线1202耦合用于为处理器1204存储静态信息和指令的只读存储器(ROM)1208或其他静态存储设备。存储设备1210,例如,磁盘、光盘或固态硬盘驱动器,被提供并与总线1202耦合,用于存储信息和指令。
计算机系统1200可以经由总线1202耦合至例如阴极射线管(CRT)的显示器1212,以用于给计算机用户显示信息,。包含字母数字键和其他键的输入设备1214与总线1202耦合,用于将信息和命令选择传输给处理器1204。另一个类型的用户输入设备是光标控制1216,例如,鼠标、轨迹球或光标方向键,用于将方向信息和命令选择传输给处理器1204并且用于控制在显示器1212上的光标运动。该输入设备通常具有在两个轴(第一轴(例如,x)和第二轴(例如,y))上的两个自由度,该自由度允许件指定平面内的位置。
计算机系统1200可以使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现在此所描述的技术,该程序逻辑结合计算机系统来使得计算机系统1200成为或将其编程为专用机器。根据一种实施例,本文的技术由计算机系统1200响应于处理器1204执行包含于主存储器1206内的一个或多个指令的一个或多个序列而执行。这样的指令可以从比如存储设备1210的另一个存储介质读入主存储器1206。包含于主存储器1206内的指令序列的执行使得处理器1204执行本文所描述的过程步骤。在可替换的实施例中,硬连线电路可以代替软件指令或者与其结合而被使用。
本文所使用的术语“存储介质”指的是用于存储使得机器按照具体的方式来操作的数据和/或指令的任何非瞬时介质。这样的存储介质可以包含非易失性的介质和/或易失性的介质。非易失性的介质包括光盘或磁盘,比如存储设备1210。易失性的介质包括动态存储器,比如主存储器1206。存储介质的常见形式包括例如软盘、软磁盘、硬盘、固态硬盘驱动器、磁带,或者任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、任何具有孔图形的物理介质、RAM、PROM,以及EPROM、FLASH-EPROM、NVRAM、任何其他存储芯片或存储盒。
存储介质不同于传输介质,但可以与传输介质结合起来使用。传输介质参与在存储介质之间传输信息。例如,传输介质包括同轴电缆、铜导线和光纤,包括包含总线1202的导线。传输介质还能够采取声波或光波的形式,例如,在无线电波和红外数据通信期间生成的那些波。
各种形式的介质都会参与将一个或多个指令的一个或多个序列输送给处理器1204以用于执行。例如,指令最初可以载存于远程计算机的磁盘或固态硬盘驱动器上。远程计算机能够将指令加载到其动态存储器内,并且使用调制解调器经由电话线来发送该指令。计算机系统1200本地的调制解调器能够接收电话线上的数据,并且使用红外发射器将数据转换为红外信号。红外检测器能够接收红外信号所携带的数据,并且适当的电路能够将数据放置于总线1202上。总线1202将数据输送给主存储器1206,处理器1204从该主存储器1206中检索并执行指令。由主存储器1206接收的指令可以选择性地在被处理器1204执行之前或之后存储于存储设备1210上。
计算机系统1200还包含与总线1202耦合的通信接口1218。通信接口1218提供与连接至本地网络1222连接的网络链路1220的双向数据通信耦合。例如,通信接口1218可以是综合业务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器,或者用于提供到相应类型的电话线的数据通信连接的调制解调器。作为另一个示例,通信接口1218可以是局域网(LAN)网卡,用于提供到可兼容的LAN的数据通信连接。还可以实现无线链路。在任何这样的实现方式中,通信接口1218发送及接收用于承载表示各种类型的信息的数字数据流的电信号、电磁信号或光信号。
网络链路1220通常通过一个或多个网络来提供到其他数据设备的数据通信。例如,网络链路1220可以通过本地网络1222提供到主机计算机1224的或者到由网络服务提供商(ISP)1226运营的数据设备的连接。ISP 1226进而通过全球分组数据通信网络(现在常称为“因特网(Internet)”1228)来提供数据通信服务。本地网络1222和因特网1228两者都使用承载数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路1220上的且经过通信接口1218的信号是传输介质的实例形式,这些信号将数字数据送入和送出计算机系统1200。
计算机系统1200能够通过网络、网络链路1220和通信接口1218来发送消息和接收数据,包括程序代码。在因特网的实例中,服务器1230可以通过因特网1228、ISP 1226、本地网络1222和通信接口1218来发送对应用程序的请求代码。
所接收的代码可以在其被接收到时由处理器1204执行,和/或被存储于存储设备1210或其他非易失性的存储器内以供以后执行。
在前面的详细说明中,本发明的实施例已经参考众多具体的细节进行了描述,这些细节在不同的实现方式之间可以是不同的。因此,本说明书和附图应当被看作是说明性的,而不是限制性的。本发明的范围的独有指示以及本申请人想要其成为本发明的范围的内容,是由本申请按照此类权利要求书发布的具体形式来发布的权利要求书的字面及等效范围,包括任何后续校正。
其它方面
此处说明的标的物的各个方面按下列编号的条款列出:
1、一种用于改善连接操作的性能的方法,所述方法包括:建立顶点和边的有向图,其中顶点表示要被连接的表,而边表示表之间的连接条件;通过遍历有向图,基于连接条件形成候选连接操作的集合;以及选择候选连接操作的子集作为反规范化关系而驻留于存储器中以最好利用可用存储器量。
2、根据条款1所述的方法,其中选择候选连接操作的子集包括:减少由每个单独的候选连接操作所占用的存储器量;以及从候选连接操作的集合中选择优化的子集。
3、根据条款2所述的方法,其中减少由每个候选连接操作所占用的存储器量的步骤包括:获得候选连接操作的集合中的表的主键并基于该主键对集合中的每个候选连接操作进行排序;以及压缩集合中的每个经排序的候选连接操作。
4、根据条款1-3中任一项所述的方法,其中选择子集包括:当候选连接操作在当前子集上提供收益并且当前子集的成本小于或等于可用存储器量时,向当前子集添加候选连接操作;以及返回当前子集。
5、根据条款4所述的方法,其中可用存储器量被分成相同大小的块,并且可用存储器量是块的最大数量;以及其中每个成本和每个收益以块为单位进行度量。
6、根据条款1-5中任一项所述的方法,其中集合中的每个候选连接操作由有向图表示。
7、根据条款1-6中任一项所述的方法,其中有向图包括作为顶点的事实表和维度表;以及其中候选连接操作的集合包括由所述事实表所指向的维度表。
8、根据条款1-7中任一项所述的方法,还包括为集合中的每个候选连接操作形成SQL查询。
9、根据条款1-8中任一项所述的方法,还包括使所述子集对查询可用。
10、根据条款9所述的方法,其中使所述子集对查询可用包括将所述子集的成员显露为物化视图。
11、根据条款9所述的方法,其中使所述子集对查询可用包括将所述子集的成员实现为扫描。
12、存储一个或多个指令的一个或多个非瞬时计算机可读存储介质,所述指令在被一个或多个计算设备执行时,使得执行条款1-11所述的方法中的至少一个。
13、一种系统,包含被配置为执行条款1-11所述的方法中的至少一个的一个或多个计算设备。
Claims (23)
1.一种用于查询处理的反规范化的方法,包括:
基于数据库的对应架构创建有向图,所述有向图包括顶点和边,其中所述顶点表示所述对应架构中的表,而所述边表示所述表之间的对应于连接条件的关系;
遍历所述有向图以确定多个潜在的反规范化;
为所述多个潜在的反规范化确定多个成本和多个收益,其中所述多个成本中的每个成本基于对应于所述多个潜在的反规范化中的一个潜在的反规范化的反规范化关系的大小,其中所述多个收益中的每个收益基于当所述反规范化关系可用时所避免的连接的成本;以及
基于可用存储器量、所述多个成本和所述多个收益,从所述多个潜在的反规范化中确定多个所选择的反规范化关系。
2.根据权利要求1所述的方法,其中所述反规范化关系的大小基于对所述反规范化关系的压缩。
3.根据权利要求1所述的方法,其中确定所述多个所选择的反规范化关系包括:
当特定的潜在的反规范化在当前的多个所选择的反规范化关系上提供收益并且所述当前的多个所选择的反规范化关系的成本小于或等于可用存储器量时,向当前的多个所选择的反规范化关系添加对应于所述特定的潜在的反规范化的特定的反规范化关系。
4.根据权利要求1所述的方法,其中所述多个潜在的反规范化由所述有向图的子图表示。
5.根据权利要求1所述的方法,
其中所述顶点包括表示事实表的至少一个事实表顶点和表示维度表的至少一个维度表顶点;以及
其中所述边包括从事实表顶点到维度表顶点的至少一条边。
6.根据权利要求1所述的方法,还包括为所述多个潜在的反规范化中的每个潜在的反规范化形成SQL查询。
7.根据权利要求1所述的方法,还包括使所述多个所选择的反规范化关系对查询可用。
8.根据权利要求7所述的方法,其中使所述多个所选择的反规范化关系对查询可用包括将所述多个所选择的反规范化关系的成员显露为存储器中虚拟物化视图。
9.根据权利要求7所述的方法,其中使所述多个所选择的反规范化关系对查询可用包括对所述多个所选择的反规范化关系的一个或多个实现扫描。
10.根据权利要求1所述的方法,其中所述边表示基于分析最近的工作负荷或训练工作负荷中的查询而确定的至少一个关系。
11.根据权利要求1所述的方法,其中所述边表示在所述对应的架构中指示的至少一个约束。
12.一种存储一个或多个指令的非瞬时计算机可读存储介质,所述指令在被一个或多个处理器执行时,使得所述一个或多个处理器执行以下步骤:
基于数据库的对应架构创建有向图,所述有向图包括顶点和边,其中所述顶点表示所述对应架构中的表,而所述边表示所述表之间对应于连接条件的关系;
遍历所述有向图以确定多个潜在的反规范化;
根据所述多个潜在的反规范化,为所述多个潜在的反规范化确定多个成本和多个收益,其中所述多个成本中的每个成本基于对应于所述多个潜在的反规范化中的一个潜在的反规范化的反规范化关系的大小,其中所述多个收益中的每个收益基于当所述反规范化关系可用时所避免的连接的成本;以及
基于可用存储器量、所述多个成本和所述多个收益来确定多个所选择的反规范化关系。
13.根据权利要求12所述的非瞬时计算机可读存储介质,其中所述反规范化关系的大小基于对所述反规范化关系的压缩。
14.根据权利要求12所述的非瞬时计算机可读存储介质,其中确定所述多个所选择的反规范化关系包括:
当特定的潜在的反规范化在当前的多个所选择的反规范化关系上提供收益并且所述当前的多个所选择的反规范化关系的成本小于或等于可用存储器量时,向当前的多个所选择的反规范化关系添加对应于所述特定的潜在的反规范化的特定的反规范化关系。
15.根据权利要求12所述的非瞬时计算机可读存储介质,其中所述多个潜在的反规范化由所述有向图的子图表示。
16.根据权利要求12所述的非瞬时计算机可读存储介质,
其中所述顶点包括表示事实表的至少一个事实表顶点和表示维度表的至少一个维度表顶点;以及
其中所述边包括从事实表顶点到维度表顶点的至少一条边。
17.根据权利要求12所述的非瞬时计算机可读存储介质,还包括使得所述一个或多个处理器执行为所述多个潜在的反规范化中的每个潜在的反规范化形成SQL查询的步骤的指令。
18.根据权利要求12所述的非瞬时计算机可读存储介质,还包括使得所述一个或多个处理器执行使所述多个所选择的反规范化关系对查询可用的步骤的指令。
19.根据权利要求18所述的非瞬时计算机可读存储介质,其中使所述多个所选择的反规范化关系对查询可用包括将所述多个所选择的反规范化关系的成员显露为存储器中虚拟物化视图。
20.根据权利要求18所述的非瞬时计算机可读存储介质,其中使所述多个所选择的反规范化关系对查询可用包括为所述多个所选择的反规范化关系的一个或多个实现扫描。
21.根据权利要求12所述的非瞬时计算机可读存储介质,其中所述边表示基于分析最近的工作负荷或训练工作负荷中的查询而确定的至少一个关系。
22.根据权利要求12所述的非瞬时计算机可读存储介质,其中所述边表示在所述对应的架构中指示的至少一个约束。
23.一种用于查询处理的反规范化的装置,包括:
一个或多个处理器;
耦合到每个处理器并包含使得所述一个或多个处理器执行以下步骤的存储设备:
基于数据库的对应架构创建有向图,所述有向图包括顶点和边,其中所述顶点表示所述对应架构中的表,而所述边表示所述表之间的对应于连接条件的关系;
遍历所述有向图以确定多个潜在的反规范化;
为所述多个潜在的反规范化确定多个成本和多个收益,其中所述多个成本中的每个成本基于对应于所述多个潜在的反规范化中的一个潜在的反规范化的反规范化关系的大小,其中所述多个收益中的每个收益基于当所述反规范化关系可用时所避免的连接的成本;以及
基于可用存储器量、所述多个成本和所述多个收益,从所述多个潜在的反规范化中确定多个所选择的反规范化关系。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/605,903 US9031932B2 (en) | 2012-09-06 | 2012-09-06 | Automatic denormalization for analytic query processing in large-scale clusters |
US13/605,903 | 2012-09-06 | ||
PCT/US2013/058491 WO2014039808A2 (en) | 2012-09-06 | 2013-09-06 | Automatic denormalization for analytic query processing in large-scale clusters |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104737162A CN104737162A (zh) | 2015-06-24 |
CN104737162B true CN104737162B (zh) | 2018-04-03 |
Family
ID=49237619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380054274.2A Active CN104737162B (zh) | 2012-09-06 | 2013-09-06 | 用于大规模集群中的分析型查询处理的自动反规范化 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9031932B2 (zh) |
EP (1) | EP2893468B1 (zh) |
CN (1) | CN104737162B (zh) |
WO (1) | WO2014039808A2 (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9665572B2 (en) * | 2012-09-12 | 2017-05-30 | Oracle International Corporation | Optimal data representation and auxiliary structures for in-memory database query processing |
US9158786B1 (en) | 2014-10-01 | 2015-10-13 | Bertram Capital Management, Llc | Database selection system and method to automatically adjust a database schema based on an input data |
US10108666B2 (en) * | 2015-03-10 | 2018-10-23 | Oracle International Corporation | Adaptive handling of skew for distributed joins in a cluster |
US10073885B2 (en) * | 2015-05-29 | 2018-09-11 | Oracle International Corporation | Optimizer statistics and cost model for in-memory tables |
CN104894631A (zh) * | 2015-06-19 | 2015-09-09 | 陈新棠 | 一种用于金刚石锯带的电镀液 |
US10095717B2 (en) | 2015-08-05 | 2018-10-09 | Sap Se | Data archive vault in big data platform |
US10216792B2 (en) * | 2015-10-14 | 2019-02-26 | Paxata, Inc. | Automated join detection |
US9576025B1 (en) | 2015-11-20 | 2017-02-21 | International Business Machines Corporation | Abstracting denormalized data datasets in relational database management systems |
US11226985B2 (en) | 2015-12-15 | 2022-01-18 | Microsoft Technology Licensing, Llc | Replication of structured data records among partitioned data storage spaces |
US10599676B2 (en) | 2015-12-15 | 2020-03-24 | Microsoft Technology Licensing, Llc | Replication control among redundant data centers |
US10235406B2 (en) | 2015-12-15 | 2019-03-19 | Microsoft Technology Licensing, Llc | Reminder processing of structured data records among partitioned data storage spaces |
US10248709B2 (en) | 2015-12-15 | 2019-04-02 | Microsoft Technology Licensing, Llc | Promoted properties in relational structured data |
US10540332B2 (en) | 2016-08-03 | 2020-01-21 | Microsoft Technology Licensing, Llc | Efficient denormalization of data instances |
US10558659B2 (en) | 2016-09-16 | 2020-02-11 | Oracle International Corporation | Techniques for dictionary based join and aggregation |
US10572475B2 (en) * | 2016-09-23 | 2020-02-25 | Oracle International Corporation | Leveraging columnar encoding for query operations |
US10467229B2 (en) | 2016-09-30 | 2019-11-05 | Microsoft Technology Licensing, Llc. | Query-time analytics on graph queries spanning subgraphs |
US10545945B2 (en) | 2016-10-28 | 2020-01-28 | Microsoft Technology Licensing, Llc | Change monitoring spanning graph queries |
US10445361B2 (en) | 2016-12-15 | 2019-10-15 | Microsoft Technology Licensing, Llc | Caching of subgraphs and integration of cached subgraphs into graph query results |
US10402403B2 (en) | 2016-12-15 | 2019-09-03 | Microsoft Technology Licensing, Llc | Utilization of probabilistic characteristics for reduction of graph database traversals |
US10579619B2 (en) * | 2017-02-02 | 2020-03-03 | International Business Machines Corporation | Validation of query plan |
US10242223B2 (en) | 2017-02-27 | 2019-03-26 | Microsoft Technology Licensing, Llc | Access controlled graph query spanning |
US10572485B2 (en) * | 2017-04-28 | 2020-02-25 | Oracle International Corporation | In-memory denormalized RDF data |
US10509916B2 (en) | 2017-05-12 | 2019-12-17 | Microsoft Technology Licensing, Llc | Access control lists for high-performance naming service |
US10698877B2 (en) | 2017-05-12 | 2020-06-30 | Microsoft Technology Licensing, Llc | High-performance naming service using an optimistic-concurrency-control in-memory database |
US11169995B2 (en) * | 2017-11-21 | 2021-11-09 | Oracle International Corporation | Relational dictionaries |
CN108647339A (zh) * | 2018-05-14 | 2018-10-12 | 五八有限公司 | 一种维度建模方法、装置、设备及存储介质 |
CN110032618A (zh) * | 2019-03-27 | 2019-07-19 | 北京金和网络股份有限公司 | 基于动态建模的大数据语音播报方法 |
US11288275B2 (en) | 2019-09-09 | 2022-03-29 | Oracle International Corporation | Technique for fast join processing of dictionary encoded key columns in relational database systems |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7257596B1 (en) * | 2000-11-09 | 2007-08-14 | Integrated Marketing Technology | Subscription membership marketing application for the internet |
CN101960454A (zh) * | 2008-01-07 | 2011-01-26 | 奥里·赫恩施塔特 | 多维数据库体系 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7167853B2 (en) * | 1999-05-20 | 2007-01-23 | International Business Machines Corporation | Matching and compensation tests for optimizing correlated subqueries within query using automatic summary tables |
US6931418B1 (en) * | 2001-03-26 | 2005-08-16 | Steven M. Barnes | Method and system for partial-order analysis of multi-dimensional data |
US7054315B2 (en) * | 2001-09-17 | 2006-05-30 | Pmc-Sierra Ltd. | Efficiency masked matching |
US7171427B2 (en) * | 2002-04-26 | 2007-01-30 | Oracle International Corporation | Methods of navigating a cube that is implemented as a relational object |
US20030208399A1 (en) * | 2002-05-03 | 2003-11-06 | Jayanta Basak | Personalized product recommendation |
US7184998B2 (en) * | 2002-06-29 | 2007-02-27 | Sybase, Inc. | System and methodology for generating bushy trees using a left-deep tree join enumeration algorithm |
US7587410B2 (en) * | 2005-03-22 | 2009-09-08 | Microsoft Corporation | Dynamic cube services |
US8126870B2 (en) * | 2005-03-28 | 2012-02-28 | Sybase, Inc. | System and methodology for parallel query optimization using semantic-based partitioning |
US8671091B2 (en) * | 2006-08-02 | 2014-03-11 | Hewlett-Packard Development Company, L.P. | Optimizing snowflake schema queries |
US8086598B1 (en) * | 2006-08-02 | 2011-12-27 | Hewlett-Packard Development Company, L.P. | Query optimizer with schema conversion |
US8156107B2 (en) * | 2007-02-02 | 2012-04-10 | Teradata Us, Inc. | System and method for join-partitioning for local computability of query over shared-nothing clusters |
US8069188B2 (en) * | 2007-05-07 | 2011-11-29 | Applied Technical Systems, Inc. | Database system storing a data structure that includes data nodes connected by context nodes and related method |
US20130246341A1 (en) * | 2008-05-01 | 2013-09-19 | Salesforce.Com, Inc | System, method and computer program product for managing data created in an on-demand service from other data, utilizing a report |
US20100114976A1 (en) * | 2008-10-21 | 2010-05-06 | Castellanos Maria G | Method For Database Design |
US8244715B2 (en) * | 2009-04-09 | 2012-08-14 | Paraccel, Inc. | System and method for processing database queries |
US8332389B2 (en) * | 2009-12-04 | 2012-12-11 | International Business Machines Corporation | Join order for a database query |
US9020910B2 (en) * | 2010-01-13 | 2015-04-28 | International Business Machines Corporation | Storing tables in a database system |
US8396852B2 (en) * | 2010-09-20 | 2013-03-12 | International Business Machines Corporation | Evaluating execution plan changes after a wakeup threshold time |
US8768873B2 (en) * | 2011-05-03 | 2014-07-01 | Space-Time Insight | Space-time-node engine signal structure |
US20120310917A1 (en) * | 2011-05-31 | 2012-12-06 | International Business Machines Corporation | Accelerated Join Process in Relational Database Management System |
US8914353B2 (en) * | 2011-12-20 | 2014-12-16 | Sap Se | Many-core algorithms for in-memory column store databases |
-
2012
- 2012-09-06 US US13/605,903 patent/US9031932B2/en active Active
-
2013
- 2013-09-06 WO PCT/US2013/058491 patent/WO2014039808A2/en unknown
- 2013-09-06 EP EP13766765.5A patent/EP2893468B1/en active Active
- 2013-09-06 CN CN201380054274.2A patent/CN104737162B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7257596B1 (en) * | 2000-11-09 | 2007-08-14 | Integrated Marketing Technology | Subscription membership marketing application for the internet |
CN101960454A (zh) * | 2008-01-07 | 2011-01-26 | 奥里·赫恩施塔特 | 多维数据库体系 |
Non-Patent Citations (2)
Title |
---|
Main-memory Scan Sharing for Multi-core CPUs;Lin Qiao 等;《Proceedings on the Vldb Endowment》;20080801;610-621 * |
Selection of Views to Materialize in a Data Warehouse;Himanshu Gupta 等;《IEEE Transactions on Knowledge and Data Engineering》;20050117;24-43 * |
Also Published As
Publication number | Publication date |
---|---|
WO2014039808A3 (en) | 2014-10-09 |
WO2014039808A2 (en) | 2014-03-13 |
EP2893468A2 (en) | 2015-07-15 |
US9031932B2 (en) | 2015-05-12 |
EP2893468B1 (en) | 2023-10-11 |
CN104737162A (zh) | 2015-06-24 |
US20140067791A1 (en) | 2014-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104737162B (zh) | 用于大规模集群中的分析型查询处理的自动反规范化 | |
US10585887B2 (en) | Multi-system query execution plan | |
JP7273045B2 (ja) | Sqlクエリプランを最適化するための次元コンテキスト伝搬技術 | |
EP3688550B1 (en) | Handling semi-structured and unstructured data in a sharded database environment | |
US10860598B2 (en) | Systems and methods for interest-driven business intelligence systems including event-oriented data | |
US10606834B2 (en) | Methods and apparatus of shared expression evaluation across RDBMS and storage layer | |
CN110199273B (zh) | 用于在多维数据库环境中的一次扫描中进行加载、聚合和批量计算的系统和方法 | |
US9390115B2 (en) | Tables with unlimited number of sparse columns and techniques for an efficient implementation | |
US10565200B2 (en) | Conversion of model views into relational models | |
US7668806B2 (en) | Processing queries against one or more markup language sources | |
CN104737165B (zh) | 用于内存数据库查询处理的最优数据表示和辅助结构 | |
Stonebraker et al. | One size fits all? Part 2: Benchmarking results | |
US7917463B2 (en) | System and method for data warehousing and analytics on a distributed file system | |
US8682923B2 (en) | Set-level comparisons in dynamically formed groups | |
US20070038658A1 (en) | Communication optimization for parallel execution of user-defined table functions | |
US7644062B2 (en) | Join factorization of union/union all queries | |
US7809713B2 (en) | Efficient search space analysis for join factorization | |
JP2003526159A (ja) | 多次元データベースおよび統合集約サーバ | |
US20180150515A1 (en) | Query Planning and Execution With Source and Sink Operators | |
US20120117054A1 (en) | Query Analysis in a Database | |
CN107408126B (zh) | 用于集群中的基于联接的查询处理的工作负载感知的数据放置 | |
CN113704300B (zh) | 供数据检索方法使用的数据印记技术 | |
US20050060307A1 (en) | System, method, and service for datatype caching, resolving, and escalating an SQL template with references | |
EP4352914A1 (en) | Object data stored out of line vector engine | |
Li et al. | ROVEC: Runtime Optimization of Vectorized Expression Evaluation for Column Store |
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 |