CN106933934B - 数据表的连接方法和装置 - Google Patents
数据表的连接方法和装置 Download PDFInfo
- Publication number
- CN106933934B CN106933934B CN201511034175.5A CN201511034175A CN106933934B CN 106933934 B CN106933934 B CN 106933934B CN 201511034175 A CN201511034175 A CN 201511034175A CN 106933934 B CN106933934 B CN 106933934B
- Authority
- CN
- China
- Prior art keywords
- data
- tables
- sequence
- data table
- data tables
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
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/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (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)
Abstract
本申请公开了一种数据表的连接方法和装置。其中,该连接方法包括:获取待连接的多个数据表中每个数据表的统计信息,其中,统计信息中记录有对应的数据表的属性信息;基于每个数据表的属性信息,确定每个数据表的数据容量;基于数据容量确定多个数据表中属于同一类型的数据表集合,并将数据表集合中的数据表进行表连接,得到中间数据表;将中间数据表与多个数据表中未连接的数据表依次连接。通过本申请,解决了现有技术中表连接时系统效率低的技术问题。
Description
技术领域
本申请涉及数据处理领域,具体而言,涉及一种数据表的连接方法和装置。
背景技术
针对查询维度链计算出的所有表结点(如多个事实数据表),需要进行表连接,而表连接顺序的设定对整个查询系统的性能的影响较大。现有技术中进行表连接时,由于各引擎的查询的实现方式不同,对整个查询系统的性能的影响方式不同,在进行表连接时,随机确定顺序或预先确定表顺序,该表连接方法的性能较差。另外,如何判断表是大表还是小表,且在带有过滤条件后,如何判断哪个是大表,哪个是小表,目前还未提出任何与此相关的方案。按照随机确定的顺序或预先确定的表顺序对各个表进行连接,表连接效率低,将会造成系统资源开销大、性能差。
针对现有技术中表连接时系统效率低的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种数据表的连接方法和装置,以至少解决现有技术中表连接时系统效率低的问题。
根据本申请实施例的一个方面,提供了一种数据表的连接方法,该连接方法包括:获取待连接的多个数据表中每个数据表的统计信息,其中,统计信息中记录有对应的数据表的属性信息;基于每个数据表的属性信息,确定每个数据表的数据容量;基于数据容量确定多个数据表中属于同一类型的数据表集合,并将数据表集合中的数据表进行表连接,得到中间数据表;将中间数据表与多个数据表中未连接的数据表依次连接。
进一步地,将数据表集合中的数据表进行表连接,得到中间数据表包括:将数据表集合中的数据表并发连接,得到中间数据表。
进一步地,基于数据容量确定多个数据表中属于同一类型的数据表集合包括:将多个数据表中,数据容量小于预设数据容量的数据表确定为属于同一类型的数据表集合;或按照数据容量的大小顺序对多个数据表进行排序,得到第一序列,将第一序列中排序在前N位的数据表确定为属于同一类型的数据表集合,其中,N为大于等于二的自然数。
进一步地,将中间数据表与多个数据表中未连接的数据表依次连接包括:按照中间数据表和多个数据表中未连接的数据表的数据容量的大小排列,得到第二序列;将第二序列中各个数据表的顺序作为连接顺序;按照连接顺序,依次连接第二序列中的各个数据表。
进一步地,依次连接第二序列中的各个数据表包括:将第二序列中的第一个数据表设置为当前的第一表,对当前的第一表执行下述操作,直至第二序列中的最后一个数据表,操作包括:按照连接顺序,获取当前的第一表的下一个数据表,将下一个数据表作为第二表;将第一表和第二表连接,得到第三表;确定第三表和第二序列中未进行连接的数据表中,用于执行下一次操作的当前的第一表。
进一步地,确定第三表和第二序列中未进行连接的数据表中,用于执行下一次操作的当前的第一表包括:基于第三表与第二序列中未进行连接的数据表的数据容量,重新确定连接顺序;将重新确定的连接顺序中第一个数据表作为用于执行下一次操作的当前的第一表。
进一步地,基于每个数据表的属性信息,确定每个数据表的数据容量包括:从数据表的属性信息中读取数据表的数据容量;或从数据表的属性信息中读取数据表的行数,使用数据表的行数表示数据容量。
根据本申请实施例的另一方面,还提供了一种数据表的连接装置,该连接装置包括:获取模块,用于获取待连接的多个数据表中每个数据表的统计信息,其中,统计信息中记录有对应的数据表的属性信息;确定模块,用于基于每个数据表的属性信息,确定每个数据表的数据容量;处理模块,用于基于数据容量确定多个数据表中属于同一类型的数据表集合,并将数据表集合中的数据表进行表连接,得到中间数据表;连接模块,用于将中间数据表与多个数据表中未连接的数据表依次连接。
进一步地,处理模块包括:并发连接子模块,用于将多个数据表中的数据表集合中的数据表并发连接,得到中间数据表。
进一步地,处理模块包括:第一确定子模块,用于将多个数据表中,数据容量小于预设数据容量的数据表确定为属于同一类型的数据表集合;或第二确定子模块,用于按照数据容量的大小顺序对多个数据表进行排序,得到第一序列,将第一序列中排序在前N位的数据表确定为属于同一类型的数据表集合,其中,N为大于等于二的自然数。
进一步地,连接模块包括:排列子模块,用于按照中间数据表和多个数据表中未连接的数据表的数据容量的大小排列,得到第二序列;处理子模块,用于将第二序列中各个数据表的顺序作为连接顺序;连接子模块,用于按照连接顺序,依次连接第二序列中的各个数据表。
在本申请实施例中,基于待连接的多个数据表的数据容量,确定多个数据表的连接顺序,并将多个数据表中同一类型的数据表连接,然后将中间数据表与上述的多个数据表中未连接的数据表连接。通过上述实施例,已经将同一类型的数据表进行了表连接,再将中间数据表与多个数据表中未连接的数据表依次连接的过程中,可以提高系统进行表连接的系统执行速度,也即,可以使得表连接耗费时间更短,从而提高表连接的效率,解决了现有技术中表连接时系统效率低的问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种数据表的连接方法的流程图;
图2是根据本申请实施例的一种数据表的连接装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本申请实施例,提供了一种数据表的连接方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本申请实施例的一种数据表的连接方法的流程图,如图1所示,该连接方法可以包括如下步骤:
步骤S102,获取待连接的多个数据表中每个数据表的统计信息,其中,统计信息中记录有对应的数据表的属性信息。
步骤S104,基于每个数据表的属性信息,确定每个数据表的数据容量。
步骤S106,基于数据容量确定多个数据表中属于同一类型的数据表集合,并将数据表集合中的数据表进行表连接,得到中间数据表。
步骤S108,将中间数据表与多个数据表中未连接的数据表依次连接。
采用本申请实施例,基于待连接的多个数据表的数据容量,确定多个数据表的连接顺序,并将多个数据表中同一类型的数据表连接,然后将中间数据表与上述的多个数据表中未连接的数据表连接。通过上述实施例,已经将同一类型的数据表进行了表连接,再将中间数据表与多个数据表中未连接的数据表依次连接的过程中,可以提高系统进行表连接的系统执行速度,也即,可以使得表连接耗费时间更短,从而提高表连接的效率,解决了现有技术中表连接时系统效率低的问题。
其中,上述实施例中,数据表中可以记录多个属性数据之间的关联关系,每个属性数据包含多个事实数据(即属性值),如页面访问表中可以记录页面访问次数、页面访问地址和页面访问时长之间的关联关系。
本申请实施例中的表连接大多为join连接,也即两个数据表进行连接的时候,存在过滤条件,即多表过滤后,数据量会更小。
可选地,数据表集合包括的数据表为多个数据表中的部分数据表,将数据表集合中的数据表进行表连接,得到中间数据表包括:将数据表集合中的数据表并发连接,得到中间数据表。
通过上述实施例,由于数据表集合中的各个数据表属于同一类型,可以将其按照并发的方式进行表连接,减少了操作次数,以加快连接速度。
在一个可选的实施例中,基于数据容量确定多个数据表中属于同一类型的数据表集合包括:将多个数据表中,数据容量小于预设数据容量的数据表确定为属于同一类型的数据表集合;或按照数据容量的大小顺序对多个数据表进行排序,得到第一序列,将第一序列中排序在前N位的数据表确定为属于同一类型的数据表集合,其中,N为大于等于二的自然数。
可以基于数据容量确定小表,如将数据容量小于预设数据容量的数据表作为同一类型的表;还可以按照数据容量的大小顺序对多个数据表进行排序,从序列中确定小表。
通过上述实施例,可以将小数据量的数据表作为数据表集合,将该小数据量的数据表进行并发连接,小表本来就比较小,将这些表连接,减少了后续表连接的操作次数,同时,在表连接的过程中,小表变得更小,从而可以在后续进行表里连接时提高系统性能。
还可以在按照数据容量的大小顺序对多个数据表进行排序,得到第一序列之后,将该序列中表示数据容量较大的表作为同一类型的数据表集合,由于在表连接的过程中,经过过滤条件的表会变小,将大表变小,从而可以在后续进行表里连接时提高系统性能。
根据本申请的上述实施例,将中间数据表与多个数据表中未连接的数据表依次连接包括:按照中间数据表和多个数据表中未连接的数据表的数据容量的大小排列,得到第二序列;将第二序列中各个数据表的顺序作为连接顺序;按照连接顺序,依次连接第二序列中的各个数据表。
在上述实施例中,可以按照中间数据表和多个数据表中未连接的数据表的数据容量从大到小排列,也可以按照数据容量从小到大排列。
在按照数据容量从小到大排列的情况下,将中间数据表和多个数据表中未连接的数据表按照该排列顺序,依次连接。在该种连接方式中,可以将数据容量小于预设数据容量的数据表集合中的数据表(即所有的小表)先进行并发连接,然后将所有的小表连接的结果(即上述实施例的中间数据表),与大表(即待连接的多个数据表中除去所有小表以外的数据表)按照数据容量从小到大的顺序排列,并按照该排列顺序进行连接,通过上述方案,可以将所有的小表一起连接,不需要等待两张表连接完成后,才能进行后续表的连接,这样的连接方式效率更高。
通过上述实施例,可以提高表连接的执行速度,减少表连接的时间,从而提高系统的表连接效率。
本申请上述实施例中的大表和小表是通过数据容量确定的,该数据容量也可以称之为数据量,也即,大表的数据量大于小表的数据量。
在本申请的上述实施例中,依次连接第二序列中的各个数据表包括:将第二序列中的第一个数据表设置为当前的第一表,对当前的第一表执行下述操作,直至第二序列中的最后一个数据表,操作包括:按照连接顺序,获取当前的第一表的下一个数据表,将下一个数据表作为第二表;将第一表和第二表连接,得到第三表;确定第三表和第二序列中未进行连接的数据表中,用于执行下一次操作的当前的第一表。
具体地,将中间数据表和多个数据表中未连接的数据表按照数据容量从小到大的顺序排列,得到第二序列,从第二序列中的第一个表(即中间数据表和多个数据表中未连接的数据表中数据容量最小的数据表)开始,将排序在第一位的确定为当前的第一表、将排序在第二位的确定为第二表,将第一表与第二表连接,得到连接后的数据表(即上述实施例中的第三表),将排序在第一位和第二位的表的相关信息从第二序列中删除,并从该第二序列中读取排位在第一位的表,也即,此时将第三表作为第一表,将读取的排位在第一位的表作为第二表,将第一表和第二表执行上述步骤,直至完成对多个数据表的连接。
上述的相关信息可以为数据表的标识。
在一个可选的方案中,确定第三表和第二序列中未进行连接的数据表中,用于执行下一次操作的当前的第一表包括:基于第三表与第二序列中未进行连接的数据表的数据容量,重新确定连接顺序;将重新确定的连接顺序中第一个数据表作为用于执行下一次操作的当前的第一表。
具体的,在将第一表和第二表的相关信息从第二序列中删除之后,可以将第三表和未进行连接的表重新排序,得到新的序列,将该新的序列中的排序第一位的数据表作为下一次操作的当前的第一表。
通过上述实施例,按照排序序列中各个数据表的顺序,依次对多个数据表进行连接,采用该方案,以提高系统进行表连接时的效率。
可选地,在第一表的数据容量小于第二表的数据容量的情况下,将第一表和第二表进行连接,且得到连接后的数据表(即第三表)的数据容量的方案包括如下四种:
第一种,内连接方式(即Inner Join):该种连接方式是以第一表和第二表中的相同属性条件为基准,连接后的数据表中包括相同的属性条件对应的数据信息,即为第一表和第二表的交集;采用该种连接方式得到的第三表的数据容量默认预估变为两个连接的数据表中数据容量较小(即第一表)的表的预估行数,也可能出现第三表的行数小于第一表的情况。
第二种,左外连接方式(即Left Join):将第一表作为右表,将第二表作为左表,采用该种连接方式,以左表的过滤条件为基准,过滤右表中记录的数据,即通过左表的过滤条件实现第一表和第二表的连接,得到第三表;在该种连接方式下,两表连接后得到的第三表的数据容量为左表的行数。
第三种,右外连接方式(即Right Join):将第一表作为右表,将第二表作为左表,采用该种连接方式,以右表的过滤条件为基准,过滤左表中记录的数据,即通过右表的过滤条件实现第一表和第二表的连接,得到第三表;在该种连接方式下,两表连接后得到的第三表的数据容量为右表的行数。
第四种,全外连接方式(即Full Join):该种连接方式以第一表和第二表中的所有属性条件为基准,连接后的数据表中包括两个表中所有的属性条件对应的数据信息,即为第一表和第二表的并集;采用该种连接方式得到的第三表的数据容量默认预估变为两个连接的数据表的行数的总和。
通常表连接方式大多采用上述的第一种连接方式,在多维度过滤条件下,采用该种连接方式进行表连接时,得到的连接后的数据表的数据容量会变小,即可以通过该种连接方式,将数据容量小的数据表变得更小,再与数据容量大的数据表进行连接,以提高系统进行表连接时的效率。
在上述实施例中,四种连接方式均是将数据容量小的数据表作为右表,将数据容量较大的表作为左表,依次完成待连接的多个数据表的连接。
下面以四个数据表的连接为例说明本申请实施例,以A、B、C、D表示四个数据表。对这四个数据表的建立统计信息,基于统计信息预估确定这四个数据表的数据量;将这四个数据表按照数据量从小到大的顺序进行排序,如数据表A至数据表D的数据量依次增大,则将该四个数据表排序如下:A、B、C、和D。在将这四个表排序之后,将这四个表按照该排序顺序进行表连接,可选地,选取前两个表,即表A和表B,将表A作为右表,表B作为左表,表B与表A进行表连接,得到表BA,并将表A和表B的信息从排序序列中删除;再按照排序顺序选取表C,将表C作为左表,表BA作为右表,将表C与表BA进行连接,得到表CBA;最后将数据量最大的表D作为左表,表CBA作为右表,将表D与表CBA进行连接,得到连接后的表DCBA,完成表A、B、C和D的连接。
本申请还提供了一种统计数据表的属性信息的方式,如表1所示。对当前进行统计的数据表的各列数据(特别是该数据表中包含的维度列)建立统计信息,该数据表的某列的统计信息包括该列的属性信息,如表1所示,统计信息包括统计信息头部、密度向量和直方图三部分。
表1
其中,统计信息头部包括如下信息:
Name:CTX_Session Time Key,表示表的索引名称;
Updated:Jul 20 2015 3:15AM,表示该列的统计信息上次更新的日期和时间;
Rows:84856055,表示该列的所有行数;
Rows Sampled:389665,表示该列的统计信息计算的抽样行数;
Steps:198,表示由抽象行数的数据形成直方图的直方图步数,即直方图中的梯级数,每个梯级都跨越一个Key值范围,后跟上限Key值。
密度向量包括如下信息:
All Density:0.0007251631,表示当前统计的数据表的密度,即该数据表中数据的密度,该密度是通过抽样行数的数据统计的,可以根据该密度预估出不存在直方图里的数据记录,如可以预估出不存在直方图里的数据在数据表内所有行里出现的几率(表总行数*密度);
Average Length:4,表示该列的每个值的平均长度(以字节为单位);
Columns:Session Time Key,用于表示该列的名称。
表1中仅示例性的给出了上述的198行记录数据的部分统计信息,如表1所示,直方图的头信息包括如下信息:
RANGE_HI_KEY:表示直方图里记录的直方图梯级的上限Key值(Key值即键值);
RANGE_ROWS:表示位于直方图梯级内(不包括上限)的行的估算数目,即该行的Key值与上一行的Key值之间,一共有多少行记录;
EQ_ROWS:表示等于直方图梯级的上限的行的估算数目,即与该行Key值相等的一共有多少行记录;
DISTINCT_RANGE_ROWS:表示非重复Key值位于直方图梯级内(不包括上限)的行的估算数目,即该行的Key值与上一行的Key值之间,一共有多少的唯一值(即不重复的Key值);
AVG_RANGE_ROWS:表示在此区间(该行的Key值与上一行的Key值区间),一个唯一值平均存在多少行记录。
可选地,基于每个数据表的属性信息,确定每个数据表的数据容量包括:从数据表的属性信息中读取数据表的数据容量;或从数据表的属性信息中读取数据表的行数,使用数据表的行数表示数据容量。
在上述实施例中,通过对数据表的各列建立统计信息,得到类似表1的统计信息,从表中统计信息包含的属性信息中可以直接读取统计的数据表的总行数(如表中Rows的属性值),使用该总行数表示数据表的数据容量;或者从表中的属性信息中读取每个SessionTime Key的行数(如从表1中读取Session Time Key=56228的行数为29.3万),并将各个Session Time Key的行数进行求和,使用得到的行数的总和表示数据表的数据容量。
在一种可选的实施例中,通过对数据表的各列建立统计信息,得到数据表的属性信息,可以从属性信息中读取数据表占用系统空间的属性值,用该属性值表示数据表的数据容量。
通过上述实施例,对待连接的多个数据表中的各个数据表的各列建立统计信息,以确定各个数据表的数据容量,该方案基于统计数据信息的方式,可以达到快速获取数据表的数据容量的目的,为后续表连接过程提供方便。
实施例2
根据本申请的另一方面,提供了一种数据表的连接装置的实施例。
图2是根据本申请实施例的一种数据表的连接装置的示意图,如图2所示,该连接装置可以包括:获取模块20、确定模块40、处理模块60和连接模块80。
其中,获取模块20,用于获取待连接的多个数据表中每个数据表的统计信息,其中,统计信息中记录有对应的数据表的属性信息。
确定模块40,用于基于每个数据表的属性信息,确定每个数据表的数据容量。
处理模块60,用于基于数据容量确定多个数据表中属于同一类型的数据表集合,并将数据表集合中的数据表进行表连接,得到中间数据表。
连接模块80,用于将中间数据表与多个数据表中未连接的数据表依次连接。
采用本申请实施例,基于待连接的多个数据表的数据容量,确定多个数据表的连接顺序,并将多个数据表中同一类型的数据表连接,然后将中间数据表与上述的多个数据表中未连接的数据表连接。通过上述实施例,已经将同一类型的数据表进行了表连接,再将中间数据表与多个数据表中未连接的数据表依次连接的过程中,可以提高系统进行表连接的系统执行速度,也即,可以使得表连接耗费时间更短,从而提高表连接的效率,解决了现有技术中表连接时系统效率低的问题。
其中,上述实施例中,数据表中可以记录多个属性数据之间的关联关系,每个属性数据包含多个事实数据(即属性值),如页面访问表中可以记录页面访问次数、页面访问地址和页面访问时长之间的关联关系。
本申请实施例中的表连接大多为join连接,也即两个数据表进行连接的时候,存在过滤条件,即多表过滤后,数据量会更小。
可选地,处理模块可以包括:并发连接子模块,用于将数据表集合中的数据表并发连接,得到中间数据表。
通过上述实施例,由于数据表集合中的各个数据表属于同一类型,可以将其按照并发的方式进行表连接,减少了操作次数,以加快连接速度。
在一个可选的实施例中,处理模块包括:第一确定子模块,用于将多个数据表中,数据容量小于预设数据容量的数据表确定为属于同一类型的数据表集合;或第二确定子模块,用于按照数据容量的大小顺序对多个数据表进行排序,得到第一序列,将第一序列中排序在前N位的数据表确定为属于同一类型的数据表集合,其中,N为大于等于二的自然数。
可以基于数据容量确定小表,如将数据容量小于预设数据容量的数据表作为同一类型的表;还可以按照数据容量的大小顺序对多个数据表进行排序,从序列中确定小表。
通过上述实施例,可以将小数据量的数据表作为数据表集合,将该小数据量的数据表进行并发连接,小表本来就比较小,将这些表连接,减少了后续表连接的操作次数,同时,在表连接的过程中,小表变得更小,从而可以在后续进行表里连接时提高系统性能。
还可以在按照数据容量的大小顺序对多个数据表进行排序,得到第一序列之后,将该序列中表示数据容量较大的表作为同一类型的数据表集合,由于在表连接的过程中,经过过滤条件的表会变小,将大表变小,从而可以在后续进行表里连接时提高系统性能。
可选地,连接模块可以包括:排列子模块,用于按照中间数据表和多个数据表中未连接的数据表的数据容量的大小排列,得到第二序列;处理子模块,用于将第二序列中各个数据表的顺序作为连接顺序;连接子模块,用于按照连接顺序,依次连接第二序列中的各个数据表。
在上述实施例中,可以按照中间数据表和多个数据表中未连接的数据表的数据容量从大到小排列,也可以按照数据容量从小到大排列。
在按照数据容量从小到大排列的情况下,将中间数据表和多个数据表中未连接的数据表按照该排列顺序,依次连接。在该种连接方式中,可以将数据容量小于预设数据容量的数据表集合中的数据表(即所有的小表)先进行并发连接,然后将所有的小表连接的结果(即上述实施例的中间数据表),与大表(即待连接的多个数据表中除去所有小表以外的数据表)按照数据容量从小到大的顺序排列,并按照该排列顺序进行连接,通过上述方案,可以将所有的小表一起连接,不需要等待两张表连接完成后,才能进行后续表的连接,这样的连接方式效率更高。
通过上述实施例,可以提高表连接的执行速度,减少表连接的时间,从而提高系统的表连接效率。
本申请上述实施例中的大表和小表是通过数据容量确定的,该数据容量也可以称之为数据量,也即,大表的数据量大于小表的数据量。
在本申请的上述实施例中,连接子模块包括:执行子模块,用于将第二序列中的第一个数据表设置为当前的第一表,对当前的第一表执行下述操作,直至第二序列中的最后一个数据表,操作包括:获取子模块,用于按照连接顺序,获取当前的第一表的下一个数据表,将下一个数据表作为第二表;第三表连接子模块,用于将第一表和第二表连接,得到第三表;第三确定子模块,用于确定第三表和第二序列中未进行连接的数据表中,用于执行下一次操作的当前的第一表。
具体地,将中间数据表和多个数据表中未连接的数据表按照数据容量从小到大的顺序排列,得到第二序列,从第二序列中的第一个表(即中间数据表和多个数据表中未连接的数据表中数据容量最小的数据表)开始,将排序在第一位的确定为当前的第一表、将排序在第二位的确定为第二表,将第一表与第二表连接,得到连接后的数据表(即上述实施例中的第三表),将排序在第一位和第二位的表的相关信息从第二序列中删除,并从该第二序列中读取排位在第一位的表,也即,此时将第三表作为第一表,将读取的排位在第一位的表作为第二表,将第一表和第二表执行上述步骤,直至完成对多个数据表的连接。
上述的相关信息可以为数据表的标识。
在一个可选的方案中,第三确定子模块包括:重新确定子模块,用于基于第三表与第二序列中未进行连接的数据表的数据容量,重新确定连接顺序;下一次执行子模块,用于将重新确定的连接顺序中第一个数据表作为用于执行下一次操作的当前的第一表。
具体的,在将第一表和第二表的相关信息从第二序列中删除之后,可以将第三表和未进行连接的表重新排序,得到新的序列,将该新的序列中的排序第一位的数据表作为下一次操作的当前的第一表。
通过上述实施例,按照排序序列中各个数据表的顺序,依次对多个数据表进行连接,采用该方案,以提高系统进行表连接时的效率。
可选地,确定模块包括:第一读取子模块,用于从数据表的属性信息中读取数据表的数据容量;或第二读取子模块,用于从数据表的属性信息中读取数据表的行数,使用数据表的行数表示数据容量。
在上述实施例中,通过对数据表的各列建立统计信息,得到类似表1的统计信息,从表中统计信息包含的属性信息中可以直接读取统计的数据表的总行数(如表中Rows的属性值),使用该总行数表示数据表的数据容量;或者从表中的属性信息中读取每个SessionTime Key的行数(如从表1中读取Session Time Key=56228的行数为29.3万),并将各个Session Time Key的行数进行求和,使用得到的行数的总和表示数据表的数据容量。
在一种可选的实施例中,通过对数据表的各列建立统计信息,得到数据表的属性信息,可以从属性信息中读取数据表占用系统空间的属性值,用该属性值表示数据表的数据容量。
通过上述实施例,对待连接的多个数据表中的各个数据表的各列建立统计信息,以确定各个数据表的数据容量,该方案基于统计数据信息的方式,可以达到快速获取数据表的数据容量的目的,为后续表连接过程提供方便。
上述数据表的连接装置包括处理器和存储器,上述获取模块、确定模块、处理模块和连接模块等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元。上述统计信息、属性信息、数据表都可以存储在存储器中。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数解析文本内容。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本申请还提供了一种计算机程序产品的实施例,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:获取待连接的多个数据表中每个数据表的统计信息,其中,统计信息中记录有对应的数据表的属性信息;基于每个数据表的属性信息,确定每个数据表的数据容量;基于数据容量确定多个数据表中属于同一类型的数据表集合,并将数据表集合中的数据表进行表连接,得到中间数据表;将中间数据表与多个数据表中未连接的数据表依次连接。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (6)
1.一种数据表的连接方法,其特征在于,包括:
获取待连接的多个数据表中每个数据表的统计信息,其中,所述统计信息中记录有对应的数据表的属性信息;
基于每个所述数据表的属性信息,确定每个所述数据表的数据容量;
基于所述数据容量确定多个数据表中属于同一类型的数据表集合,并将所述数据表集合中的数据表进行表连接,得到中间数据表;
将所述中间数据表与所述多个数据表中未连接的数据表依次连接;
其中,将所述数据表集合中的数据表进行表连接,得到中间数据表包括:
将所述数据表集合中的数据表并发连接,得到所述中间数据表;
其中,基于所述数据容量确定多个数据表中属于同一类型的数据表集合包括:
将所述多个数据表中,数据容量小于预设数据容量的数据表确定为属于所述同一类型的数据表集合;或
按照数据容量的大小顺序对所述多个数据表进行排序,得到第一序列,将所述第一序列中排序在前N位的数据表确定为所述属于同一类型的数据表集合,其中,N为大于等于二的自然数。
2.根据权利要求1所述的连接方法,其特征在于,将所述中间数据表与所述多个数据表中未连接的数据表依次连接包括:
按照所述中间数据表和所述多个数据表中未连接的数据表的数据容量的大小排列,得到第二序列;
将所述第二序列中各个数据表的顺序作为连接顺序;
按照所述连接顺序,依次连接所述第二序列中的各个数据表。
3.根据权利要求2所述的连接方法,其特征在于,依次连接所述第二序列中的各个数据表包括:
将所述第二序列中的第一个数据表设置为当前的第一表,对所述当前的第一表执行下述操作,直至所述第二序列中的最后一个数据表,所述操作包括:
按照连接顺序,获取所述当前的第一表的下一个数据表,将所述下一个数据表作为第二表;
将所述第一表和所述第二表连接,得到第三表;
确定所述第三表和所述第二序列中未进行连接的数据表中,用于执行下一次操作的当前的第一表。
4.根据权利要求3所述的连接方法,其特征在于,确定所述第三表和所述第二序列中未进行连接的数据表中,用于执行下一次操作的当前的第一表包括:
基于所述第三表与所述第二序列中未进行连接的数据表的数据容量,重新确定连接顺序;
将重新确定的连接顺序中第一个数据表作为所述用于执行下一次操作的当前的第一表。
5.根据权利要求1所述的连接方法,其特征在于,基于每个所述数据表的属性信息,确定每个所述数据表的数据容量包括:
从所述数据表的属性信息中读取所述数据表的数据容量;或
从所述数据表的属性信息中读取所述数据表的行数,使用所述数据表的行数表示所述数据容量。
6.一种数据表的连接装置,其特征在于,包括:
获取模块,用于获取待连接的多个数据表中每个数据表的统计信息,其中,所述统计信息中记录有对应的数据表的属性信息;
确定模块,用于基于每个所述数据表的属性信息,确定每个所述数据表的数据容量;
处理模块,用于基于所述数据容量确定所述多个数据表中属于同一类型的数据表集合,并将所述数据表集合中的数据表进行表连接,得到中间数据表;
连接模块,用于将所述中间数据表与所述多个数据表中未连接的数据表依次连接;
其中,所述处理模块包括:
并发连接子模块,用于将所述多个数据表中的所述数据表集合中的数据表并发连接,得到所述中间数据表;
其中,所述处理模块包括:
第一确定子模块,用于将所述多个数据表中,数据容量小于预设数据容量的数据表确定为属于所述同一类型的数据表集合;或
第二确定子模块,用于按照数据容量的大小顺序对所述多个数据表进行排序,得到第一序列,将所述第一序列中排序在前N位的数据表确定为所述属于同一类型的数据表集合,其中,N为大于等于二的自然数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511034175.5A CN106933934B (zh) | 2015-12-31 | 2015-12-31 | 数据表的连接方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511034175.5A CN106933934B (zh) | 2015-12-31 | 2015-12-31 | 数据表的连接方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106933934A CN106933934A (zh) | 2017-07-07 |
CN106933934B true CN106933934B (zh) | 2020-02-28 |
Family
ID=59443956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511034175.5A Active CN106933934B (zh) | 2015-12-31 | 2015-12-31 | 数据表的连接方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106933934B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108549666B (zh) * | 2018-03-22 | 2021-05-04 | 上海达梦数据库有限公司 | 一种数据表的排序方法、装置、设备及存储介质 |
CN110472216B (zh) * | 2019-08-19 | 2022-12-06 | 北京明略软件系统有限公司 | 字段的确定方法、装置、存储介质及电子装置 |
CN111427890B (zh) * | 2020-03-24 | 2023-11-14 | 上海达梦数据库有限公司 | 一种多表连接处理方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751406A (zh) * | 2008-12-18 | 2010-06-23 | 赵伟 | 一种实现基于列存储的关系型数据库的方法及装置 |
CN102467570A (zh) * | 2010-11-17 | 2012-05-23 | 日电(中国)有限公司 | 用于分布式数据仓库的连接查询系统和方法 |
CN104112008A (zh) * | 2014-07-16 | 2014-10-22 | 深圳市国泰安信息技术有限公司 | 一种多表数据关联查询优化方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9442968B2 (en) * | 2014-03-31 | 2016-09-13 | Sap Se | Evaluation of variant configuration using in-memory technology |
-
2015
- 2015-12-31 CN CN201511034175.5A patent/CN106933934B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751406A (zh) * | 2008-12-18 | 2010-06-23 | 赵伟 | 一种实现基于列存储的关系型数据库的方法及装置 |
CN102467570A (zh) * | 2010-11-17 | 2012-05-23 | 日电(中国)有限公司 | 用于分布式数据仓库的连接查询系统和方法 |
CN104112008A (zh) * | 2014-07-16 | 2014-10-22 | 深圳市国泰安信息技术有限公司 | 一种多表数据关联查询优化方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106933934A (zh) | 2017-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106933927B (zh) | 数据表的连接方法和装置 | |
CN103703467B (zh) | 存储数据的方法和装置 | |
CN109164980B (zh) | 一种时序数据的聚合优化处理方法 | |
CN106933934B (zh) | 数据表的连接方法和装置 | |
CN110147469A (zh) | 一种数据处理方法、设备及存储介质 | |
CN106933916B (zh) | Json字符串的处理方法及装置 | |
CN102811163B (zh) | 用于流式传输网络流数据分析的方法和装置 | |
CN106933919B (zh) | 数据表的连接方法及装置 | |
CN116340367A (zh) | 数据查询方法、装置、设备和存储介质 | |
CN103593447A (zh) | 用于数据库表的数据处理方法和装置 | |
CN106933907B (zh) | 数据表扩展指标的处理方法及装置 | |
CN107832852B (zh) | 数据处理学习方法、系统以及电子设备 | |
CN107463676B (zh) | 文本数据存储方法及装置 | |
CN105589683B (zh) | 样本抽取方法和装置 | |
CN106469086B (zh) | 事件处理方法和装置 | |
CN106933933B (zh) | 数据表信息的处理方法及装置 | |
CN107203550B (zh) | 一种数据处理方法和数据库服务器 | |
CN110955710B (zh) | 一种数据交换作业中脏数据的处理方法及装置 | |
CN113760907A (zh) | 一种数据库中数据唯一性标识方法 | |
CN108984780B (zh) | 基于支持重复键值树数据结构管理磁盘数据的方法和装置 | |
CN108154177B (zh) | 业务识别方法、装置、终端设备及存储介质 | |
CN108133012B (zh) | 一种标签设置方法及装置 | |
CN112800146B (zh) | 风控数据的回溯方法及装置、存储介质和处理器 | |
JP6397105B2 (ja) | データを記憶する方法及び装置 | |
CN108241721B (zh) | 基于关键词的文章排序方法和装置 |
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 | ||
CB02 | Change of applicant information |
Address after: 100083 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing Applicant after: Beijing Guoshuang Technology Co.,Ltd. Address before: 100086 Cuigong Hotel, 76 Zhichun Road, Shuangyushu District, Haidian District, Beijing Applicant before: Beijing Guoshuang Technology Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |