CN106095769B - 一种数据存储、数据读取方法及对应的系统 - Google Patents

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

Info

Publication number
CN106095769B
CN106095769B CN201610290986.XA CN201610290986A CN106095769B CN 106095769 B CN106095769 B CN 106095769B CN 201610290986 A CN201610290986 A CN 201610290986A CN 106095769 B CN106095769 B CN 106095769B
Authority
CN
China
Prior art keywords
data
hash value
structural body
array
index data
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
Application number
CN201610290986.XA
Other languages
English (en)
Other versions
CN106095769A (zh
Inventor
邱海港
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Si Tech Information Technology Co Ltd
Original Assignee
Beijing Si Tech Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Si Tech Information Technology Co Ltd filed Critical Beijing Si Tech Information Technology Co Ltd
Priority to CN201610290986.XA priority Critical patent/CN106095769B/zh
Publication of CN106095769A publication Critical patent/CN106095769A/zh
Application granted granted Critical
Publication of CN106095769B publication Critical patent/CN106095769B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; 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 (8)

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,且将索引数据地址信息存放于定义的指针数组中。
2.如权利要求1所述的数据存储方法,其特征在于,通过以下计算方式得到Hash值N在定义的结构体数组中的存放位置M以及Hash值N的bit位信息在结构体的特定类型数组中的存放位置BM:
M=N/n;
BM=M%n;
其中,N为索引数据对应的Hash值,n为定义的结构体中特定类型数组所支持的位数。
3.如权利要求2所述的数据存储方法,其特征在于,当存在多个待存储数据的索引数据对应的Hash值N均相同时,步骤S3a具体包括:
将结构体数组bitmaparr[M]中的BM位置1,且将多个索引数据地址信息通过链表的形式存放于定义的指针数组中。
4.一种数据读取方法,其特征在于,用于读取根据如权利要求1至3任一项所述的数据存储方法进行存储的数据,包括:
S1b、对待读取数据的索引数据进行Hash运算得到对应的Hash值,并计算该Hash值的bit位信息在结构体中存放的位置;
S2b、根据该Hash值的bit位信息在结构体中存放的位置获取索引数据地址信息,根据索引数据地址信息查找到对应的待读取数据。
5.一种数据存储系统,其特征在于,包括:
第一定义模块,用于定义一结构体,所述结构体中包括一特定类型数组和一指针数组,分别存放待存储数据的索引数据的Hash值以及索引数据地址信息;
第一计算模块,用于对所述待存储数据的索引数据进行Hash运算得到对应的Hash值以及计算得到Hash值的bit位信息;
存储模块,用于将该Hash值的bit位信息存放于结构体中的特定类型数组中,且将索引数据地址信息存放于定义的指针数组中;
还包括:
第二定义模块,用于定义一结构体数组StbitData bitmaparr[NUM],用于存放索引数据,其中,NUM为定义的结构体数组的个数;
所述第一计算模块具体用于:
对所述待存储数据的索引数据进行Hash运算得到对应的Hash值N,计算Hash值N在定义的结构体数组中的存放位置M,以及Hash值N的bit位信息在结构体的特定类型数组中的存放位置BM;
所述存储模块具体用于:
将结构体数组bitmaparr[M]中的BM位置1,且将索引数据地址信息存放于定义的指针数组中。
6.如权利要求5所述的数据存储系统,其特征在于,所述第一计算模块通过以下计算方式得到Hash值N在定义的结构体数组中的存放位置M以及Hash值N的bit位信息在结构体的特定类型数组中的存放位置BM:
M=N/n;
BM=M%n;
其中,N为索引数据对应的Hash值,n为定义的结构体中特定类型数组所支持的位数。
7.如权利要求6所述的数据存储系统,其特征在于,当存在多个待存储数据的索引数据对应的Hash值N均相同时,所述存储模块还用于:
将结构体数组bitmaparr[M]中的BM位置1,且将多个索引数据地址信息通过链表的形式存放于定义的指针数组中。
8.一种数据读取系统,其特征在于,用于读取根据如权利要求5至7任一项所述的数据存储系统进行存储的数据,包括:
第二计算模块,用于对待读取数据的索引数据进行Hash运算得到对应的Hash值,并计算该Hash值的bit位信息在结构体中存放的位置;
数据查找模块,用于根据该Hash值的bit位信息在结构体中存放的位置获取索引数据地址信息,根据索引数据地址信息查找到对应的待读取数据。
CN201610290986.XA 2016-05-05 2016-05-05 一种数据存储、数据读取方法及对应的系统 Active CN106095769B (zh)

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 CN106095769A (zh) 2016-11-09
CN106095769B true 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 (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103310008A (zh) * 2013-06-28 2013-09-18 安科智慧城市技术(中国)有限公司 一种云控制服务器及其文件索引方法
CN104484281A (zh) * 2014-12-26 2015-04-01 杭州华三通信技术有限公司 数据存储方法、查找方法及装置
CN104951791A (zh) * 2014-03-26 2015-09-30 华为技术有限公司 数据分类方法和装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101640623A (zh) * 2008-07-31 2010-02-03 国际商业机器公司 在对等网络中搜索资源的方法和设备
CN102572050A (zh) * 2010-12-09 2012-07-11 希姆通信息技术(上海)有限公司 一种手机通讯录号码查询信息处理方法
CN103678172B (zh) * 2013-12-25 2017-05-03 Tcl集团股份有限公司 一种本地数据缓存管理方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103310008A (zh) * 2013-06-28 2013-09-18 安科智慧城市技术(中国)有限公司 一种云控制服务器及其文件索引方法
CN104951791A (zh) * 2014-03-26 2015-09-30 华为技术有限公司 数据分类方法和装置
CN104484281A (zh) * 2014-12-26 2015-04-01 杭州华三通信技术有限公司 数据存储方法、查找方法及装置

Also Published As

Publication number Publication date
CN106095769A (zh) 2016-11-09

Similar Documents

Publication Publication Date Title
CN102663090B (zh) 元数据查询方法和装置
CN103577440B (zh) 一种非关系型数据库中的数据处理方法和装置
US10496523B2 (en) Sequential access storage and data de-duplication
CN102129458B (zh) 关系型数据库的存储方法及装置
CN103605805A (zh) 一种海量时序数据的存储方法
CN101882141A (zh) 一种实现重复数据数据删除的方法和系统
CN104615594B (zh) 一种数据更新方法及装置
CN104281535B (zh) 一种映射表在内存中的处理方法和装置
US11288287B2 (en) Methods and apparatus to partition a database
CN101763415B (zh) 一种数据库的b树索引的生成方法及装置
US10037778B1 (en) Indexing zones for storage devices
CN116450656B (zh) 数据处理方法、装置、设备及存储介质
JPWO2012169102A1 (ja) データベース性能予測装置及びデータベース予測方法
CN103365943A (zh) 数据库处理设备、数据库处理方法以及记录介质
US8719235B2 (en) Controlling tape layout for de-duplication
US9047363B2 (en) Text indexing for updateable tokenized text
US9454550B2 (en) Database method for B+ tree based on PRAM
CN104050057A (zh) 一种历史感知的数据去重碎片消除方法与系统
CN103403709A (zh) 一种数据读写的方法、装置和系统
CN108182244B (zh) 一种基于多层次列式存储结构的时序数据存储方法
CN106095769B (zh) 一种数据存储、数据读取方法及对应的系统
CN102609364A (zh) 缓存交换方法
CN103902693A (zh) 一种读优化的内存数据库t树索引结构的方法
US11080299B2 (en) Methods and apparatus to partition a database
CN103714121A (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