一种数据存储、数据读取方法及对应的系统的制作方法

文档序号:10724898阅读:245来源:国知局
一种数据存储、数据读取方法及对应的系统的制作方法
【专利摘要】本发明公开了一种数据存储、数据读取方法及对应的系统,其中,所述数据存储方法包括:S1a、定义一结构体,所述结构体中包括一特定类型数组和一指针数组,分别用于存储待存储数据的索引数据的Hash值以及索引数据地址信息;S2a、对所述待存储数据的索引数据进行Hash运算得到对应的Hash值以及计算得到该Hash值的bit位信息;S3a、将该Hash值的bit位信息存放于结构体中的特定类型数组中,且将索引数据地址信息存储于定义的指针数组中。本发明对索引数据的Hash值按照bit位进行存储,相比现有的按照Hash值的8个字节整体进行存储,使得索引数据占用的内存空间更少,提高了数据查找的速度,也提高了内存数据库的性能。
【专利说明】
一种数据存储、数据读取方法及对应的系统
技术领域
[0001] 本发明涉及数据存储技术,具体涉及一种数据存储、数据读取方法及对应的系统。
【背景技术】
[0002] 内存数据库通过将数据完全加载到内存,在内存中实现对数据的管理,有效地解 决了基于磁盘的数据库系统中CPU和磁盘I/O之间的主要矛盾。
[0003] 内存数据库与传统的基于硬盘的数据库系统的重大区别在于数据的存储介质和 针对物理内存而特别设计的数据储存结构的存取机制,内存数据库一般存取速度是物理数 据库的5~10倍左右。
[0004] 目前内存数据库所使用的内存空间远没有磁盘空间那么大,目前是一个大数据的 时代,为数据创建索引占用了很大一分部分的内存空间,节约内存空间是一个必不可少的 性能。

【发明内容】

[0005] 本发明所要解决的技术问题是提供一种数据存储、数据读取方法及对应的系统, 能够弥补现有技术的不足。
[0006] 本发明解决上述技术问题的技术方案如下:
[0007] -方面,本发明提供了一种数据存储方法,包括:
[0008] Sla、定义一结构体,所述结构体中包括一特定类型数组和一指针数组,分别用于 存储待存储数据的索引数据的Hash值以及索引数据地址信息;
[0009] S2a、对所述待存储数据的索引数据进行Hash运算得到对应的Hash值以及计算得 到该Hash值的b i t位信息;
[0010] S3a、将该Hash值的bit位信息存放于结构体中的特定类型数组中,且将索引数据 地址信息存放于定义的指针数组中。
[0011] 另一方面,本发明提供了一种数据读取方法,包括:
[0012] Sib、对待读取数据的索引数据进行Hash运算得到对应的Hash值,并计算该Hash值 的bit位信息在结构体中存放的位置;
[0013] S2b、根据该Hash值的bit位信息在结构体中存放的位置获取索引数据地址信息, 根据索引数据地址信息查找到对应的待读取数据。
[0014] 再一方面,本发明提供了一种数据存储系统,包括:
[0015] 第一定义模块,用于定义一结构体,所述结构体中包括一特定类型数组和一指针 数组,分别存放待存储数据的索引数据的Hash值以及索引数据地址信息;
[0016] 第一计算模块,用于对所述待存储数据的索引数据进行Hash运算得到对应的Hash 值以及计算得到Hash值的bit位信息;
[0017]存储模块,用于将该Hash值的bit位信息存放于结构体中的特定类型数组中,且将 索引数据地址信息存放于定义的指针数组中。
[0018] 又一方面,本发明提供了一种数据读取系统,包括:
[0019] 第二计算模块,用于对待读取数据的索引数据进行Hash运算得到对应的Hash值, 并计算该Hash值的bit位信息在结构体中存放的位置;
[0020] 数据查找模块,用于根据该Hash值的bit位信息在结构体中存放的位置获取索引 数据地址信息,根据索引数据地址信息查找到对应的待读取数据。
[0021] 本发明提供的一种数据存储、数据读取方法及对应的系统,对索引数据的Hash值 按照bit位进行存储,相比现有的按照Hash值的8个字节整体进行存储,使得索引数据占用 的内存空间更少,提高了数据查找的速度,也提高了内存数据库的性能。
【附图说明】
[0022] 图1为本发明实施例1的一种数据存储方法流程图;
[0023] 图2为本发明实施例2的一种数据读取方法流程图;
[0024] 图3为本发明实施例3的一种数据存储系统示意图;
[0025] 图4为本发明实施例4的一种数据读取系统示意图。
【具体实施方式】
[0026] 以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并 非用于限定本发明的范围。
[0027] 实施例1、一种数据存储方法。下面结合图1对本实施例提供的数据存储方法进行 说明。
[0028] 参见图1,本实施例提供的数据存储方法包括:
[0029] Sla、定义一结构体,所述结构体中包括一特定类型数组和一指针数组,分别用于 存放待存储数据的索引数据的Hash值以及索引数据地址信息;
[0030] S2a、对所述待存储数据的索引数据进行Hash运算得到对应的Hash值以及计算该 Hash值的b i t位信息;
[0031] S3a、将该Hash值的bit位信息存放于结构体中的特定类型数组中,且将索引数据 地址信息存放于定义的指针数组中。
[0032] 其中,本实施例还定义一结构体数组StbitData bitmaparr[NUM],用于存放索引 数据,其中,NUM为定义的结构体数组的个数;
[0033] 所述步骤S2a具体包括:
[0034]对所述待存储数据的索引数据进行Hash运算得到对应的Hash值N,计算Hash值N在 定义的结构体数组中的存放位置Μ,以及Hash值N的b i t位信息在结构体的特定类型数组中 的存放位置BM;
[0035] 所述步骤S3a具体包括:
[0036]将结构体数组bitmaparr[M]中的BM位置1,且将索引数据地址信息存放于定义的 指针数组中。
[0037]其中,通过以下计算方式得到Hash值N在定义的结构体数组中的存放位置Μ以及 Hash值Ν的bit位信息在结构体的特定类型数组中的存放位置ΒΜ:
[0038] M = N/n;
[0039] BM=M%n;
[0040] 其中,N为索引数据对应的Hash值,n为定义的结构体中特定类型数组所支持的位 数。
[0041 ]另外,当存在多个待存储数据的索引数据对应的Hash值Ν均相同时,步骤S22a具体 包括:
[0042] 将结构体数组bitmaparr[M]中的BM位置1,且将多个索引数据地址信息通过链表 的形式存放于定义的指针数组中。
[0043]为了加深对本实施例提供的数据存储方法的理解,下面以一个具体的例子来说明 本实施例。
[0044]步骤1、定义一结构体,其中,结构体中定义了一long型数组(long型支持64位)和 以指针数组,分别用于存放索引数据的Hash值和索引数据地址信息,定义的结构体如下:
[0045]
[0046] 其中,long型数组按照bit位的存储结构为:
[0047] long bits[64] = {
[0064] 本实施例还定义一结构体数组,StbitData bitmaparr[NUM],用来记录索引数据,
其中,NUM可根据待存储数据的数据量确定,通常约为NUM=数据记录数/64。
[0065] 将每一个数据记录的索引字段通过Hash运算得到对应的Hash值N,计算Hash值N在 定义的结构体数组bitmaparr [NUM]的存放位置Μ,即Hash值N应该存储于第多少个结构体数 组中,其中,M = N/64;随后,计算Hash值N在结构体数组bitmaparr[M]中应该存放的bit位 BM,其中,BM=M%64。将结构体数组bitmaparr[M]中的BM位置1。若存在多个待存储数据的 索引数据对应的Hash值N均相同时,将结构体数组bitmaparr [M]中的BM位置1,且将多个索 引数据地址信息通过链表的形式存放于定义的指针数组中。
[0066] 实施例2、一种数据读取方法。下面结合图2对本实施例提供的数据读取方法进行 说明。
[0067] 参见图2,本实施例提供的数据读取方法包括:
[0068] Sib、对待读取数据的索引数据进行Hash运算得到对应的Hash值,并计算该Hash值 的bit位信息在结构体中存放的位置;
[0069] S2b、根据该Hash值的bit位信息在结构体中存放的位置获取索引数据地址信息, 根据索引数据地址信息查找到对应的待读取数据。
[0070] 具体的,本实施例提供的数据读取方法为实施例1提供的数据存储方法的逆过程, 对待读取数据的索引数据进行Hash运算,得到对应的Hash值N,计算Hash值N在定义的结构 体数组b itmaparr[NUM]的存放位置M,其中,M=N/64;随后,计算Hash值N在结构体数组b i tmaparr [Μ ]中应该存放的b i t位BM,其中,BM = Μ % 64。通过计算出的BM获取定义的结构体 中的指针数组中对应位置的索引数据地址信息,进而查找得到对应的待读取数据。
[0071] 实施例3、一种数据存储系统。下面结合图3对本实施例提供的数据存储系统进行 说明。
[0072] 参见图3,本实施例提供的数据存储系统包括第一定义模块31、第二定义模块32、 第一计算模块33和存储模块34。
[0073] 其中,第一定义模块31,用于定义一结构体,所述结构体中包括一特定类型的数组 和一指针数组,分别存放待存储数据的索引数据的Hash值以及索引数据地址信息。
[0074]第一计算模块33,对所述待存储数据的索引数据进行Hash运算得到对应的Hash值 以及Hash值的bit位信息。
[0075]存储模块34,用于将该Hash值的bit位信息存放于结构体中的特定类型数组中,且 将索引数据地址信息存放于定义的指针数组中。
[0076]本实施例提供的数据存储系统还包括第二定义模块32,用于定义一结构体数组 StbitData bitmaparr[NUM],用于存放索引数据。
[0077]所述第一计算模块33具体用于:
[0078]对所述待存储数据的索引数据进行Hash运算得到对应的Hash值N,计算Hash值N在 定义的结构体数组中的存放位置Μ,以及Hash值N的b i t位信息在结构体的特定类型数组中 的存放位置BM;
[0079]所述存储模块34,具体用于:
[0080]将结构体数组bitmaparr[M]中的BM位置置1,且将索引数据地址信息存放于定义 的指针数组中。
[0081 ]所述第一计算模块33通过以下计算方式得到Hash值N在定义的结构体数组中的存 放位置Μ以及Hash值N的b i t位信息在结构体的特定类型数组中的存放位置BM:
[0082] M = N/n;
[0083] BM=M%n;
[0084] 其中,N为索引数据对应的Hash值,η为定义的结构体中特定类型数组的位数。
[0085]另外,当存在多个待存储数据的索引数据对应的Hash值Ν均相同时,所述存储模块 34还用于:
[0086] 将结构体数组bitmaparr[M]中的BM位置置1,且将多个索引数据地址信息通过链 表的形式存放于定义的指针数组中。
[0087]实施例4、一种数据读取系统。下面结合图4对本实施例提供的数据读取系统进行 说明。
[0088]参见图4,本实施例提供的数据读取系统包括第二计算模块41和数据查找模块42。 [0089]其中,第二计算模块41,用于对待读取数据的索引数据进行Hash运算得到对应的 Hash值,并计算该Hash值的b i t位信息在结构体中存放的位置。
[0090] 数据查找模块42,用于根据该Hash值的bit位信息在结构体中存放的位置获取索 引数据地址信息,根据索引数据地址信息查找到对应的待读取数据。
[0091] 本发明提供的一种数据存储、数据读取方法及对应的系统,对索引数据的Hash值 按照bit位进行存储,相比现有的按照Hash值的8个字节整体进行存储,使得索引数据占用 的内存空间更少,提高了数据查找的速度,也提高了内存数据库的性能。
[0092] 在本说明书的描述中,参考术语"实施例一"、"示例"、"具体示例"、或"一些示例" 等的描述意指结合该实施例或示例描述的具体方法、装置或者特点包含于本发明的至少一 个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施 例或示例。而且,描述的具体特征、方法、装置或者特点可以在任一个或多个实施例或示例 中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中 描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0093]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和 原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1. 一种数据存储方法,其特征在于,包括: Sla、定义一结构体,所述结构体中包括一特定类型数组和一指针数组,分别用于存储 待存储数据的索引数据的Hash值以及索引数据地址信息; S2a、对所述待存储数据的索引数据进行Hash运算得到对应的Hash值以及计算得到该 Hash值的b i t位信息; S3a、将该Hash值的bit位信息存放于结构体中的特定类型数组中,且将索引数据地址 信息存放于定义的指针数组中。2. 如权利要求1所述的数据存储方法,其特征在于,还包括: 定义一结构体数组StbitData bitmaparr[NUM],用于存放索引数据,其中,NUM为定义 的结构体数组的个数; 所述步骤S2a具体包括: 对所述待存储数据的索引数据进行Hash运算得到对应的Hash值N,计算Hash值N在定义 的结构体数组中的存放位置M,以及Hash值N的bit位信息在结构体的特定类型数组中的存 放位置BM; 所述步骤S3a具体包括: 将结构体数组bitmaparr[M]中的BM位置1,且将索引数据地址信息存放于定义的指针 数组中。3. 如权利要求2所述的数据存储方法,其特征在于,通过以下计算方式得到Hash值N在 定义的结构体数组中的存放位置Μ以及Hash值N的bit位信息在结构体的特定类型数组中的 存放位置BM: M=N/n; BM=M%n; 其中,N为索引数据对应的Hash值,η为定义的结构体中特定类型数组所支持的位数。4. 如权利要求3所述的数据存储方法,其特征在于,当存在多个待存储数据的索引数据 对应的Hash值Ν均相同时,步骤S3a具体包括: 将结构体数组bitmaparr[M]中的BM位置1,且将多个索引数据地址信息通过链表的形 式存放于定义的指针数组中。5. -种数据读取方法,其特征在于,包括: Sib、对待读取数据的索引数据进行Hash运算得到对应的Hash值,并计算该Hash值的 bit位信息在结构体中存放的位置; S2b、根据该Hash值的bit位信息在结构体中存放的位置获取索引数据地址信息,根据 索引数据地址信息查找到对应的待读取数据。6. -种数据存储系统,其特征在于,包括: 第一定义模块,用于定义一结构体,所述结构体中包括一特定类型数组和一指针数组, 分别存放待存储数据的索引数据的Hash值以及索引数据地址信息; 第一计算模块,用于对所述待存储数据的索引数据进行Hash运算得到对应的Hash值以 及计算得到Hash值的bit位信息; 存储模块,用于将该Hash值的bit位信息存放于结构体中的特定类型数组中,且将索引 数据地址信息存放于定义的指针数组中。7. 如权利要求6所述的数据存储系统,其特征在于,还包括: 第二定义模块,用于定义一结构体数组StbitData bitmaparr[NUM],用于存放索引数 据,其中,NUM为定义的结构体数组的个数; 所述第一计算模块具体用于: 对所述待存储数据的索引数据进行Hash运算得到对应的Hash值N,计算Hash值N在定义 的结构体数组中的存放位置M,以及Hash值N的bit位信息在结构体的特定类型数组中的存 放位置BM; 所述存储模块具体用于: 将结构体数组bitmaparr[M]中的BM位置1,且将索引数据地址信息存放于定义的指针 数组中。8. 如权利要求7所述的数据存储系统,其特征在于,所述第一计算模块通过以下计算方 式得到Hash值N在定义的结构体数组中的存放位置Μ以及Hash值N的bit位信息在结构体的 特定类型数组中的存放位置BM: M=N/n; BM=M%n; 其中,N为索引数据对应的Hash值,η为定义的结构体中特定类型数组所支持的位数。9. 如权利要求8所述的数据存储系统,其特征在于,当存在多个待存储数据的索引数据 对应的Hash值Ν均相同时,所述存储模块还用于: 将结构体数组bitmaparr[M]中的BM位置1,且将多个索引数据地址信息通过链表的形 式存放于定义的指针数组中。10. -种数据读取系统,其特征在于,包括: 第二计算模块,用于对待读取数据的索引数据进行Hash运算得到对应的Hash值,并计 算该Hash值的bit位信息在结构体中存放的位置; 数据查找模块,用于根据该Hash值的bit位信息在结构体中存放的位置获取索引数据 地址信息,根据索引数据地址信息查找到对应的待读取数据。
【文档编号】G06F17/30GK106095769SQ201610290986
【公开日】2016年11月9日
【申请日】2016年5月5日
【发明人】邱海港
【申请人】北京思特奇信息技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1