CN103177057A - 用于内存列存储数据库的多核算法 - Google Patents
用于内存列存储数据库的多核算法 Download PDFInfo
- Publication number
- CN103177057A CN103177057A CN2012104333226A CN201210433322A CN103177057A CN 103177057 A CN103177057 A CN 103177057A CN 2012104333226 A CN2012104333226 A CN 2012104333226A CN 201210433322 A CN201210433322 A CN 201210433322A CN 103177057 A CN103177057 A CN 103177057A
- Authority
- CN
- China
- Prior art keywords
- precompiler
- plan
- inquiry
- pattern
- component
- 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.)
- Granted
Links
- 238000004422 calculation algorithm Methods 0.000 title abstract description 5
- 230000000717 retained effect Effects 0.000 claims abstract description 6
- 238000000034 method Methods 0.000 claims description 43
- 230000006870 function Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 10
- 230000008878 coupling Effects 0.000 claims description 8
- 238000010168 coupling process Methods 0.000 claims description 8
- 238000005859 coupling reaction Methods 0.000 claims description 8
- 230000005055 memory storage Effects 0.000 claims description 8
- 230000000295 complement effect Effects 0.000 claims description 7
- 238000011282 treatment Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 5
- 230000013011 mating Effects 0.000 claims description 4
- 238000009795 derivation Methods 0.000 claims 3
- 238000003860 storage Methods 0.000 description 29
- 230000008569 process Effects 0.000 description 18
- 238000012545 processing Methods 0.000 description 11
- 238000009826 distribution Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000005192 partition Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000006116 polymerization reaction Methods 0.000 description 5
- 125000002015 acyclic group Chemical group 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000008447 perception Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 241000533950 Leucojum Species 0.000 description 2
- 238000005265 energy consumption Methods 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000003909 pattern recognition Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 244000287680 Garcinia dulcis Species 0.000 description 1
- 101100508752 Oryza sativa subsp. japonica IMCE gene Proteins 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000004243 sweat Anatomy 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
- G06F16/24544—Join order 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Operations Research (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本申请涉及用于内存列存储数据库的多核算法。模式可以在查询的至少一部分中识别,该查询的定义是在查询请求中接收的。可将所识别的模式与预定义模式的集合相匹配,每个预定义模式与保存在库中的多个预编译的查询执行子组件的至少一个预编译的查询执行子组件相关联。可生成执行查询的计划,例如通过基于从定义推导的计划的伪代码表示、将与所匹配的模式相关联的预编译的查询执行子组件合并到计划中。
Description
技术领域
在此描述的主题涉及提高多核处理环境中的数据库应用的性能。
背景技术
多种最新进展使相关数据库的性能得以显著提高。例如,在其中独立保存每个列的、基于列的存储装置可以减小典型查询必须访问的数据量,该典型查询仅仅使用存在于大型商业或工业数据库中的小部分的列。
此外,随机存取存储器(RAM)成本的不断降低已经促进了在主存中整体地存储相当大的数据库。这种因素极大地增加了可用带宽并降低了等待时间达若干个数量级。内存方法还可以减轻列存储数据库的潜在缺陷,其在某些例子中具有比行存储表示更细粒度的存储访问模式。通过取消限制,基于列的数据存储能够被压缩,使这种好处进一步得以增强。压缩能够进一步减少了存储成本,还节省了存储带宽。
多核处理器能够以相对低成本提供较高的处理能力。与基于集群的系统相比,多核系统的共享存储器可为访问所存储数据提供大大增强的灵活性。随着对单个处理器核的速度改善率的持续变慢,并行化已经成为加速处理器密集型应用的性能的主要手段。尤其对于数据库应用来说,更好的性能具有多种实践意义中的一种或多种。附加处理能力可以帮助处理迅速增长的数据集。提高效率还可以节省硬件和能量消耗,以及带来并行运行附加的新应用的能力。例如,通过做出战略决策的少数人容许较长的等待时间,先前可用的决策支持查询通常已经得以应用。利用低两个数量级的查询等待时间,可以为期望同时或至少几乎同时的查询响应的大量用户同时支持多个昂贵的查询,例如,如现在对网页搜索引擎通常所期望的那样。
发明内容
在一方面中,一种计算机实现的方法,包括接收查询请求,该查询请求包括保存在基于列的存储装置中的数据库查询的定义,在查询的至少一部分中识别模式,将所识别的模式与预定义模式集合进行匹配,生成执行查询的计划,以及利用所生成的计划执行该查询。每个预定义模式与保留在库中的多个预编译的查询执行子组件的至少一个预编译的查询执行子组件相关联。这种生成包括基于从定义获得的计划的伪代码表示,将与匹配模式相关联的预编译的查询执行子组件合并到计划中。
在某些变化中,作为选择可以将一个或多个下列特征归入任何可行的组合。基于将所识别的模式与预定义模式相匹配,可选地可以选择处理必须连接的多个表的最佳序列来响应该查询,并且可选地可以将计划配置为包括处理多个表的该最佳序列。可选地可以根据该查询的定义推导出计划的伪代码表示。这种生成可选地可以进一步包括创建单函数,以调用预编译的查询执行组件和一个或多个其它预编译的查询执行组件来生成该计划。该单函数可选地可以定义期望的结果,至少部分基于匹配所识别模式可选地访问来自两个或更多预定义并行化计划的集合中的预定义并行化计划。预编译的查询执行子组件可选地可以包括以C++表示的一个或多个预编译的SQL操作。
本主题的一些实现可以包括,但不限于,描述了一致包含一个或多个特征的系统和方法,以及包含有形体现的机器可读介质的物品,该机器可读介质可操作以引起一个或多个机器(例如,计算机等)产生此处描述的操作。类似的,还描述了可以包含一个或多个处理器以及耦合到该一个或多个处理器的一个或多个存储器的计算机系统。可以包含计算机可读存储介质的存储器可以包含、编码、存储等等引起一个或多个处理器执行一个或多个此处描述操作的一个或多个程序。与本主题的一个或多个实现一致的计算机实现的方法可以由驻留在单一的计算机系统或多个计算机系统中的一个或多个数据处理器来实现。这种多个计算机系统可以被连接并通过一个或多个连接方式交换数据和/或命令或其它指令等,包含但不限于通过网络(例如,因特网、无线广域网、局域网、广域网、有线网等等)连接、通过多个计算机系统中的一个或多个之间的直接连接等。
在附图和下面的描述中阐述此处描述的主题的一个或多个变形的细节。通过该描述、附图和权利要求,此处描述的主题的其它特征和优点将是显而易见的。尽管为了说明的目的关于企业资源软件系统或其它商业软件方案或架构描述了本公开的主题的某些特征,应当容易理解的是,这些特征并不是用于限制的目的。本公开的权利要求书旨在定义要求保护的主题的范围。
附图说明
包含在说明书中并构成说明书一部分的附图,显示了此处公开的主题的某些方面,并且与说明书一起帮助解释与公开的实施方式相关的一些原理。
在附图中:
图1是示出了与当前主题的至少一些实现一致的商用软件系统架构的特征的示图;
图2是示出了与当前主题的至少一些实现一致的操作流程的示图;
图3是示出了与当前主题的至少一些实现一致的具有一个或多个特征的方法的各个方面的处理流程图;
图4是示出了与当前主题的至少一些实现一致的数据库管理系统架构的特征的示图;
图5是示出了与当前主题的至少一些实现一致的另一数据库管理系统架构的特征的示图;
图6是示出了与当前主题的至少一些实现一致的多租户(multi-tenancy)数据库结构的特征的示图;
当实用时,类似的参考数字表示类似的结构、特征或元件。
具体实施方式
在先前的可用方法中,查询的执行通常包括生成查询计划。典型的查询计划生成多个中间结果并可包括长系列的递归特征(例如“FOR”或“LOOP”或“DO”声明),其需要多次扫描数据库返回所请求的结果。在多核处理器系统中这种方法非常难以使用并且还难以优化查询执行。与当前主题的一个或多个实现一致的方法、系统、制品等可以连同其它可能的优点一起,提供并行的基于主存储器的数据库应用的改善的性能,例如从SAP AG(沃尔多夫,德国)获得的在内存计算引擎(In-Memory Computing Engine,IMCE)。在某些例子中,通过基于传入的查询请求中所提供的查询定义的模式分析的结果来汇编预先编码的“伪代码(pseudo-code)”操作码等,可以避免昂贵的多次递归以及大量中间结果的生成。当前主题的某些实现能够在扫描表的次数大大减少的情况下生成结果,而不需要多次递归,由此显著地提高查询执行速度和系统资源使用。在某些例子中,可以只需要单次扫描。
在现代的共享存储机器上,例如具有高速缓存相关非一致存储器架构(cache-coherent non-uniform memory architectures,CC-NUMA)的那些机器,通过优选地将存储器存取定位于直接附接于处理器套接字的RAM模块有可能减少存储带宽瓶颈。当前可用的数据库管理系统被认为使用显式访问模式不利于本地存储器节点访问。一种当前可用的选择涉及使用逐页统计高速缓存失配(miss)来留下这种判定给操作系统。然而,现行的系统看起来缺少必要的硬件支持以实现这种方法。
当前主题的实现能够可选择地用在具有多个套接字的共享存储器上,每个共享存储机器包含具有很多核且同时执行线程的多核处理器。每个套接字可以具有各自的本地连接的主存储器。访问其它套接字的存储器可以产生相对于使用本地存储器进行访问的性能代价。可以包括复杂分级结构的高速缓存。随着高速缓存的大小的增加,等待时间可以增加,并且更多的线程共享这种高速缓存的相同实例。
当前主题的实现可以将决策支持查询中所涉及的计算效率提高为比先前可用方法提高一个到两个数量级,决策支持查询是例如TPC基准TMH(TPCBenchmarkTMH,TPC-H,其从加利福尼亚州旧金山的事务处理性能委员会获得)。基于列的内存存储设备和现代的多核处理器,优选具有大型主存储器,可以与此处所述的那些高度调整的算法定结合(din conjunction)使用,以提供足够使能同时或几乎同时传送有关可以保存在系统存储器内的所有数据的结果的综合性能。相应地,当前主题的实现可用于驱动非常灵活的决策支持系统,而不对预先排列的集合(例如数据立方体)进行限制。通过当前主题的实现支持的实时或接近实时查询通常可以用于很宽范围内的应用,而不产生无法承受的计算成本和能量消耗。与此处所述的那些特征相似的特征可以用于结合通常使用与SQL相比很低级别的软件库查询的静态数据库,以及适当的SQL查询编译器生成的C++(或其它语言)查询。
在基于列的存储装置的某些实现中,可以将对数据库的插入和删除被缓存到小型的动态增量数据库或增量分区中。可以将新的或已更新的记录插入到增量分区中,而不是插入到主分区的列、表或数据库中,从而主分区可以保持压缩结构以最大化对于列、表或数据库中的数据的搜索效率。将新的或已更新的记录直接插入到压缩主分区中通常是不可能的,因为这种压缩改变了列的结构。为此列中当前数据的搜索需要在遍历一个或多个增量分区之后遍历一个或多个主分区。因此查询可构成为从独立的查询分别到主数据库和增量数据库或增量分区。有时合并主数据库和增量数据库或增量分区,例如当增量在大小上显著增长以致妨碍搜索效率时。在接收到查询请求时,可以需要加入主数据库和增量数据库产生的结果。
为了允许更大数据库的交互等待时间,可采用与当前主题的一个或多个实现一致的多核服务器的集群。通过复制能够在非分布式系统中随机进行访问的更小的数据库关系,在这种并行化系统中可以维持相对较低的处理开销。可以将更大的数据库关系大致均匀地分布到多核系统的集群结点上,多核系统的集群结点可以被并行地扫描。还可以采用混合系统来以合理的成本处理更大数据库,在混合系统中将不常使用的列保存在磁盘(例如硬盘、固态驱动器等等)上。
与当前主题的实现一致的数据库模式可以包括,但是不局限于,雪花型模式、星型模式等等的通用化。在某些例子中,这种模式的表格关系可以形成非循环有向图(directed acyclic graph)G,其中两个结点R和U之间的边(R,U)表示关系R元组引用关系U元组。图不必形成树。在非循环有向图G中的路径可以指定经由键间接引用操作序列访问数据的方式。从结点R的角度来看,可以将非循环有向图G视为闭包关系(closure relation)R*的紧凑表示,闭包关系R*包含起始于R的每条路径的属性。在雪花型模式中,模式非循环有向图G可以是树。在星型模式中,树具有1的深度。
可以将数据库的一个或多个列分成块,块可以被循环式分配到NUMA机器的每个套接字的本地存储器。分块可提高高速缓存的效率,同时循环式分配可提供大致相等负载的存储体,每个存储体具有充分大范围的可能访问的列。应注意的是,为每个局部存储器将列简单地分成段会产生不能接受的性能,因为许多查询仅仅是在列的子范围上做它们的大部分工作。可以透明地处理存储块到套接字的分配。例如,本申请可使用连续的存储范围,因为这种范围可以是虚拟的从而可以进一步由操作系统将其变换为物理存储。可以由系统调用(例如在Linux系统上)等等修改从虚拟地址到物理地址的分配,使得物理地址指向正确的套接字。当此范围还被用作并行扫描时,对于存储块的大小,可使用系统页面大小的倍数。
索引数据结构可以运行对模式图进行有效导航。与当前主题的实现兼容的索引数据结构的例子可包括,但是不局限于,一个或多个前向索引、索引分类关系、倒排索引、倒置文本索引等等。
对于其值与有序列相关的列,为每个块存储最小值和最大值。例如,在示例性的TPC-H数据库中,发货日期、提交日期和接收日期离线项目与订购日期强相关,订购日期是主要排序条件。这种优化仅仅会引起可以忽略的存储开销,因为每个数据块只存储两个附加值。在选中处于范围[a,b]内的列的各行时,对于每个块可适用五种情况之一:(1)如果min≥a并且max≤b,则选定所有行;(2)如果min>b或者max<a,则不选定行;(3)如果min>a并且max∈[a,b],则只检查≤b;(4)如果min∈[a,b]并且max<b,则只检查≥a;(5)如果min<a并且max>b,则需要检查是否≥a且≤b。除最后一种情况之外,通过这种方法能够获得优势。在前两种情况中,根本不需要接触这些值,这可以节省存储器带宽。
可替换地,构成为连接的复杂组合的许多SQL查询能够被视为简单的对闭包关系R*的select-from-where查询并可以通过扫描关系R和通过明确地使用前向索引跟随路径来访问对应于模式图中路径的属性来实现。然而,有效地完成这些操作可以需要多种优化。例如,可以使用并行化,其中可将给定范围的列切分以扫描到小范围(块)中并可将块作为任务分配给不同线程。对于小范围,这些块仅仅需要存储块的小部分,以提供足够的并行化和负载平衡。在NUMA感知的系统中,决不可能会可靠地分配线程给CPU,因此难以确保所访问的存储器驻留在本地套接字上。
为了克服这种限制,与当前主题的实现一致的NUMA感知调度器(此处被称为NBB)可一样使用与线程构建块(Threaded Building Block,TBB,从加利福尼亚州圣克拉拉的英特尔公司获取)相同的接口并可基于POSDC(Portable Operating System Interface,可移植操作系统接口)线程。NBB的实现可以为每个套接字管理一个任务池,其可包含来自多个查询的任务。工作者线程可被固定到特定的套接字上并可以尝试执行来自它们本地任务队列的任务。如果这样的任务对线程不可以,则可以允许套接字提供来自远距离套接字的“窃取(steal)”块。
常规格式的where子句查询可限制实际促进输出的元组集合。这种限制往往是多个判定的结合。在列存储数据库中,测试这些判定的顺序可以是影响性能的重要因素。首先测试最有限制性的判定通常是有帮助的。然而,还必须考虑评估判定的成本,尤其是对所涉及数据的访问成本。因此,选择测试条件依照的最优顺序可以是重要的调整事项。
访问由路径P定义的R*的属性的成本不仅仅取决于路径的长度,还取决于所涉及物理列的大小。也就是说,小的列可以往往适合高速缓存,而大的列可以频繁地引起附加的高速缓存故障。例如,在TPC-H中,访问利用供应商直接存储的属性还是访问利用供应商的状态存储的属性几乎没有差别-状态维度表的25个条目易于适应高速缓存。
当扫描位压缩的列时,可展开扫描循环以便在所展开循环的每次迭代之后已经使用了整数个机器字。在许多查询中,可将相当大部分的执行时间花费在数据的一次(最内部)循环迭代上并对其进行处理。在循环内的指令常常可以是互相依赖的并且必须以某一顺序被执行,其可以引起丢失处理器周期。通过展开循环,可以允许编译器将指令重新排序,从而潜在地允许每周期更大数量的指令。一般说来,展开的计数不应该过大,因为循环的代码应该有利地适应相应处理器核的第一级(L1)高速缓存。在某些例子,可使用展开计数8。
决策支持查询可通过交换操作和关联操作减少大的数据集,例如在大量数值上的计数、总和、最小化、最大化等等。对于许多查询,产生的结果数目可充分小,以至可为参与到计算中的每个线程计算局部结果表。在某些情况下,这种结果甚至可以适应每个相应处理器核的第一级(L1)高速缓存。只有在进程结束时,才可以将局部结果合并成总结果。依照此方式,可以避免不必要的和昂贵的同步开销。为了接收总结果,可为成对保存的结果(并行)将两个局部结果合并成单个结果。相应地,在某些实现中接收总结果的并行步骤的数目可以使用如这里描述的调度框架来表示为[log2(线程数)]。如果所产生的结果不适应第二级(L2)高速缓存,我们可以使用不同的方法(例如,在TPC-H中的查询10和15不适应L2高速缓存)。在这种情况下,可将最终结果表划分为不同部分,使得这些部分中的每一个适应L2高速缓存。在一种示例性的实现中,可以使用256个部分并将其基于(哈希,hash)键的最高有效位进行划分。聚合可以在两次扫描中完成或者可选地在多于两次扫描中完成。
在第一次扫描中,每个线程可以通过各自的部分对输入排序。具体来讲,每个线程可以处理输入块并将每行(键和值)复制到对应最终部分结果部分的数组。为了最小化同步,每个线程可为每个结果部分保留自己的数组。在某些例子中,如果复制比之后接着的指针更昂贵,则可以期望仅仅复制到行的指针。在第二次扫描中,线程可逐部地产生最终结果。对于每个部分,一个线程可处理每个线程对应数组的各行并将它们直接聚合到最终结果表中。此处,由于各部分是分开的,不需要同步。此外,结果部分保存在高速缓存中,因此聚合非常有效。
为了获得全部性能,应该仔细执行存储器分配。应注意的是,要聚合的每行有利地被复制一次(或至少是指针)。预先不知道要被复制到数组中的行的数目。这会导致过度的动态存储分配需求,其在许多情况下可在线程之间被同步,因此明显降低了性能。为了克服这种问题,线程局部存储器池可被用于保留多个存储器组块(chunk),其会在不同查询间被重新使用。在某些例子中,使用线程局部存储器池的性能增益大于因子2。
一个例证性例子涉及完成对来自闭包关系R*的元组的计算,其涉及高度选择性的判定P,高度选择性的判定P仅仅依赖于闭包关系U*,并且其中索引倒置从R到U的路径。不是扫描R和完成对来自U*的属性的昂贵的间接访问,这有助于扫描U和使用索引来只检索那些满足判定P的R元组。使用倒排索引可以以两级粒度展现并行度-当扫描U时和当扫描用于特定的元组u∈U的倒排表时。
除了索引的这种最通用的标准使用之外,还可以组合多个索引结果。当索引对于多个充分选择性的判定可用时,可以直接计算索引结果的交集。对于倒排索引数据结构而言,这可以是从信息检索获知的标准操作。特别地,如果适当地表示倒排表,则可以与小集合成比例地及时计算成对交集。还可以有效地交叉从关系分类和混合情况中获得的间隔的集合。
在完成对来自闭包关系R*的元组计算的例子中,其涉及计算某些判定或仅依赖于闭包关系U*中数据的值x,闭包关系U*包含远少于R的元组,有可能对于预先计算这些值并廉价地将他们存储在临时列X中。如果评估x是比访问X更加昂贵,则这种方法是有益的,其对于非常简单的计算是真正公平的。例如,如果x是判定,则X仅仅是更容易适应高速缓存的位数组。在某些实现中,如果计算涉及复杂的字符串操作(例如在TPC-H查询13中),这种技术是尤其有用的。
对于按照排序次序只输出k个最大或最小结果的查询而言,避免排序所有结果或避免消耗大量临时存储器是有利的。如果临时结果的数目超过k达某一因子(例如4),可以通过略去不必要的结果来避免这些步骤。Boyer-Moore算法的快速实现可用于没有有效索引的实例中的字符串匹配问题。
关于日期的最大判定可以简化为在整数之间进行比较。通过下列与当前主题的实现一致的方法可以提供一种非常快速的途径,以从表示为自1970年1月1日(或任意其他开始日期)以来的天数d的日期中提取出年y,而不存储完整的查找表。
y=YT[d≥8].base+((d&255)>YT[d≥8].offset)
其中预先计算的表YT[i]存储一年的一天256i;以及这年这天256i之外剩下的天数。应注意的是,通常这种表可适应L1高速缓存。可以用类似的方式提取月份或一月之内的日子。
图1示出了能够实现当前主题的一个或多个特征的系统示图。计算系统102可以包括一核或多核软件平台模块104,该一核或多核软件平台模块104提供商用软件系统或包括数据库管理特征的其它软件的一个或多个特征。计算系统还可以聚合或者以其他方式提供网关,经由该网关用户可以访问由一个或多个外部软件组件106提供的功能。一个或多个客户机108可以访问计算系统,或经由直接连接、本地终端或通过网络110(例如局域网、广域网、无线网络、互联网等等)。
查询调度器112或其它可比较的功能体可访问库114,库114包括预编译的查询子组件116的库和模式定义120的集合。查询调度器112可处理与从客户端108接收的查询相关联的查询定义的一个或多个部分。这种处理可包括将一个或多个部分与模式定义120的集合中的一个或多个模式定义相匹配,以及从库116中检索用于执行所请求查询的查询计划中所包含的相关的预编译的查询子组件。查询引擎122可以执行关于可由计算系统102访问的一个或多个数据库124上的查询计划,以便返回响应于查询请求的结果。
图2示出了举例说明处理的示图200,该处理包括查询定义202,将模式匹配204与模式定义120一起应用,从查询组建库116中选择一个或多个预编译的查询组件206,此后汇编查询执行计划210。
图3示出了举例说明方法特征的处理流程图300,一个或多个该方法特征可以包含于当前主题的实现中。在302,可接收包括存在于基于列的存储装置中的数据库查询定义的查询要求,例如利用查询调度器112。在304,在查询的至少一部分中识别模式之后,在306将所识别的模式与预定义模式的集合相匹配,其中每个预定义模式与保留在库中的多个预编译的查询执行的子组件中的至少一个预编译的查询执行子组件相关联。在310,基于从定义导出的计划的伪代码表示,至少部分地通过将与所匹配的模式相关联的预编译的查询执行子组件合并到计划中以生成执行查询的计划。在312可以使用所生成的计划执行查询。
在某些实现中,在具体的、频繁重复的查询操作中使用的查询子组件可以包括伪代码,该伪代码是预先准备的、预编译的(例如在运行时间之前)并保存在库中。当接收到查询请求时,查询调度器112可完成操作,该操作可以包括识别查询定义或至少部分查询定义中的模式,以及基于那些模式通过汇编一个或多个预定义、预编译的代码段生成查询执行计划。与某些实现一致的查询调度器112既可以访问本地存储器又可以访问有关其它处理器核或套接字的存储器。
对于给定查询,多个选择通常可以用来实现该执行。许多查询需要两个或更多表之间的一个或多个连接(join)。在当前主题的实现中,可进一步将模式识别应用到确定连接的优先次序或其它数据库操作,其代替创建必须保持和/或传送到其它线程的多个中间结果,优化单次扫描中查询的整体。模式识别可以在查询的多个子部分上执行,并且可用于识别预编译的查询执行子组件和/或连接或为查询的每个部分进行优化的其它操作次序。
当前主题的实现能够非常快速地使用并行化框架编译查询。预编译的查询执行子组件(例如优化代码段)的库可以减少甚至消除对一些这种编译的需要。依照此方式,可以显著地减少在查询执行时需要编译的查询部分。因此能生成相对简单的单函数,来调用一个或多个预编译的查询执行组件以生成用于执行的查询计划。单函数可以定义期望的结果,并能够访问两个或更多预定并行化计划的集合中的预定并行化计划。
与常规数据库不同,常规数据库可以包括所存储的用来完成利用SQL或另一种高级数据库语言不易于完成的操作步骤的集合,当前主题的实现可以包括用于快速执行的用C++或其它程序设计语言表示的预编译的SQL操作。举例来说,可用处理机的低级特征(如NUMA感知数据布局;单指令多数据(SIMD)指令;并行化;线程调度;压缩(或解压缩);数据布局等)可被封装在预编译的通用C++段的库中。应用程序员的查询编译器可以在不了解机器的细节或多核编程的情况下生成查询。通过重新编译,这些查询代码可以适用于不同平台。
本主题的各种实现中的一种可能的使用可以包括处理企业资源计划(ERP)系统、其它商业软件架构或其它数据密集计算应用程序或软件架构。在一些例子中,这样的应用可以被提供为单独的定制的软件安装,其运行于在特定组织的控制下的一个或多个处理器上。这种安排对于具有非常复杂的内部信息技术(IT)人员的大规模组织来说非常有效,以及对于需要可观的资本投资到计算硬件和咨询服务以定制商业上可获得的商业软件方案用于与特定组织的业务流程和功能一起工作是可实行的人来说是非常有效的。图1的图表描述了这种系统的例子。
可选地或者另外地,可以把表或表内的范围分配到被分配到不同主机的不同的数据库分区,例如数据分布和/或可规划原因。图4显示了与包含用于可规划原因的数据分布的实施一致的企业资源系统架构400的例子。这样的配置可以用于具有高性能要求的大型、内部或独立系统。每个数据服务器进程402及其相关数据分区404可以被分配到离散的主机406。主机406可以是具有一个或多个物理处理器的独立机器或者是如图4所示的在大系统302上的虚拟机。图4中标记为名称服务器412的中央组件了解该系统的技术以及如何分布数据。在具有数据分布的系统中,名称服务器了解表或表的分区定位在哪个数据服务器进程402上。一个或多个客户机414(例如客户机108)可以通过直接连接或者通过网络416访问名称服务器412。
在数据分布情景中,分区可以明智表(table wise)完成或者还通过分离表来完成。使用明智表(table wise)分区,名称服务器基于当前的表的分布(分配到每个数据库服务器进程402的表的数量)将新的表分配到数据库服务器进程402。然后用于该表的数据会仅仅驻留在数据库服务器进程402上。还可能指定,表是在多个数据库服务器进程402上被分离。名称服务器412可选择地基于由应用程序指定的大小估计来对表进行分区。当记录被插入到分离的表中时,可以基于名称服务器信息将记录分布到其它数据库服务器进程402。
较小的组织也可以从商业软件功能的使用中获益。然而,这样的组织可能缺少使用单独商业软件架构产品所必需的必要的硬件资源、IT支持、和/或咨询预算,并且在一些情况下可以更加有效地由软件即服务(SaaS)安排进行服务,在软件即服务安排中商业软件系统架构被托管在诸如服务器的计算硬件上以及数据存储库被远离该组织的地点而进行维护并由授权用户通过瘦客户端,例如网络浏览器,通过网络进行访问。
在商业软件系统的服务被提供于多个组织中的每一个组织的软件交付配置中,所述服务被托管于仅仅为该组织可访问的专用系统,在该专用系统中的软件安装可以以类似于上述单独的、定制的本地运行在组织的硬件之上的软件安装的方式进行定制和配置。然而,为了更有效地利用SaaS提供者的计算资源以及为了提供重要性能冗余和更好的可靠性,将多个租户托管于一单一系统是有利的,单一系统包含多个服务器并且为所有的多个租户以安全的方式维护数据并同时还提供为每个租户的业务流程定制的定制计划。
与本主题的实现一致的数据分区还可以使用在如图5的系统架构500描述的多租户环境中。多个租户502,每个互相隔离并且可由多个组织内的单独组织504内的客户机414通过网络416访问,可以由同一个主机406托管,主机406可以是如图5所示的大系统302上的虚拟机或者是包含一个或多个物理处理器的单独系统。租户502还可以有选择地通过多个数据库服务器进程402被分配到多于一个的主机406上。以这种方式,把表或表内的范围分配到由于可规划原因被分配到不同主机406的不同数据库进程402。或者,对于与其它租户502相隔离的各个租户502,一个或多个租户502可以由访问数据分区404(或多个数据分区404)的单独的数据库服务器进程402进行服务。
为了提供由单独软件发布架构500支持的多个组织中的每个组织的业务流程的定制,由数据库管理系统314存储的数据和数据对象可以包括如图6所示的三种类型的内容:核心软件平台内容602(例如业务流程的标准定义),系统内容604以及租户内容606。核心软件平台内容602包括表示核心功能的内容并且不能由租户修改。在一些例子中,系统内容604可以由核心软件平台的运行时创建,并且可以包括存储与给定业务流程的特定实例相关的具体数据以及可修改地具有每个租户提供的数据的核心数据对象。保存在这些数据对象中的数据是租户特有的:例如,租户组中的每个租户502可以存储关于其自身库存、销售订单等的信息。隔离于租户组中的每个租户502的租户内容606包括,为租户组中的一个特定租户502定制的用于反映业务流程和数据的数据对象或其它数据对象扩展,该业务流程和数据是针对该特定租户的并且在相应的租户仅仅对于授权用户是可访问的。这种数据对象可以包括关键字域(例如库存跟踪情况下的“客户”)以及一个或多个主数据、业务配置信息、交易数据等等。例如,租户内容606可以反映租户对于业务流程的标准模板定义的特有的修改或改变,以及与单独的流程步骤相关的业务对象的租户特有的定制(例如在生成的条件表中的记录、访问顺序、价格计算结果、其它租户特有的值等等)。软件平台内容602和系统内容604的组合以及租户组中的一个特定租户502的租户内容606被访问,以根据该租户的定制和业务数据来提供业务流程定义和/或与业务流程的特定实例相关的状态信息,从而使得租户组中的每个租户502被提供对定制方案的访问,该定制方案的数据仅仅对来自那个租户502的用户是可用的。
此处描述的主题的一个或多个方面或特征可以在数字电子电路、集成电路、专门设计的专用集成电路(ASIC)、现场可编程门阵列(FPGA)计算硬件、固件、软件和/或其组合中实现。这些不同的方面或特点可以包括在包含至少一个可编程处理器的可编程系统上可执行和/或可解释的一个或多个计算机程序中的实现,可编程处理器可以是专用的或通用的,耦接到存储系统、至少一个输入设备以及至少一个输出设备以从其中接收数据和指令并向其发送数据和指令。客户机和服务器一般是互相远离的且通常通过通信网络进行交互。客户机和服务器之间的关系由运行在各自计算机上的并具有客户机—服务器相互关系的计算机程序虚拟产生。
这些计算机程序,其还可以被称为程序、软件、软件应用程序、应用程序、组件、或代码,包括可编程处理器的机器指令,并且可以用高级程序和/或面向对象的编程语言,和/或汇编/机器语言来实现。如此处使用的,术语“机器可读介质”是指用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、装置和/或设备,比如磁盘、光盘、存储器和/或可编程逻辑器件(PLD),包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”指任何用于提供机器指令和/或数据给可编程处理器的信号。机器可读介质可以非暂时性地存储这种机器指令,比如作为非暂时性的固态存储器或磁硬盘驱动器或任何其它等效的存储介质。机器可读介质可以可选地或另外地以暂时的方式存储这种机器指令,比如作为处理器高速缓存或其它与一个或多个物理处理器核心相关联的随机存取存储器。
为提供与用户的交互,此处描述的主题的一个或多个方面或特征可以在计算机上实现,该计算机具有诸如用于向用户显示信息的阴极射线管(CRT)或液晶显示器(LCD)或光发射二极管(LED)监视器的显示设备和用户用来向计算机提供输入的键盘以及诸如鼠标或轨迹球的指示设备。其它种类的设备也可以用于提供和用户的交互。例如,提供到用户的反馈可以是任何形式的感测反馈,比如视觉反馈、听觉反馈或触觉反馈;并且来自用户的输入可以以任何形式接收,包括但不限于,声音、语音或触觉输入。其它可能的输入设备包括但不限于,触摸屏或其它诸如单一或多点电阻或电容轨迹板、语音识别硬件和软件、光学扫描仪、光学指示器、数字图像捕获设备及相关联的解译软件等等。
此处描述的主题可以基于想要的配置而体现为系统、装置、方法和/或物品。在前面的说明中提出的实施方式不代表与此处描述的主题一致的所有实施方式。相反,它们仅仅是与所描述主题一致的一些例子。尽管上面已经详细描述了一些变化形式,但是可能做出其它的修改或添加。特别是,可以在此处提出的这些内容之外提供进一步的特征和/或变化。例如,上述实施方式可以指导出所公开的特征的各种组合和子组合和/或上述公开的一些进一步的特征的组合和子组合。另外,附图中示出的和/或本文描述的逻辑流程并不必然要求所显示的特定顺序或连续顺序以获得想要的结果。其它实施方式也在权利要求书的范围之内。
Claims (19)
1.一种计算机程序产品,包括存储指令的机器可读介质,当所述指令由至少一个可编程处理器执行时引起所述至少一个可编程处理器执行包括下列操作的操作:
接收查询请求,所述查询请求包括保存在基于列的存储装置中的数据库的查询的定义;
在查询的至少一部分中识别模式;
将所识别的模式与预定义模式的集合相匹配,每个预定义模式与保留在库中的多个预编译的查询执行子组件中的至少一个预编译的查询执行子组件相关联;
生成执行查询的计划,所述生成包括基于从所述定义推导的计划的伪代码表示、将与所匹配的模式相关联的预编译的查询执行子组件合并到计划中;以及
使用所生成的计划执行查询。
2.如权利要求1所述的计算机程序产品,其中所述操作还包括:
基于将所识别的模式与预定义模式的集合的匹配,选择用于处理必须被连接的多个表的最优序列,以响应查询;以及
配置计划以包括用于处理所述多个表的最优序列。
3.如权利要求1所述的计算机程序产品,其中所述操作还包括从所述定义推导计划的伪代码表示。
4.如权利要求1所述的计算机程序产品,其中所述生成还包括创建单函数,以调用预编译的查询执行组件和一个或多个其它预编译的查询执行组件来生成计划。
5.如权利要求4所述的计算机程序产品,其中所述单函数定义期望的结果,并且基于所识别的模式的匹配的至少一部分来访问来自两个或更多预定义并行化计划的集合中的预定义并行化计划。
6.如权利要求1所述的计算机程序产品,其中所述预编译的查询执行子组件包括以C++表示的一个或多个预编译的SQL操作。
7.一种系统,包括:
至少一个可编程处理器;以及
机器可读介质,其存储指令,当所述指令由所述至少一个可编程处理器执行时引起所述至少一个可编程处理器执行包括下列操作的操作:
接收查询请求,所述查询请求包括保存在基于列的存储装置中的数据库的查询的定义;
在查询的至少一部分中识别模式;
将所识别的模式与预定义模式的集合相匹配,每个预定义模式与保留在库中的多个预编译的查询执行子组件中的至少一个预编译的查询执行子组件相关联;
生成执行查询的计划,所述生成包括基于从所述定义推导的计划的伪代码表示、将与所匹配的模式相关联的预编译的查询执行子组件合并到计划中;以及
使用所生成的计划执行查询。
8.如权利要求7所述的系统,其中所述操作还包括:
基于将所识别的模式与预定义模式的集合的匹配,选择用于处理必须被连接的多个表的最优序列,以响应查询;以及
配置计划以包括用于处理所述多个表的最优序列。
9.如权利要求7所述的系统,其中所述操作还包括从所述定义推导计划的伪代码表示。
10.如权利要求7所述的系统,其中所述生成还包括创建单函数,以调用预编译的查询执行组件和一个或多个其它预编译的查询执行组件来生成计划。
11.如权利要求10所述的系统,其中所述单函数定义期望的结果,并且基于所识别的模式的匹配的至少一部分来访问来自两个或更多预定义并行化计划的集合中的预定义并行化计划。
12.如权利要求7所述的系统,其中所述预编译的查询执行子组件包括以C++表示的一个或多个预编译的SQL操作。
13.一种计算机实现的方法,包括:
接收查询请求,所述查询请求包括保存在基于列的存储装置中的数据库的查询的定义;
在查询的至少一部分中识别模式;
将所识别的模式与预定义模式的集合相匹配,每个预定义模式与保留在库中的多个预编译的查询执行子组件中的至少一个预编译的查询执行子组件相关联;
生成执行查询的计划,所述生成包括基于从所述定义推导的计划的伪代码表示、将与所匹配的模式相关联的预编译的查询执行子组件合并到计划中;以及
使用所生成的计划执行查询。
14.如权利要求13所述的计算机实现的方法,还包括:
基于将所识别的模式与预定义模式的集合的匹配,选择用于处理必须被连接的多个表的最优序列,以响应查询;以及
配置计划以包括用于处理所述多个表的最优序列。
15.如权利要求13所述的计算机实现的方法,还包括从所述定义推导计划的伪代码表示。
16.如权利要求13所述的计算机实现的方法,其中所述生成还包括创建单函数,以调用预编译的查询执行组件和一个或多个其它预编译的查询执行组件来生成计划。
17.如权利要求16所述的计算机实现的方法,其中所述单函数定义期望的结果,并且基于所识别的模式的匹配的至少一部分来访问来自两个或更多预定义并行化计划的集合中的预定义并行化计划。
18.如权利要求13所述的计算机实现的方法,其中所述预编译的查询执行子组件包括以C++表示的一个或多个预编译的SQL操作。
19.如权利要求13所述的计算机实现的方法,其中由至少一个可编程处理器完成接收、识别、匹配、生成和执行操作中的至少一个。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/332,189 US8914353B2 (en) | 2011-12-20 | 2011-12-20 | Many-core algorithms for in-memory column store databases |
US13/332,189 | 2011-12-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103177057A true CN103177057A (zh) | 2013-06-26 |
CN103177057B CN103177057B (zh) | 2017-09-19 |
Family
ID=46801283
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210433322.6A Active CN103177057B (zh) | 2011-12-20 | 2012-09-28 | 用于内存列存储数据库的多核算法 |
Country Status (3)
Country | Link |
---|---|
US (3) | US8914353B2 (zh) |
EP (1) | EP2608066B1 (zh) |
CN (1) | CN103177057B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016127851A1 (en) * | 2015-02-12 | 2016-08-18 | Huawei Technologies Co., Ltd. | Method and query optimization server for associating functions with columns for optimizing query execution |
CN106294772A (zh) * | 2016-08-11 | 2017-01-04 | 电子科技大学 | 分布式内存列式数据库的缓存管理方法 |
CN107077512A (zh) * | 2015-03-28 | 2017-08-18 | 华为技术有限公司 | 优化视图上的查询的系统和方法 |
CN108108473A (zh) * | 2018-01-02 | 2018-06-01 | 联想(北京)有限公司 | 数据查询方法以及服务器 |
CN111368146A (zh) * | 2018-12-26 | 2020-07-03 | 北京国双科技有限公司 | 一种路径信息的查询方法及装置、存储介质和处理器 |
CN112883082A (zh) * | 2021-02-24 | 2021-06-01 | 山东浪潮通软信息科技有限公司 | 一种查询动态列的实现方法、装置及设备 |
CN113704300A (zh) * | 2020-05-21 | 2021-11-26 | Sap欧洲公司 | 供数据检索方法使用的数据印记技术 |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8856193B2 (en) * | 2011-12-20 | 2014-10-07 | Sap Se | Merge monitor for table delta partitions |
JP5858307B2 (ja) * | 2012-04-27 | 2016-02-10 | 株式会社日立製作所 | データベース管理システム、計算機、データベース管理方法 |
US9031932B2 (en) * | 2012-09-06 | 2015-05-12 | Oracle International Corporation | Automatic denormalization for analytic query processing in large-scale clusters |
US11023487B2 (en) | 2013-03-04 | 2021-06-01 | Sap Se | Data replication for cloud based in-memory databases |
US9268807B2 (en) * | 2013-07-17 | 2016-02-23 | Sybase, Inc. | In-memory bitmap for column store operations |
US9959312B2 (en) | 2013-09-05 | 2018-05-01 | Sybase, Inc. | High performance index creation on sorted data using parallel query plans |
US10133659B2 (en) * | 2013-11-22 | 2018-11-20 | Sap Se | Proactive memory allocation |
WO2015120603A1 (en) | 2014-02-13 | 2015-08-20 | Sap Ag | Database calculation using parallel-computation in directed acyclic graph |
US10558571B2 (en) | 2014-03-20 | 2020-02-11 | Sybase, Inc. | Second level database file cache for row instantiation |
US10007692B2 (en) * | 2014-03-27 | 2018-06-26 | Microsoft Technology Licensing, Llc | Partition filtering using smart index in memory |
US9846567B2 (en) | 2014-06-16 | 2017-12-19 | International Business Machines Corporation | Flash optimized columnar data layout and data access algorithms for big data query engines |
US9633058B2 (en) | 2014-06-16 | 2017-04-25 | International Business Machines Corporation | Predictive placement of columns during creation of a large database |
US10437843B2 (en) | 2014-07-29 | 2019-10-08 | Microsoft Technology Licensing, Llc | Optimization of database queries via transformations of computation graph |
US10169433B2 (en) * | 2014-07-29 | 2019-01-01 | Microsoft Technology Licensing, Llc | Systems and methods for an SQL-driven distributed operating system |
US10169418B2 (en) * | 2014-09-24 | 2019-01-01 | International Business Machines Corporation | Deriving a multi-pass matching algorithm for data de-duplication |
US9779180B2 (en) * | 2014-10-27 | 2017-10-03 | Successfactors, Inc. | Detection of the N-queries via unit test |
US9767219B2 (en) * | 2014-10-27 | 2017-09-19 | Successfactors, Inc. | Automatic detection of queries missing order-by via unit test |
US9952808B2 (en) | 2015-03-26 | 2018-04-24 | International Business Machines Corporation | File system block-level tiering and co-allocation |
KR102415962B1 (ko) | 2015-03-30 | 2022-07-04 | 삼성전자주식회사 | 스토리지 시스템 및 그것의 동작 방법 |
US10073885B2 (en) | 2015-05-29 | 2018-09-11 | Oracle International Corporation | Optimizer statistics and cost model for in-memory tables |
US10552936B2 (en) | 2016-03-02 | 2020-02-04 | Alibaba Group Holding Limited | Solid state storage local image processing system and method |
US9720602B1 (en) | 2016-06-01 | 2017-08-01 | International Business Machines Corporation | Data transfers in columnar data systems |
US11243949B2 (en) * | 2017-04-21 | 2022-02-08 | Microsoft Technology Licensing, Llc | Query execution across multiple graphs |
US11010387B2 (en) * | 2017-10-06 | 2021-05-18 | Microsoft Technology Licensing, Llc | Join operation and interface for wildcards |
US11012452B1 (en) * | 2018-01-09 | 2021-05-18 | NortonLifeLock, Inc. | Systems and methods for establishing restricted interfaces for database applications |
CN109828974A (zh) * | 2019-02-28 | 2019-05-31 | 上海达梦数据库有限公司 | 数据重整方法、装置、设备和存储介质 |
US11853301B1 (en) * | 2019-03-29 | 2023-12-26 | Amazon Technologies, Inc. | Sharing compiled code for executing queries across query engines |
US11429607B2 (en) | 2019-09-20 | 2022-08-30 | Thoughtspot, Inc. | Machine language query management for low-latency database analysis system |
CN111541686B (zh) * | 2020-04-20 | 2023-02-28 | 杭州迪普科技股份有限公司 | 一种扫描器的调用方法和装置 |
KR20210149327A (ko) * | 2020-06-02 | 2021-12-09 | 에스케이하이닉스 주식회사 | 역색인 구조를 이용하여 검색을 수행하는 하드웨어 가속기 및 이를 포함하는 검색 시스템 |
US20230259859A1 (en) * | 2022-02-15 | 2023-08-17 | Sap Se | Sustainability footprint derivation framework |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6092063A (en) * | 1997-11-25 | 2000-07-18 | International Business Machines Corporation | Multi-level live connection for fast dynamic access to business databases through a network |
CN1609855A (zh) * | 2003-06-23 | 2005-04-27 | 微软公司 | 查询优化系统和方法 |
CN101216852A (zh) * | 2008-01-11 | 2008-07-09 | 孟小峰 | 基于序列模式的数据导入及查询方法 |
US20080256024A1 (en) * | 2007-04-13 | 2008-10-16 | Robert Victor Downer | Portable and Iterative Re-Usable Suboptimization of Database Queries |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5842196A (en) * | 1996-04-03 | 1998-11-24 | Sybase, Inc. | Database system with improved methods for updating records |
US6466931B1 (en) * | 1999-07-30 | 2002-10-15 | International Business Machines Corporation | Method and system for transparently caching and reusing query execution plans efficiently |
US6502089B1 (en) * | 1999-11-17 | 2002-12-31 | International Business Machines Corporation | Generating restriction queries using tensor representations |
US7024414B2 (en) * | 2001-08-06 | 2006-04-04 | Sensage, Inc. | Storage of row-column data |
US6985904B1 (en) | 2002-02-28 | 2006-01-10 | Oracle International Corporation | Systems and methods for sharing of execution plans for similar database statements |
US7945581B2 (en) | 2002-11-14 | 2011-05-17 | Lexisnexis Risk Data Management, Inc. | Global-results processing matrix for processing queries |
US7185003B2 (en) * | 2002-11-14 | 2007-02-27 | Seisint, Inc. | Query scheduling in a parallel-processing database system |
US7430549B2 (en) * | 2003-07-07 | 2008-09-30 | Netezza Corporaton | Optimized SQL code generation |
US7383246B2 (en) * | 2003-10-31 | 2008-06-03 | International Business Machines Corporation | System, method, and computer program product for progressive query processing |
EP1716505B1 (en) * | 2004-02-21 | 2018-01-10 | Microsoft Technology Licensing, LLC | Ultra-shared-nothing parallel database |
US8161037B2 (en) * | 2004-06-03 | 2012-04-17 | International Business Machines Corporation | Method for autonomically generating a query implementation that meets a defined performance specification |
US7877377B2 (en) * | 2004-06-03 | 2011-01-25 | International Business Machines Corporation | Dropping tautological predicates from SQL queries for reusability |
US8126870B2 (en) * | 2005-03-28 | 2012-02-28 | Sybase, Inc. | System and methodology for parallel query optimization using semantic-based partitioning |
US7464071B2 (en) * | 2005-04-28 | 2008-12-09 | Microsoft Corporation | System and method for forcing a query execution plan |
US7898817B2 (en) | 2006-10-17 | 2011-03-01 | Hewlett-Packard Development Company, L.P. | Circuit board assembly |
US8285707B2 (en) * | 2006-11-08 | 2012-10-09 | International Business Machines Corporation | Method of querying relational database management systems |
US7991763B2 (en) * | 2007-04-13 | 2011-08-02 | International Business Machines Corporation | Database query optimization utilizing remote statistics collection |
US9411861B2 (en) * | 2007-12-21 | 2016-08-09 | International Business Machines Corporation | Multiple result sets generated from single pass through a dataspace |
CA3014839C (en) * | 2008-10-23 | 2019-01-08 | Arlen Anderson | Fuzzy data operations |
US8190595B2 (en) * | 2009-03-28 | 2012-05-29 | Microsoft Corporation | Flexible query hints in a relational database |
US8224806B2 (en) * | 2009-07-31 | 2012-07-17 | Hewlett-Packard Development Company, L.P. | Selectivity-based optimized-query-plan caching |
KR101662843B1 (ko) | 2010-03-05 | 2016-10-14 | 삼성전자주식회사 | 데이터 통신 망에서의 스트리밍 서비스 장치 및 방법 |
US8666970B2 (en) * | 2011-01-20 | 2014-03-04 | Accenture Global Services Limited | Query plan enhancement |
-
2011
- 2011-12-20 US US13/332,189 patent/US8914353B2/en active Active
-
2012
- 2012-08-31 EP EP12006185.8A patent/EP2608066B1/en active Active
- 2012-09-28 CN CN201210433322.6A patent/CN103177057B/zh active Active
-
2014
- 2014-12-11 US US14/566,953 patent/US9424313B2/en active Active
-
2016
- 2016-08-18 US US15/240,432 patent/US10628419B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6092063A (en) * | 1997-11-25 | 2000-07-18 | International Business Machines Corporation | Multi-level live connection for fast dynamic access to business databases through a network |
CN1609855A (zh) * | 2003-06-23 | 2005-04-27 | 微软公司 | 查询优化系统和方法 |
US20080256024A1 (en) * | 2007-04-13 | 2008-10-16 | Robert Victor Downer | Portable and Iterative Re-Usable Suboptimization of Database Queries |
CN101216852A (zh) * | 2008-01-11 | 2008-07-09 | 孟小峰 | 基于序列模式的数据导入及查询方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016127851A1 (en) * | 2015-02-12 | 2016-08-18 | Huawei Technologies Co., Ltd. | Method and query optimization server for associating functions with columns for optimizing query execution |
CN107004034A (zh) * | 2015-02-12 | 2017-08-01 | 华为技术有限公司 | 将列与函数关联以优化查询执行的方法和查询优化服务器 |
CN107004034B (zh) * | 2015-02-12 | 2021-01-29 | 华为技术有限公司 | 将列与函数关联以优化查询执行的方法和查询优化服务器 |
CN107077512A (zh) * | 2015-03-28 | 2017-08-18 | 华为技术有限公司 | 优化视图上的查询的系统和方法 |
CN107077512B (zh) * | 2015-03-28 | 2020-10-16 | 华为技术有限公司 | 优化视图上的查询的系统和方法 |
CN106294772A (zh) * | 2016-08-11 | 2017-01-04 | 电子科技大学 | 分布式内存列式数据库的缓存管理方法 |
CN106294772B (zh) * | 2016-08-11 | 2019-03-19 | 电子科技大学 | 分布式内存列式数据库的缓存管理方法 |
CN108108473A (zh) * | 2018-01-02 | 2018-06-01 | 联想(北京)有限公司 | 数据查询方法以及服务器 |
CN111368146A (zh) * | 2018-12-26 | 2020-07-03 | 北京国双科技有限公司 | 一种路径信息的查询方法及装置、存储介质和处理器 |
CN113704300A (zh) * | 2020-05-21 | 2021-11-26 | Sap欧洲公司 | 供数据检索方法使用的数据印记技术 |
CN112883082A (zh) * | 2021-02-24 | 2021-06-01 | 山东浪潮通软信息科技有限公司 | 一种查询动态列的实现方法、装置及设备 |
CN112883082B (zh) * | 2021-02-24 | 2023-04-14 | 浪潮通用软件有限公司 | 一种查询动态列的实现方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103177057B (zh) | 2017-09-19 |
US20150095309A1 (en) | 2015-04-02 |
US20130159285A1 (en) | 2013-06-20 |
US8914353B2 (en) | 2014-12-16 |
US10628419B2 (en) | 2020-04-21 |
US20160357816A1 (en) | 2016-12-08 |
EP2608066B1 (en) | 2019-08-07 |
US9424313B2 (en) | 2016-08-23 |
EP2608066A2 (en) | 2013-06-26 |
EP2608066A3 (en) | 2013-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103177057A (zh) | 用于内存列存储数据库的多核算法 | |
Bacon et al. | Spanner: Becoming a SQL system | |
US20190324975A1 (en) | Hadoop olap engine | |
US10007698B2 (en) | Table parameterized functions in database | |
US20120239612A1 (en) | User defined functions for data loading | |
US8935232B2 (en) | Query execution systems and methods | |
US9977796B2 (en) | Table creation for partitioned tables | |
Zhou et al. | SCOPE: parallel databases meet MapReduce | |
US10048952B2 (en) | Compiler optimized data model evaluation | |
US7657505B2 (en) | Data retrieval from a database utilizing efficient eager loading and customized queries | |
CN103177062A (zh) | 用于高速内存在线分析处理查询和操作的加速查询操作器 | |
CN103177063A (zh) | 用于时间数据聚合的时间滑动操作器 | |
US11243958B2 (en) | Implementing contract-based polymorphic and parallelizable SQL user-defined scalar and aggregate functions | |
US11556537B2 (en) | Query plan generation and execution based on single value columns | |
Khayyat et al. | Fast and scalable inequality joins | |
US8880485B2 (en) | Systems and methods to facilitate multi-threaded data retrieval | |
Liu et al. | ETLMR: a highly scalable dimensional ETL framework based on mapreduce | |
US9870399B1 (en) | Processing column-partitioned data for row-based operations in a database system | |
US11507575B2 (en) | Complex query rewriting | |
Chao-Qiang et al. | RDDShare: reusing results of spark RDD | |
US11216457B1 (en) | Selectively assigning join operations for remote data processing | |
US9449046B1 (en) | Constant-vector computation system and method that exploits constant-value sequences during data processing | |
US12061603B1 (en) | Dynamic operator pruning based on state dependencies and intermediate results | |
WO2020147807A1 (en) | Bucketizing data into buckets for processing by code modules | |
US20230376485A1 (en) | Distributed query plan generation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
C53 | Correction of patent of invention or patent application | ||
CB02 | Change of applicant information |
Address after: German Waldo Applicant after: SAP SE Address before: German Waldo Applicant before: SAP AG |
|
COR | Change of bibliographic data |
Free format text: CORRECT: APPLICANT; FROM: SAP AG TO: SAP EUROPE AG |
|
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |