CN112395286B - 链式数据表连接方法、装置、设备及存储介质 - Google Patents

链式数据表连接方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN112395286B
CN112395286B CN201910760024.XA CN201910760024A CN112395286B CN 112395286 B CN112395286 B CN 112395286B CN 201910760024 A CN201910760024 A CN 201910760024A CN 112395286 B CN112395286 B CN 112395286B
Authority
CN
China
Prior art keywords
data
link
key
index
relation
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
CN201910760024.XA
Other languages
English (en)
Other versions
CN112395286A (zh
Inventor
邵明路
岳畅
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.)
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology 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 China Mobile Communications Group Co Ltd, China Mobile Suzhou Software Technology Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201910760024.XA priority Critical patent/CN112395286B/zh
Publication of CN112395286A publication Critical patent/CN112395286A/zh
Application granted granted Critical
Publication of CN112395286B publication Critical patent/CN112395286B/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/2228Indexing structures
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

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

Abstract

本申请实施例公开了一种链式数据表连接方法、装置、设备及存储介质,该方法包括:基于连接请求获取第一数据表对应的第一链接数据、第二数据表对应的第二链接数据及链式索引表对应的第三链接数据;其中,第一链接数据包括第一数据表的第一主键及第一主键对应的第一数据,第二链接数据包括第二数据表的第二主键及第二主键对应的第二数据,第三链接数据包括第一主键和第二主键之间对应的索引链接关系;基于第一链接数据、第二链接数据及第三链接数据,获取索引链接关系匹配的第一主键对应的第一数据、第二主键对应的第二数据,并对第一数据、第二数据进行连接。有效减少了链式数据表中任意两表间连接所需的连接次数,从而提高数据表连接的效率。

Description

链式数据表连接方法、装置、设备及存储介质
技术领域
本申请涉及数据连接领域,具体涉及一种链式数据表连接方法、装置、设备及存储介质。
背景技术
随着互联网技术的普及与计算机性能的提升,尤其在互联网、电信、金融、智能电网等领域,数据量正在以几何级数的速度增长,整个互联网已经进入大数据时代。大数据时代的主要表现是:数据规模迅速增加,数据形式种类丰富,数据分析的处理要求日益复杂。传统关系型数据管理系统已经不能满足这些需求,主要原因是关系型数据管理系统的扩展性遇到了前所未有的障碍,不能胜任大数据分析的要求。根据CAP(consistency,availability,tolerance to network partitions)理论,在分布式系统中,一致性、可用性、分区容忍性三者不可能同时满足,追求其中两个目标必将损害另外一个目标。传统关系型并行数据库系统追求高度一致性和容错性,无法获得良好的扩展性和系统可用性,而系统的扩展性是大数据分析的前提。以MapReduce(映射规约)代表的非关系数据管理和分析技术发展迅速,以其良好的扩展性、容错性和大规模并行处理优势,成为了当前海量数据处理的主流技术。
基于MapReduce的海量数据处理中,复杂业务处理、数据连接、查询信息常常跨越多个数据集。在复杂数据操作中,数据连接是最常见的操作。相关技术中,基于MapReduce的多表连接优化主要集中在简化连接操作、数据过滤、扩展MapReduce框架等方面。其中,在MapReduce模型之上开发的Hive数据仓库系统,支持类SQL(结构化查询语言)的描述语言,可以处理大规模数据集查询、分析、汇总等。类似的系统还有Pig,结合了SQL和MapReduce的特点,支持批处理式的MapReduce操作。二者都支持多表连接,但原理是将多表连接拆分成多个两表连接,连接效率并没有提高。
大规模数据处理中的数据关系往往比较复杂,数据表多且关系多样化。根据连接方式,将数据表之间的连接操作可以分为Flat连接、Tall连接和链式连接。具体如下:
1、如图1所示,Flat连接指所有的数据表拥有公共主键x的情况,即t1(x,v1),t2(x,v2),t3(x,v3)……tn(x,vn),对于任意两表或多表的连接查询,全部都在公共主键x上进行连接操作。
2、如图2所示,Tall连接指数据表t1(x1,v1),t2(x1,x2,v2),t3(x1,x2,x3,v3),……tn(x1,x2,…,xn,vn),各数据表依次在(x1),(x1,x2),……(x1,x2,…,xn)上进行连接操作。
3、如图3所示,链式连接指表t1(k1,v1,f1),t2(k2,v2,f2),t3(k3,v3,f3)……tn(kn,vn,fn),表ti的模式:<ki,vi,fi>,连接的条件为ti.fi=ti+1.ki+1,即表ti的外键是表ti+1的主键。
其中,链式连接最为复杂,传统的关系型数据库表设计模式基本上遵循一定的范式,而复杂的链接查询借助于数据库本身的索引的设计,也基本上可以处理。但是在海量数据的情况下,没有传统的数据库的优势,借助于MapReduce的设计模式,进行这种复杂链式连接查询就比较困难。
相关技术中,方法一是多表连接以一种串行的方式进行,先连接前两个表,再将连接结果和第三个表连接,以此类推,将n表连接分为n-1个两表连接,共需要进行n-1次连接。方法二是每次进行所有相邻两表连接,所得结果表继续同时进行相邻两表连接,如图4所示,其示意了数据表t1与表tn间连接的连接示意图,MapReduce运行的round(轮)次数为
Figure BDA0002169974590000021
方法二虽然优于方法一,但由于采用链式连接的连接方式连接多个数据表,需要多次提交MapReduce任务,每次MapReduce任务具有对应的执行延迟及数据传输,反复调用会带来大量由于系统启停而导致的时间消耗。
发明内容
有鉴于此,本申请实施例提供了一种链式数据表连接方法、装置、设备及存储介质,旨在提高链式数据表中任意两数据表连接的效率。
本申请实施例的技术方案是这样实现的:
本申请实施例第一方面,提供一种链式数据表连接方法,该方法包括:
基于连接请求获取第一数据表对应的第一链接数据、第二数据表对应的第二链接数据及链式索引表对应的第三链接数据;其中,所述第一链接数据包括所述第一数据表的第一主键及所述第一主键对应的第一数据,所述第二链接数据包括所述第二数据表的第二主键及所述第二主键对应的第二数据,所述第三链接数据包括所述第一主键和所述第二主键之间对应的索引链接关系;
基于所述第一链接数据、所述第二链接数据及所述第三链接数据,获取所述索引链接关系匹配的第一主键对应的所述第一数据、所述第二主键对应的所述第二数据,并对所述第一数据、所述第二数据进行连接。
本申请实施例第二方面,提供一种链式数据表连接装置,该装置包括:
获取模块,基于连接请求获取第一数据表对应的第一链接数据、第二数据表对应的第二链接数据及链式索引表对应的第三链接数据;其中,所述第一链接数据包括所述第一数据表的第一主键及所述第一主键对应的第一数据,所述第二链接数据包括所述第二数据表的第二主键及所述第二主键对应的第二数据,所述第三链接数据包括所述第一主键和所述第二主键之间对应的索引链接关系;
连接模块,基于所述第一链接数据、所述第二链接数据及所述第三链接数据,获取所述索引链接关系匹配的第一主键对应的所述第一数据、所述第二主键对应的所述第二数据,并对所述第一数据、所述第二数据进行连接。
本申请实施例第三方面,提供一种链式数据表连接设备,该设备包括:
存储器,用于存储可执行程序;
处理器,用于执行所述存储器中存储的可执行程序时,实现前述任一实施例所述的链式数据表连接方法。
本申请实施例第四方面,提供一种计算机存储介质,存储有可执行程序,所述可执行程序被处理器执行时,实现前述任一实施例所述的链式数据表连接方法。
本申请实施例提供的技术方案中,通过获取第一数据表对应的第一链接数据、第二数据表对应的第二链接数据及链式索引表对应的第三链接数据,基于所述第一链接数据、所述第二链接数据及所述第三链接数据,获取索引链接关系匹配的第一主键对应的第一数据、第二主键对应的第二数据,并对所述第一数据、所述第二数据进行连接,相对于相关技术中需要对链式数据表中的第一数据表、第二数据表经过二者之间的数据表建立连接查询,有效减少了链式数据表中任意两表间连接所需的连接次数,从而提高了链式数据表中任意两数据表连接的效率。
附图说明
图1为相关技术中Flat连接的原理示意图;
图2为相关技术中Tall连接的原理示意图;
图3为相关技术中链式连接的原理示意图;
图4为相关技术中链式数据表中两数据表连接的原理示意图;
图5为本申请一实施例中链式数据表连接方法的流程示意图;
图6为本申请一实施例中链式索引表的结构示意图;
图7为本申请一实施例中链式索引表编码的索引树结构示意图;
图8为图7所示的编码的编码数据示意图;
图9为本申请一实施例中Li/Oi编码的结构示意图;
图10为本申请一实施例中无前缀二进制编码的结构示意图;
图11为本申请一实施例中链式数据表连接装置的结构示意图;
图12为本申请一实施例中链式数据表连接设备的结构示意图。
具体实施方式
以下结合说明书附图及具体实施例对本申请技术方案做进一步的详细阐述。应当理解,此处所提供的实施例仅仅用以解释本申请,并不用于限定本申请。另外,以下所提供的实施例是用于实施本申请的部分实施例,而非提供实施本申请的全部实施例,在不冲突的情况下,本申请实施例记载的技术方案可以任意组合的方式实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
本申请实施例提供一种链式数据表连接方法,该链式数据表由多个数据表构成,各数据表之间经链式关系进行连接,譬如上一数据表的外键为下一数据表的主键。由于各数据表分离存储,为了实现链式数据表中任意两数据表的连接,相关技术往往需要对位于两数据表的链式关系上的各数据表依次进行连接,影响数据表的连接效率,本申请实施例通过获取链式数据表中需要连接的两数据表之间的索引链接关系,基于索引链接关系来实现两数据表的直接连接,相较于现有技术,减少了数据表的连接次数,提高了链式数据表中任意两数据表的连接效率。
请参阅图5,本申请实施例链式数据表连接方法可以包括:
步骤101,基于连接请求获取第一数据表对应的第一链接数据、第二数据表对应的第二链接数据及链式索引表对应的第三链接数据;其中,所述第一链接数据包括所述第一数据表的第一主键及所述第一主键对应的第一数据,所述第二链接数据包括所述第二数据表的第二主键及所述第二主键对应的第二数据,所述第三链接数据包括所述第一主键和所述第二主键之间对应的索引链接关系。
在一实施例中,包含多个数据表的链式数据表存储于Hadoop分布式文件系统(HDFS)中,以满足大规模数据集的应用需求。基于连接请求生成MapRedcue任务,获取第一数据表对应的第一链接数据、第二数据表对应的第二链接数据及链式索引表对应的第三链接数据。
譬如,在一示例中,连接请求携带链式数据表的标识信息及第一数据表、第二数据表对应的标识信息。HDFS包括多个Map(映射)工作节点和多个Reduce(规约)工作节点,第一Map工作节点基于第一数据表的标识信息进行第一Map操作,获取第一数据表中的各第一主键及各第一主键对应的第一数据;第二Map工作节点基于第二数据表的标识信息进行第二Map操作,获取第二数据表中的各第二主键及各第二主键对应的第二数据;第三Map工作节点基于链式数据表的标识信息进行第三Map操作,获取对应的链式索引表包含的各索引链接关系。其中,第一Map工作节点、第二Map工作节点和/或第三Map工作节点的数量可以为多个,第一、第二、第三Map操作可以并行同步执行,各Map工作节点将获取的数据以键值对的方式发送给Reduce工作节点,从而在Reduce工作节点获取到第一链接数据、第二链接数据及第三链接数据。第一链接数据的键值对数据以第一主键为key,以对应的第一数据为value。第二链接数据的键值对数据以第二主键为key,以对应的第二数据为value。第三链接数据以各数据表的主键为key,以对应的索引链接关系为value。
步骤102,基于所述第一链接数据、所述第二链接数据及所述第三链接数据,获取所述索引链接关系匹配的第一主键对应的所述第一数据、所述第二主键对应的所述第二数据,并对所述第一数据、所述第二数据进行连接。
根据第一链接数据、第二链接数据及第三链接数据,可以确定第一主键对应的第一数据、索引链接关系,第二主键对应的第二数据、索引链接关系,基于第一主键与第二主键的索引链接关系的匹配关系确定第一主键对应的第一数据、第二主键对应的第二数据,对第一数据和第二数据进行连接。
本申请实施例,通过获取第一数据表对应的第一链接数据、第二数据表对应的第二链接数据及链式索引表对应的第三链接数据,基于所述第一链接数据、所述第二链接数据及所述第三链接数据,获取索引链接关系匹配的第一主键对应的第一数据、第二主键对应的第二数据,并对所述第一数据、所述第二数据进行连接,相对于相关技术中需要对链式数据表中的第一数据表、第二数据表经过二者之间的数据表建立连接查询,有效减少了链式数据表中任意两表间连接所需的连接次数,从而提高了链式数据表中任意两数据表连接的效率。
在一些实施例中,所述基于连接请求获取第一数据表对应的第一链接数据、第二数据表对应的第二链接数据及链式索引表对应的第三链接数据之前,还包括:构建基于主键之间的索引链接关系表征所述主键所属数据表之间的对应连接关系的链式索引表;其中,所述索引链接关系包括具有连接关系的两个数据表的主键之间的映射关系,所述链式索引表中,上一索引链接关系中的外键为下一索引链接关系中的主键。
在一示例中,链式数据表包括数据表t1至tn,针对该链式数据表构建链式索引表如图6所示,将每个数据表中的主键取出,该链式索引表包括各数据表的主键,且链接索引表中保存各数据表中主键和外键的对应关系,该主键和外键的对应关系表征了数据表之间连接的条件。假定要实现数据表ti和tj的连接,其中,i、j均∈[1,n],可以包括如下步骤:
Round 1
Map:
数据表ti<Ki;F1;V1>→<ti.Ki,ti.Vi>
数据表tj<Kj;Fj;Vj>→<tj.Kj,tj.Vj>
链式索引表<t1.K,t2.K,…,tn.K>→<ti.Ki,t1.K1+t2.K2+…+tn.Kn><tj.Kj,t1.K1+t2.K2+…+tn.Kn>
Reduce:
<ti.Ki,ti.Vi,t1.K1+t2.K2+…+tn.Kn>→<t1.K1+t2.K2+…+tn.Kn,ti.Ki,ti.Vi>
<tj.Kj,tj.Vj,t1.K1+t2.K2+…+tn.Kn>→<t1.K1+t2.K2+…+tn.Kn,tj.Kj,tj.Vj>
Round 2
Map:
<t1i.K1+t2.K2+…+tn.Kn,ti.Ki,ti.Vi>→<t1.K1+t2.K2+…+tn.Kn,ti.Ki,ti.Vi>
<t1.K1+t2.K2+…+tn.Kn,tj.Kj,tj.Vj>→<t1.K1+t2.K2+…+tn.Kn,tj.Kj,tj.Vj>
Reduce:
<t1.K1+t2.K2+…+tn.Kn,ti.Ki,ti.Vi,tj.Kj,tj.Vj>→<t1.K1,t1.V1,tn.Kn,tn.Vn>
其中,第一轮的Map操作获取的键值对数据包括:<第一主键、第一数据>、<第二主键、第二数据>、<主键、索引链接关系>,第一轮的Reduce操作以相同的主键进行规约操作,得到的键值对数据包括:<第一主键、第一数据、索引链接关系>、<第二主键、第二数据、索引链接关系>。第二轮的Map操作以索引链接关系为key进行操作,并在Reduce操作中对索引链接关系匹配的数据进行规约,实现了索引链接关系匹配的第一数据、第二数据的连接。
本实施例基于索引链接关系实现两个数据表的连接,可以有效降低MapReduce连接次数,将将round(轮)次数从
Figure BDA0002169974590000081
降到
Figure BDA0002169974590000082
仅需2次MapReduce任务就可以完成,提高了数据表连接的效率,且无需对传统的MapReduce框架进行改进。
在一些实施例中,为了有效减少链接索引表存储占用的空间,减少数据表连接的中间数据存储开销和网络中传输的数据量,构建所述链式索引表包括:获取具有连接关系的各数据表对应的主键和外键,基于连接关系和可扩展编码方法对各数据表的主键进行编码,基于各主键对应的编码数据确定所述索引链接关系。
可选地,所述基于连接关系和可扩展编码方法对各数据表的主键进行编码,包括:基于各数据表对应的主键和外键确定各数据表之间的连接关系,基于树形编码法的编码规则确定各数据表的主键对应的编码数据,使得具有连接关系的数据表的主键对应的编码数据满足所述映射关系。考虑到链式数据表中各数据表对应的主键和外键,且上一数据表的外键为下一数据表的主键,可以确定各数据表之间的连接关系。如图7所示,则链式索引表可以采用树形编码法的编码规则进行编码,由树形分支组成,并对各主键ti.Ki编码,ti.Ki的编码为ti.Ki.C。编码需要考虑到各数据表之间的连接关系,如果两数据表ti、tj可以连接,那么ti.Ki.C<tj.Kj.C(这里的“a<b”代表a和b可以连接)。
在一些实施例中,可以使用函数f对两编码数据是否匹配进行判断,使得f(tj.Kj.C)=f(ti.Ki.C)=KEY(映射到同一个KEY),这样,在第二轮的Map操作中,可以根据函数f来实现匹配的索引链接关系具有相同的key,使得在Reduce操作中将索引链接关系匹配的数据进行规约,从而实现索引链接关系匹配的第一数据、第二数据的连接。示例如下:
Map
<ti.Ki,ti.Ki.C>→<f(ti.Ki.C),ti.Ki>,即<KEY,ti.Ki>
<tj.Kj,tj.Kj.C>→<f(tj.Kj.C),tj.Kj>,即<KEY,tj.Kj>
Reduce
<KEY,ti.Ki,tj.Kj>→<ti.Ki,tj.Kj>
通过采用对各数据表的主键进行编码的方式,可以采用主键对应的编码数据作为链式索引表中的索引链接关系,相较于索引链接关系包含数据表的主键与外键的对应关系,利于减少连接过程中数据传输对网络的压力,提高数据表连接的效率。
可选地,在一些实施例中,对各数据表的主键采用Patrick O’Neil等人提出的ORDPATHs编码方法。ORDPATHs是一种基于XML tree进行编码的方法,可以实现任意非根节点的插入和删除而保持其他节点的编码不变(不需要重新编码)。由于ORDPATHs编码方法在初始编码时只使用奇数,而将偶数用于新插入的数据的编码,而且ORDPATHs的编码之中包含了节点之间的父子和兄弟关系,这一特性可以用于判断两个数据表中的数据是否可以连接。接下来把ORDPATHs编码方法用于图7所示的索引树,可以得到如图8所示的具体编码。
如图8所示,以t3.k3的c2的编码1.1.3为例,初始编码时只使用正奇数参与编码,正偶数保留用于插入的新节点编码,其中“.”作为层与层之间的间隔。对于前述提到的f(ti.Ki.C)=f(tj.Kj.C)=KEY,这里采用编码比较的方法,若tj.Kj和ti.Ki可以连接,充要条件是其中一个的编码是另一个的编码的子串,例如,比较a1和c2的编码,a1和c2可以连接,1.是1.1.3的子串;而比较b2和c2的编码,1.3不是1.1.3的子串,则b2和c2不能连接。
关于链接索引表数据的增删,这里可以理解为索引树的节点的插入和删除,数据的修改相当于节点的更新,编码不变。以节点插入为例,例如在b1下插入一个新节点cz(在c1,c2的中间),则cz的编码是1.1.2.1,这里要保证1.1.1<1.1.2.1<1.1.3(<代表树中节点的左右关系),每个节点的编码的最后一位必须是奇数。如果继续在c1和cz之间插入cx,则cx的编码是1.1.2.-1,这里的“-1”代表在节点的另一侧(相对而言,一侧为正数,另一侧为负数)。插入后的节点的编码依然满足上文中父节点的编码是子节点的编码的子串这一性质,而且其他的节点的编码不受影响。
可选地,在一些实施例中,构建所述链式索引表之后,还包括:将各主键对应的编码数据转换为压缩的二进制编码,以减少所述链式索引表的存储空间。
本申请实施例中,将编码数据数据转换为Li/Oi形式的二进制编码数据,其中,一对Li/Oi表示一个整数,Li表示所述整数对应的二进制串的位数及所述整数所处的位置,Oi表示所述整数对应的二进制串。可选地,可以采用一种变长的二进制压缩编码形式,将形如1.1.3的ORDPATHs编码转化为如图9所示的Li/Oi形式。Li/Oi形式可以满足以下条件:(1)Li子串指明了紧随其后的Oi子串的长度;(2)Li子串可以指明自身的起始位置;(3)根据(1)和(2),可以从左到右将ORDPATHs编码串解析为Li/Oi形式;(4)Li/Oi串还可以指代负序,以满足多种插入情况的编码需求。具体地,可以采用如图10所示的无前缀二进制编码模式。
本申请实施例可以采用类似于霍夫曼编码的形式来实现Li的编码,如图10所示,所有的Li的编码值位于二叉树的叶子节点上,0代表分支向上,1代表分支向下。不存在一个Li的二进制编码是另一个Li编码的前缀的情况,所有Li的编码都是无前缀编码。以Li=3为例,01代表了紧随其后的Oi串的长度为3,可以表示的数值范围是000,001……,111,即[0,7];001也代表了紧随其后的Oi串的长度为3,可以表示的数值范围是000,001,……111,但表示[-8,-1]。
示例:ORDPATHs=“1.5.3.-9.11”,对应的Li/Oi=0100101101010110001111111000011,具体转换过程如下:
01 001 01 101 01 011 00011 1111 100 0011
L0=3 O0=1 L1=3 O1=5 L2=3 O2=3 L3=4 O3=-9 L4=4 O4=11
可以发现,整个转换过程是将ORDPATHs编码从左到右解析,先把对应的数字替换成相应的编码,然后在每个编码前面,添加每个编码位数对应的编码,并消除“.”分割符。ORDPATHs编码转化成Li/Oi形式后,所对应的Li/Oi形式的编码依然满足父节点的编码是子节点的编码的子串这一性质。总的来说,通过引入ORDPATHs编码,并进一步将该编码转换成无前缀二进制压缩编码来实现链式索引表的编码压缩,便于存储。
本申请实施例通过采用ORDPATHs编码对主键进行编码,以主键对应的编码数据作为索引链接关系,利于减少数据表连接过程的中产生的中间数据,减少数据传递量。且ORDPATHs编码可以实现任意非根节点的插入和删除而保持其他节点的编码不变,满足了数据表的扩展性需求。通过对编码数据经无前缀二进制压缩编码压缩,利于链式索引表的存储。
本申请实施例还提供一种链式数据表连接装置,请参阅图11,该装置包括:
获取模块1101,基于连接请求获取第一数据表对应的第一链接数据、第二数据表对应的第二链接数据及链式索引表对应的第三链接数据;其中,所述第一链接数据包括所述第一数据表的第一主键及所述第一主键对应的第一数据,所述第二链接数据包括所述第二数据表的第二主键及所述第二主键对应的第二数据,所述第三链接数据包括所述第一主键和所述第二主键之间对应的索引链接关系;
连接模块1102,基于所述第一链接数据、所述第二链接数据及所述第三链接数据,获取所述索引链接关系匹配的第一主键对应的所述第一数据、所述第二主键对应的所述第二数据,并对所述第一数据、所述第二数据进行连接。
在一些实施例中,该装置还包括构建模块1103,用于构建基于主键之间的索引链接关系表征所述主键所属数据表之间的对应连接关系的链式索引表;其中,所述索引链接关系包括具有连接关系的两个数据表的主键之间的映射关系,所述链式索引表中,上一索引链接关系中的外键为下一索引链接关系中的主键。
可选地,构建模块1103用于基于各数据表对应的主键和外键确定各数据表之间的连接关系,基于树形编码法的编码规则确定各数据表的主键对应的编码数据,使得具有连接关系的数据表的主键对应的编码数据满足所述映射关系。
可选地,构建模块1103还用于将各主键对应的编码数据转换为Li/Oi形式的二进制编码,以减少所述链式索引表的存储空间,其中,一对Li/Oi表示一个整数,Li表示所述整数对应的二进制串的位数及所述整数所处的位置,Oi表示所述整数对应的二进制串。
可选地,构建模块1103基于ORDPATHs编码方法确定各数据表的主键对应的编码数据。
可选地,连接模块1102用于获取编码数据满足所述映射关系的所述第一主键对应的所述第一数据、所述第二主键对应的所述第二数据。
需要说明的是:上述实施例提供的链式数据表连接装置在进行链式数据表连接时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的链式数据表连接装置与链式数据表连接方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例还提供一种链式数据表连接设备,图12仅仅示出了该链式数据表连接设备的示例性结构而非全部结构,根据需要可以实施图12示出的部分结构或全部结构。
本申请实施例提供的链式数据表连接设备1200包括:至少一个处理器1201、存储器1202、和至少一个网络接口1203。链式数据表连接设备1200中的各个组件通过总线系统1204耦合在一起。可以理解,总线系统1204用于实现这些组件之间的连接通信。总线系统1204除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图12中将各种总线都标为总线系统1204。
可以理解,存储器1202可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。
本申请实施例中的存储器1202用于存储各种类型的数据以支持链式数据表连接方法的执行。这些数据的示例包括:用于在链式数据表连接设备1200上运行的任何可执行程序,如可执行程序12021,实现本申请实施例的链式数据表连接方法的程序可以包含在可执行程序12021中。
本申请实施例揭示的链式数据表连接方法可以应用于处理器1201中,或者由处理器1201实现。处理器1201可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,链式数据表连接方法的各步骤可以通过处理器1201中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1201可以是通用处理器、数字信号处理器(DSP,DigitalSignal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器1201可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器1202,处理器1201读取存储器1202中的信息,结合其硬件完成本申请实施例提供的链式数据表连接方法的步骤。
本申请实施例还提供了一种可读存储介质,存储介质可以包括:移动存储设备、随机存取存储器(RAM,Random Access Memory)、只读存储器(ROM,Read-Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。所述可读存储介质存储有可执行程序;所述可执行程序用于被处理器执行时实现本申请任一实施例所述的链式数据表连接方法。
本领域内的技术人员应明白,本申请实施例可提供为方法、系统、或计算机程序产品。因此,本申请实施例可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理系统的处理器以产生一个机器,使得通过计算机或其他可编程数据处理系统的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理系统以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理系统上,使得在计算机或其他可编程系统上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程系统上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (8)

1.一种链式数据表连接方法,其特征在于,包括:
构建基于主键之间的索引链接关系表征所述主键所属数据表之间的对应连接关系的链式索引表;其中,所述索引链接关系包括具有连接关系的两个数据表的主键之间的映射关系,所述链式索引表中,上一索引链接关系中的外键为下一索引链接关系中的主键;
基于连接请求获取第一数据表对应的第一链接数据、第二数据表对应的第二链接数据及链式索引表对应的第三链接数据;其中,所述第一链接数据包括所述第一数据表的第一主键及所述第一主键对应的第一数据,所述第二链接数据包括所述第二数据表的第二主键及所述第二主键对应的第二数据,所述第三链接数据包括所述第一主键和所述第二主键之间对应的索引链接关系;
基于所述第一链接数据、所述第二链接数据及所述第三链接数据,获取所述索引链接关系匹配的第一主键对应的所述第一数据、所述第二主键对应的所述第二数据,并对所述第一数据、所述第二数据进行连接;
其中,构建所述链式索引表,包括:
获取具有连接关系的各数据表对应的主键和外键,基于连接关系和可扩展编码方法对各数据表的主键进行编码,基于各主键对应的编码数据确定对应的所述索引链接关系。
2.如权利要求1所述的链式数据表连接方法,其特征在于,所述基于连接关系和可扩展编码方法对各数据表的主键进行编码,包括:
基于各数据表对应的主键和外键确定数据表之间的连接关系,基于树形编码法的编码规则确定各数据表的主键对应的编码数据,使得具有连接关系的数据表的主键对应的编码数据满足所述映射关系。
3.如权利要求1所述的链式数据表连接方法,其特征在于,构建所述链式索引表之后,还包括:
将各主键对应的编码数据转换为压缩的二进制编码,以减少所述链式索引表的存储空间。
4.如权利要求2所述的链式数据表连接方法,其特征在于,所述基于树形编码法的编码规则确定各数据表的主键对应的编码数据为基于ORDPATHs编码方法确定各数据表的主键对应的编码数据。
5.如权利要求2所述的链式数据表连接方法,其特征在于,获取所述索引链接关系匹配的第一主键对应的所述第一数据、第二主键对应的所述第二数据,包括:
获取编码数据满足所述映射关系的所述第一主键对应的所述第一数据、所述第二主键对应的所述第二数据。
6.一种链式数据表连接装置,其特征在于,包括:
构建模块,用于构建基于主键之间的索引链接关系表征所述主键所属数据表之间的对应连接关系的链式索引表;其中,所述索引链接关系包括具有连接关系的两个数据表的主键之间的映射关系,所述链式索引表中,上一索引链接关系中的外键为下一索引链接关系中的主键;
获取模块,基于连接请求获取第一数据表对应的第一链接数据、第二数据表对应的第二链接数据及链式索引表对应的第三链接数据;其中,所述第一链接数据包括所述第一数据表的第一主键及所述第一主键对应的第一数据,所述第二链接数据包括所述第二数据表的第二主键及所述第二主键对应的第二数据,所述第三链接数据包括所述第一主键和所述第二主键之间对应的索引链接关系;
连接模块,基于所述第一链接数据、所述第二链接数据及所述第三链接数据,获取所述索引链接关系匹配的第一主键对应的所述第一数据、所述第二主键对应的所述第二数据,并对所述第一数据、所述第二数据进行连接;
所述构建模块,还用于获取具有连接关系的各数据表对应的主键和外键,基于连接关系和可扩展编码方法对各数据表的主键进行编码,基于各主键对应的编码数据确定对应的所述索引链接关系。
7.一种链式数据表连接设备,其特征在于,包括:
存储器,用于存储可执行程序;
处理器,用于执行所述存储器中存储的可执行程序时,实现如权利要求1至5任一所述的链式数据表连接方法。
8.一种计算机存储介质,其特征在于,存储有可执行程序,所述可执行程序被处理器执行时,实现如权利要求1至5任一所述的链式数据表连接方法。
CN201910760024.XA 2019-08-16 2019-08-16 链式数据表连接方法、装置、设备及存储介质 Active CN112395286B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910760024.XA CN112395286B (zh) 2019-08-16 2019-08-16 链式数据表连接方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910760024.XA CN112395286B (zh) 2019-08-16 2019-08-16 链式数据表连接方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN112395286A CN112395286A (zh) 2021-02-23
CN112395286B true CN112395286B (zh) 2022-12-13

Family

ID=74602890

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910760024.XA Active CN112395286B (zh) 2019-08-16 2019-08-16 链式数据表连接方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN112395286B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113468178B (zh) * 2021-07-07 2022-07-29 武汉达梦数据库股份有限公司 一种关联表的数据分区装载方法与装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109325055A (zh) * 2018-08-02 2019-02-12 阿里巴巴集团控股有限公司 业务关联数据表的筛选及核对方法、装置、电子设备
CN110096509A (zh) * 2019-05-16 2019-08-06 普元信息技术股份有限公司 大数据环境下实现历史数据拉链表存储建模处理的系统及方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109325055A (zh) * 2018-08-02 2019-02-12 阿里巴巴集团控股有限公司 业务关联数据表的筛选及核对方法、装置、电子设备
CN110096509A (zh) * 2019-05-16 2019-08-06 普元信息技术股份有限公司 大数据环境下实现历史数据拉链表存储建模处理的系统及方法

Also Published As

Publication number Publication date
CN112395286A (zh) 2021-02-23

Similar Documents

Publication Publication Date Title
CN102033748B (zh) 一种数据处理流程代码的生成方法
CN107092656A (zh) 一种树状结构数据处理方法及系统
CN103116625A (zh) 一种基于Hadoop的海量RDF数据分布式查询处理方法
CN105930419B (zh) Rdf数据分布式并行语义编码方法
CN101286160A (zh) 数据库索引的方法
CN107491476B (zh) 一种适用于多种大数据管理系统的数据模型转换及查询分析方法
CN104298598B (zh) 分布式环境下rdfs本体的调试方法
CN101794318A (zh) Url解析方法及设备
CN105302915B (zh) 基于内存计算的高性能数据处理系统
CN114697654B (zh) 一种神经网络量化压缩方法及系统
CN114697672B (zh) 基于游程全零编码的神经网络量化压缩方法及系统
CN101887458A (zh) 一种基于路径编码的xml文档索引方法
Mohajer et al. Tight Bounds on the Redundancy of Huffman Codes\hbox {H}\hbox {H}
CN110060158A (zh) 基于变长编码的智能合约执行方法和装置
CN112395286B (zh) 链式数据表连接方法、装置、设备及存储介质
CN107066551A (zh) 一种树状数据的行式和列式存储方法及系统
Haj Rachid et al. A practical and scalable tool to find overlaps between sequences
CN105900065A (zh) 模式处理方法
CN114372174A (zh) 一种xml文档分布式查询方法及系统
CN102325161A (zh) 一种基于查询工作量估算的xml分片方法
CN103701470A (zh) 一种流智能预测差异压缩算法及相应的控制装置
CN102255617A (zh) 哈夫曼树的存储方法及利用数组进行数据解码的方法
CN108829930B (zh) 三维数字化工艺设计mbd模型的轻量化方法
CN100581258C (zh) 霍夫曼解码方法和霍夫曼解码装置
Qin et al. Efficient XML query and update processing using a novel prime-based middle fraction labeling scheme

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant