CN106095769A - 一种数据存储、数据读取方法及对应的系统 - Google Patents
一种数据存储、数据读取方法及对应的系统 Download PDFInfo
- Publication number
- CN106095769A CN106095769A CN201610290986.XA CN201610290986A CN106095769A CN 106095769 A CN106095769 A CN 106095769A CN 201610290986 A CN201610290986 A CN 201610290986A CN 106095769 A CN106095769 A CN 106095769A
- Authority
- CN
- China
- Prior art keywords
- hash value
- data
- array
- index data
- definition
- 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.)
- Granted
Links
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/22—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (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
本发明公开了一种数据存储、数据读取方法及对应的系统,其中,所述数据存储方法包括:S1a、定义一结构体,所述结构体中包括一特定类型数组和一指针数组,分别用于存储待存储数据的索引数据的Hash值以及索引数据地址信息;S2a、对所述待存储数据的索引数据进行Hash运算得到对应的Hash值以及计算得到该Hash值的bit位信息;S3a、将该Hash值的bit位信息存放于结构体中的特定类型数组中,且将索引数据地址信息存储于定义的指针数组中。本发明对索引数据的Hash值按照bit位进行存储,相比现有的按照Hash值的8个字节整体进行存储,使得索引数据占用的内存空间更少,提高了数据查找的速度,也提高了内存数据库的性能。
Description
技术领域
本发明涉及数据存储技术,具体涉及一种数据存储、数据读取方法及对应的系统。
背景技术
内存数据库通过将数据完全加载到内存,在内存中实现对数据的管理,有效地解决了基于磁盘的数据库系统中CPU和磁盘I/O之间的主要矛盾。
内存数据库与传统的基于硬盘的数据库系统的重大区别在于数据的存储介质和针对物理内存而特别设计的数据储存结构的存取机制,内存数据库一般存取速度是物理数据库的5~10倍左右。
目前内存数据库所使用的内存空间远没有磁盘空间那么大,目前是一个大数据的时代,为数据创建索引占用了很大一分部分的内存空间,节约内存空间是一个必不可少的性能。
发明内容
本发明所要解决的技术问题是提供一种数据存储、数据读取方法及对应的系统,能够弥补现有技术的不足。
本发明解决上述技术问题的技术方案如下:
一方面,本发明提供了一种数据存储方法,包括:
S1a、定义一结构体,所述结构体中包括一特定类型数组和一指针数组,分别用于存储待存储数据的索引数据的Hash值以及索引数据地址信息;
S2a、对所述待存储数据的索引数据进行Hash运算得到对应的Hash值以及计算得到该Hash值的bit位信息;
S3a、将该Hash值的bit位信息存放于结构体中的特定类型数组中,且将索引数据地址信息存放于定义的指针数组中。
另一方面,本发明提供了一种数据读取方法,包括:
S1b、对待读取数据的索引数据进行Hash运算得到对应的Hash值,并计算该Hash值的bit位信息在结构体中存放的位置;
S2b、根据该Hash值的bit位信息在结构体中存放的位置获取索引数据地址信息,根据索引数据地址信息查找到对应的待读取数据。
再一方面,本发明提供了一种数据存储系统,包括:
第一定义模块,用于定义一结构体,所述结构体中包括一特定类型数组和一指针数组,分别存放待存储数据的索引数据的Hash值以及索引数据地址信息;
第一计算模块,用于对所述待存储数据的索引数据进行Hash运算得到对应的Hash值以及计算得到Hash值的bit位信息;
存储模块,用于将该Hash值的bit位信息存放于结构体中的特定类型数组中,且将索引数据地址信息存放于定义的指针数组中。
又一方面,本发明提供了一种数据读取系统,包括:
第二计算模块,用于对待读取数据的索引数据进行Hash运算得到对应的Hash值,并计算该Hash值的bit位信息在结构体中存放的位置;
数据查找模块,用于根据该Hash值的bit位信息在结构体中存放的位置获取索引数据地址信息,根据索引数据地址信息查找到对应的待读取数据。
本发明提供的一种数据存储、数据读取方法及对应的系统,对索引数据的Hash值按照bit位进行存储,相比现有的按照Hash值的8个字节整体进行存储,使得索引数据占用的内存空间更少,提高了数据查找的速度,也提高了内存数据库的性能。
附图说明
图1为本发明实施例1的一种数据存储方法流程图;
图2为本发明实施例2的一种数据读取方法流程图;
图3为本发明实施例3的一种数据存储系统示意图;
图4为本发明实施例4的一种数据读取系统示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
实施例1、一种数据存储方法。下面结合图1对本实施例提供的数据存储方法进行说明。
参见图1,本实施例提供的数据存储方法包括:
S1a、定义一结构体,所述结构体中包括一特定类型数组和一指针数组,分别用于存放待存储数据的索引数据的Hash值以及索引数据地址信息;
S2a、对所述待存储数据的索引数据进行Hash运算得到对应的Hash值以及计算该Hash值的bit位信息;
S3a、将该Hash值的bit位信息存放于结构体中的特定类型数组中,且将索引数据地址信息存放于定义的指针数组中。
其中,本实施例还定义一结构体数组StbitData bitmaparr[NUM],用于存放索引数据,其中,NUM为定义的结构体数组的个数;
所述步骤S2a具体包括:
对所述待存储数据的索引数据进行Hash运算得到对应的Hash值N,计算Hash值N在定义的结构体数组中的存放位置M,以及Hash值N的bit位信息在结构体的特定类型数组中的存放位置BM;
所述步骤S3a具体包括:
将结构体数组bitmaparr[M]中的BM位置1,且将索引数据地址信息存放于定义的指针数组中。
其中,通过以下计算方式得到Hash值N在定义的结构体数组中的存放位置M以及Hash值N的bit位信息在结构体的特定类型数组中的存放位置BM:
M=N/n;
BM=M%n;
其中,N为索引数据对应的Hash值,n为定义的结构体中特定类型数组所支持的位数。
另外,当存在多个待存储数据的索引数据对应的Hash值N均相同时,步骤S22a具体包括:
将结构体数组bitmaparr[M]中的BM位置1,且将多个索引数据地址信息通过链表的形式存放于定义的指针数组中。
为了加深对本实施例提供的数据存储方法的理解,下面以一个具体的例子来说明本实施例。
步骤1、定义一结构体,其中,结构体中定义了一long型数组(long型支持64位)和以指针数组,分别用于存放索引数据的Hash值和索引数据地址信息,定义的结构体如下:
其中,long型数组按照bit位的存储结构为:
long bits[64]={
0x0000000000000001,0x0000000000000002,0x0000000000000004,0x0000000000000008,
0x0000000000000010,0x0000000000000020,0x0000000000000040,0x0000000000000080,
0x0000000000000100,0x0000000000000200,0x0000000000000400,0x0000000000000800,
0x0000000000001000,0x0000000000002000,0x0000000000004000,0x0000000000008000,
0x0000000000010000,0x0000000000020000,0x0000000000040000,0x0000000000080000,
0x0000000000100000,0x0000000000200000,0x0000000000400000,0x0000000000800000,
0x0000000001000000,0x0000000002000000,0x0000000004000000,0x0000000008000000,
0x0000000010000000,0x0000000020000000,0x0000000040000000,0x0000000080000000,
0x0000000100000000,0x0000000200000000,0x0000000400000000,0x0000000800000000,
0x0000001000000000,0x0000002000000000,0x0000004000000000,0x0000008000000000,
0x0000010000000000,0x0000020000000000,0x0000040000000000,0x0000080000000000,
0x0000100000000000,0x0000200000000000,0x0000400000000000,0x0000800000000000,
0x0001000000000000,0x0002000000000000,0x0004000000000000,0x0008000000000000,
0x0010000000000000,0x0020000000000000,0x0040000000000000,0x0080000000000000,
0x0100000000000000,0x0200000000000000,0x0400000000000000,0x0800000000000000,
0x1000000000000000,0x2000000000000000,0x4000000000000000,0x8000000000000000};
本实施例还定义一结构体数组,StbitData bitmaparr[NUM],用来记录索引数据,其中,NUM可根据待存储数据的数据量确定,通常约为NUM=数据记录数/64。
将每一个数据记录的索引字段通过Hash运算得到对应的Hash值N,计算Hash值N在定义的结构体数组bitmaparr[NUM]的存放位置M,即Hash值N应该存储于第多少个结构体数组中,其中,M=N/64;随后,计算Hash值N在结构体数组bitmaparr[M]中应该存放的bit位BM,其中,BM=M%64。将结构体数组bitmaparr[M]中的BM位置1。若存在多个待存储数据的索引数据对应的Hash值N均相同时,将结构体数组bitmaparr[M]中的BM位置1,且将多个索引数据地址信息通过链表的形式存放于定义的指针数组中。
实施例2、一种数据读取方法。下面结合图2对本实施例提供的数据读取方法进行说明。
参见图2,本实施例提供的数据读取方法包括:
S1b、对待读取数据的索引数据进行Hash运算得到对应的Hash值,并计算该Hash值的bit位信息在结构体中存放的位置;
S2b、根据该Hash值的bit位信息在结构体中存放的位置获取索引数据地址信息,根据索引数据地址信息查找到对应的待读取数据。
具体的,本实施例提供的数据读取方法为实施例1提供的数据存储方法的逆过程,对待读取数据的索引数据进行Hash运算,得到对应的Hash值N,计算Hash值N在定义的结构体数组b itmaparr[NUM]的存放位置M,其中,M=N/64;随后,计算Hash值N在结构体数组b itmaparr[M]中应该存放的b it位BM,其中,BM=M%64。通过计算出的BM获取定义的结构体中的指针数组中对应位置的索引数据地址信息,进而查找得到对应的待读取数据。
实施例3、一种数据存储系统。下面结合图3对本实施例提供的数据存储系统进行说明。
参见图3,本实施例提供的数据存储系统包括第一定义模块31、第二定义模块32、第一计算模块33和存储模块34。
其中,第一定义模块31,用于定义一结构体,所述结构体中包括一特定类型的数组和一指针数组,分别存放待存储数据的索引数据的Hash值以及索引数据地址信息。
第一计算模块33,对所述待存储数据的索引数据进行Hash运算得到对应的Hash值以及Hash值的bit位信息。
存储模块34,用于将该Hash值的bit位信息存放于结构体中的特定类型数组中,且将索引数据地址信息存放于定义的指针数组中。
本实施例提供的数据存储系统还包括第二定义模块32,用于定义一结构体数组StbitData bitmaparr[NUM],用于存放索引数据。
所述第一计算模块33具体用于:
对所述待存储数据的索引数据进行Hash运算得到对应的Hash值N,计算Hash值N在定义的结构体数组中的存放位置M,以及Hash值N的bit位信息在结构体的特定类型数组中的存放位置BM;
所述存储模块34,具体用于:
将结构体数组bitmaparr[M]中的BM位置置1,且将索引数据地址信息存放于定义的指针数组中。
所述第一计算模块33通过以下计算方式得到Hash值N在定义的结构体数组中的存放位置M以及Hash值N的bit位信息在结构体的特定类型数组中的存放位置BM:
M=N/n;
BM=M%n;
其中,N为索引数据对应的Hash值,n为定义的结构体中特定类型数组的位数。
另外,当存在多个待存储数据的索引数据对应的Hash值N均相同时,所述存储模块34还用于:
将结构体数组bitmaparr[M]中的BM位置置1,且将多个索引数据地址信息通过链表的形式存放于定义的指针数组中。
实施例4、一种数据读取系统。下面结合图4对本实施例提供的数据读取系统进行说明。
参见图4,本实施例提供的数据读取系统包括第二计算模块41和数据查找模块42。
其中,第二计算模块41,用于对待读取数据的索引数据进行Hash运算得到对应的Hash值,并计算该Hash值的bit位信息在结构体中存放的位置。
数据查找模块42,用于根据该Hash值的bit位信息在结构体中存放的位置获取索引数据地址信息,根据索引数据地址信息查找到对应的待读取数据。
本发明提供的一种数据存储、数据读取方法及对应的系统,对索引数据的Hash值按照bit位进行存储,相比现有的按照Hash值的8个字节整体进行存储,使得索引数据占用的内存空间更少,提高了数据查找的速度,也提高了内存数据库的性能。
在本说明书的描述中,参考术语“实施例一”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体方法、装置或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、方法、装置或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据存储方法,其特征在于,包括:
S1a、定义一结构体,所述结构体中包括一特定类型数组和一指针数组,分别用于存储待存储数据的索引数据的Hash值以及索引数据地址信息;
S2a、对所述待存储数据的索引数据进行Hash运算得到对应的Hash值以及计算得到该Hash值的bit位信息;
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在定义的结构体数组中的存放位置M以及Hash值N的bit位信息在结构体的特定类型数组中的存放位置BM:
M=N/n;
BM=M%n;
其中,N为索引数据对应的Hash值,n为定义的结构体中特定类型数组所支持的位数。
4.如权利要求3所述的数据存储方法,其特征在于,当存在多个待存储数据的索引数据对应的Hash值N均相同时,步骤S3a具体包括:
将结构体数组bitmaparr[M]中的BM位置1,且将多个索引数据地址信息通过链表的形式存放于定义的指针数组中。
5.一种数据读取方法,其特征在于,包括:
S1b、对待读取数据的索引数据进行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在定义的结构体数组中的存放位置M以及Hash值N的bit位信息在结构体的特定类型数组中的存放位置BM:
M=N/n;
BM=M%n;
其中,N为索引数据对应的Hash值,n为定义的结构体中特定类型数组所支持的位数。
9.如权利要求8所述的数据存储系统,其特征在于,当存在多个待存储数据的索引数据对应的Hash值N均相同时,所述存储模块还用于:
将结构体数组bitmaparr[M]中的BM位置1,且将多个索引数据地址信息通过链表的形式存放于定义的指针数组中。
10.一种数据读取系统,其特征在于,包括:
第二计算模块,用于对待读取数据的索引数据进行Hash运算得到对应的Hash值,并计算该Hash值的bit位信息在结构体中存放的位置;
数据查找模块,用于根据该Hash值的bit位信息在结构体中存放的位置获取索引数据地址信息,根据索引数据地址信息查找到对应的待读取数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610290986.XA CN106095769B (zh) | 2016-05-05 | 2016-05-05 | 一种数据存储、数据读取方法及对应的系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610290986.XA CN106095769B (zh) | 2016-05-05 | 2016-05-05 | 一种数据存储、数据读取方法及对应的系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106095769A true CN106095769A (zh) | 2016-11-09 |
CN106095769B CN106095769B (zh) | 2019-04-23 |
Family
ID=57229266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610290986.XA Active CN106095769B (zh) | 2016-05-05 | 2016-05-05 | 一种数据存储、数据读取方法及对应的系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106095769B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101640623A (zh) * | 2008-07-31 | 2010-02-03 | 国际商业机器公司 | 在对等网络中搜索资源的方法和设备 |
CN102572050A (zh) * | 2010-12-09 | 2012-07-11 | 希姆通信息技术(上海)有限公司 | 一种手机通讯录号码查询信息处理方法 |
CN103310008A (zh) * | 2013-06-28 | 2013-09-18 | 安科智慧城市技术(中国)有限公司 | 一种云控制服务器及其文件索引方法 |
CN103678172A (zh) * | 2013-12-25 | 2014-03-26 | Tcl集团股份有限公司 | 一种本地数据缓存管理方法及装置 |
CN104484281A (zh) * | 2014-12-26 | 2015-04-01 | 杭州华三通信技术有限公司 | 数据存储方法、查找方法及装置 |
CN104951791A (zh) * | 2014-03-26 | 2015-09-30 | 华为技术有限公司 | 数据分类方法和装置 |
-
2016
- 2016-05-05 CN CN201610290986.XA patent/CN106095769B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101640623A (zh) * | 2008-07-31 | 2010-02-03 | 国际商业机器公司 | 在对等网络中搜索资源的方法和设备 |
CN102572050A (zh) * | 2010-12-09 | 2012-07-11 | 希姆通信息技术(上海)有限公司 | 一种手机通讯录号码查询信息处理方法 |
CN103310008A (zh) * | 2013-06-28 | 2013-09-18 | 安科智慧城市技术(中国)有限公司 | 一种云控制服务器及其文件索引方法 |
CN103678172A (zh) * | 2013-12-25 | 2014-03-26 | Tcl集团股份有限公司 | 一种本地数据缓存管理方法及装置 |
CN104951791A (zh) * | 2014-03-26 | 2015-09-30 | 华为技术有限公司 | 数据分类方法和装置 |
CN104484281A (zh) * | 2014-12-26 | 2015-04-01 | 杭州华三通信技术有限公司 | 数据存储方法、查找方法及装置 |
Non-Patent Citations (1)
Title |
---|
赵大勇 等: ""基于改进主动哈希的URL存储和查找算法"", 《微电子学与计算机》 * |
Also Published As
Publication number | Publication date |
---|---|
CN106095769B (zh) | 2019-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110149803B (zh) | 数据存储方法、系统及终端设备 | |
US9983821B2 (en) | Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application | |
CN102663090B (zh) | 元数据查询方法和装置 | |
CN103577440B (zh) | 一种非关系型数据库中的数据处理方法和装置 | |
US10468061B1 (en) | Indexing zones for storage devices | |
CN103605805A (zh) | 一种海量时序数据的存储方法 | |
CN102129458A (zh) | 关系型数据库的存储方法及装置 | |
CN103140840B (zh) | 数据管理的方法及装置 | |
CN104115133A (zh) | 复合非易失性存储设备的数据迁移 | |
US11288287B2 (en) | Methods and apparatus to partition a database | |
CN104281535B (zh) | 一种映射表在内存中的处理方法和装置 | |
WO2012027165A1 (en) | Sequential access storage and data de-duplication | |
CN104090962A (zh) | 面向海量分布式数据库的嵌套查询方法 | |
CN106599040A (zh) | 一种面向云存储的分层索引方法与检索方法 | |
CN103714163A (zh) | 一种NoSQL数据库的模式管理方法及系统 | |
CN116450656B (zh) | 数据处理方法、装置、设备及存储介质 | |
WO2013075306A1 (zh) | 数据访问方法和装置 | |
CN105359142B (zh) | 哈希连接方法和装置 | |
US9454550B2 (en) | Database method for B+ tree based on PRAM | |
CN105205008B (zh) | 降低混合映射算法中日志块映射表内存资源占用的方法 | |
CN104536908A (zh) | 一种面向单机的海量小记录高效存储管理方法 | |
CN104408128B (zh) | 一种基于b+树异步更新索引的读优化方法 | |
CN107766258A (zh) | 内存存储方法与装置、内存查询方法与装置 | |
CN117194907B (zh) | 数据中台的低价值数据主题识别方法 | |
CN107273443B (zh) | 一种基于大数据模型元数据的混合索引方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |