CN104769576B - 跳过树形连接 - Google Patents

跳过树形连接 Download PDF

Info

Publication number
CN104769576B
CN104769576B CN201380050050.4A CN201380050050A CN104769576B CN 104769576 B CN104769576 B CN 104769576B CN 201380050050 A CN201380050050 A CN 201380050050A CN 104769576 B CN104769576 B CN 104769576B
Authority
CN
China
Prior art keywords
connection
connection attribute
computer
tree
attribute
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
Application number
CN201380050050.4A
Other languages
English (en)
Other versions
CN104769576A (zh
Inventor
托德·L·费尔德赫伊曾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Enfu (USA) Co.,Ltd.
Original Assignee
Luo Jiqibuluo Ces Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Luo Jiqibuluo Ces Co Ltd filed Critical Luo Jiqibuluo Ces Co Ltd
Publication of CN104769576A publication Critical patent/CN104769576A/zh
Application granted granted Critical
Publication of CN104769576B publication Critical patent/CN104769576B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24544Join order optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/332Query formulation
    • G06F16/3325Reformulation based on results of preceding query

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Operations Research (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

提出了一种用于连接来自数据库表的记录的方法。将连接属性排序为序列S0,并且将作用域C初始化为空。识别包括连接属性A的表,该连接属性是S0中的第一个。新序列S从S0中删掉A。遍历每个所识别的表的迭代按照连接属性A的顺序进行。该迭代使用针对每个所识别的表的树形索引结构,在该树形索引结构中索引关键字包括按照S0顺序的所识别的表中的所有连接属性。针对在迭代期间定位的连接属性的每个匹配值v,通过将“A=v”附加至作用域C来创建新作用域Cv。如果S为空,则输出对应于作用域Cv的元组。否则,将S0设定为S并且针对每个作用域Cv,将C设定为Cv并且递归调用从识别步骤开始的步骤。

Description

跳过树形连接
相关申请的交叉引用
本申请要求于2012年9月27日提交的题为“Leapfrog Tree-Join”的美国临时申请No.61/706,484的权益。该申请的全部内容通过引用合并到本文。
背景技术
本发明大体涉及数据库操作,并且更具体地涉及对关系数据库表的连接操作。
数据库管理系统使得用户可以存储和更新大量信息,同时还支持对该信息的查询。对来自若干表的数据进行组合是关系数据库管理系统在进行数据库查询时所使用的基本操作。在连接操作中,一个或更多个条件指定应该如何使每个参与表中的行相关联以生成查询结果。尽管可以进一步处理连接操作的输出来生成查询结果,但是一个或更多个连接操作的成本在时间和空间二者方面通常是显著的。提出了用于实现连接的若干算法,所述连接包括分类合并连接、嵌套循环连接、索引嵌套循环连接以及散列连接。这些算法通常用于在将更复杂的连接查询分解为成对连接序列的情况下一次连接两个表。
发明内容
实施方式包括一种用于根据关于连接属性集S的连接条件集合对来自数据库中的表的集合的记录进行连接的方法、系统以及计算机程序产品。一方面包括:将连接属性S排列为有序排列S0,以及将作用域C初始化为空。一方面包括:识别在数据库表的集合中的包括连接属性A的表,所述连接属性A是有序序列S0的第一个。一方面包括:创建从S0中删掉了连接属性A的连接属性的新序列S'。一方面还包括:遍历所识别的表中的每个表按照连接属性A的顺序进行迭代,所述迭代基于针对所识别的表中的每个表的树形索引结构,在所述树形索引结构中索引关键字包括所识别的表中的按照S0顺序的所有连接属性。一方面还包括:针对在迭代期间定位的连接属性的每个匹配值v,通过将“A=v”附加至作用域C来创建新作用域Cv。一方面还包括:确定S'是否为空,并且基于确定出S'为空,输出对应于作用域C的元组。一方面还包括:基于确定出S'不为空,将S0设定为S'并且针对每个作用域Cv,将C设定为Cv并且对识别、创建、迭代、添加以及确定进行递归调用。
通过本发明的技术来实现附加特征和优点。在本文中详细地描述了本发明的其他实施方式和方面并且认为本发明的其他实施方式和方面是要求保护的发明的一部分。为了更好地理解具有优点和特征的本发明,参照说明书并参照附图。
附图说明
在说明书的结束部分处的权利要求书中具体指出并且清楚地主张被视为本发明的主题。根据结合附图所做的以下详细描述,本发明的前述及其他特征和优点变得明显,在附图中:
图1描绘了根据实施方式的示例性方法的流程图;
图2描绘了根据实施方式的可以在其上实现跳过树形连接的系统的框图。
具体实施方式
示例性实施方式涉及用于一次计算多个数据库表的连接的新型技术,在本文中将该新型技术称为“跳过树形连接”。跳过树形连接对共享属性的任意数量的表进行同时的同等连接。本文中描述的实施方式获得比成对连接操作的组合更佳的复杂度约束(例如,在输入变得更多时可能需要较少的步骤)。
可以如下进行合并连接算法。作为初始假设,可以考虑都包含属性v的表R1、R2、……、Rr的集合,其中,表按v递增的顺序被物理地分类。通过使用游标扫描每个表来获得表关于属性v的合并连接。在游标Cr处具有最小v值的表R将Cr前移直到Cr处的值至少为在任意游标处的v的最大值。当所有表一致为单个v值时,通过将v与每个表中查询所需的的其他属性值进行组合来生成输出记录。在传统合并连接中,在表中存在具有值v的多个记录会导致针对单个v值的多个输出记录。
除按v分类以外,还可以假设以上每个表具有关于v的树形索引。在实施方式中,使用B树结构,然而还可以使用替代的树形结构,例如但不限于trie结构。在使用树形索引的情况下,因为并非需要扫描每个v值,所以可以更有效地实现合并连接。例如,可以假设表R1具有关键字为{1、2、3、……、1000}的记录,以及表R2具有关键字为{1、750}的记录。然后,在算法经过v=1之后,任何游标处的最大值为v=750。系统可以在R1中的关于v的索引中搜索750,而不是线性地扫描R1直到到达v=750为止。在寻找下一个项目时,最坏情况下的复杂度在表的大小方面从线性下降至对数。使用简单的树遍历技术,在大小为n的表中搜索关键字的递增序列的总成本m具有复杂度O(m log(n/m))。
如本文中所述,实施方式可以使用合并连接的变型,该变型称为游标连接。游标连接采用如上所述的树形索引并且将与连接的“作用域(scope)”对应的属性值的元组SC作为输入。作用域从参与表中指定某些属性值,并且仅与这些值匹配的记录参与连接。
通过在表中找到在SC中提及的属性上与SC匹配的第一行来确定针对拥有连接属性的每个输入关系的游标。对每个输入表给定适当索引,可以有效地找到这些游标位置。一旦游标中的一个游标指向具有值在作用域外的属性(即,不同于SC中的对应属性的值)的输入记录,连接就终止。游标连接像合并连接那样起作用,不同之处在于游标连接如何生成其输出。当游标连接遇到针对其所有参与表具有至少一个匹配记录的连接属性的新值v时,游标连接输出等于SC∪{A=v}的新作用域,其中A为连接属性。即使v出现在参与表的许多记录中,但是仅输出包含v的一个作用域实例。
在一些实施方式中,跳过树形连接对以任何形式共享属性的任意数量的表R1、R2、……、Rr进行同时的同等连接。例如,查询Q=R(A,B),S(B,C),T(A,C)具有三个连接属性A、B和C。通常,令A1、……、Ak为连接属性(即,在连接表达式中的两个或更多个关系中提及的那些)。首先,可以选择属性的排序。该顺序确定在跳过树形连接中的处理的顺序。基于部件表中的数据的分布,不同顺序会导致不同运行时间。查询优化器选择下述顺序:所述顺序根据连接操作的成本模型以及建立并非已存在的任何所需索引的成本来使期望成本最小化。为了简化说明,并且不失一般性,假设所选择的排序为Ord=<A1、……、Ak>。
在一些实施方式中,跳过树形连接算法假设:对于每个参与关系R,都存在按照与Ord一致的顺序的、对来自R的连接属性的组合的索引。对于以上查询Q,并且在连接属性的排序为A、B、C的情况下,可以期望针对R的关于(A,B)的索引、针对S的关于(B,C)的索引以及针对T的关于(A,C)的索引。如果这样的索引在连接之前不存在,则可以建立索引以应用跳过树形连接算法。为了提高访问的局部性,在连接属性之后还可以包括查询所需的非连接属性,作为被索引属性。通过以这种方式包括非连接属性,实现了仅索引设计。在一些实施方式中,如果需要将索引存储在次级存储器上,则需要进行分配以使得叶节点以靠近-相邻的方式按顺序被存储。
在一些实施方式中,跳过树形连接通过关于第一连接属性A1按顺序地连接表来开始。其属性中包括A1的所有表参与关于A1的协同游标连接。该最初游标连接的作用域为标注为[]的空作用域。在通过游标连接生成针对A1的每个值a1时,暂停外部A1连接的执行,并且在包括A2的所有表中,利用作用域[A1=a1]启动对A2的内部游标连接。针对在该内部连接中还包括A1的表,作用域[A1=a1]将内部连接限制为参与关系的仅a1-片段。因为索引按<A1、……、Ak>顺序存在于每个关系上,所以游标连接可以顺序地行进通过在每个层级处的每个索引,并且不需要重识别每个调用上的开始游标。
在一些实施方式中,其余的连接以类似于上述的形式递归地进行。当生成针对Aj的值aj时,暂停执行操作并且利用由Aj=aj扩展的作用域来启动对Aj+1的内部游标连接。在最后层级Ak,通过游标连接生成具有形式(a1,……,ak)的输出元组,包括查询所需的所有连接属性。最后层级输出为跳过树形连接的输出。在完成关于Aj+1的每个游标连接之后,控制返回至对Aj的游标连接,其中,属性Aj的下一个匹配值被识别并且对Aj+1的新游标连接被启动。当A1的最后匹配值被处理并且最外游标连接完成时,算法结束。
如果在跳过树形连接中连接属性的顺序Ord=<A1、……、Ak>具有以下特性则将其称为前缀相干:对于参与连接的每个表,在该表中的连接属性形成Ord的前缀<A1、……、Aj>,其中一些j≤k(不同的表可以具有不同j值)。对于前缀相干配置,跳过树形连接的实施方式在不产生重复记录的情况下有效地进行对参与表的索引支持合并连接。关于本文中描述的跳过树形连接的实施方式的处理效益可以在并非前缀相干的情况下来实现。例如,诸如R(A,B)、S(B,C)、T(A,C)等连接不具有连接属性的前缀相干顺序。
在一些实施方式中,跳过树形连接的输出包括仅连接属性的组合,并且没有重复,从而类似基于关键字的连接索引。以下示例描述了对样本数据库的跳过树形连接的操作。
参照图1,概括地示出了用于进行跳过树形连接的示例性方法100的流程图。方法100可以由一个或更多个部件、装置或系统诸如本文中描述的那些来执行。方法100可以用于对来自一个或更多个数据库表(例如,至少三个数据库表)的关于连接属性集S的记录进行连接。
在说明性示例中,数据库表示由客户向表示许多供应商的联机零售商订购的订单。模式如下:
客户(CId,国家,年龄)表示客户的标识符、居住国家以及年龄;
供应商(SId,产品,国家)表示由供应商从每个国家运送的产品;
订单(CId,SId,产品)表示客户对来自供应商的产品的订单;以及
含金属(产品)指示产品是否包含相当大量的金属成分。
以下表表示可以存储在与该示例有关的数据库中的记录。
表1——客户记录
表2——供应商记录
表3——含金属记录
表4——订单记录
在该示例中,SQL查询:
从客户C、供应商S、订单O、含金属M中选择CId、SId、产品、国家
其中,C.CId=O.CId并且C.国家=S.国家并且O.SId=S.Sid并且O.产品=S.产品并且O.产品=M.产品
试图识别对在同一国家内运送的含金属产品进行订购的客户。
在块102处,将连接属性集S初始化为有序序列S0。在当前示例中,跳过树形连接针对连接属性选择排序或序列S0<Cid,SId,产品,国家>。在该示例中,序列S0为非前缀相干有序序列。在实施方式中,序列S0可以是属性的字母排序。在实施方式中,查询优化器选择序列S0的顺序。
在块103处,将作用域C初始化为空作用域。
在块104处,识别包括S中的第一连接属性A的表。参照当前示例,假设针对客户的关于(CId,国家)的索引、针对供应商的关于(SId,产品,国家)的索引、针对含金属的关于(产品)的索引以及针对订单的关于(CId,SId,产品)的索引。包括第一连接属性CId的表包括客户表和订单表。
在块106处,确定从先前序列S0删掉第一属性A(例如,CId)的连接属性的新序列S'。参照示例,新序列S'为<SId,产品,国家>。
在块108处,在针对每个表的树形索引结构的辅助下,以协同方式遍历所识别的表中的每个表按照连接属性A的顺序进行迭代,其中,树形索引结构的关键字包括按S0顺序出现在表中的所有连接属性。在示例中,协同的迭代按照Cid的顺序遍历客户表和订单表。第一匹配为CId=Alice。
在步骤110,利用作用域[CId=Alice]来启动对订单与供应商之间的SId的第二层级递归游标连接。对于该作用域的第一(以及唯一)匹配具有SId=Acme,由此导致作用域为[CId=Alice,SId=Acme]的对产品的第三层级递归游标连接。
三个表即订单、供应商和含金属参与该第三层级游标连接。再次,存在一个匹配,其中产品=锤子。利用作用域[CId=Alice,SId=Acme,产品=锤子]来启动对国家的第四层级游标连接。第四层级游标连接具有一个匹配,其中国家=GA,由此导致如在步骤110中描述的元组(Alice,Acme,锤子,GA)的输出,这是因为不存在有其余的连接属性,即,S'为空。在第四、第三和第二层级游标连接结束的情况下,算法可以移动至第一层级游标连接结果中的下一个Cid Bob。
处理按照如块110中所述的方式继续,在块110处,对于在所有参与表中的A的每个匹配值v,如果S'为空,则可以输出与在块110的每个递归实例中识别的匹配值对应的元组。否则,可以在将S设定成S'以及基于连接属性的匹配值对作用域进行扩展的情况下来递归调用块104至块110。
返回参照示例,当对Alice的处理结束时,对Bob进行类似处理(例如,如块104至块110所示),不同之处在于:在该示例中第四层级游标连接未找到匹配,这是因为Bob的国家MA与Bob订购的Goodstore图钉的国家(NY)不匹配。算法移动至在顶层游标连接的结果中的下一个CId Joe。可以注意到,跳过了Fred;尽管Fred存在于客户表中,但Fred未下订单。
针对[CId=Joe]的第二层级游标连接识别SId=Acme的一个匹配。尽管存在有三个匹配行,却仅存在一个匹配SId,这是因为所有的三个行共享相同SId。用作用域[CId=Joe,SId=Acme]来启动第三层级游标连接。该连接具有两个匹配,从而导致具有相应的作用域[CId=Joe,SId=Acme,产品=图钉]和[CId=Joe,SId=Acme,产品=锤子]的两个独立的第四层级游标连接。(尽管Joe订购了磁带,产品=磁带仍不在第三层级游标连接结果中,因为磁带不含金属。)两个作用域都导致第四层级游标连接中的匹配,以及对应的输出元组(Joe,Acme,图钉,GA)和(Joe,Acme,锤子,GA)。控制返回至顶层游标连接,从而完成并且结束跳过树形连接的执行。
在一些实施方式中,可以遍历所生成的连接属性值的元组集。针对连接属性值的每个元组T,可以查询连接表中的至少之一来确定从在连接属性上与T匹配的记录中额外选择的非连接属性值。在示例中,假定属性“年龄”被另外包括在SQL查询的选择子句中。针对客户表的关于(CId,国家)的索引可以用于找到与连接结果中的(CId,国家)对对应的客户记录并且检索年龄值。可以从所查询的每个表的记录中输出T中与所选择的非连接属性值相关联的事件。
在一些实施方式中,过滤条件可以与方法100一起应用。例如,作为块108的一部分,可以忽略违反过滤条件的行。只要连接属性值被读取,就可应用关于连接属性的过滤条件。仅跳过不满足条件的值。还可以将关于非连接属性的过滤条件合并在若干实施方式之一中。
为了说明非连接属性的过滤,假定示例查询被修改成使得附加条件“年龄>25”被包括在SQL查询的Where子句中。用于过滤的一个实施方式计算整个连接结果,包括如上的年龄属性,并且去除违背关于年龄的条件的记录,作为最终步骤。
另一实施方式在算法的较早阶段使用针对客户表的关于(CId,国家)的索引,以从客户表检索年龄值。在针对连接属性的不同顺序<CId,国家,产品,SId>下,在前进至第三层级游标连接之前,在第二层级游标连接之后可以检索年龄,在该阶段可以跳过没有合格年龄值的(CId,国家)对。
另一实施方式使用扩展的索引结构。在示例中,假定代替关于(CId,国家)的索引,系统对客户表进行关于(CId,国家,年龄)的索引。可以以年龄值也被查询的方式来遍历(CId,国家,年龄)索引,并且仅年龄在过滤范围内的记录前进至连接算法中的下一步骤。
在一些实施方式中,将树形索引构造为B树。
在一些实施方式中,将树形索引构造为trie结构。
如果表具有在连接中等价的不同属性名称,则该等价的属性被视为等同,并且在限定作用域、属性顺序以及其他算法步骤时任意地选择名称中之一。
跳过树形连接的实施方式可以具有与对数因子内的其他连接相同的最坏情况最优约束。对数因子是由于树形索引的遍历而产生,而非经由散列索引的直接查找产生。实际上,树的上层具有相对较小的存储空间占用量,并且可以被缓存在更快的存储器(例如,随机存取存储器或“RAM”)中,然而叶表和基表可以被存储在更慢的存储器(例如,磁盘)中。因此,用于遍历树的额外步骤可能不会有显著的性能开销。
在多个示例中,跳过树形连接与现有的或当前的连接方法和技术相比,表现显著更佳。为了突出显示该比较,概述了当前连接算法中的关键步骤。当当前连接算法将来自两个关系(或子连接结果)R和S的数据进行组合时,认为一次一个地组合R和S的片段。例如,假定,现有连接算法正基于C将S(B,C)与T(A,C)进行组合,以及先前步骤已生成了可能合格的(A,B)值的集合V。针对V中的每个(a,b)对,将S的具有B=b的片段FS,b与T的具有A=a的片段FT,a进行连接。如果FS,b小于FT,a,则将FS,b中的值用于搜寻关于FT,a的散列索引。相反,如果FT,a小于FS,b,则将FT,a中的值用于搜寻关于FS,b的散列索引。以这种方式,所做的操作与更小片段的大小成比例。
跳过树形连接的实施方式的相应步骤使用游标连接对FS,b和FT,a进行组合。例如考虑下述情况:FS,b中的C值为{-km、-(k-1)m、……、-m、1、2、……、k}并且FT,a中的C值为{-k、-(k-1)、……、-1、m、2m、……、km},其中k和m为整数。每个输入的大小为2k,当前连接算法将进行2k次散列索引查询。实际连接结果包含结果,其中为x的整数部分。游标连接要搜索的次数与成比例,从而较之现有连接算法得到了O(m/log(m))因子改善。Log(m)因子为使用树形索引跳过O(m)个元素的成本。
跳过树形连接的另一优点为其可以以简单的方式被扩展以处理带连接。对表R和S的带连接条件的示例可以是“R.A-c1≤S.A≤R.A+c2”,其中c1和c2为常数。因为记录按照连接属性顺序进行索引,所以在相应的游标连接期间,匹配将被定位至可以被缓存在快速存储器中的带。使用散列索引的算法不能以这种方式定位匹配。
对于一些查询,需要连接属性以外的附加属性。在一些实施方式中,跳过树形连接可以被扩展成在游标连接步骤期间检索非连接属性中的一个或更多个属性。该检索在其被适当索引(例如包括连接属性和所需的非连接属性的索引)支持的情况下是有效的。当过滤条件限制非连接属性Ri.B的值时,一旦检索到Ri.B时就可应用该过滤,以过滤出行并且减小用于跳过树形连接的剩余部分的工作量。
可选地,可以将所检索的非连接属性记录在作用域中,使得其可以与连接属性并排地输出。然而,在跳过树形连接内包括非连接属性可能增加算法的复杂度。在以下示例中,连接属性值在输入关系(具有不同非连接属性值)中出现多次,并且在跳过树形连接内对这些非连接属性进行跟踪所需的簿记是非常重要的。该簿记是耗费性的,因为跳过树形连接的较后阶段将从结果中去除连接属性值。
作为说明性示例,考虑具有非连接属性D的连接R(A,B,D)、S(B,C)、T(A,C)。可以假设表R包含以下形式的n个记录:形式(1,1,i),其中i=1、……、n;表S包含单个记录(1,2);并且表T包含单个记录(1,1)。可以假设针对跳过树形连接选择的顺序为<A、B、C>,并且D包括在中间游标连接的作用域中,所述中间游标连接的作用域还包括A和B。关于A的在R与T之间的第一游标连接将生成形式为[A=1]的一个作用域记录。在第二层级,算法生成形式为[A=1,B=1,D=i]的n个作用域记录,其中工作量与n成比例。在最后层级,关于C的游标连接全部为空,导致空的输出结果。如果从作用域中删掉了D,则所付出的工作量将会不与n成比例。
因为在跳过树形连接内包括非连接属性可能是效率低下的,所以算法可以推迟非连接属性的检索,直到跳过树形连接完成之后为止。跳过树形连接的输出可以与每个表的连接属性的索引一起使用,以检索附加的非连接属性。
还可以通过在连接前应用过滤条件来减小算法工作量。考虑查询Q'=σD>50(R(A,B),S(B,C),T(A,C,D))。如果关于D的树形索引能够用于T,则条件D>50从T识别合格的行子集T'。即使在没有索引的情况下,仍可以通过扫描全部T来构建T'。可以将T'分类以及关于(A,C)进行索引,用于随后的跳过树形连接。如果条件是充分地精心选择的,则可以通过减小连接工作量来抵消先前的过滤的工作量。
在实施方式中,通过查询优化器来选择适当属性顺序,查询优化器是本领域公知的数据库系统部件。属性顺序确定在跳过树形连接中的游标连接步骤的顺序。在传统关系数据库中,选择连接顺序是较复杂的问题并且已提出了若干启发式算法。描述数据库表的统计信息被存储并维护。这些统计信息用于估算中间结果的基数,使得可以避免不必要的大的中间结果。跳过树形连接排序问题与针对传统数据库的排序问题类似,并且可以使用类似启发式法来估算在不同排序下的处理成本。
在复杂查询中,跳过树形连接可以用于计算所有参与表的连接。可替代地,跳过树形连接可以应用于表的子集并且其他算法可以用于将结果与其余表进行组合。可以使用多个跳过树形连接来评估单个查询,每个跳过树形连接应用于参与表的不相交的子集和/或中间结果。实施方式中的跳过树形连接的输出具有<A1、……、Ak>顺序,这是可以由后续连接或聚合算子所利用的特性。
跳过树形连接的变型可以用于计算除同等连接以外的操作。可以通过仅包括出现在任何输入中的A的属性值对n个表的游标连接进行概括,以生成其输出的联合(对属性A)。可以在仅稍微增加复杂度的情形下来实现其他操作,诸如集合差和“n个匹配中的j”(1≤j≤n)。
在一些实施方式中,一种或更多种方法可以以访问一类或更多类存储器的一个或更多个处理器的指令集的形式来实施。可以以硬件或软件来编码指令。可以使用许多类的平台,包括但不限于:计算机、移动电话、平板装置、游戏控制台、网络管理装置、现场可编程门阵列以及基于云的计算机系统。本公开内容的方面可以部署在多个装置上以便并行地操作。实施方式可以用作较大系统诸如数据库管理系统的部件。
参照图2,概括地示出了用于一次自动地计算多个表的连接的示例性系统200的框图。系统200包括跳过树形连接算法210,该算法由位于主机系统204上的一个或更多个计算机程序来执行。在实施方式中,跳过树形连接算法210的全部或一部分为在主机系统204上执行的数据库管理系统的一部分。在另一实施方式中,跳过树形连接算法210的全部或一部分为支持事务处理和查询二者的系统的部件。
在图2中描绘的系统200包括一个或更多个用户系统202,在一个或更多个地理位置处的用户(例如,终端用户、数据库管理员)可以通过用户系统202连接主机系统204,以启动执行数据库查询和/或事务处理的程序。用户系统202经由网络206耦接至主机系统204。每个用户系统202可以使用执行计算机程序的通用计算机来实现,所述计算机程序用于执行本文中所描述的处理。用户系统202可以是个人计算机(例如,膝上型计算机、平板计算机、蜂窝电话)或主机附接的终端。如果用户系统202为个人计算机,则本文中描述的处理可以由用户系统202和主机系统204共享。用户系统202还可以包括游戏控制台、网络管理装置以及现场可编程门阵列。此外,多个用户系统202和/或主机系统204可以并行操作以执行跳过树形连接。
网络206可以是任何类型的已知网络,包括但不限于:广域网(WAN)、局域网(LAN)、全球网(例如,因特网)、虚拟专用网(VPN)、云网络以及内联网。网络206可以使用无线网络或本领域已知的任何种类的物理网络实现方式来实现。用户系统202可以通过多种网络(例如,蜂窝和因特网)耦接至主机系统,使得并非所有用户系统202都通过相同的网络来耦接至主机系统204。用户系统202和主机系统204中的一个或更多个系统可以以无线方式连接至网络206。在一个实施方式中,网络为因特网并且一个或更多个用户系统202执行用户接口应用(例如,web浏览器)以通过网络206连接主机系统204。在另一示例性实施方式中,用户系统202直接地(即,不通过网络206)连接至主机系统204。在又一实施方式中,主机系统204直接地连接至或包含存储装置208。
存储装置208包括与一次计算多个表的连接有关的数据,并且存储装置208可以使用用于存储电子信息的多种装置来实现。在实施方式中,存储在存储装置208中的数据包括但不限于:一个或更多个数据库、数据库表、树形索引以及由本文中描述的实施方式使用的其他数据。应理解,存储装置208可以使用包含在主机系统204中的存储器或者作为单独的物理装置的存储器来实现。存储装置208作为遍及包括网络206的分布式环境的统一数据源,可以逻辑上可寻址。存储在存储装置208中的信息可以经由主机系统204和/或经由用户系统202被检索和操纵。
图2中描绘的主机系统204可以使用响应于存储在可由服务器访问的存储介质中的计算机程序而操作的一个或更多个服务器来实现。主机系统204可以作为网络服务器(例如,web服务器)来操作以与用户系统202通信。主机系统204操作来向用户系统202发送信息和从用户系统202接收信息并且可以进行关联任务。主机系统204还可以包括防火墙,该防火墙用于阻止对主机系统204的未经授权的访问以及对经授权的访问施加任何限制。例如,管理员能够访问整个系统并且具有修改系统的部分的权限。防火墙可以使用本领域已知的常规硬件和/或软件来实现。
主机系统204还可以操作为应用服务器。主机系统204执行一个或更多个计算机程序(包括跳过树形连接算法210)来提供如本文中所述的实施方式的方面。可以通过给用户系统202提供应用来由用户系统202和主机系统204共享处理。可替代地,用户系统202可以包括用于进行本文中所述的处理的一部分或全部的独立软件应用。如先前所述,应理解,可以采用单独的服务器来实现网络服务器功能和应用服务器功能。可替代地,网络服务器、防火墙以及应用服务器可以由运行计算机程序以执行必要功能的单个服务器来实现。
如本领域技术人员理解的,本发明各方面可以实施为系统、方法或计算机程序产品。因此,本发明各方面可以采用整体硬件实施方式的形式、整体软件实施方式(包括固件、常驻软件、微代码等)的形式或将软件和硬件方面进行结合的实施方式的形式,这些形式在本文中可以统称为“电路”、“模块”或“系统”。此外,本发明各方面可以采用实施在一个或更多个计算机可读介质中的计算机程序产品的形式,所述一个或更多个计算机可读介质包含有计算机可读程序代码。
可以使用一个或更多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。例如,计算机可读存储介质可以是但不限于电子的、磁的、光学的、电磁的、红外线的或半导体的系统、设备、或装置,或前述的任何适当组合。计算机可读存储介质的更具体示例(非穷举列出)可以包括如下:具有一个或更多个线的电连接件、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式致密盘只读存储器(CD-ROM)、光存储装置、磁存储装置,或前述的任何适当组合。在本文档的上下文中,计算机可读存储介质可以是任何有形介质,该有形介质可以包含或存储由指令执行系统、设备或装置使用的或与指令执行系统、设备或装置有关的程序。
例如,计算机可读信号介质可以包括在基带中或者作为载波的一部分的、包含有计算机可读程序代码的传播数据信号。这样的传播信号可以采用多种形式中的任何形式,包括但不限于:电磁的、光学的,或其任何适当组合。计算机可读信号介质可以是不为计算机可读存储介质的并且可以对由指令执行系统、设备或装置使用的或者与指令执行系统、设备或装置有关的程序进行通信、传播或传送的任何计算机可读介质。
可以使用任何适当的下述介质来传送包含在计算机可读介质上的程序代码:所述介质包括但不限于无线、有线、光纤电缆、RF等,或前述的任何适当组合。
用于执行本发明各方面的操作的计算机程序代码可以以一种或更多种编程语言的任何组合来编写,所述编程语言包括面向对象编程语言例如Java、Smalltalk、C++等,以及常规过程式编程语言例如“C”编程语言或类似的编程语言。程序代码可以完全地在用户的计算机上执行、部分地在用户的计算机上执行,作为独立软件包部分地在用户的计算机上且部分地在远程计算机上执行,或者完全地在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络包括局域网(LAN)或广域网(WAN)连接至用户的计算机,或者可以与外部计算机(例如,通过使用因特网服务供应商的因特网)进行连接。
以上参照根据发明的实施方式的方法、设备(系统)和计算机程序产品的流程图和/或框图描述了本发明的各方面。要理解的是,流程图和/或框图中的每个块以及流程图和/或框图中的块的组合可以通过计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机、或其他可编程数据处理设备的处理器以产生机构,使得经由计算机或其他可编程数据处理设备的处理器执行的指令创建用于实现流程图和/或框图中的一个或多个块中指定的功能/动作的装置。
这些计算机程序指令还可以存储在计算机可读介质中,该计算机可读介质可以引导计算机、其他可编程数据处理设备、或其他装置以特定方式起作用,以使得存储在计算机可读介质中的指令产生制品,该制品包括实现流程图和/或框图的一个或更多个块中指定的功能/动作的指令。
计算机程序指令还可以被加载到计算机、其他可编程数据处理设备、或其他装置上以使得待在计算机、其他可编程设备、或其他装置上执行一系列操作步骤产生计算机实现的处理,以使得在计算机或其他可编程设备上执行的指令提供用于实现流程图和/或框图的一个或更多个块中指定的功能/动作的处理。
附图中的流程图和框图示出了根据本发明各实施方式的系统、方法和计算机程序产品的可能实现方式的体系结构、功能和操作。在这方面,流程图或框图中的每个块可以表示代码的模块、段或部分,所述代码的模块、段或部分包括用于实现特定的一个或更多个逻辑功能的一个或更多个可执行指令。还应注意,在一些替选实现方式中,在块中标注的功能可以不按照图中标注的顺序发生。例如,事实上,连续地示出的两个块可以基本上并行地执行,或者这些块有时可以以相反的顺序来执行,这取决于所涉及的功能。还应注意,可以通过执行特定功能或动作的基于专用硬件的系统或专用硬件与计算机指令的组合来实现框图或流程图示中的每个块以及框图和/或流程图示中的块的组合。
本文使用的术语仅出于描述特定实施方式的目的并且并非旨在限制发明。如本文所使用的,单数形式“一个(a)”、“一个(an)”以及“该(the)”旨在也包括复数形式,除非上下文清楚地另外指出。还将理解,本说明书中使用的术语“包括(comprises)”和/或“包括(comprising)”指明存在所陈述的特征、整数、步骤、操作、元件和/或部件,但并不排除存在或添加一个或更多个其他特征、整数、步骤、操作、元件、部件,和/或其组合。
权利要求中的对应结构、材料、动作以及所有功能性限定的装置或步骤的等同替换旨在包括与其他要求保护的元件(如特别声明的)一起执行功能的任何结构、材料或动作。本发明的描述出于说明和描述的目的而示出,而并非旨在穷举或以所公开的形式限制本发明。对本领域的普通技术人员来说,在不偏离本公开的范围和精神的情况下,许多修改和变型是明显的。选择和描述实施方式是为了最佳地说明本发明的原理和实际应用,并且使本领域的其他普通技术人员能够理解具有适于预期的特定用途的各种修改的各个实施方式的发明内容。
本文中描绘的流程图为仅一个示例。在不偏离本发明的精神的情况下可以存在有该图或本文中描述的步骤(或操作)的许多变型。例如,可以按不同顺序执行步骤或者可以添加、删除或修改步骤。这些变型中的所有变型被视为是要求保护的发明的一部分。
尽管描述了本发明的优选实施方式,但是应理解,本领域技术人员现在和将来可以作出落在所附权利要求的范围内的各种改进和增强。这些权利要求应该被视为维持对最初描述的本发明的适当保护。

Claims (22)

1.一种用于根据关于连接属性集S的连接条件集合对来自数据库中的至少三个表的集合的记录进行连接的方法,所述方法包括:
将所述连接属性集S排列为有序序列S0
将作用域C初始化为空;
识别在所述表的集合中的包括连接属性A的表,所述连接属性A是所述有序序列S0中的第一个;
创建从S0中删掉了所述连接属性A的连接属性的新序列S';
遍历所识别的表中的每个表按照连接属性A的顺序进行迭代,所述迭代基于针对所识别的表中的每个表的树形索引结构,在所述树形索引结构中索引关键字包括按照S0顺序的所识别的表中的所有连接属性;
针对在所述迭代期间定位的所述连接属性的每个匹配值v,通过将“A=v”附加至所述作用域C来创建新作用域Cv
确定S'是否为空;
基于确定出S'为空,针对每个v输出对应于所述作用域Cv的元组;以及
基于确定出S'不为空,将S0设定为S'并且针对每个作用域Cv,将C设定为Cv并且递归调用所述识别、所述创建、所述迭代、所述附加、所述确定、所述输出以及所述递归调用。
2.根据权利要求1所述的方法,其中,所述有序序列S0为非前缀相干有序序列。
3.根据权利要求1所述的方法,其中,通过所述迭代跳过所述数据库表中的满足过滤条件的行。
4.根据权利要求1所述的方法,还包括建立树形索引结构。
5.根据权利要求1所述的方法,其中,所述树形索引结构为B树结构。
6.根据权利要求1所述的方法,其中,所述树形索引结构为trie结构。
7.根据权利要求1所述的方法,其中,来自数据库表的非连接属性值连同所述元组一起被输出。
8.根据权利要求1所述的方法,其中,采用查询优化器来确定所述有序序列。
9.一种用于根据关于连接属性集S的连接条件集合对来自数据库中的至少三个表的集合的记录进行连接的系统,所述系统包括:
存储器,所述存储器具有计算机可读指令;以及
处理器,所述处理器用于执行所述计算机可读指令以进行下述方法,该方法包括:
将所述连接属性集S排列为有序序列S0
将作用域C初始化为空;
识别在所述表的集合中的包括连接属性A的表,所述连接属性A是所述有序序列S0中的第一个;
创建从S0中删掉了所述连接属性A的连接属性的新序列S';
遍历所识别的表中的每个表按照连接属性A的顺序进行迭代,所述迭代基于针对所识别的表中的每个表的树形索引结构,在所述树形索引结构中索引关键字包括按照S0顺序的所识别的表中的所有连接属性;
针对在所述迭代期间定位的所述连接属性的每个匹配值v,通过将“A=v”附加至所述作用域C来创建新作用域Cv
确定S'是否为空;
基于确定出S'为空,针对每个v输出对应于所述作用域Cv的元组;以及
基于确定出S'不为空,将S0设定为S'并且针对每个作用域Cv,将C设定为Cv并且递归调用所述识别、所述创建、所述迭代、所述附加、所述确定、所述输出以及所述递归调用。
10.根据权利要求9所述的系统,其中,所述有序序列S0为非前缀相干有序序列。
11.根据权利要求9所述的系统,其中,通过所述迭代跳过所述数据库表中的满足过滤条件的行。
12.根据权利要求9所述的系统,其中,所述方法还包括建立树形索引结构。
13.根据权利要求9所述的系统,其中,所述树形索引结构为B树结构。
14.根据权利要求9所述的系统,其中,所述树形索引结构为trie结构。
15.根据权利要求9所述的系统,其中,来自数据库表的非连接属性值连同所述元组一起被输出。
16.根据权利要求9所述的系统,其中,采用查询优化器来确定所述有序序列。
17.一种计算机可读存储介质,其用于根据关于连接属性集S的连接条件集合对来自数据库中的至少三个表的集合的记录进行连接的系统,所述计算机可读存储介质包括:
计算机可读程序代码,所述计算机可读程序代码当由计算机处理器执行时使得所述计算机处理器实现下述方法,该方法包括:
将所述连接属性集S排列为有序序列S0
将作用域C初始化为空;
识别在所述表的集合中的包括连接属性A的表,所述连接属性A是所述有序序列S0中的第一个;
创建从S0中删掉了所述连接属性A的连接属性的新序列S';
遍历所识别的表中的每个表按照连接属性A的顺序进行迭代,所述迭代基于针对所识别的表中的每个表的树形索引结构,在所述树形索引结构中索引关键字包括按照S0顺序的所识别的表中的所有连接属性;
针对在所述迭代期间定位的所述连接属性的每个匹配值v,通过将“A=v”附加至所述作用域C来创建新作用域Cv
确定S'是否为空;
基于确定出S'为空,针对每个v输出对应于所述作用域Cv的元组;以及
基于确定出S'不为空,将S0设定为S'并且针对每个作用域Cv,将C设定为Cv并且递归调用所述识别、所述创建、所述迭代、所述附加、所述确定、所述输出以及所述递归调用。
18.根据权利要求17所述的计算机可读存储介质,其中,所述有序序列S0为非前缀相干有序序列。
19.根据权利要求17所述的计算机可读存储介质,其中,通过所述迭代跳过所述数据库表中的满足过滤条件的行。
20.根据权利要求17所述的计算机可读存储介质,其中,所述树形索引结构为trie结构。
21.根据权利要求17所述的计算机可读存储介质,其中,来自数据库表的非连接属性值连同所述元组一起被输出。
22.根据权利要求17所述的计算机可读存储介质,其中,采用查询优化器来确定所述有序序列。
CN201380050050.4A 2012-09-27 2013-09-24 跳过树形连接 Active CN104769576B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261706484P 2012-09-27 2012-09-27
US61/706,484 2012-09-27
PCT/US2013/061281 WO2014052257A1 (en) 2012-09-27 2013-09-24 Leapfrog tree-join

Publications (2)

Publication Number Publication Date
CN104769576A CN104769576A (zh) 2015-07-08
CN104769576B true CN104769576B (zh) 2018-03-09

Family

ID=50339919

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380050050.4A Active CN104769576B (zh) 2012-09-27 2013-09-24 跳过树形连接

Country Status (8)

Country Link
US (3) US9177026B2 (zh)
EP (1) EP2901311A4 (zh)
JP (1) JP6312685B2 (zh)
KR (1) KR20150063132A (zh)
CN (1) CN104769576B (zh)
CA (1) CA2885244C (zh)
IL (1) IL237750B (zh)
WO (1) WO2014052257A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9177026B2 (en) * 2012-09-27 2015-11-03 LogicBlox, Inc. Leapfrog tree-join

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1464436A (zh) * 2002-06-26 2003-12-31 联想(北京)有限公司 嵌入式系统的数据存放及其查找组合方法
CN101286160A (zh) * 2008-05-30 2008-10-15 同济大学 数据库索引的方法

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0433164A (ja) * 1990-05-30 1992-02-04 Nec Corp リレーショナル型データベースにおける一時的表結合方式
US5151697A (en) * 1990-10-15 1992-09-29 Board Of Regents Of The University Of Washington Data structure management tagging system
US5666525A (en) * 1995-09-21 1997-09-09 The Trustees Of Columbia University In The City Of New York System and method for performing an efficient join operation on large tables with a small main memory
US6138111A (en) 1997-05-02 2000-10-24 Informix Software, Inc. Cardinality-based join ordering
US6185557B1 (en) * 1998-07-31 2001-02-06 Unisys Corporation Merge join process
US6397204B1 (en) 1999-06-25 2002-05-28 International Business Machines Corporation Method, system, and program for determining the join ordering of tables in a join query
JP3584788B2 (ja) * 1999-07-05 2004-11-04 日本電気株式会社 関係データベースアクセス装置および関係データベースアクセス方法
US6493701B2 (en) 2000-11-22 2002-12-10 Sybase, Inc. Database system with methodogy providing faster N-ary nested loop joins
US7620615B1 (en) 2001-10-26 2009-11-17 Teradata Us, Inc. Joins of relations in an object relational database system
US7092954B1 (en) 2001-12-31 2006-08-15 Ncr Corporation Optimizing an equi-join operation using a bitmap index structure
US7617179B2 (en) 2002-06-29 2009-11-10 Ianywhere Solutions, Inc. System and methodology for cost-based subquery optimization using a left-deep tree join enumeration algorithm
US7185012B1 (en) * 2003-02-10 2007-02-27 At&T Corp. Method and apparatus for ranked join indices
US20060136380A1 (en) 2004-12-17 2006-06-22 Purcell Terence P System and method for executing a multi-table query
US7512600B2 (en) 2005-06-10 2009-03-31 Hewlett-Packard Development Company, L.P. Use of multi-join operator and rules as framework for join tree processing in database systems
US8145627B2 (en) 2005-06-10 2012-03-27 Hewlett-Packard Development Company, L.P. Use of connectivity analysis to assist rule-based optimizers
US7693821B2 (en) * 2006-07-27 2010-04-06 Sap Ag Virtual pair algorithm for outer join resolution
US20080288444A1 (en) 2007-05-16 2008-11-20 John Francis Edwards Evaluating Multi-Table Join Selectivity in a Computer Database
US20090006399A1 (en) * 2007-06-29 2009-01-01 International Business Machines Corporation Compression method for relational tables based on combined column and row coding
US8150850B2 (en) * 2008-01-07 2012-04-03 Akiban Technologies, Inc. Multiple dimensioned database architecture
JP5180786B2 (ja) * 2008-11-13 2013-04-10 日本電信電話株式会社 データベース装置、データベースシステムおよびテーブルデータ結合方法
US8620900B2 (en) * 2009-02-09 2013-12-31 The Hong Kong Polytechnic University Method for using dual indices to support query expansion, relevance/non-relevance models, blind/relevance feedback and an intelligent search interface
US20110131198A1 (en) * 2009-11-30 2011-06-02 Theodore Johnson Method and apparatus for providing a filter join on data streams
US8306959B2 (en) * 2010-08-06 2012-11-06 Ianywhere Solutions, Inc. Incremental maintenance of immediate materialized views with outerjoins
JP5567967B2 (ja) * 2010-09-30 2014-08-06 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースにおけるキャッシュ制御方法、システム及びプログラム
US20120323971A1 (en) * 2011-06-14 2012-12-20 Sybase, Inc. Optimizing data storage and access of an in-memory database
US9177026B2 (en) * 2012-09-27 2015-11-03 LogicBlox, Inc. Leapfrog tree-join

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1464436A (zh) * 2002-06-26 2003-12-31 联想(北京)有限公司 嵌入式系统的数据存放及其查找组合方法
CN101286160A (zh) * 2008-05-30 2008-10-15 同济大学 数据库索引的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Indexes that accelerate join operations;Software information center for IBM Red Brick Warehouse 6.3;《IBM Corporation》;20040331;1-17 *
Join Conditions for Tables,Queries,and Views;MSDN Library for Visual Studio 2005;《Microsoft developer network》;20051231;1-8 *

Also Published As

Publication number Publication date
US9177026B2 (en) 2015-11-03
CA2885244C (en) 2021-01-26
US20140089292A1 (en) 2014-03-27
CA2885244A1 (en) 2014-04-03
EP2901311A1 (en) 2015-08-05
CN104769576A (zh) 2015-07-08
JP2015535369A (ja) 2015-12-10
EP2901311A4 (en) 2016-06-22
US20160042036A1 (en) 2016-02-11
KR20150063132A (ko) 2015-06-08
IL237750B (en) 2018-11-29
JP6312685B2 (ja) 2018-04-18
WO2014052257A1 (en) 2014-04-03
US20190073397A1 (en) 2019-03-07
US10120906B2 (en) 2018-11-06

Similar Documents

Publication Publication Date Title
US8977650B2 (en) Scalable summarization of data graphs
Campinas et al. Introducing RDF graph summary with application to assisted SPARQL formulation
US10042911B2 (en) Discovery of related entities in a master data management system
Khurana et al. Storing and analyzing historical graph data at scale
CN102270232B (zh) 一种存储优化的语义数据查询系统
CN107145496A (zh) 基于关键词将图像与内容项目匹配的方法
CN109240901A (zh) 性能分析方法、性能分析装置、存储介质和电子设备
CN106294418B (zh) 检索方法和检索系统
Wang et al. An Efficient Sliding Window Approach for Approximate Entity Extraction with Synonyms.
CN104854587A (zh) 主动数据库查询的维护
CN106874425A (zh) 基于Storm的实时关键词近似搜索算法
CN106484694B (zh) 基于分布式数据库的全文搜索方法及系统
Das et al. Plan before you execute: A cost-based query optimizer for attributed graph databases
Liu et al. Optimizing llm queries in relational workloads
Sakr et al. Hybrid query execution engine for large attributed graphs
CN104769576B (zh) 跳过树形连接
Marx et al. Large-scale RDF dataset slicing
LeFevre et al. Towards a workload for evolutionary analytics
McHugh et al. Optimizing branching path expressions
Erdemir et al. Comparison of Querying Performance of Neo4j on Graph and Hyper-graph Data Model.
Troullinou et al. DIAERESIS: RDF data partitioning and query processing on SPARK
Binna et al. Spiderstore: exploiting main memory for efficient RDF graph representation and fast querying
Chan et al. Vispedia: on-demand data integration for interactive visualization and exploration
Real et al. Full Speed Ahead: 3D Spatial Database Acceleration with GPUs
Winberg et al. A comparison of relational and graph databases for crm systems

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
TR01 Transfer of patent right

Effective date of registration: 20210628

Address after: New York, USA

Patentee after: Enfu (USA) Co.

Address before: New York, USA

Patentee before: Rocky Brooks Co.,Ltd.

Effective date of registration: 20210628

Address after: New York, USA

Patentee after: Logichbrocks proditix mico Co.,Ltd.

Address before: New York, USA

Patentee before: Logich Brooks proditix acquisition Co.

Effective date of registration: 20210628

Address after: New York, USA

Patentee after: Enfu (USA) Co.,Ltd.

Address before: New York, USA

Patentee before: Enfu (USA) Co.

Effective date of registration: 20210628

Address after: New York, USA

Patentee after: Logich Brooks proditix acquisition Co.

Address before: Georgia, USA

Patentee before: LOGICBLOX, Inc.

Effective date of registration: 20210628

Address after: New York, USA

Patentee after: Rocky Brooks Co.,Ltd.

Address before: New York, USA

Patentee before: Enfu retail holding Co.

Effective date of registration: 20210628

Address after: New York, USA

Patentee after: Enfu retail holding Co.

Address before: New York, USA

Patentee before: Logichbrocks proditix mico Co.,Ltd.

TR01 Transfer of patent right