一种数据库中数据存储的方法及系统的制作方法

文档序号:9597934阅读:706来源:国知局
一种数据库中数据存储的方法及系统的制作方法
【技术领域】
[0001]本发明涉及计算机技术领域,特别涉及一种数据库中数据存储的方法及系统。
【背景技术】
[0002]随着计算机技术以及移动互联网技术的飞速发展,海量存储系统越来越成为经济社会发展的需要。这就为计算机系统的设计难度带来巨大挑战,例如,单服务器的网络并发量,以及数据查询量和存储数量都得到了前所未有的挑战。如何在海量的结构化信息中查找到目标数据,成为业内的一个难题,
[0003]因此,如何对百亿,千亿的数据进行存储并实现快速查询,是本领域技术人员需要解决的技术问题。

【发明内容】

[0004]本发明的目的是提供一种数据库中数据存储的方法及系统,能够大大缩小每一列要查询的数据量,不需要进行全表遍历,可以有效地改进数据库的检索查询速度。
[0005]为解决上述技术问题,本发明提供一种数据库中数据存储的方法,包括:
[0006]数据库存储数据时,按照每一列数据的属性进行一列的存储,形成列式存储,并为每一列数据建立一个哈希表;
[0007]在每一列的数据中,将每一个字段数据都设置为双向链表的一个节点,形成一个列双向链表;
[0008]在每一行的数据中,将每一个字段数据都设置为双向链表的一个节点,形成一个行双向链表。
[0009]其中,为每一列数据建立一个哈希表包括:
[0010]根据所述数据库中预定的列存储空间,确定哈希表的容量;
[0011]根据所述容量,为每一列数据建立一个哈希表。
[0012]其中,还包括对数据库中的数据进行过滤查询,包括:
[0013]根据所述哈希表,定位出待查询数据的行首信息,其中,所述行首信息包括行标和行首字段;
[0014]利用所述行首信息及与所述行首信息相对应的行双向链表,定位出查询数据。
[0015]其中,根据所述哈希表,定位出待查询数据的行首信息包括:
[0016]根据所述哈希表,定位出所述待查询数据的预定行首信息;
[0017]统计每种预定行首信息中行标出现的次数;
[0018]判断所述次数中是否存在与待查询数据的个数相同的次数;
[0019]若存在,则确定与待查询数据的个数相同的次数对应的预定行首信息作为行首信息。
[0020]其中,还包括:
[0021]接收用户反馈的所述待查询数据的查询结果;
[0022]当所述查询结果中的错误次数超过阈值,则进行哈希表维护。
[0023]本发明提供一种数据库中数据存储的系统,包括:
[0024]哈希表模块,用于数据库存储数据时,按照每一列数据的属性进行一列的存储,形成列式存储,并为每一列数据建立一个哈希表;
[0025]列双向链表模块,用于在每一列的数据中,将每一个字段数据都设置为双向链表的一个节点,形成一个列双向链表;
[0026]行双向链表模块,用于在每一行的数据中,将每一个字段数据都设置为双向链表的一个节点,形成一个行双向链表。
[0027]其中,所述哈希表模块包括:
[0028]容量单元,用于根据所述数据库中预定的列存储空间,确定哈希表的容量;
[0029]建立单元,用于根据所述容量,为每一列数据建立一个哈希表。
[0030]其中,还包括:
[0031]查询模块,用于对数据库中的数据进行过滤查询;所述查询模块包括:
[0032]定位单元,用于根据所述哈希表,定位出待查询数据的行首信息,其中,所述行首信息包括行标和行首字段;
[0033]查询单元,用于利用所述行首信息及与所述行首信息相对应的行双向链表,定位出查询数据。
[0034]其中,所述定位单元包括:
[0035]定位子单元,用于根据所述哈希表,定位出所述待查询数据的预定行首信息;
[0036]统计子单元,用于统计每种预定行首信息中行标出现的次数;
[0037]判断子单元,用于判断所述次数中是否存在与待查询数据的个数相同的次数;
[0038]若存在,则触发确定子单元,用于确定与待查询数据的个数相同的次数对应的预定行首信息作为行首信息。
[0039]其中,还包括:
[0040]接收模块,用于接收用户反馈的所述待查询数据的查询结果;
[0041]维护模块,用于当所述查询结果中的错误次数超过阈值,则进行哈希表维护。
[0042]本发明所提供的数据库中数据存储的方法,包括:数据库存储数据时,按照每一列数据的属性进行一列的存储,形成列式存储,并为每一列数据建立一个哈希表;在每一列的数据中,将每一个字段数据都设置为双向链表的一个节点,形成一个列双向链表;在每一行的数据中,将每一个字段数据都设置为双向链表的一个节点,形成一个行双向链表;
[0043]通过每一列建立的哈希表,可以大大缩小每一列要查询的数据量,不需要进行全表遍历,提高查询速度;且在每一行的数据中,每一个字段数据都是双向链表的一个节点,由行首的字段可以查询一行所有的数据,最终可以有效地改进数据库的检索查询速度。
【附图说明】
[0044]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0045]图1为本发明实施例所提供的数据库中数据存储的方法的流程图;
[0046]图2为本发明实施例所提供的数据库中数据存储布局的示意图;
[0047]图3为本发明实施例所提供的数据库中数据存储的系统的结构框图。
【具体实施方式】
[0048]本发明的核心是提供一种数据库中数据存储的方法及系统,能够大大缩小每一列要查询的数据量,不需要进行全表遍历,可以有效地改进数据库的检索查询速度。
[0049]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0050]请参考图1,图1为本发明实施例所提供的数据库中数据存储的方法的流程图;该方法可以包括:
[0051]slOO、数据库存储数据时,按照每一列数据的属性进行一列的存储,形成列式存储,并为每一列数据建立一个哈希表;
[0052]其中,考虑到海量存储数据的特点,在每一行的数据中,根据每一列的属性,进行一列的存储,成为列式存储,每一列形成一个哈希表,当上层查询数据的时候,根据哈希算法,快速定位到一行的行首。
[0053]sllO、在每一列的数据中,将每一个字段数据都设置为双向链表的一个节点,形成一个列双向链表;
[0054]sl20、在每一行的数据中,将每一个字段数据都设置为双向链表的一个节点,形成一个行双向链表。
[0055]其中,在每一行的数据中,每一个字段数据都是双向链表的一个节点,由行首的字段可以查询了一行所有的数据。
[0056]其中,要想在查询数据时提高查询速度,必须要对数据在文件中的存储形式和数据的索引形式进行改变,例如,关系型数据的列式存储,可以将每一列的值直接排列下来,不用引入其他的概念,也不会丢失数据。关系型数据的列式存储比较好理解;嵌套类型数据的一行叫做一个记录(record),嵌套数据类型的特点是一个record中的列向量(column)除了可以是整形Int,长整形Long,字符串String这样的原语(primitive)类型以外,还可以是表List,映射Map,集合Set这样的复杂类型。
[0057]根据本实施例提供的数据库中数据存储的方法,请参考图2为按照上述方法得到的数据库中数据存储布局的示意图。
[0058]基于上述技术方案,本发明实施例提供的数据库中数据存储的方法,能够通过每一列建立的哈希表,可以大大缩小每一列要查询的数据量,不需要进行全表遍历,提高查询速度;且在每一行的数据中,每一个字段数据都是双向链表的一个节点,由行首的字段可以查询一行所有的数据,最终可以有效地改进数据库的检索查询速度。
[0059]基于上述实施例,还包括对数据库中的数据进行过滤查询,可以包括:
[0060]根据所述哈希表,定位出待查询数据的行首信息,其中,所述行首信息包括行标和行首字段;
[0061]其中,即确定待查询数据的在哪一行,然后给定行首信息,即可以是第一行,或者是001,或者其他可以表示行首的字符等。
[0062]利用所述行首信息及与所述行首信息相对应的行双向链表,定位出查询数据。
[0063]其中,由于在每一行的数据中,每一个字段数据都是双向链表的一个节点,由行首的字段可以查询了一行所有的数据。因此,这里确定了行首信息,就可以根据行双向链表,查询到待查询数据。
[0064]可选的,根据所述哈希表,定位出待查询数据的行首信息可以包括:
[0065]根据所述哈希表,定位出所述待查询数据的预定行首信息;
[0066]统计每种预定行首信息中行标出现的次数;
[0067]判断所述次数中是否存在与待查询数据的个数相同的次数;
[0068]若存在,则确定与待查询数据的个数相同的次数对应的预定行首信息作为行首信息。
[0069]其中,每一列进行哈希查找,然后再根据查找的结果中的标记位,进行匹配,如果匹配成功则表示在同一行的,就是要查找的数据。整个匹配的过程就是要确定需要查询的数据是否在同一行,例如查询李明的各科考试成绩,那么则必须保证所有查询到的数据都要在李明这一行,才是李明的成绩,否则是别人的成绩,因此,需要进行匹配。即查询李明的三科成绩,则会查询四列名字属性那一列查询李明,一科成绩一列查询李明该科成绩,若李明在第5行,则需要看5的行标出现的次数是否为4次,若是,则第5行的行首信息即为需要的行首信息。其他出现不足4次的都不匹配。
[0070]请参考图2,进行举例说明,查询
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1