CN103164507A - 行与列数据库表在原生方向上的混合联接 - Google Patents

行与列数据库表在原生方向上的混合联接 Download PDF

Info

Publication number
CN103164507A
CN103164507A CN2012104616494A CN201210461649A CN103164507A CN 103164507 A CN103164507 A CN 103164507A CN 2012104616494 A CN2012104616494 A CN 2012104616494A CN 201210461649 A CN201210461649 A CN 201210461649A CN 103164507 A CN103164507 A CN 103164507A
Authority
CN
China
Prior art keywords
row
list
dictionary
storage list
computer
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
Application number
CN2012104616494A
Other languages
English (en)
Other versions
CN103164507B (zh
Inventor
Y·尹
C·郑
S·K·车
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.)
SAP SE
Original Assignee
SAP SE
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 SAP SE filed Critical SAP SE
Publication of CN103164507A publication Critical patent/CN103164507A/zh
Application granted granted Critical
Publication of CN103164507B publication Critical patent/CN103164507B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; 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/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种数据库列与行表之间的混合联接采用如下算法:即其识别行与列存储二者,并能够对处于原生形态形式(行或列)的数据执行而无需进行方向之间的转换。原生混合联接算法访问列表的列词典以用高效的联接过程。原生混合联接算法也可以利用倒排索引(如果存在的话)来搜索具有给定值的记录(例如,docid)。特别是,原生混合联接算法在列词典中查找联接条件,同时迭代行表并以流水线的方式返回匹配的记录。

Description

行与列数据库表在原生方向上的混合联接
技术领域
本发明涉及在数据库中存储数据,尤其是涉及处理数据库查询。
背景技术
除非在本文中指出,否则在该部分描述的解决方案并非本申请要求保护的内容的现有技术,而且并通过被包括在该部分中而被认定为是现有技术。
数据库是以结构化方式存储数据的电子存档系统。数据库的基本存储结构是表。数据库可以包括多个表,并且每个表可以保存特定类型的信息。数据库表按照水平的行与垂直的列来存储和组织数据。行一般对应于真实世界的实体或关系,其在表中代表各个记录。列可以指示那些实体或关系的特定属性,例如“姓名”、“地址”或“电话号码”。例如,公司X可以具有包含列出其客户的姓名、地址和电话号码的“客户”表的数据库。每一行可以代表单个客户,并且列可以代表每个客户的姓名、地址和电话号码。
数据库通常被存储在一维的计算机存储器中。因此,二维数据库表必须被映射到要存储在数据库内的一维数据结构。一种映射方案包括在数据库内对表进行逐行存储(即,面向行的存储模型)。这种方案将关于单个实体的信息保存在一起。例如,逐行存储可以首先存储关于第一个客户的所有信息,然后存储关于第二个客户的所有信息,诸如此类。可替换地,可以在数据库内对表进行逐列存储(即,面向列的存储模型)。这种方案将不同实体的类似属性保存在一起。例如,逐列存储可以首先存储所有的客户名称,然后存储所有的客户地址,诸如此类。
通常,必须按照与数据存储相同的方式从表中访问数据。也就是说,传统的计算机存储技术需要能够访问特定类型的存储模型的专用查询算子。例如,行查询算子被用来处理在数据库中以行格式存储模型存储的数据,且列查询算子被用来处理以列格式存储模型存储的数据。因而,选择使用哪一种存储模型常常取决于将如何使用数据。面向行的存储模型一般很适合用于事务性查询,而面向列的存储模型一般很适合用于分析性查询。因此,传统的查询处理方案与被查询的数据库的基本存储模型紧密相关。
然而,实际上,以列格式存储模型存储某些数据的数据库可能被要求处理涉及那些数据的事务性查询,或是以行格式存储模型存储某些数据的数据库可能被要求处理涉及那些数据的分析性查询。例如,以行格式存储模型存储数据的数据库可能接收需要数据的事务性和分析性处理的混合的查询集合。
响应于这种混合的查询集合,查询引擎可以设法执行混合联接(join)操作。在2010年12月30日提交了标题为“Processing Database Queries UsingFormat Conversions”的美国专利申请No.12/982,673,并且为此其整体通过参考被并入于此。该专利申请描述了以基于转换的方式来间接执行混合联接。根据这种解决方案的某些实施例,行表数据被转换成列格式,然后在列引擎中执行联接,或者列表数据被转换成行格式,然后在行引擎中执行联接。
然而,混合联接的转换开销对于性能和存储器消耗并非是无关紧要的。因此,在涉及性能临界负荷的情况下可能不希望使用基于转换的混合联接查询。因此,本公开利用实现无转换的原生混合联接功能的系统和方法来解决此问题以及其他问题。
发明内容
数据库的列与行表之间的混合联接采用如下算法:即其识别行和列存储二者,并能够对处于原生(native)形式(行或列)的数据执行而无需方向之间的转换。原生混合联接算法访问列表(column table)的列词典以用于高效的联接处理。原生混合联接算法也可以采用倒排索引(如果存在的话)来搜索具有给定值的记录(例如,docid)。具体而言,原生混合联接算法在列词典中查找联接条件,同时迭代行表(row table)并以流水线的方式返回匹配的记录。
一种计算机实现的方法,包括:
在非临时性计算机可读存储介质中访问在应用层语言中创建的数据库,所述数据库包括行存储表和列存储表,所述列存储表具有列词典;
迭代行表内的记录;
使列引擎参考所述列词典以获得联接条件;以及
返回匹配的记录以创建联接表,所述联接表包括来自处于原生状态的行存储表和列存储表的数据。
一个非临时性计算机可读存储介质的实施例包含用于执行方法的计算机程序,所述方法包括:
在非临时性计算机可读存储介质中访问在应用层语言中创建的数据库,所述数据库包括行存储表和列存储表,所述列存储表具有列词典;
迭代行表内的记录;
使列引擎参考所述列词典以获得联接条件;以及
返回匹配的记录以创建联接表,所述联接表包括来自处于原生状态的行存储表和列存储表的数据。
一种计算机系统的实施例,包括:
一个或多个处理器;
能够运行在所述计算机系统上的软件程序,所述软件程序被配置成:
在非临时性计算机可读存储介质中访问在应用层语言中创建的数据库,所述数据库包括行存储表和列存储表,所述列存储表具有列词典;
迭代行表内的记录;
使列引擎参考所述列词典以获得联接条件;以及
返回匹配的记录以创建联接表,所述联接表包括来自处于原生状态的行存储表和列存储表的数据。
一些实施例还可以包括:参考所述列表的倒排索引以获得联接条件。
根据一些实施例,参考所述列词典以获得联接条件可以包括:创建中间结构。
在一些实施例中,所述中间结构可以包括来自所述列存储表的值与来自所述行存储表的行标识之间的映射。
在一些实施例中,所述联接条件可以包括外键(foreign key)联接,以使得所述行表的列不包含重复值。
在一些实施例中,所述联接条件可以包括N对M联接,并且还包括维持来自行表的关于迭代值的哈希表,以避免对同一值参考列词典。
以下详细的说明和附图提供了对本发明的本质和优点的更好的理解。
附图说明
图1示出根据实施例的混合联接的高度简化示意图。
图2示出外键混合联接的一个实施例的简化示意图。
图3示出根据示例的要被查询的数据库。
图3A是示出根据混合联接算法的实施例的步骤的流程图。
图3B-3I是原生混合联接算法的各种步骤的简化示意图。
图4示出外键N对M混合联接的一个实施例的简化示意图
图5描述关于原生混合联接和基于转换的混合联接的相对耗用时间与基数比。
图6图示被配置成实现根据实施例的原生混合联接的专用计算机制的硬件。
图7示出计算机系统的示例。
图8示出词典编码的列表中列的简化物理表示。
具体实施方式
这里描述的是关于数据库内的列与行表之间的混合联接操作的性能优化的技术。
根据一个实施例,数据库列与行表之间的混合联接采用如下算法:即其知晓行与列存储二者,并能够对处于原生形式的数据直接执行而无需进行方向之间的转换。列表包括关于每一列的列词典。可选地,词典包含倒排索引,以搜索具有给定值的记录(例如docid)。原生混合联接算法采用列词典和倒排索引,以用于高效的联接处理。特别是,原生混合联接算法在列词典中查找联接条件,同时迭代行表并以流水线的方式返回匹配的记录。
图1示出根据实施例的混合联接算法100的功能的通用视图。在第一步骤102中,迭代行表104内的记录。第二步骤106包括针对每一个联接条件在列表108中的列词典查找。在第三步骤110中,返回匹配的记录。
图2表示在其中存在倒排索引且倒排索引可用的情况下,在外键混合联接(1对N)算法的上下文中的混合联接的实施例的细节。对于外键(FK)联接,可以假设行表的联接列不具有重复值。因此,能够对于获取的行表记录中的每一值来访问列词典。
根据FK混合联接算法200的第一步骤202,从行表206中获取N个记录205。在此,获取的记录具有值为“Bravo”、“Charlie”和“Apple”。
在第二步骤208中,参考列词典210以为联接列的每一个获取的记录提供值标识(vid)。根据该信息,可以创建中间结构以供稍后使用。例如,图2示出列词典的值id(vid,也是“值-id(value-id)”)与来自行表的行id(rs_rid)之间的映射212(<vid,rs_rid>)。
在第三步骤214中,通过参考倒排索引216,根据值-id而获得列表的docid。由此,匹配的列表记录中的使用的列可以被具体化。具体化匹配的列表记录中的使用的列的原因是,避免在父算子中针对每个列访问从列词典中检索值。
最后,在第四步骤220中,<rs_rid,cs_rid>对被放入中间结果缓冲器222中。找到具有vid的对应的rs_rid,同时扫描匹配的docid。具体化联接的记录的使用的列(docid)。
图3-3I是图示在公司目录的具体上下文中使用混合联接操作的示例的简化图。特别是,如图3所示,在数据库中存储的信息包括部门名称(dname)、部门位置(location)和雇员姓名(ename)。
部门名称和部门位置在行存储表300中被存储为列。为行表中的每一行指定行标识符(rid)。
雇员姓名(ename)和部门名称(dname)在列存储表302中被存储为列。为列表中的每一行指定文件标识符(doc_id)。
列词典304也被存储为列表的一部分。列词典304包括一列中不同的值与每个不同的值的值id(vid)之间的映射。
倒排索引是一种可选结构,包括关于每个值id(vid)的记录标识符(doc_id)。倒排索引可以被用来快速查找与给定vid对应的doc_id。在不存在倒排索引的情况下,可以通过扫描整个列并找到与给定vid匹配的doc_id来搜索doc_id。
对于刚刚描述的数据库,用户可以做出请求雇员位置的标识的查询。响应于此,表需要联接行存储表与列存储表。特别是,可以使用以下形式的联接查询309:
Select(选择)
e.ename,d.location
From(从)
department d,emplogee e
Where(其中)
d.dname=e.dname
图3A是列出在对此查询执行混合联接中所涉及的过程流350的步骤351-357的简化图。在图3B所示的预备步骤351中,利用列引擎305来搜索列词典304的值id(dict_vid)。此预备步骤的输出是其索引代表词典vid的匹配标签矢量320。
在图3C中示出第一步骤352的示例。在此步骤中,从行表300中获取记录322,然后,利用获取的记录来构造串值阵列324。
在图3D示出的下一个步骤353中,串值阵列324被输入到列引擎305中,然后访问列词典以得到对应的整数值-id(vid)。输出整数vid阵列326。在此,vid为-1指示在列词典中不存在匹配值。
在图3E示出的下一个步骤354中,构造中间映射结构。特别是,vid阵列326与来自行表的对应的行-id(row_id,rid)匹配。构建rid4vid映射328,该映射可以基于vid输入而找到rid。
在图3F示出的下一个步骤355中,创建对应的doc_id。具体来说,整数vid阵列326被输入到列引擎305中来搜索倒排索引330,以获得整数文件id(document_id)(doc_id)332。输出整数doc_id阵列334及其对应的vid阵列(vids2)336。
在图3G示出的下一个步骤356中,组合内联接结果。这包括扫描具有对应的doc_id的vids2阵列334。访问rid4vid映射328以找到rid。Rid然后与doc_id匹配,以形成内联接结果338。
下一个步骤357包括如图3H示出的外联接处理。如果联接是左外联接,则vids阵列326与行表300进行比较,以对其匹配vid为-1的rid返回空列值。如果联接为右外联接,则在dict_vid-匹配标签矢量中检查匹配vid(非-1)。
在最后一个步骤358中(如图3I所示),对于右外联接,从dict_vids-匹配的标签矢量中挑出其标签错误的vid。利用列引擎搜索在索引中不具有匹配的vid的文件id(doc_id)。对不匹配的doc_id返回空行表值。在图3I图示的特定实施例中,vid 2是不匹配的vid,并且在列引擎中找到doc_id 6作为不匹配的doc_id。
混合联接算子的结果是包含row_id(来自列表)和doc_id(来自行表)的对的阵列。这在图2和图4(以下进行讨论)中被描绘成“中间结果缓冲器”。
row_id和doc_id的对由混合联接的父算子使用(consume)。利用row_id或doc_id(记录标识符),父算子可以访问记录的列值(在行表或列表中)。
总之,原生混合联接算法的实施例可以通过迭代行存储数据并参考列词典来直接访问行与列存储数据二者的值。原生混合联接算法的实施例可以允许行与列存储数据上的联接而无需任何格式转换开销。对于来自行存储数据的每个扫描的值,原生混合联接可以通过以下来获得列存储数据中的匹配的记录(doc_id)的列表:对列词典查找扫描的值,得到vid作为词典搜索结果,以及根据倒排索引或列引擎检索具有找到的vid的doc_id。因而,原生混合联接可以通过直接从行与列存储二者中访问值并返回row_id和doc_id的匹配对来利用处于原生形式的行与列存储数据。
虽然前面所述的示例关注于外键联接(1对N联接),但是根据各种实施例可以执行其他类型的混合联接。另一种类型的混合联接的示例是N对M联接。
对于N对M联接,在行表中可能存在重复值。除了增加哈希表管理以外,N对M混合联接的执行步骤类似于外键联接。作为一种优化,可以维持关于来自行表的获取的值的哈希表,以避免针对同一值查找列词典。
图4示出根据实施例的N对M混合联接的概述。哈希表的键是来自行表的值,且哈希表的条目是<键,值,来自列词典的值-id,列表的docid>。
再一次,在第一步骤1中,从行表中获取N个记录。在查找列词典之前,在步骤2中,构造哈希表以检查值是否预先已被注册。如果返回哈希表条目,则产生具有条目值的联接结果(<rs_rid,cs_rid>对列表)。
如果值仍未在哈希表内,则在步骤3中访问列词典,条目被插入到哈希表中并返回结果。
在步骤4中,<rs_rid,cs_rid>对被放入中间结果缓冲器222。具体化联接的记录(docid)中使用的列。
新的混合联接算法的实施例支持流水线操作,以使得可以重复步骤1-4直至联接算法消耗了全部行数据为止。在流水线操作中,用户递增式地消耗联接结果,并且在连续的获取当中会存在时隙。
以上描述已关注于其中倒排索引可用来执行混合联接的实施例。然而,这不是必需的,替换实施例可以在缺少倒排索引的情况下采用混合联接。
图8示出词典编码的列表中列的简化物理表示。列是vid的矢量,且doc_id是阵列的索引。
如果不存在倒排索引,则可以通过扫描vid矢量来搜索doc_id。例如,在此特定的实施例中,与vid为1对应的doc_id为{1,4}。因为基于扫描的doc_id检索通常比倒排索引访问更加昂贵,所以如果倒排索引存在的话,查询优化更愿意选择使用倒排索引的算法。
示例
通过实施对于改变行表大小的基于TPC-H SF10的数据集的实验来评估无转换的混合联接算法的性能。在此示例中,倒排索引可用来执行外键混合联接算法。
特别是,对数据集进行以下查询,以允许测量客户表与订单表之间的联接的性能。
Select
count(*)
From
customer,orders
Where
c_custkey=o_custkey
订单表是列存储表,且其基数是15M。客户表是行存储表,且其初始基数是1.5M。通过改变行表基数,表基数比(行表基数/列表基数)从0.1变为0.01。
图5描绘相对耗用时间与表基数比。图5所示的图表示出原生混合联接胜于现有的基于转换的混合联接。除了提供该性能优势之外,根据一些实施例的原生混合联接的实施方式通过允许以流水线的方式来运行而消耗更少的存储器。
图6示出可以被配置成实现根据一些实施例的数据库表的原生混合联接的专用计算机制的硬件。
特别是,计算机系统600包括与非临时性计算机可读存储介质603进行电子通信的处理器602。这种计算机可读存储介质在其上存储与列引擎对应的代码605。代码604与保存在非临时性计算机可读存储介质的数据库中的列词典对应,如上面已经描述的,可以参考该列词典以执行混合联接。
这里所述的装置、方法和技术可以被实现为在一个或多个计算机上执行的计算机程序(软件)。计算机程序还可以被存储在非临时性计算机可读介质上。非临时性计算机可读介质可以包含用于执行上述过程的指令。
在以下描述中,为了解释的目的,阐述了示例和具体细节以便提供对各个实施例的全面理解。然而,对本领域技术人员来说显然的是,如权利要求所限定的本发明可以单独包含这些示例中一些或所有特征,或者结合以下描述的其他特征,而且还可以包括在此描述的特征和概念的修改和等同物。
计算机系统可以包括软件服务器。多个软件服务器可以一起形成集群或计算机系统的逻辑网络,计算机系统的逻辑网络由软件程序编程并相互通信和一起工作以处理请求。
在图7中图示了示例的计算机系统710。计算机系统710包括总线705或用于传达信息的其他通信机制、以及与总线705耦合以用于处理信息的处理器701。
计算机系统710也包括耦合到总线705以用于存储信息和要由处理器701执行的指令的存储器702,例如,包括用于执行上述技术的信息和指令。该存储器还可以用于在要由处理器701执行的指令的执行期间存储变量或其他中间信息。该存储器的可能的实施方式可以是但不限于随机存取存储器(RAM)、只读存储器(ROM)或二者皆可。
还提供了存储设备703,用于存储信息和指令。例如,存储设备的一般形式包括硬盘驱动器、磁盘、光盘、CD-ROM、DVD、闪存、USB存储卡或计算机可以从中读取的任何其他介质。
例如,存储设备703可以包括源代码、二进制码或用于执行以上技术的软件文件。存储设备和存储器都是计算机可读媒体的示例。
计算机系统710可以经由总线705耦合到显示器712,例如阴极射线管(CRT)或液晶显示器(LCD),用于向计算机用户显示信息。例如键盘和/或鼠标的输入设备711被耦合到总线705,用于从用户向处理器701传达信息和命令选择。这些组件的组合允许用户与系统进行通信。在一些系统中,总线705可以被划分成多个专用总线。
计算机系统710也包括与总线705耦合的网络接口704。网络接口704可以在计算机系统710和本地网络720之间提供双向数据通信。例如,网络接口704可以是数字用户线(DSL)或调制解调器,用于经过电话线提供数据通信连接。网络接口的另一个示例是局域网(LAN)卡,用于向兼容LAN提供数据通信连接。无线链路是另一个示例。在任何一种这样的实施方式中,网络接口704发送和接收携带表示各种类型的信息的数字数据流的电子、电磁或光信号。
计算机系统710可以通过网络接口704,跨过本地网络720、内联网或互联网730而发送和接收信息,包括消息或其他接口动作。对于本地网络来说,计算机系统710可以与多个其他计算机制进行通信,例如服务器715。因此,计算机系统710和由服务器715表示的服务器计算机系统可以形成云计算网络,其可以利用在此描述的过程进行编程。
在涉及互联网的示例中,软件组件或服务可以跨越网络而驻留在多个不同的计算机系统710或服务器731-735上。例如,还可以在一个或更多个服务器上实施上述过程。服务器731可以通过互联网730、本地网络720和网络接口704,从一个组件向计算机系统710上的组件发送动作或消息。例如,可以在任何计算机系统上实施上述软件组件和过程,并跨越网络来发送和/或接收信息。
上面的描述图示了本发明的各种实施例以及如何实施本发明各个方面的示例。以上示例和实施例不应被认为是仅有这些实施例,而是表示图示如由以下权利要求所限定的本发明的灵活性和优势。基于以上公开和以下的权利要求,本领域技术人员很清楚可以在不脱离由权利要求所限定的本发明的精神的范围的情况下采用其他安排、实施例、实施方式和等同物。

Claims (18)

1.一种计算机实现的方法,包括:
在非临时性计算机可读存储介质中访问在应用层语言中创建的数据库,所述数据库包括行存储表和列存储表,所述列存储表具有列词典;
迭代行表内的记录;
使列引擎参考所述列词典以获得联接条件;以及
返回匹配的记录以创建联接表,所述联接表包括来自处于原生状态的行存储表和列存储表的数据。
2.根据权利要求1所述的计算机实现的方法,还包括:参考所述列表的倒排索引以获得联接条件。
3.根据权利要求1所述的计算机实现的方法,其中,参考所述列词典以获得联接条件包括:创建中间结构。
4.根据权利要求3所述的计算机实现的方法,其中,所述中间结构包括:来自所述列存储表的值与来自所述行存储表的行标识之间的映射。
5.根据权利要求1所述的计算机实现的方法,其中,所述联接条件包括外键联接,以使得所述行表的列不具有重复值。
6.根据权利要求1所述的计算机实现的方法,其中,所述联接条件包括N对M联接,所述方法还包括:维持关于来自行表的迭代值的哈希表,以避免针对同一值参考列词典。
7.一种非临时性计算机可读存储介质,包含用于执行方法的计算机程序,所述方法包括:
在非临时性计算机可读存储介质中访问在应用层语言中创建的数据库,所述数据库包括行存储表和列存储表,所述列存储表具有列词典;
迭代行表内的记录;
使列引擎参考所述列词典以获得联接条件;以及
返回匹配的记录以创建联接表,所述联接表包括来自处于原生状态的行存储表和列存储表的数据。
8.根据权利要求7所述的非临时性计算机可读存储介质,还包括:用于参考所述列表的倒排索引以获得联接条件的代码。
9.根据权利要求7所述的非临时性计算机可读存储介质,其中,参考所述列词典以获得联接条件包括创建中间结构。
10.根据权利要求9所述的非临时性计算机可读存储介质,其中,所述中间结构包括:来自所述列存储表的值与来自所述行存储表的行标识之间的映射。
11.根据权利要求7所述的非临时性计算机可读存储介质,其中,所述联接条件包括外键联接,以使得所述行表的列不具有重复值。
12.根据权利要求7所述的非临时性计算机可读存储介质,其中,所述联接条件包括N对M联接,所述非临时性计算机可读存储介质还包括:用于维持关于来自行表的迭代值的哈希表以避免针对同一值参考列词典的代码。
13.一种计算机系统,包括:
一个或更多个处理器;
可运行在所述计算机系统上的软件程序,所述软件程序被配置成:
在非临时性计算机可读存储介质中访问在应用层语言中创建的数据库,所述数据库包括行存储表和列存储表,所述列存储表具有列词典;
迭代行表内的记录;
使列引擎参考所述列词典以获得联接条件;以及
返回匹配的记录以创建联接表,所述联接表包括来自处于原生状态的行存储表和列存储表的数据。
14.根据权利要求13所述的计算机系统,其中,所述软件代码被配置成参考所述列表的倒排索引以获得联接条件。
15.根据权利要求13所述的计算机系统,其中,参考所述列词典以获得联接条件包括创建中间结构。
16.根据权利要求15所述的计算机系统,其中,所述中间结构包括:来自所述列存储表的值与来自所述行存储表的行标识之间的映射。
17.根据权利要求13所述的计算机系统,其中,所述联接条件包括外键联接,以使得所述行表的列不具有重复值。
18.根据权利要求13所述的计算机系统,其中,所述联接条件包括N对M联接,所述非临时性计算机可读存储介质还包括:用于维持关于来自行表的迭代值的哈希表以避免针对同一值参考列词典的代码。
CN201210461649.4A 2011-12-12 2012-09-28 行与列数据库表在原生方向上的混合联接 Active CN103164507B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/323,530 2011-12-12
US13/323,530 US9965500B2 (en) 2011-12-12 2011-12-12 Mixed join of row and column database tables in native orientation

Publications (2)

Publication Number Publication Date
CN103164507A true CN103164507A (zh) 2013-06-19
CN103164507B CN103164507B (zh) 2018-04-17

Family

ID=47189687

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210461649.4A Active CN103164507B (zh) 2011-12-12 2012-09-28 行与列数据库表在原生方向上的混合联接

Country Status (3)

Country Link
US (1) US9965500B2 (zh)
EP (1) EP2605158B1 (zh)
CN (1) CN103164507B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105793843A (zh) * 2013-09-21 2016-07-20 甲骨文国际公司 用于oltp和分析工作量的用于内存数据库的组合行和列式存储
CN109101641A (zh) * 2018-08-20 2018-12-28 联想(北京)有限公司 表格处理方法、装置、系统和介质
CN111324605A (zh) * 2020-01-22 2020-06-23 北京东方金信科技有限公司 数据库中数据混合存储动态调整方法及应用

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130198168A1 (en) * 2011-08-01 2013-08-01 Wei Huang Data storage combining row-oriented and column-oriented tables
US8918436B2 (en) 2011-12-22 2014-12-23 Sap Ag Hybrid database table stored as both row and column store
US9251181B2 (en) * 2012-06-18 2016-02-02 International Business Machines Corporation Dynamic map template discovery and map creation
US10474652B2 (en) * 2013-03-14 2019-11-12 Inpixon Optimizing wide data-type storage and analysis of data in a column store database
US10268639B2 (en) * 2013-03-15 2019-04-23 Inpixon Joining large database tables
US9632944B2 (en) 2013-04-22 2017-04-25 Sap Se Enhanced transactional cache
US9477609B2 (en) 2013-04-22 2016-10-25 Sap Se Enhanced transactional cache with bulk operation
US8762387B1 (en) * 2013-07-31 2014-06-24 Linkedin Corporation Inverted indexes for accelerating analytics queries
US9442913B2 (en) 2014-01-30 2016-09-13 International Business Machines Corporation Using parallel insert sub-ranges to insert into a column store
US9953074B2 (en) 2014-01-31 2018-04-24 Sap Se Safe synchronization of parallel data operator trees
US9710516B2 (en) * 2014-05-14 2017-07-18 Sap Se Ghost table joins in remote systems
US9547681B2 (en) 2014-05-30 2017-01-17 International Business Machines Corporation Combining row based and column based tables to form mixed-mode tables
CN104572893B (zh) * 2014-12-24 2018-02-27 天津南大通用数据技术股份有限公司 一种数据库中的数据混合存储方法
WO2016194159A1 (ja) * 2015-06-03 2016-12-08 株式会社日立製作所 計算機、データベース管理方法、データベース管理システム
CN105354255B (zh) * 2015-10-21 2018-01-02 华为技术有限公司 数据查询方法和装置
US10140337B2 (en) * 2015-10-30 2018-11-27 Sap Se Fuzzy join key
US10733184B2 (en) 2016-11-29 2020-08-04 Sap Se Query planning and execution with source and sink operators
US11016973B2 (en) 2016-11-29 2021-05-25 Sap Se Query plan execution engine
US10423619B2 (en) 2016-11-29 2019-09-24 Sap Se Query plan generation for precompiled and code generating query operations
US10521426B2 (en) 2016-11-29 2019-12-31 Sap Se Query plan generation for split table query operations
US10372707B2 (en) 2016-11-29 2019-08-06 Sap Se Query execution pipelining with pump operators
US10558661B2 (en) 2016-11-29 2020-02-11 Sap Se Query plan generation based on table adapter
US10885032B2 (en) 2016-11-29 2021-01-05 Sap Se Query execution pipelining with shared states for query operators
US10776353B2 (en) * 2017-01-26 2020-09-15 Sap Se Application programming interface for database access
US10671625B2 (en) 2017-01-26 2020-06-02 Sap Se Processing a query primitive call on a value identifier set
US10860579B2 (en) 2017-01-30 2020-12-08 Sap Se Query planning and execution with reusable memory stack
KR101928819B1 (ko) * 2017-03-28 2019-03-12 주식회사 리얼타임테크 관계형 데이터베이스의 조인 방법
CN107256271B (zh) * 2017-06-27 2020-04-03 鲁东大学 基于映射字典学习的跨模态哈希检索方法
US10942947B2 (en) * 2017-07-17 2021-03-09 Palantir Technologies Inc. Systems and methods for determining relationships between datasets
US11556532B2 (en) * 2019-03-27 2023-01-17 Sap Se Hash trie based optimization of database operations
US10936562B2 (en) 2019-08-02 2021-03-02 Timescale, Inc. Type-specific compression in database systems
US11914589B2 (en) * 2020-02-28 2024-02-27 Sap Se Efficient computation of order by, order by with limit, min, and max in column-oriented databases
US11741093B1 (en) 2021-07-21 2023-08-29 T-Mobile Usa, Inc. Intermediate communication layer to translate a request between a user of a database and the database
US20230138283A1 (en) * 2021-10-29 2023-05-04 Sap Se Transformation of property-value table to facilitate search
WO2023211581A1 (en) * 2022-04-25 2023-11-02 Visa International Service Association Secret shared database joins using sorting

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090037365A1 (en) * 2007-07-30 2009-02-05 Paul Sinclair Product join dynamic partition elimination for multilevel partitioning
CN101828182A (zh) * 2007-09-21 2010-09-08 哈索-普拉特纳-研究所软件系统有限责任公司 报告oltp数据的无etl零冗余系统和方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5987453A (en) * 1997-04-07 1999-11-16 Informix Software, Inc. Method and apparatus for performing a join query in a database system
US6263331B1 (en) * 1998-07-30 2001-07-17 Unisys Corporation Hybrid hash join process
US8046377B2 (en) * 2004-12-20 2011-10-25 Sap Ag Method for calculating distributed joins in main memory with minimal communicaton overhead
TWI307035B (en) * 2006-04-10 2009-03-01 Ind Tech Res Inst Method and system for backing up remote mirror data on internet
US8548986B2 (en) 2010-03-19 2013-10-01 Microsoft Corporation Adaptive row-batch processing of database data
US20110264667A1 (en) * 2010-04-27 2011-10-27 Stavros Harizopoulos Column-oriented storage in a row-oriented database management system
US8880508B2 (en) 2010-12-30 2014-11-04 Sap Se Processing database queries using format conversion

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090037365A1 (en) * 2007-07-30 2009-02-05 Paul Sinclair Product join dynamic partition elimination for multilevel partitioning
CN101828182A (zh) * 2007-09-21 2010-09-08 哈索-普拉特纳-研究所软件系统有限责任公司 报告oltp数据的无etl零冗余系统和方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ABADI等: "Column-Stores vs. Row-Stores: How Different Are They Really?", 《PROCEEDINGS OF THE 2008 ACM SIGMOD INTERNATIONAL CONFERENCE ON MANAGEMENT OF DATA》 *
BLAKELEY等: "Join Index, Materialized View, and Hybrid-Hash Join:A Performance Analysis", 《PROCEEDINGS OF THE 6TH INTERNATION CONFERENCE ON DATA ENGINEERING》 *
RAMAMURTHY等: "A Case for Fractured Mirrors", 《PROCEEDINGS OF THE 28TH INTERNATIONAL CONFERENCE ON VERY LARGE DATA BASES》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105793843A (zh) * 2013-09-21 2016-07-20 甲骨文国际公司 用于oltp和分析工作量的用于内存数据库的组合行和列式存储
CN105793843B (zh) * 2013-09-21 2019-09-03 甲骨文国际公司 用于oltp和分析工作量的用于内存数据库的组合行和列式存储
CN109101641A (zh) * 2018-08-20 2018-12-28 联想(北京)有限公司 表格处理方法、装置、系统和介质
CN111324605A (zh) * 2020-01-22 2020-06-23 北京东方金信科技有限公司 数据库中数据混合存储动态调整方法及应用
CN111324605B (zh) * 2020-01-22 2020-11-10 北京东方金信科技有限公司 数据库中数据混合存储动态调整方法及应用

Also Published As

Publication number Publication date
CN103164507B (zh) 2018-04-17
US9965500B2 (en) 2018-05-08
EP2605158B1 (en) 2019-01-02
US20130151502A1 (en) 2013-06-13
EP2605158A1 (en) 2013-06-19

Similar Documents

Publication Publication Date Title
CN103164507A (zh) 行与列数据库表在原生方向上的混合联接
CN1705945B (zh) 提供查询的属性的方法和系统
US10691753B2 (en) Memory reduced string similarity analysis
CN111459985B (zh) 标识信息处理方法及装置
US9020910B2 (en) Storing tables in a database system
US9280569B2 (en) Schema matching for data migration
US9747349B2 (en) System and method for distributing queries to a group of databases and expediting data access
US9959347B2 (en) Multi-layer search-engine index
US20120130942A1 (en) OLAP Execution Model Using Relational Operations
US10936625B2 (en) Progressive optimization for implicit cast predicates
CN102541631B (zh) 以多线程不同驱动源执行计划处理查询的方法和系统
US20080086478A1 (en) Semantical partitioning of data
Gudivada et al. Renaissance in database management: navigating the landscape of candidate systems
CN104391908B (zh) 一种图上基于局部敏感哈希的多关键字索引方法
CN117312370A (zh) 数据查询方法、系统及相关设备
Černjeka et al. NoSQL document store translation to data vault based EDW
US8005844B2 (en) On-line organization of data sets
US10877998B2 (en) Highly atomized segmented and interrogatable data systems (HASIDS)
Xu et al. Keywords Query of uncertain spatiotemporal data based on XML
Xue et al. Optimizing biomedical ontology alignment in lexical vector space
US20140317154A1 (en) Heterogeneous data management methodology and system
Engle et al. The Case for NoSQL on a Single Desktop
Sharma et al. MAchine readable cataloging to MAchine understandable data with distributed big data management
CN113515504B (zh) 数据管理方法、装置、电子设备以及存储介质
US20230342558A1 (en) Systems and methods for generalized entity matching

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: German Waldo

Applicant after: SAP AG

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

GR01 Patent grant
GR01 Patent grant