著录项信息
专利名称 | 只读表的连接方法和只读表的连接系统 |
申请号 | CN201410318952.8 | 申请日期 | 2014-07-04 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2014-10-08 | 公开/公告号 | CN104090954A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F16/28 | IPC分类号 | G06F16/28;G06F16/22查看分类表>
|
申请人 | 用友软件股份有限公司 | 申请人地址 | 北京市海淀区北清路***
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 用友网络科技股份有限公司 | 当前权利人 | 用友网络科技股份有限公司 |
发明人 | 宋晓眉;刘永伟 |
代理机构 | 北京友联知识产权代理事务所(普通合伙) | 代理人 | 尚志峰;汪海屏 |
摘要
本发明提供了一种只读表的连接方法和连接系统,包括:分割步骤,将具有多个属性的海量数据表纵向分割成多个数据表,其中每个属性对应所述数据表中的一列;存储步骤,将每个所述数据表中的元组数据按照指定格式的数据页进行存储;数据匹配步骤,当接收到对所述海量数据表进行读取的指令时,依次读取每个所述数据表对应的数据页,在读取当前数据页中的任一元组数据时,从与所述当前数据页相邻的下一个数据页中提取出与所述任一元组数据具有相同偏移量的目标元组数据,并将所述任一元组数据和所述目标元组数据进行匹配输出。通过本发明的技术方案,可以在节约只读表的列数的同时提高表装载数据的效率,减少内存和CPU资源占用,提高存储效率。
1.一种只读表的连接方法,其特征在于,包括:
分割步骤,将具有多个属性的海量数据表纵向分割成多个数据表,其中每个属性对应所述数据表中的一列;
存储步骤,将每个所述数据表中的元组数据按照指定格式的数据页进行存储;
数据匹配步骤,当接收到对所述海量数据表进行读取的指令时,依次读取每个所述数据表对应的数据页,在读取当前数据页中的任一元组数据时,从与所述当前数据页相邻的下一个数据页中提取出与所述任一元组数据具有相同偏移量的目标元组数据,并将所述任一元组数据和所述目标元组数据进行匹配输出。
2.根据权利要求1所述的只读表的连接方法,其特征在于,所述指定格式的数据页包括页头数据,数据项指针,元组数据和空闲空间。
3.根据权利要求2所述的只读表的连接方法,其特征在于,所述数据项指针和所述元组数据一一对应,所述页头数据中包含所述空闲空间的起止位置,所述数据项指针的起止位置和所述空闲空间的大小,所述数据项指针中包含对应的元组数据的位置和大小,所述元组数据从所述数据页的页尾依次进行分配,所述元组数据对应的数据项指针从所述数据页的页头依次进行分配。
4.根据权利要求1至3中任一项所述的只读表的连接方法,其特征在于,所述数据匹配步骤具体包括:
确定当前数据表,读取所述当前数据表对应的所述当前数据页,在读取所述当前数据页中任一元组数据时,获取所述任一元组数据的偏移量;
根据所述任一元组数据的偏移量确定所述任一元组数据的初始地址和元组长度,以读取出所述任一元组数据;
确定与所述当前数据页相邻的下一个数据页,并根据所述任一元组数据的偏移量确定所述下一个数据页的目标偏移量;
根据所述下一个数据页的目标偏移量确定所述目标元组数据的初始地址和元组长度,以提取出所述目标元组数据。
5.根据权利要求4所述的只读表的连接方法,其特征在于,还包括:
判断所述当前数据页的偏移量是否大于所述当前数据页的元组个数,在判断结果为是时,重新确定所述当前数据页。
6.一种只读表的连接系统,其特征在于,包括:
分割单元,用于将具有多个属性的海量数据表纵向分割成多个数据表,其中每个属性对应所述数据表中的一列;
存储单元,用于将每个所述数据表中的元组数据按照指定格式的数据页进行存储;
数据匹配单元,当接收到对所述海量数据表进行读取的指令时,依次读取每个所述数据表对应的数据页,在读取当前数据页中的任一元组数据时,从与所述当前数据页相邻的下一个数据页中提取出与所述任一元组数据具有相同偏移量的目标元组数据,并将所述任一元组数据和所述目标元组数据进行匹配输出。
7.根据权利要求6所述的只读表的连接系统,其特征在于,所述指定格式的数据页包括页头数据,数据项指针,元组数据和空闲空间。
8.根据权利要求7所述的只读表的连接系统,其特征在于,所述数据项指针和所述元组数据一一对应,所述页头数据中包含所述空闲空间的起止位置,所述数据项指针的起止位置和所述空闲空间的大小,所述数据项指针中包含对应的元组数据的位置和大小,所述元组数据从所述数据页的页尾依次进行分配,所述元组数据对应的数据项指针从所述数据页的页头依次进行分配。
9.根据权利要求6至8中任一项所述的只读表的连接系统,其特征在于,所述数据匹配单元具体用于:
确定当前数据表,读取所述当前数据表对应的所述当前数据页,在读取所述当前数据页中任一元组数据时,获取所述任一元组数据的偏移量;
根据所述任一元组数据的偏移量确定所述任一元组数据的初始地址和元组长度,以读取出所述任一元组数据;
确定与所述当前数据页相邻的下一个数据页,并根据所述任一元组数据的偏移量确定所述下一个数据页的目标偏移量;
根据所述下一个数据页的目标偏移量确定所述目标元组数据的初始地址和元组长度,以提取出所述目标元组数据。
10.根据权利要求9所述的只读表的连接系统,其特征在于,所述数据匹配单元还用于:
判断所述当前数据页的偏移量是否大于所述当前数据页的元组个数,在判断结果为是时,重新确定所述当前数据页。
只读表的连接方法和只读表的连接系统
技术领域
[0001] 本发明涉及数据技术领域,具体而言,涉及一种只读表的连接方法和一种只读表的连接系统。
背景技术
[0002] 当今,关系数据库的主流应用已经慢慢从OLTP应用转向OLAP的应用,例如决策支持系统(Decision Support System,简称DSS)。读数据的地位在不断上升,以读为主的关系数据库的应用场景在不断地增多。另一方面,很多数据在经过ETL(Extraction Transformation Loading,提取、转换和加载)操作放在数据仓库(主要是关系数据库)之后,几乎不发生变化。
[0003] 在生物学领域,一个研究对象可以有很多的属性。例如一个物种的单核苷酸多态性(single nucleotide polymorphism)可以有成千上万个属性(对应数据库中的列),远远超出了传统数据库的一个表可以容纳的列的数目,这些属性常常会被分割成多个表,这些表的连接效率成为读取研究对象所有属性的关键。
[0004] ANSI标准的SQL给出了五种JOIN方式:内连接(Inner),全外连接(Full Outer),左外连接(Left Outer),右外连接(Right Outer)和交叉连接(Cross)。这些连接都是基于两点:1、笛卡尔积连接;2、磁盘数据随机存取。
[0005] 传统的数据表连接方式主要是基于笛卡尔积连接,如图1所示,笛卡尔积连接是驱动表的每一条数据和匹配表中每一条数据依次匹配输出。不同的连接会对输出数据有不同的过滤。有过滤条件存在时候,可以采用了诸如索引机制提升性能的策略,使得驱动表的一条数据可以跳过多个匹配表数据来提升性能。但是当数据量大的时候,连接操作仍然是查询的一个比较大的性能瓶颈,传统数据库中表的数据是不能保证顺序的,一般情况下,被更改的数据或者插入的数据都会被放在最后。
[0006] 一个只读表的列数过多,超过传统关系型数据库所能容纳的列数的时候,我们只能使用多个表装载数据,在读取所有数据时候需要使用连接技术,因此,现有的关系数据库表连接技术的效率低下,已经无法满足使用需求。
[0007] 因此,如何在节约只读表的列数的同时提高表装载数据的效率,成为目前亟待解决的问题。
发明内容
[0008] 本发明正是基于上述问题,提出了一种新的技术方案,可以在节约只读表的列数的同时提高表装载数据的效率。
[0009] 有鉴于此,本发明提出了一种只读表的连接方法,包括:分割步骤,将具有多个属性的海量数据表纵向分割成多个数据表,其中每个属性对应所述数据表中的一列;存储步骤,将每个所述数据表中的元组数据按照指定格式的数据页进行存储;数据匹配步骤,当接收到对所述海量数据表进行读取的指令时,依次读取每个所述数据表对应的数据页,在读取当前数据页中的任一元组数据时,从与所述当前数据页相邻的下一个数据页中提取出与所述任一元组数据具有相同偏移量的目标元组数据,并将所述任一元组数据和所述目标元组数据进行匹配输出。
[0010] 在该技术方案中,通过将具有多个属性的海量数据表纵向分割成多个数据表,并将每个所述数据表中的元组数据按照指定格式的数据页进行存储,形成了一种新的数据库连接技术——顺序连接。该连接技术可以不再基于笛卡尔连接技术,并且只面向于只读表。
通过顺序连接,可以避免驱动表一条数据对匹配表所有数据的扫描匹配,而是对驱动表的指定位置进行数据顺序输出,从而提高数据提取速度。另外,对于一些针对少数列的聚合操作可以减少内存消耗,提高计算速度。
[0011] 在上述技术方案中,优选地,所述指定格式的数据页包括页头数据,数据项指针,元组数据和空闲空间。
[0012] 在上述技术方案中,优选地,所述数据项指针和所述元组数据一一对应,所述页头数据中包含所述空闲空间的起止位置,所述数据项指针的起止位置和所述空闲空间的大小,所述数据项指针中包含对应的元组数据的位置和大小,所述元组数据从所述数据页的页尾依次进行分配,所述元组数据对应的数据项指针从所述数据页的页头依次进行分配。
[0013] 在该技术方案中,顺序连接可以用于多种格式的数据页,拓宽了使用范围,且数据项指针和元组数据一一对应,提高了数据查询的效率。
[0014] 在上述技术方案中,优选地,所述数据匹配步骤具体包括:确定当前数据表,读取所述当前数据表对应的所述当前数据页,在读取所述当前数据页中任一元组数据时,获取所述任一元组数据的偏移量;根据所述任一元组数据的偏移量确定所述任一元组数据的初始地址和元组长度,以读取出所述任一元组数据;确定与所述当前数据页相邻的下一个数据页,并根据所述任一元组数据的偏移量确定所述下一个数据页的目标偏移量;根据所述下一个数据页的目标偏移量确定所述目标元组数据的初始地址和元组长度,以提取出所述目标元组数据。
[0015] 在该技术方案中,根据任一元组数据的偏移量确认其初始地址和元组长度,并根据相邻数据页确定相邻的元组数据的偏移量,将驱动表和匹配表中的元组顺序连接,顺序连接使得驱动表的每一条元组不用与匹配表的所有元组进行匹配连接,而与特定元组匹配,大大降低了连接的时间消耗,提高了数据查询的效率。
[0016] 在上述技术方案中,优选地,还包括:判断所述当前数据页的偏移量是否大于所述当前数据页的元组个数,在判断结果为是时,重新确定所述当前数据页。
[0017] 在该技术方案中,可以根据偏移量来重新确定当前页,以使偏移量与当前数据页的元组个数相匹配,这样,通过顺序连接技术将数据表的纵向分割,克服了单个表的列个数过多超出传统数据库表列个数限制的问题。
[0018] 根据本发明第二方面的实施例,提出了一种只读表的连接系统,包括:分割单元,用于将具有多个属性的海量数据表纵向分割成多个数据表,其中每个属性对应所述数据表中的一列;存储单元,用于将每个所述数据表中的元组数据按照指定格式的数据页进行存储;数据匹配单元,当接收到对所述海量数据表进行读取的指令时,依次读取每个所述数据表对应的数据页,在读取当前数据页中的任一元组数据时,从与所述当前数据页相邻的下一个数据页中提取出与所述任一元组数据具有相同偏移量的目标元组数据,并将所述任一元组数据和所述目标元组数据进行匹配输出。
[0019] 在该技术方案中,通过将具有多个属性的海量数据表纵向分割成多个数据表,并将每个所述数据表中的元组数据按照指定格式的数据页进行存储,形成了一种新的数据库连接技术——顺序连接。该连接技术可以不再基于笛卡尔连接技术,并且只面向于只读表。
通过顺序连接,可以避免驱动表一条数据对匹配表所有数据的扫描匹配,而是对驱动表的指定位置进行数据顺序输出,从而提高数据提取速度。另外,对于一些针对少数列的聚合操作可以减少内存消耗,提高计算速度。
[0020] 在上述技术方案中,优选地,所述指定格式的数据页包括页头数据,数据项指针,元组数据和空闲空间。
[0021] 在上述技术方案中,优选地,所述数据项指针和所述元组数据一一对应,所述页头数据中包含所述空闲空间的起止位置,所述数据项指针的起止位置和所述空闲空间的大小,所述数据项指针中包含对应的元组数据的位置和大小,所述元组数据从所述数据页的页尾依次进行分配,所述元组数据对应的数据项指针从所述数据页的页头依次进行分配。
[0022] 在该技术方案中,顺序连接可以用于多种格式的数据页,拓宽了使用范围,且数据项指针和元组数据一一对应,提高了数据查询的效率。
[0023] 在上述技术方案中,优选地,所述数据匹配单元具体包括:确定当前数据表,读取所述当前数据表对应的所述当前数据页,在读取所述当前数据页中任一元组数据时,获取所述任一元组数据的偏移量;根据所述任一元组数据的偏移量确定所述任一元组数据的初始地址和元组长度,以读取出所述任一元组数据;确定与所述当前数据页相邻的下一个数据页,并根据所述任一元组数据的偏移量确定所述下一个数据页的目标偏移量;根据所述下一个数据页的目标偏移量确定所述目标元组数据的初始地址和元组长度,以提取出所述目标元组数据。
[0024] 在该技术方案中,根据任一元组数据的偏移量确认其初始地址和元组长度,并根据相邻数据页确定相邻的元组数据的偏移量,将驱动表和匹配表中的元组顺序连接,顺序连接使得驱动表的每一条元组不用与匹配表的所有元组进行匹配连接,而与特定元组匹配,大大降低了连接的时间消耗,提高了数据查询的效率。
[0025] 在上述技术方案中,优选地,还包括:判断所述当前数据页的偏移量是否大于所述当前数据页的元组个数,在判断结果为是时,重新确定所述当前数据页。
[0026] 在该技术方案中,可以根据偏移量来重新确定当前页,以使偏移量与当前数据页的元组个数相匹配,这样,通过顺序连接技术将数据表的纵向分割,克服了单个表的列个数过多超出传统数据库表列个数限制的问题。
[0027] 通过以上技术方案,可以在数据只读的前提下,将驱动表和匹配表中的元组顺序连接。首先,顺序连接技术使得驱动表的每一条元组不用与匹配表的所有元组进行匹配连接,而与特定元组匹配,大大降低了连接的时间消耗,提高了数据查询的效率。其次,顺序连接技术支持数据表的纵向分割,克服了单个表的列个数过多超出传统数据库表列个数限制的问题。最后顺序连接技术可以保证常用的字段单独成表,在使用诸如聚合运算等复杂计算时候,只将部分数据提取到内存参与计算,可以将减少内存和cpu资源的使用。
附图说明
[0028] 图1示出了现有技术中笛卡尔连接的示意图;
[0029] 图2示出了根据本发明的实施例的只读表的连接方法的流程图;
[0030] 图3示出了根据本发明的实施例的只读表的连接系统的框图;
[0031] 图4示出了根据本发明的实施例的只读表的连接方法的顺序连接的示意图;
[0032] 图5示出了根据本发明的实施例的只读表的连接方法的逻辑页结构示意图。
具体实施方式
[0033] 为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
[0034] 在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
[0035] 图2示出了根据本发明的实施例的只读表的连接方法的流程图。
[0036] 如图2所示,根据本发明的实施例的只读表的连接方法,包括以下步骤:
[0037] 步骤202,将具有多个属性的海量数据表纵向分割成多个数据表,其中每个属性对应数据表中的一列。
[0038] 步骤204,将每个数据表中的元组数据按照指定格式的数据页进行存储。
[0039] 步骤206,当接收到对海量数据表进行读取的指令时,依次读取每个数据表对应的数据页,在读取当前数据页中的任一元组数据时,从与当前数据页相邻的下一个数据页中提取出与任一元组数据具有相同偏移量的目标元组数据,并将任一元组数据和目标元组数据进行匹配输出。
[0040] 在该技术方案中,通过将具有多个属性的海量数据表纵向分割成多个数据表,并将每个数据表中的元组数据按照指定格式的数据页进行存储,形成了一种新的数据库连接技术——顺序连接。该连接技术可以不再基于笛卡尔连接技术,并且只面向于只读表。通过顺序连接,可以避免驱动表一条数据对匹配表所有数据的扫描匹配,而是对驱动表的指定位置进行数据顺序输出,从而提高数据提取速度。另外,对于一些针对少数列的聚合操作可以减少内存消耗,提高计算速度。
[0041] 在上述技术方案中,优选地,指定格式的数据页包括页头数据,数据项指针,元组数据和空闲空间。
[0042] 在上述技术方案中,优选地,数据项指针和元组数据一一对应,页头数据中包含空闲空间的起止位置,数据项指针的起止位置和空闲空间的大小,数据项指针中包含对应的元组数据的位置和大小,元组数据从数据页的页尾依次进行分配,元组数据对应的数据项指针从数据页的页头依次进行分配。
[0043] 在该技术方案中,顺序连接可以用于多种格式的数据页,拓宽了使用范围,且数据项指针和元组数据一一对应,提高了数据查询的效率。
[0044] 在上述技术方案中,优选地,数据匹配步骤具体包括:确定当前数据表,读取当前数据表对应的当前数据页,在读取当前数据页中任一元组数据时,获取任一元组数据的偏移量;根据任一元组数据的偏移量确定任一元组数据的初始地址和元组长度,以读取出任一元组数据;确定与当前数据页相邻的下一个数据页,并根据任一元组数据的偏移量确定下一个数据页的目标偏移量;根据下一个数据页的目标偏移量确定目标元组数据的初始地址和元组长度,以提取出目标元组数据。
[0045] 在该技术方案中,根据任一元组数据的偏移量确认其初始地址和元组长度,并根据相邻数据页确定相邻的元组数据的偏移量,将驱动表和匹配表中的元组顺序连接,顺序连接使得驱动表的每一条元组不用与匹配表的所有元组进行匹配连接,而与特定元组匹配,大大降低了连接的时间消耗,提高了数据查询的效率。
[0046] 在上述技术方案中,优选地,还包括:判断当前数据页的偏移量是否大于当前数据页的元组个数,在判断结果为是时,重新确定当前数据页。
[0047] 在该技术方案中,可以根据偏移量来重新确定当前页,以使偏移量与当前数据页的元组个数相匹配,这样,通过顺序连接技术将数据表的纵向分割,克服了单个表的列个数过多超出传统数据库表列个数限制的问题。
[0048] 图3示出了根据本发明的实施例的只读表的连接系统的框图。
[0049] 如图3所示,根据本发明的实施例的只读表的连接系统300,包括:分割单元202,用于将具有多个属性的海量数据表纵向分割成多个数据表,其中每个属性对应数据表中的一列;存储单元204,用于将每个数据表中的元组数据按照指定格式的数据页进行存储;数据匹配单元206,当接收到对海量数据表进行读取的指令时,依次读取每个数据表对应的数据页,在读取当前数据页中的任一元组数据时,从与当前数据页相邻的下一个数据页中提取出与任一元组数据具有相同偏移量的目标元组数据,并将任一元组数据和目标元组数据进行匹配输出。
[0050] 在该技术方案中,通过将具有多个属性的海量数据表纵向分割成多个数据表,并将每个数据表中的元组数据按照指定格式的数据页进行存储,形成了一种新的数据库连接技术——顺序连接。该连接技术可以不再基于笛卡尔连接技术,并且只面向于只读表。通过顺序连接,可以避免驱动表一条数据对匹配表所有数据的扫描匹配,而是对驱动表的指定位置进行数据顺序输出,从而提高数据提取速度。另外,对于一些针对少数列的聚合操作可以减少内存消耗,提高计算速度。
[0051] 在上述技术方案中,优选地,指定格式的数据页包括页头数据,数据项指针,元组数据和空闲空间。
[0052] 在上述技术方案中,优选地,数据项指针和元组数据一一对应,页头数据中包含空闲空间的起止位置,数据项指针的起止位置和空闲空间的大小,数据项指针中包含对应的元组数据的位置和大小,元组数据从数据页的页尾依次进行分配,元组数据对应的数据项指针从数据页的页头依次进行分配。
[0053] 在该技术方案中,顺序连接可以用于多种格式的数据页,拓宽了使用范围,且数据项指针和元组数据一一对应,提高了数据查询的效率。
[0054] 在上述技术方案中,优选地,数据匹配单元具体包括:确定当前数据表,读取当前数据表对应的当前数据页,在读取当前数据页中任一元组数据时,获取任一元组数据的偏移量;根据任一元组数据的偏移量确定任一元组数据的初始地址和元组长度,以读取出任一元组数据;确定与当前数据页相邻的下一个数据页,并根据任一元组数据的偏移量确定下一个数据页的目标偏移量;根据下一个数据页的目标偏移量确定目标元组数据的初始地址和元组长度,以提取出目标元组数据。
[0055] 在该技术方案中,根据任一元组数据的偏移量确认其初始地址和元组长度,并根据相邻数据页确定相邻的元组数据的偏移量,将驱动表和匹配表中的元组顺序连接,顺序连接使得驱动表的每一条元组不用与匹配表的所有元组进行匹配连接,而与特定元组匹配,大大降低了连接的时间消耗,提高了数据查询的效率。
[0056] 在上述技术方案中,优选地,还包括:判断当前数据页的偏移量是否大于当前数据页的元组个数,在判断结果为是时,重新确定当前数据页。
[0057] 在该技术方案中,可以根据偏移量来重新确定当前页,以使偏移量与当前数据页的元组个数相匹配,这样,通过顺序连接技术将数据表的纵向分割,克服了单个表的列个数过多超出传统数据库表列个数限制的问题。
[0058] 图4示出了根据本发明的实施例的只读表的连接方法的顺序连接的示意图。
[0059] 如图4所示,驱动表outer table中的元组数据tuple1、tuple2、tuple3与匹配表inner table中的元组数据相同偏移量的元组数据tuple1、tuple2、tuple3一一对应。
[0060] 本发明提出顺序连接方式,不再以笛卡尔连接为基础。在保证元组数据没有删除和修改并且增加的元组数据是逐条插入的情况下,以驱动表的一条元组,与匹配表的相同偏移量的元组进行匹配。
[0061] 图5示出了根据本发明的实施例的只读表的连接方法的逻辑页结构示意图。
[0062] 如图5所示,PageHeaderData是页头数据,包含该文件块的一般信息,例如空闲空间的起止位置、项指针的起止位置、剩余空间大小等;Linp是描述Tuple的项,主要包括元组的位置、大小等;Freespace是指未分配的空间(空闲空间),新插入的元组从队尾部开始顺序分配空间;而对应的Linp项是从队首开始分配。Tuple是具体的元组数据。
[0063] 数据表的数据在磁盘中的物理存储是随机的,但是其逻辑结构却是可以控制的,在上述技术方案中,使用逻辑页来组织磁盘数据。在保证逻辑页插入数据之后不再进行删除和修改操作前提下,对驱动表的元组提取顺序在头文件之后的某个元组数据,更新偏移量参数(初始为0),提取匹配表的相同偏移量的元组数据并匹配和输出。具体的操作过程如下:
[0064] 步骤一:定义且初始化全局变量OuterOffset和InnerOffset值分别为0,分别用来标志驱动表和匹配表的当前逻辑文件块中元组的id偏移量;定义且初始化全局变量OuterTupNum和InnerTupNum值为0,分别用来标志驱动表和匹配表当前页含有Tuple的个数;如果驱动表是首次读取逻辑文件块,转向步骤二;否则转向步骤三。
[0065] 步骤二:通过驱动表的数据元信息获取第一个逻辑文件块作为驱动表的当前数据页,将OuterOffset值初始化为0,用OuterTupNum从PageHeaderData结构中获取元组个数,进入步骤四。
[0066] 步骤三:顺序扫描驱动表的逻辑文件块,获取驱动表的当前页;通过上一个表逻辑文件块的PageHeaderData信息获取下一个逻辑文件块作为驱动表的当前数据页;将OuterOffset值初始化为0,OuterTupNum从PageHeaderData结构中获取元组个数,进入步骤四。
[0067] 步骤四:判断OuterOffset是否大于OuterTupNum,当判断结果为是时,返回步骤三,否则,通过驱动表当前数据页的PageHeaderData结构获取ID偏移量为OuterOffset的Linp结构OuterLinp;如果获取结果为空,则标志查询结束,结束进程;如果获取成功,OuterOffset自加1,进入步骤五。
[0068] 步骤五:驱动表根据OuterLinp结构获取Tuple的初始地址和元组长度,读取Tuple的数据,如果是首次读取匹配表的逻辑文件块,进入步骤六,否则进入步骤七。
[0069] 步骤六:通过匹配表的元数据信息获取第一个逻辑文件块作为驱动表的当前数据页,将IuterOffset值初始化为0,InnerTupNum从PageHeaderData结构中获取元组个数,进入步骤八。
[0070] 步骤七:顺序扫描匹配表逻辑文件块,获取匹配表当前页,并通过上一个匹配表逻辑文件块的PageHeaderData信息获取下一个逻辑文件块作为驱动表的当前数据页,将InnerOffset值初始化为0,InnerTupNum从PageHeaderData结构中获取元组个数,进入步骤八。
[0071] 步骤八:判断InnerOffset是否大于InnerTupNum,当判断结果为是时,返回步骤七,否则,通过当前数据页的PageHeaderData获取ID偏移量为InnerOffset的Linp结构InnerLinp。InnerOffset自加1。
[0072] 步骤九:匹配表根据InnerLinp获取Tuple的初始地址和元组长度。读取Tuple的数据,连接驱动表提取的Tuple数据输出后,返回步骤三。
[0073] 以上结合附图详细说明了本发明的技术方案。通过以上技术方案,可以在数据只读的前提下,将驱动表和匹配表中的元组顺序连接。首先,顺序连接技术使得驱动表的每一条元组不用与匹配表的所有元组进行匹配连接,而与特定元组匹配,大大降低了连接的时间消耗,提高了数据查询的效率。其次,顺序连接技术支持数据表的纵向分割,克服了单个表的列个数过多超出传统数据库表列个数限制的问题。最后顺序连接技术可以保证常用的字段单独成表,在使用诸如聚合运算等复杂计算时候,只将部分数据提取到内存参与计算,可以将减少内存和cpu资源的使用。
[0074] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
法律信息
- 2019-02-05
- 2015-11-25
著录事项变更
申请人由用友软件股份有限公司变更为用友网络科技股份有限公司
地址由100094 北京市海淀区北清路68号用友软件园变更为100094 北京市海淀区北清路68号
- 2014-10-29
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201410318952.8
申请日: 2014.07.04
- 2014-10-08
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2011-03-30
|
2010-11-15
| | |
2
| |
2012-06-13
|
2011-10-18
| | |
3
| |
2010-06-23
|
2008-12-18
| | |
4
| | 暂无 |
2009-01-06
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |