CN104737165B - 用于内存数据库查询处理的最优数据表示和辅助结构 - Google Patents
用于内存数据库查询处理的最优数据表示和辅助结构 Download PDFInfo
- Publication number
- CN104737165B CN104737165B CN201380054817.0A CN201380054817A CN104737165B CN 104737165 B CN104737165 B CN 104737165B CN 201380054817 A CN201380054817 A CN 201380054817A CN 104737165 B CN104737165 B CN 104737165B
- Authority
- CN
- China
- Prior art keywords
- column
- cost
- data structure
- inquiry
- action type
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 59
- 238000000034 method Methods 0.000 claims abstract description 21
- 238000005457 optimization Methods 0.000 claims abstract description 4
- 230000009471 action Effects 0.000 claims description 25
- 230000006872 improvement Effects 0.000 claims description 3
- 230000006399 behavior Effects 0.000 claims 1
- 238000004891 communication Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000004087 circulation Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 210000003205 muscle Anatomy 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000006116 polymerization reaction Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- 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/21—Design, administration or maintenance of databases
-
- 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
-
- 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
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
相关申请的交叉引用
背景技术
传统处理模型假定一组紧密耦合、非常高速的中央处理器和非常大容量(在100太字节量级)、但相对低速的盘系统,该盘系统具有足够的容量来存储所有需要的表,针对该传统处理模型,关系数据库查询处理已经进行了优化。包括太字节的主内存、位于处理器和盘系统之间的虚拟内存有助于避免高成本的盘I/O操作。然而,高速的中央处理器和大容量的盘系统价格昂贵并且消耗大量的功率(在10千瓦量级)。
新的更低成本和更低功耗的处理模型可供使用,部分由于诸如DRAM的主内存的每比特成本已大大降低。一种这样的模型是具有大量处理单元、相比盘系统中的存储量为中等的主内存量、以及不具有用于虚拟扩展主内存的永久存储装置的集群,其中每个处理单元包含低速处理器。在该模型中,集群可以具有多达1000个处理单元。
如果处理单元的每一个都可以利用得当,那么集群中的大量处理单元具有很高的聚合计算能力和内存。这种潜在的高性能使得集群对于查询处理有吸引力,但是当查询处理转移到内存数据库处理时,基于盘的模型会产生问题。
附图说明
通过参考下面的详细说明并结合附图考虑,实施例及许多与其伴随而来的优势变得更好理解,将更容易获得对实施例及许多其伴随而来的优势的更全面的理解,其中:
图1示出用于执行实施例的示例流程;
图2示出用于对关系进行编码的示例流程;
图3示出用于选择辅助结构的示例流程;
图4示出用于确定辅助结构的成本和收益的示例流程;
图5示出用于在查询处理过程中执行运行时编码(run-time encoding)的示例流程;和
图6示出示例性的系统设置。
具体实施方式
概述
实施例使得基于盘的查询处理适应内存数据库查询处理,这要求在保持性能的同时将使用的内存量以及计算和内存带宽最小化。为了最小化内存和带宽,要使查询所操作的数据结构适应内存的大小。为了维持性能,要在内存中保留最优的辅助数据结构集。
在图1所示的实施例中,在步骤102中系统为关系中的列选择编码以使得该关系适应内存的大小。查询工作负荷中基于查询操作的编码的成本确定该编码选择。在本实施例中,性能的维持是通过在步骤104中基于内存量和对每个辅助结构的收益来选择辅助结构而完成的。在系统在内存中处理查询的同时,在步骤106中所选择的编码的实际编码实时运行。锁定系统保证该实时编码基本上不干扰查询处理。
具体实施方式
候选编码
图2示出用于对关系中的列进行编码的示例流程。在步骤202中,计算机系统为给定的列Cj确定候选编码。计算机系统基于该列中存储的数据为每个列检查一个或多个候选编码。计算机系统考虑以字节为单位的列中数据的平均长度、列中不同数据值的数量以及列中数据值的平均行程长度以在可能的编码中选择比如词典编码、行程长度编码(runlength encodings)、本机整数编码(native integer encodings)、比例十进制编码(scaled-decimal encodings)、参考帧编码、字符串压缩编码和位图。每种类型的编码都适用于特定类型的数据。例如,行程长度编码适合于重复数据长度长的列,因为这种编码可以使列使用的内存量大大减少。参考帧编码特别适合于数值列。LZ(Lempel-Ziv)压缩特别适合于字符串列。本机整数编码最适合于算术和数值聚合以及排序操作。本机固定长度整数编码很适合于涉及过滤器的情况。位图特别适合于低基数列。存在分组操作时,词典编码是不错的选择。
成本
在步骤202中为给定列Cj确定候选编码后,在步骤204中计算机系统确定每个候选编码Ek的成本。在实施例中,该成本反映给定的代表性的查询工作负荷,其中该工作负荷由在下面更详细说明的、比如投影、分组和排序操作的操作类型来表征。具体地,对于每个给定列Cj,为工作负荷中的每种类型的操作Oi和所有查询收集统计值,其中统计值包括处理的平均行数R[Cj,Oi]、列上的操作花费的查询处理时间(或估计成本)的分数F[Cj,Oi]以及列上的过滤器的平均选择性S[Cj,Oi]。根据下面的函数从这些统计值中计算成本:
(a)如果查询处理时间的分数F[Cj,Oi]小或为零(意味着查询中未使用该列),那么成本仅仅是使用的内存量;以及
(b)如果查询处理时间的分数F[Cj,Oi]不小,那么根据用于每个候选编码Ek的特定成本公式来计算成本。
在一个实施例中,成本公式是:
∑O Cost[Cj,Oi]=∑O(Costbasic[Cj,Oi]·AveLengthEi·R[Cj,Oi]·F[Cj,Oi]),
(1)
其中,成本是在所有操作上计算得到的,其中Costbasic[Cj,Oi]是通过运行近似于每个查询操作的预先设计的代码段来确定的查询的基本成本,AveLengthEk是针对特定的编码Ek的列的值的每行平均长度,并且其中R[Cj,Oi]和F[Cj,Oi])是上述统计值。因此,对于给定的平均行数R[Cj,Oi]和分数F[Cj,Oi]),如果AveLengthEi越大,则成本越高。
在确定成本后,系统选择具有最小内存或最低成本的编码。
用于工作负荷统计值的操作类型
如上所述,一个实施例中的每个候选编码的成本是基于代表性的查询工作负荷中出现的操作的。在这样的工作负荷中考虑的操作类型至少包括过滤、标准运算符和函数、投影、分组和排序操作。
过滤操作包括在列的值上或者在对列应用函数/运算符得到的值上使用的关系比较运算符,例如"="、"<"、">"。
标准运算符和函数包括比如"+"和"-"的算术运算符、比如连接、"upper"和"substr"的字符串运算符以及如"sum"的聚合函数。
投影操作涉及解码数据表示(解压缩)以获取针对该数据类型的原始表示中的值,例如针对字符串的文本。
分组操作涉及针对按列分组(group-by-column(s))集中具有相同值的所有行。这种操作通常包括哈希函数的计算和探查(probing)哈希表。
排序操作包括按列集对关系或子关系进行排序。
辅助结构
辅助结构加快查询处理,对许多查询过程有利。这样的辅助结构包括B-树、排序表示、位图、布隆过滤器和索引。
B-树有利于使用高选择性的范围谓词频繁过滤的列。如果列频繁成为排序操作的对象,那么B-树的收益更大。
排序表示是条目为按列值排序的(列值、行编号)对的数组。排序表示对频繁成为排序操作的对象的列有利。
位图结构对使用相等条件频繁过滤的低基数列非常有用。该列对每个不同值具有一个位图,并且每个位图具有的位数与行数相等。对于每一行,相应的位表明该行中列的值是否为位图表示的内容的值。
在布隆过滤器结构中哈希函数将设定的元素映射为位数组,布隆过滤器对具有相等谓词的过滤操作有用。若给定值未出现在块中(由位未出现在布隆过滤器中来指示),可以使用表示块中的数据值的摘要的布隆过滤器来跳过该块。
给定一定量的可用内存,最好是选择辅助结构集,该辅助结构集能够以最低成本向内存数据库查询操作特别是针对列的操作提供最大的收益。因此,在图3的步骤302中,系统基于列上的操作的类型来选择能够受益于辅助结构的列。例如,如果列具有高度选择性的过滤操作或高频次的排序操作,那么B树索引结构可以提供性能提升。选择能够受益于辅助结构的列基于可调的阈值以保持对被考虑用作该列的候选辅助结构的数量的控制。
对于给定的列以及对于候选结构集中的每个候选结构,在步骤304中,本系统的实施例确定候选结构能够提供给给定列的收益Bi的测量值和成本,该成本是候选辅助结构所使用的内存量Mi。然后,在步骤306中,实施例决定为可用内存提供最大收益的辅助结构的子集。
为了帮助确定辅助结构的成本,可用内存被划分成数量L个大小相等的块。因此,辅助结构所需要的内存量Mi具有范围1到L个块,意味着该结构能够占有一个块或者全部量的可用内存。辅助结构所需要的块的实际数量取决于列的长度以及辅助结构的类型。
辅助结构的收益Bi是辅助结构提供给每个适用操作的每行改善量的估计值、用于该列上的操作的行数R[Cj,Oi]以及查询成本分数F[Cj,Oi]的乘积在所有适用操作上的和。因此,特定结构的收益是
Bi=∑o(改善量·R[Cj,Oi]·F[Cj,Oi])。 (2)
给定针对每个候选辅助结构的收益集B={B1..BN]以及针对每个候选结构的、以所需要的内存表示的成本集M={M1..MN],其中N是候选结构的总数,系统计算最优集。具体来说,系统计算函数f(B,M),其输出是集T和集S对,其中T包括针对N个辅助结构和内存大小L的每种组合的收益数据,并且S包括识别为T中相应条目提供收益的特定辅助结构的条目。T中最后一项是最优收益,并且S中最后一项指示提供最优收益的结构。
在一个实施例中,函数f(M,B)是图4中所示的函数。在该函数中,集S(L,N)、T(L,N)分别被实现为二维数组S(i,j),T(i,j),其中i=[0..L]并且j=[0..N]。在步骤402中,通过设置以及并且通过清除位和来初始化T和S数组。在步骤404和406中初始化两个循环,一个是j=1…N,一个是i=1..L。外层循环j遍历可能的反规范化(denormalization)的数量,并且内层循环i遍历内存大小直至最大值L。因此,外层循环选择反规范化并且内存循环针对每个内存大小检查所选择的反规范化的成本和收益。在步骤408中,该函数在M[j]和T(i-M[j],j-1)上执行测试。如果
M[j]>i (3)
那么用于第j个反规范化的内存块的数量大于内存的当前大小。如果
T(i,j-1)>T(i-M[j],j-1)+B[j] (4)
那么前一个反规范化的收益大于当前反规范化的收益。在两种情况下都没有附加收益,因此该函数通过在步骤410中将前一收益复制到当前收益并且在步骤412中将提供前一收益的前一个反规范化集复制到当前集来推进当前收益和前一反规范化集,如下所示。
T(i,j)=T(i,j–1) (5)
S(i,j)=S(i,j–1) (6)
否则,在步骤414和415中,该函数更新
T(i,j)=T(i-M[j],j–1)+B[j] (7)
S(i,j)={设置S(i-M[j],j–1)中的第j位}, (8)
当前收益量T(i,j)和提供该收益的当前反规范化集S(i,j)。当该函数结束时,数组条目T(L,N)对于给定的内存大小L具有最大收益,并且数组条目S具有提供该收益的反规范化集。
作为例子,假设特定的辅助结构在j=1时具有收益5,并使用7个内存块。当成本太大时(7>[1..6]),前一列要被复制到当前列。当成本并不太大时(7≯[8...L]),则使用收益5更新T,并且S的位图被更新以指示结构j提供该收益。T中的每个后续行被收益5更新,并且S中的每个位图被更新,直至到达列中的最后一行。
运行时编码
系统使用针对每个候选列选择的编码方法对每个候选列Cj进行实时编码。这意味着当系统正在处理进入的查询时它也对可能是进入的查询的主题的有关列进行编码。
为了使编码过程和查询处理互相配合,内存被分区成一组块,查询处理在块上串行操作,并且每种类型的处理获得锁以在一个块上操作,如图5所示。在步骤504中,当查询处理达到特定的块时,在步骤506中它获得该块上的共享锁并且在步骤508中处理该块中的查询,之后在步骤510中它释放该锁。当编码过程到达步骤516中的块时,在步骤518中它获得该块上的独占锁。如果查询处理已取得特定块的共享锁,那么如果编码过程到达与步骤516中相同的块,则它必须等待共享锁被释放,如步骤510所示。如果编码过程已经在步骤518中获得特定块上的独占锁,那么如果查询处理到达与步骤504中相同的块,则它必须等待步骤522中排它锁被释放。虽然这种安排可能会限制查询处理的性能,但它允许编码进行以便从编码中实现增益。
系统设置
根据一个实施例中,在此说明的技术由一个或多个专用计算设备来实现。专用计算设备可以被硬连线以执行这些技术,或者可以包括被永久编程来执行这些技术的、比如一个或多个专用集成电路(ASICs)或现场可编程门阵列(FPGA)的数字电子设备,或者可以包括被编程来依照固件、内存、其他存储装置或它们的组合中的程序指令来执行这些技术的一个或多个通用硬件处理器。这样的专用计算设备还可以将定制的硬连线逻辑、ASICs或FPGAs与定制编程结合以完成这些技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持设备、网络设备或包含硬连线和/或程序逻辑以实现这些技术的任何其他设备。
例如,图6是示出计算机系统600的框图,在该计算机系统600上可以实现实施例。计算机系统600包括用于传输信息的总线602或其他通信机构,以及与总线602耦合用于处理信息的硬件处理器604。硬件处理器604可以是例如通用的微处理器。
计算机系统600还包括耦合到总线602用于存储待由处理器604执行的信息和指令的主内存606,例如随机存取存储器(RAM)或其他动态存储设备。主内存606在待由处理器604执行的指令的执行期间还可以用于存储临时变量或其他中间信息。这样的指令,当存储于可由处理器604访问的非瞬时存储介质中时,将计算机系统600转变成被定制为执行指令中指定的操作的专用机器。
计算机系统600进一步包括耦合到总线602用于为处理器604存储静态信息和指令的只读存储器(ROM)608或其他静态存储设备。存储设备610,例如磁盘或光盘,被提供并耦合到总线602,用于存储信息和指令。
计算机系统600可以通过总线602耦合到用于向计算机用户显示信息的显示器612上,例如阴极射线管(CRT)。输入设备614,包括字母数字键和其他键,被耦合到总线602,用于向处理器604传输信息和命令选择。另一种类型的用户输入设备是光标控制616,例如鼠标、轨迹球或光标方向键,用于向处理器604传输方向信息和命令选择以及用于控制显示器612上的光标移动。这种输入设备典型地具有两个轴上的两个自由度,第一轴(例如x)和第二轴(例如y),从而允许该设备在平面中指定位置。
计算机系统600可以使用下列设备来实现在此说明的技术:定制的硬连接逻辑电路、一个或多个ASICs或FPGAs、固件和/或结合计算机系统来促使或编程设定计算机系统600成为专用机器的程序逻辑。根据一个实施例,在此说明的技术由计算机系统600响应于处理器604执行包含在主内存606中的一个或多个指令的一个或多个序列而执行。这样的指令可以从比如存储设备610的另一个存储介质读入主内存606。包含在主内存606中的指令序列的执行使得处理器604执行在此说明的过程步骤。在替换实施例中,硬连线电路可代替或结合软件指令而被使用。
如在此所用的词语“存储介质”指存储使机器以特定方式操作的数据和/或指令的非瞬时介质。这种存储介质可以包括非易失性介质和/或易失性介质。例如,非易失性介质包括光盘或磁盘,比如存储设备610。易失性介质包括动态内存,比如主内存606。存储介质的常见形式包括,例如软盘、柔性盘、硬盘、固态硬盘驱动器、磁带或任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、带有孔图案的物理介质、RAM、PROM和EPROM、闪存EPROM、NVRAM、任何其他内存芯片或存储盒。
存储介质不同于传输介质,但可以与传输介质结合起来使用。传输介质参与存储介质之间的信息传输。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线602的线。传输介质还能够采取声波或光波的形式,例如在无线电波和红外数据通信期间生成的那些波。
各种形式的介质可以参与输送一个或多个指令的一个或多个序列到处理器604用于执行。例如,指令最初可以载存于远程计算机的磁盘或固态硬盘驱动器上。远程计算机能够将指令加载到它的动态内存中并且使用调制解调器通过电话线发送该指令。计算机系统600本地的调制解调器能够接收电话线路上的数据,并使用红外发射器将数据转换为红外信号。红外探测器能够接收红外信号中携带的数据并且适当的电路能够将数据放置在总线602上。总线602将数据输送到主内存606,处理器604从主内存检索并执行指令。不论在处理器604的执行之前还是之后,主内存606接收的指令都可以选择性地存储在存储设备610上。
计算机系统600还包括耦合到总线602的通信接口618。通信接口618提供耦合到网络链路620的双向数据通信,该网络链路620连接到本地网络622。例如,通信接口618可以为综合业务数字网卡(ISDN)、电缆调制解调器、卫星调制解调器或提供数据通信连接到相应类型的电话线路的调制解调器。作为另一个例子,通信接口618可以是提供数据通信连接到兼容的局域网的局域网(LAN)卡。也可以实现无线链路。在任何这类实施例中,通信接口618发送和接收用于输送表示各种类型的信息的数字数据流的电子、电磁或光学的信号。
网络链路620典型地通过一个或多个网络来提供到其他数据设备的数据通信。例如,网络链路620可以通过本地网络622提供连接到主机计算机624或由互联网服务提供商(ISP)626运营的数据设备。互联网服务提供商626进而通过现在普遍被称为“因特网”628的全球分组数据通信网络来提供数据通信服务。本地网络622和因特网628两者都使用电子、电磁或光学的信号来输送数字数据流。通过各种网络的信号以及在网络链路620上且通过通信接口618的信号是传输介质的示例性形式,该通信接口618将数字数据送入和送出计算机系统600。
计算机系统600可以通过网络、网络链路620和通信接口618发送消息和接收数据,包括程序代码。在因特网的示例中,服务器630可能会通过因特网628、互联网服务提供商626、本地网络622和通信接口618来发送应用程序的请求代码。
接收到的代码可以在其被接收时由处理器604执行,和/或存储在存储设备610或其他非易失性存储装置中供以后执行。
在前述说明中,已经参考了大量具体的细节说明了实施例,这些细节在不同的实施方式之间可以是不同的。因此,本说明书和附图应被看做描述性的而非限制性的。这些实施例的唯一和排他指示以及申请人想要成为实施例范围的内容,是由本申请按照此类权利要求书公开的具体形式来发布的权利要求书的字面及等效范围,包括任何后续的更正。
Claims (17)
1.一种用于在系统正在处理进入的查询时为内存数据库的列提供实时编码的方法,所述方法包括:
从列集中选择候选列;
确定用于所选择的列的一个或多个候选编码;
对查询工作负荷中的每种操作类型Oi和所有查询收集一个或多个操作类型Oi的查询工作负荷的统计值,
其中查询工作负荷的统计值包括针对每种操作类型处理所选择的列所花费的查询处理时间的分数;
针对所选择的列计算每个候选编码的成本,
其中,每个候选编码的成本基于每个候选编码的每种操作类型的成本,每个候选编码的每种操作类型的成本基于针对每种操作类型所收集的查询工作负荷的统计值来确定;
其中所述成本基于使用的内存量和针对特定操作类型处理所选择的列所花费的查询处理时间的分数;以及
从所述候选编码中选择用于所选择的列的编码,
其中所述编码具有最低的成本;以及
使用所选择的编码对所选择的列进行编码。
2.根据权利要求1所述的方法,其中所收集的查询工作负荷的统计值包括针对操作类型Oi的查询的所述候选列的过滤器的平均选择性。
3.根据权利要求2所述的方法,其中所收集的查询工作负荷的统计值包括由操作类型Oi的查询处理的平均行数。
4.根据权利要求1所述的方法,其中所收集的查询工作负荷的统计值还包括查询成本分数,该查询成本分数包括操作类型Oi的查询在所述候选列上花费的查询处理时间的分数。
5.根据权利要求1所述的方法,进一步包括:
确定辅助数据结构集以用于协助执行所述内存数据库的查询处理;
计算所述辅助数据结构集中的每个辅助数据结构的收益;
针对所述辅助数据结构集中的每个辅助数据结构计算内存量;以及
确定在适合指定的内存量的同时提供最大收益的辅助数据结构的优化集。
6.根据权利要求5所述的方法,其中所述辅助数据结构选自包含以下内容的组:B-树、排序表示、位图和布隆过滤器。
7.根据权利要求5所述的方法,
其中所述指定的内存量被分成多个相等大小的内存块;以及
其中每个辅助数据结构所需要的内存量是用于所述辅助数据结构的内存块的数目。
8.根据权利要求5所述的方法,其中每个辅助数据结构的所述收益基于每个操作的改进量、在所选择的列上的所述操作的行数以及针对所选择的列的查询成本分数的乘积。
9.一种系统,用于在系统正在处理进入的查询时为内存数据库的列提供实时编码,所述系统包括:
用于从列集中选择候选列的装置;
用于确定用于所选择的列的一个或多个候选编码的装置;
用于对查询工作负荷中的每种操作类型Oi和所有查询收集一个或多个操作类型Oi的查询工作负荷的统计值的装置,
其中查询工作负荷的统计值包括针对每种操作类型处理所选择的列所花费的查询处理时间的分数;
用于针对所选择的列计算每个候选编码的成本的装置,
其中,每个候选编码的成本基于每个候选编码的每种操作类型的成本,每个候选编码的每种操作类型的成本基于针对每种操作类型所收集的查询工作负荷的统计值来确定;
其中所述成本基于使用的内存量和针对特定操作类型处理所选择的列所花费的查询处理时间的分数;以及
用于从所述候选编码中选择用于所选择的列的编码的装置,
其中所述编码具有最低的成本;以及
用于使用所选择的编码对所选择的列进行编码的装置。
10.根据权利要求9所述的系统,其中所收集的查询工作负荷的统计值包括用于针对操作类型Oi的查询的所述候选列的过滤器的操作类型Oi的平均选择性。
11.根据权利要求10所述的系统,其中所收集的查询工作负荷的统计值包括由操作类型Oi的查询处理的平均行数。
12.根据权利要求9所述的系统,其中所收集的查询工作负荷的统计值还包括查询成本分数,该查询成本分数包括操作类型Oi的查询在所述候选列上花费的查询处理时间的分数。
13.根据权利要求9所述的系统,进一步包括:
用于确定辅助数据结构集以用于协助执行所述内存数据库的查询处理的装置;
用于计算所述辅助数据结构集中的每个辅助数据结构的收益的装置;
用于针对所述辅助数据结构集中的每个辅助数据结构计算内存量的装置;以及
用于确定在适合指定的内存量的同时提供最大收益的辅助数据结构的优化集的装置。
14.根据权利要求13所述的系统,其中所述辅助数据结构选自包含以下内容的组:B-树、排序表示、位图和布隆过滤器。
15.根据权利要求13所述的系统,
其中所述指定的内存量被分成多个相等大小的内存块;以及
其中每个辅助数据结构所需要的内存量是用于所述辅助数据结构的内存块的数目。
16.根据权利要求13所述的系统,其中每个辅助数据结构的所述收益基于每个操作的改进量、在所选择的列上的所述操作的行数以及针对所选择的列的查询成本分数的乘积。
17.一种用于在系统正在处理进入的查询时为内存数据库的列提供实时编码的系统,所述系统包括:
一个或多个处理器;以及
存储设备,被耦合到每个处理器并且包括指令使得所述一个或多个处理器执行:
从列集中选择候选列;
确定用于所选择的列的一个或多个候选编码;
对查询工作负荷中的每种操作类型Oi和所有查询收集一个或多个操作类型Oi的查询工作负荷的统计值,其中查询工作负荷的统计值包括针对每种操作类型处理所选择的列所花费的查询处理时间的分数;
针对所选择的列计算每个候选编码的成本,
其中,每个候选编码的成本基于每个候选编码的每种操作类型的成本,每个候选编码的每种操作类型的成本基于针对每种操作类型所收集的查询工作负荷的统计值来确定;
其中所述成本基于使用的内存量和针对特定操作类型处理所选择的列所花费的查询处理时间的分数;以及
从所述候选编码中选择用于所选择的列的编码,
其中所述编码具有最低的成本;以及
使用所选择的编码对所选择的列进行编码。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/611,479 US9665572B2 (en) | 2012-09-12 | 2012-09-12 | Optimal data representation and auxiliary structures for in-memory database query processing |
US13/611,479 | 2012-09-12 | ||
PCT/US2013/059486 WO2014043366A2 (en) | 2012-09-12 | 2013-09-12 | Optimal data representation and auxiliary structures for in-memory database query processing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104737165A CN104737165A (zh) | 2015-06-24 |
CN104737165B true CN104737165B (zh) | 2019-06-04 |
Family
ID=49237686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380054817.0A Active CN104737165B (zh) | 2012-09-12 | 2013-09-12 | 用于内存数据库查询处理的最优数据表示和辅助结构 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9665572B2 (zh) |
EP (1) | EP2895968B1 (zh) |
CN (1) | CN104737165B (zh) |
WO (1) | WO2014043366A2 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9361327B1 (en) * | 2012-12-28 | 2016-06-07 | Emc Corporation | Rolling bloom filter for data with retention policy |
US9311359B2 (en) | 2013-01-30 | 2016-04-12 | International Business Machines Corporation | Join operation partitioning |
US9317548B2 (en) | 2013-01-30 | 2016-04-19 | International Business Machines Corporation | Reducing collisions within a hash table |
US9367556B2 (en) | 2013-06-14 | 2016-06-14 | International Business Machines Corporation | Hashing scheme using compact array tables |
US9471710B2 (en) * | 2013-06-14 | 2016-10-18 | International Business Machines Corporation | On-the-fly encoding method for efficient grouping and aggregation |
US20150227540A1 (en) * | 2014-02-12 | 2015-08-13 | Hitachi, Ltd. | System and method for content-aware data compression |
US9619769B2 (en) * | 2014-04-01 | 2017-04-11 | Sap Se | Operational leading indicator (OLI) management using in-memory database |
JP6434542B2 (ja) | 2014-06-30 | 2018-12-05 | マイクロソフト テクノロジー ライセンシング,エルエルシー | 検索のためのテーブルの理解 |
US9672248B2 (en) | 2014-10-08 | 2017-06-06 | International Business Machines Corporation | Embracing and exploiting data skew during a join or groupby |
CN104504011B (zh) * | 2014-12-10 | 2018-05-15 | 华南师范大学 | 一种查存算法的比较方法 |
US10303791B2 (en) | 2015-03-20 | 2019-05-28 | International Business Machines Corporation | Efficient join on dynamically compressed inner for improved fit into cache hierarchy |
US10650011B2 (en) | 2015-03-20 | 2020-05-12 | International Business Machines Corporation | Efficient performance of insert and point query operations in a column store |
US9922064B2 (en) | 2015-03-20 | 2018-03-20 | International Business Machines Corporation | Parallel build of non-partitioned join hash tables and non-enforced N:1 join hash tables |
US10108653B2 (en) | 2015-03-27 | 2018-10-23 | International Business Machines Corporation | Concurrent reads and inserts into a data structure without latching or waiting by readers |
US10831736B2 (en) | 2015-03-27 | 2020-11-10 | International Business Machines Corporation | Fast multi-tier indexing supporting dynamic update |
US9842132B2 (en) | 2015-10-23 | 2017-12-12 | International Business Machines Corporation | Bloom filter index for device discovery |
CN105608122B (zh) * | 2015-12-15 | 2019-02-15 | 浪潮软件股份有限公司 | 一种存储电子表单数据的方法和装置 |
US10042875B2 (en) | 2016-09-26 | 2018-08-07 | International Business Machines Corporation | Bloom filter index for device discovery |
CN112445819A (zh) * | 2019-09-02 | 2021-03-05 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101937448A (zh) * | 2009-06-28 | 2011-01-05 | Sap股份公司 | 用于主存储器列存储装置的基于字典的保持顺序的串压缩 |
CN102171695A (zh) * | 2008-10-05 | 2011-08-31 | 微软公司 | 用于基于列的数据编码的结构的查询的高效大规模联接 |
CN102576369A (zh) * | 2009-08-24 | 2012-07-11 | 阿玛得斯两合公司 | 对不可预测工作负荷展示可预测应答时间的连续全扫描数据存储表和分布式数据仓库 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5899986A (en) * | 1997-02-10 | 1999-05-04 | Oracle Corporation | Methods for collecting query workload based statistics on column groups identified by RDBMS optimizer |
JP3668673B2 (ja) * | 2000-06-09 | 2005-07-06 | 株式会社日立コミュニケーションテクノロジー | エラー訂正符号の構成方法、復号方法、伝送装置、ネットワーク |
US20030158842A1 (en) * | 2002-02-21 | 2003-08-21 | Eliezer Levy | Adaptive acceleration of retrieval queries |
US7792188B2 (en) * | 2004-06-27 | 2010-09-07 | Apple Inc. | Selecting encoding types and predictive modes for encoding video data |
US7383262B2 (en) * | 2004-06-29 | 2008-06-03 | Microsoft Corporation | Ranking database query results using probabilistic models from information retrieval |
US7493306B2 (en) * | 2005-05-19 | 2009-02-17 | International Business Machines Corporation | Tracking premature termination of a database query |
US10007686B2 (en) * | 2006-08-02 | 2018-06-26 | Entit Software Llc | Automatic vertical-database design |
CN101183363B (zh) * | 2006-11-13 | 2010-05-12 | 中兴通讯股份有限公司 | 一种利用系统表结构统一配置管理内存数据库的方法 |
CN101569170B (zh) * | 2007-05-17 | 2011-11-16 | 索尼株式会社 | 编码设备和编码方法以及解码设备和解码方法 |
US7792823B2 (en) * | 2008-01-15 | 2010-09-07 | International Business Machines Corporation | Maintained symbol table only index |
US8626725B2 (en) * | 2008-07-31 | 2014-01-07 | Microsoft Corporation | Efficient large-scale processing of column based data encoded structures |
US20100114976A1 (en) * | 2008-10-21 | 2010-05-06 | Castellanos Maria G | Method For Database Design |
US8290931B2 (en) * | 2010-02-22 | 2012-10-16 | Hewlett-Packard Development Company, L.P. | Database designer |
US8631000B2 (en) * | 2010-09-30 | 2014-01-14 | International Business Machines Corporation | Scan sharing for query predicate evaluations in column-based in-memory database systems |
US9432298B1 (en) * | 2011-12-09 | 2016-08-30 | P4tents1, LLC | System, method, and computer program product for improving memory systems |
US9009124B2 (en) * | 2011-06-17 | 2015-04-14 | Microsoft Technology Licensing, Llc | Compression aware physical database design |
US8793467B2 (en) * | 2011-09-30 | 2014-07-29 | Pure Storage, Inc. | Variable length encoding in a storage system |
US9424282B2 (en) * | 2012-03-05 | 2016-08-23 | Hasso-Plattner-Institut Fur Softwaresystemtechnik Gmbh | Online reorganization of hybrid in-memory databases |
US9465844B2 (en) * | 2012-04-30 | 2016-10-11 | Sap Se | Unified table query processing |
US9031932B2 (en) * | 2012-09-06 | 2015-05-12 | Oracle International Corporation | Automatic denormalization for analytic query processing in large-scale clusters |
-
2012
- 2012-09-12 US US13/611,479 patent/US9665572B2/en active Active
-
2013
- 2013-09-12 WO PCT/US2013/059486 patent/WO2014043366A2/en active Application Filing
- 2013-09-12 EP EP13766835.6A patent/EP2895968B1/en active Active
- 2013-09-12 CN CN201380054817.0A patent/CN104737165B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102171695A (zh) * | 2008-10-05 | 2011-08-31 | 微软公司 | 用于基于列的数据编码的结构的查询的高效大规模联接 |
CN101937448A (zh) * | 2009-06-28 | 2011-01-05 | Sap股份公司 | 用于主存储器列存储装置的基于字典的保持顺序的串压缩 |
CN102576369A (zh) * | 2009-08-24 | 2012-07-11 | 阿玛得斯两合公司 | 对不可预测工作负荷展示可预测应答时间的连续全扫描数据存储表和分布式数据仓库 |
Also Published As
Publication number | Publication date |
---|---|
CN104737165A (zh) | 2015-06-24 |
EP2895968B1 (en) | 2020-02-12 |
US9665572B2 (en) | 2017-05-30 |
WO2014043366A2 (en) | 2014-03-20 |
EP2895968A2 (en) | 2015-07-22 |
WO2014043366A3 (en) | 2014-08-28 |
US20140074819A1 (en) | 2014-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104737165B (zh) | 用于内存数据库查询处理的最优数据表示和辅助结构 | |
CN104040542B (zh) | 用于在易失性存储器内保持关系型数据的列向量的技术 | |
US10127279B2 (en) | Eigenvalue-based data query | |
EP2893468B1 (en) | Automatic denormalization for analytic query processing in large-scale clusters | |
US20180075113A1 (en) | Efficient evaluation of aggregate functions | |
CN104283567B (zh) | 一种名称数据的压缩、解压缩方法及设备 | |
CN105793843A (zh) | 用于oltp和分析工作量的用于内存数据库的组合行和列式存储 | |
US11288275B2 (en) | Technique for fast join processing of dictionary encoded key columns in relational database systems | |
JP6726690B2 (ja) | 基本データシーブを用いて無損失削減されたデータに対する多次元検索、コンテンツ連想的な取出し、ならびにキーワードベースの検索および取出しの実行 | |
CN115280306A (zh) | 在rdbms中构建反向csr图索引的快速存储器内技术 | |
US11947515B2 (en) | Relational method for transforming unsorted sparse dictionary encodings into unsorted-dense or sorted-dense dictionary encodings | |
WO2017084482A1 (zh) | 一种数据传输方法和装置 | |
US8812523B2 (en) | Predicate result cache | |
CN115918110A (zh) | 使用键值存储库的空间搜索 | |
US20210157485A1 (en) | Pattern-based cache block compression | |
US11397712B2 (en) | Rapid and robust predicate evaluation | |
US20240126756A1 (en) | One-hot encoder using lazy evaluation of relational statements | |
WO2023169007A1 (zh) | 点云预测处理方法、装置、计算机、存储介质 | |
Liu | Fast and Effective Compression for IoT Systems | |
CN113449155A (zh) | 用于特征表示处理的方法、装置、设备、介质和程序产品 | |
Vitter | Online Electronic Catalog of Jeff Vitter |
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 |