CN103593477A - 一种哈希数据库的配置方法和装置 - Google Patents
一种哈希数据库的配置方法和装置 Download PDFInfo
- Publication number
- CN103593477A CN103593477A CN201310627860.3A CN201310627860A CN103593477A CN 103593477 A CN103593477 A CN 103593477A CN 201310627860 A CN201310627860 A CN 201310627860A CN 103593477 A CN103593477 A CN 103593477A
- Authority
- CN
- China
- Prior art keywords
- key
- page
- area
- expansion
- disc
- 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.)
- Pending
Links
Images
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
- G06F16/2228—Indexing structures
-
- 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
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
Abstract
本发明实施例公开了一种哈希数据库的配置方法,包括:在磁盘上开辟索引区和数据区,其中,所述索引区由p个大小相等的磁盘页面组成;接收到Key-Value对的分配请求,将所述Key-Value对中m个Key分配至所述索引区的磁盘页面中,且将所述Key-Value对中的n个Value分配至所述数据区中,m、n和p均为大于1的整数。本发明实施例还公开了一种哈希数据库的配置装置。采用本发明,提高哈希数据库的访问效率。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种哈希数据库的配置方法和装置。
背景技术
随着网络的发展,信息呈现爆炸性增长,人类的数据达到前所未有的规模,这些超大规模的数据存储和管理已经成为一大挑战。基于DHT(Distributed HashTable)技术的P2P(Pear to Pear)存储系统拥有很高的扩展性,支持大规模的数据存储,可以较好地应对这一挑战,这种存储系统的底层存储引擎一般是Key-Value数据库,以下简称K-V数据库,即以键值对形式进行数据存储和访问的非关系型数据库。其通常的数据访问操作有插入,查找,删除,数据访问形式一般如下:put(key,&value),get(key,&value),delete(key),其中key为数据的唯一标识,value即为数据内容。下文中put,get,delete分别对应插入,查找和删除操作。
变长Hash K-V数据库是一种常见的哈希数据库,这种数据库可以存储变长的Key和Value,其基本原理是通过哈希算法确定每个Key和Value的存储位置,当遇到Hash冲突时,使用特定的数据结构和二叉树算法来解决。其逻辑结构如图1所示,图1中,Hash K-V数据库从逻辑上分为四个部分,分别为:BucketArray:即Hash桶,其大小为Hash空间的大小,其中存储的内容为每个键值对(Key Value pair)所对应的在存储介质的位置;Key:即每个键值对的键,存储key的值;Value:即每个键值对的值,存储value的值;Ptr:即当Hash冲突发生时,存储相同Hash值的下一个键值对的位置(或偏移量);以上部件构成了Hash K-V数据库的通用结构。
由于使用了哈希算法,根据哈希算法的固有特性,不同的输入得到的哈希值可能相等,这种不定长Hash K-V数据库在性能设计上的关键在于哈希冲突的处理方式。由于该数据库采用二叉树来解决冲突的Key-Value对,当数据量过大时,树的深度会较大,每次需要读取、更新叶子节点上的Key-Value时就需要在磁盘上随机读取整个二叉树上的一些节点,造成了性能抖动过大,形成性能长尾,性能在数据量较大压力较大时会出现急剧下降的情况。
发明内容
本发明实施例所要解决的技术问题在于,提供一种哈希数据库的配置方法和装置。可解决现有哈希数据库的访问效率低的不足。
为了解决上述技术问题,本发明提供了一种哈希数据库的配置方法,包括:
在磁盘上开辟索引区和数据区,其中,所述索引区由p个大小相等的磁盘页面组成;
接收到Key-Value对的分配请求,将所述Key-Value对中m个Key分配至所述索引区的磁盘页面中,且将所述Key-Value对中的n个Value分配至所述数据区中,m、n和p均为大于1的整数。
在第一种可能的实现方式中,所述将所述Key-Value对中m个Key分配至所述索引区的磁盘页面中的步骤包括:
从m个Key中选取一个待分配Key进行哈希运算得到哈希值;
根据所述哈希值和磁盘页面的数量p进行求模得到落入的磁盘页面的序号;
将所述待分配Key存储至所述序号对应的磁盘页面。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:
在所述磁盘上开辟扩展区,其中,所述扩展区由q个大小相等的扩展页面组成,q为大于1的整数;
若所述索引区中的磁盘页面发生溢出时,将溢出的Key存储至所述扩展页面中。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述将待分配Key分配至所述序号对应的磁盘页面的步骤包括:
若所述序号对应的磁盘页面的剩余容量小于所述待分配Key的长度;
在所述扩展区中查询其剩余容量大于所述待分配Key长度的扩展页面;
将所述待分配Key存储至所述扩展页面中。
结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,还包括:
采用Bitmap技术管理所述扩展区中q个扩展页面的分配和回收。
结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,还包括:
将哈希值相同的磁盘页面及扩展页面组成链表,其中磁盘页面位于所述链表的头部。
结合第一方面的第五种可能的实现方式,在第六种可能的实现方式中,还包括:
在所述磁盘开辟备份区,并将所述索引区和所述扩展区中的数据的副本拷贝至所述备份区,其中,所述备份区和所述索引区及扩展区不相邻。
本发明第二方面提供了一种哈希数据库的配置装置,包括:
开辟模块,用于在磁盘上开辟索引区和数据区,其中,所述索引区由p个大小相等的磁盘页面组成;
分配模块,用于接收到Key-Value对的分配请求,将所述Key-Value对中m个Key分配至所述索引区的磁盘页面中,且将所述Key-Value对中的n个Value分配至所述数据区中,m、n和p均为大于1的整数。
在第一种可能的实现方式中,所述分配模块包括:
计算单元,用于从m个Key中选取一个待分配Key进行哈希运算得到哈希值;
求模单元,用于根据所述哈希值和磁盘页面的数量p进行求模得到落入的磁盘页面的序号;
分配单元,用于将所述待分配Key存储至所述序号对应的磁盘页面。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:
溢出控制模块,用于在所述磁盘上开辟扩展区,其中,所述扩展区由q个大小相等的扩展页面组成,q为大于1的整数;若所述索引区中的磁盘页面发生溢出时,将溢出的Key存储至所述扩展页面中。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述分配单元用于若所述序号对应的磁盘页面的剩余容量小于所述待分配Key的长度;
在所述扩展区中查询其剩余容量大于所述待分配Key长度的扩展页面;
将所述待分配Key存储至所述扩展页面中。
结合第二方面得第三种可能的实现方式,在第四种可能的实现方式中,还包括:
管理模块,用于采用Bitmap技术管理所述扩展区中q个扩展页面的分配和回收。
结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,还包括:
生成模块,用于将哈希值相同的磁盘页面及扩展页面组成链表,其中磁盘页面位于所述链表的头部。
结合第二方面的第五种可能的实现方式,在第六种可能的实现方式中,还包括:
备份模块,用于在所述磁盘开辟备份区,并将所述索引区和所述扩展区中的数据的副本拷贝至所述备份区,其中,所述备份区和所述索引区及扩展区不相邻。
实施本发明,具有如下有益效果:
通过将哈希数据库的Key-Value对中的Key和Value进行分离,分别存储至磁盘上开辟的索引区和数据区,在接收到对哈希数据库的操作请求时,避免产生大量的磁盘IO操作,在Key-Value对的数量较大时,磁盘IO操作的次数稳定,提高了哈希数据库的操作效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中哈希数据库的结构示意图;
图2是本发明第一实施例的一种哈希数据库的配置方法的流程示意图;
图3是本发明第二实施例的一种哈希数据库的配置方法的流程示意图;
图4本发明实施例的磁盘及哈希数据库的空间布局示意图;
图5是本发明第一实施例的一种哈希数据库的配置装置的结构示意图;
图6是本发明第二实施例的一种哈希数据库的配置装置的结构示意图;
图7是图6中分配模块的结构示意图;
图8是本发明第三实施例的一种哈希数据库的配置装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图2,为本发明第一实施例的一种哈希数据库的配置方法的流程示意图,在本实施例中,所述方法包括:
S101、在磁盘上开辟索引区和数据区,其中,所述索引区由p个大小相等的磁盘页面组成。
具体的,磁盘上的空闲空间处开辟索引区和数据区,索引区用于存储哈希数据库的Key-Value对中的Key,数据区用于存储哈希数据库的Key-Value对中的Value,Key-Value对中的Key和Value分离,其中,索引区由p个大小相等的磁盘页面组成,每个磁盘页面存储哈希值相同的Key。例如,每个磁盘页面的大小均为8K字节
S102、接收到Key-Value对的分配请求,将所述Key-Value对中的m个Key分配至所述索引区的磁盘页面中,且将所述Key-Value对中的m个Value分配至所述数据区中
具体的,Key-Value对为哈希数据库中预先配置的,Key与Value是多对一的关系,即至少一个Key与一个Value存在映射关系,Key-Value对中由m个Key和n个Value组成,m≥n,将m个Key分配到索引区的p个磁盘页面中,同时将n个Value分配到数据区中。
每个Key个长度为固定值,假设Key的长度均为1K字节,每个磁盘页面的容量为8K字节,则索引区的每个磁盘页面中可存储8K/1K=8个Key,考虑到Key的描述信息需要占用一定的存储空间,实际上每个磁盘页面可存储的Key的数量为7个;m个Key分配到p个磁盘页面中,具体分配方法为:Key经过哈希运算后求模落在某一个磁盘页面中,如果哈希算法均匀性好,那么每个Key落入到各个磁盘页面的概率是相同的,概率都为1/p,指定某个磁盘页面为空的概率为(1-1/p)^m,空的磁盘页面(即Key的数量为0的磁盘页面)的数量为p*(1-1/p)^m,当p,n的值足够大时,空的磁盘页面的数量约等于n*(1/e)^(m/n);指定某个磁盘页面有k个Key的概率为C(m,k)*(1/p)^k*(1-1/p)^(m-k),C(m,k)表示求组合数。假设Key的数量m=8000000,磁盘页面的数量p=2621431,计算结果图表1所示
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | … |
123921 | 378859 | 577760 | 587049 | 447625 | 273051 | 138801 | 60477 | 23057 | 7813 | 23830 | 660 | 167 | … |
表1
表1中,第一行表示磁盘页面中分配的Key的数量,第二行表示对应的磁盘页面的数量,例如,分配到0个Key的磁盘页面的数量为123921,分配到1个Key的磁盘页面的数量为378859,分配到2个Key的磁盘页面的数量为577760。
数据区采用多类定长实现变长的存储策略,例如,数据区采用64M字节的粒度进行分块,每个块中只存储指定类型的数据,块内部进行切片化,由FBP/Allocator进行管理,分配回收在O(1)时间内完成,主要消耗为FBP的磁盘IO时间。
每个磁盘页面的容量为8K字节,Key大小为1K为例,每个磁盘页面可存储8K/1K=8,即一个磁盘页面可以存储8个Key,磁盘在读取时都是以扇区为基本单位,经过大量测试读取4K和8K的磁盘页面时间基本相同,因此采用一个磁盘页面上放置大量Key,本发明一次IO操作就可以获取到8个Key,若采用二叉冲突树,最差情况需要8次磁盘IO才能获取到最后一个叶子节点。通过这种方式就避免原有的冲突二叉树多次磁盘IO才能获取到Key,随着Key的数量的增加,性能基本保持稳定。
实施本发明的实施例,通过将哈希数据库的Key-Value对中的Key和Value进行分离,分别存储至磁盘上开辟的索引区和数据区,在接收到对哈希数据库的操作请求时,避免产生大量的磁盘IO操作,在Key-Value对的数量较大时,磁盘IO操作的次数稳定,提高了哈希数据库的操作效率。
参见图3,为本发明第二实施例的一种哈希数据库的配置方法的流程示意图,在本实施例中,所述方法包括:
S201、在磁盘上开辟索引区、数据区,扩展区及备份区,所述索引区由p个大小相等的磁盘页面组成。
具体的,参见图4的磁盘及哈希数据库的空间布局示意图,上图为磁盘的存储空间布局示意图,其中HDB为哈希数据库(Hash Database),HDB位于磁盘中的一段连续空间中,哈希数据库内部划分为若干区域,Meta为HDB的元数据,用于存储HDB的描述信息,例如分区大小或块大小等;Index为索引区,用于存储Key-Value对中的Key,索引区由p个大小相等的磁盘页面组成,每个磁盘页面存储哈希值相同的Key;Extent为扩展区,用于存储索引区中磁盘页面溢出的Key,由q个大小相等的扩展页面组成;DATA为数据区,用于存储Key-Value对中的Value,数据区采用多类定长实现变长的存储策略,例如,数据区采用64M字节的粒度进行分块,每个块中只存储指定类型的数据,块内部进行切片化,由FBP/Allocator进行管理,分配回收在O(1)时间内完成,主要消耗为FBP的磁盘IO时间。FBP为DATA(数据区)的元数据,用于存储数据区的描述信息;
S201、接收到Key-Value对的分配请求,Key-Value对由m个Key和n个Value组成。
具体的,Key-Value对为哈希数据库中预先配置的,Key与Value是多对一的关系,即至少一个Key与一个Value存在映射关系,Key-Value对中由m个Key和n个Value组成,m≥n,每个Key的长度是固定的。
S202、从m个Key中选取一个待分配Key进行哈希运算得到哈希值。
具体的,从m个Key任意中选取一个待分配Key,将该待分配进行哈希运算,例如,采用随机性较好的sha-1算法,运算后得到一个哈希值。
S203、根据所述哈希值和磁盘页面的数量p进行求模得到落入磁盘页面的序号。
具体的,将S202得到的哈希值对p进行求模,求模后得到的值范围为0-(p-1)之间,该值代表p的序号。例如,求模后得到的值为3,则将待分配Key分配至序号为3的磁盘页面中。
S204、若所述磁盘页面对应的磁盘页面的剩余容量小于所述待分配长度。
S205、将所述待分配Key存储至所述扩展页面中。
具体的,假设Key的长度均为1K字节,每个磁盘页面的容量为8K字节,则索引区的每个磁盘页面中可存储8K/1K=8个Key,考虑到Key的描述信息需要占用一定的存储空间,实际上每个磁盘页面可存储的Key的数量为7个;m个Key分配到p个磁盘页面中,具体分配方法为:Key经过哈希运算后求模落在某一个磁盘页面中,如果哈希算法均匀性好,那么每个Key落入到各个磁盘页面的概率是相同的,概率都为1/p,指定某个磁盘页面为空的概率为(1-1/p)^m,空的磁盘页面(即Key的数量为0的磁盘页面)的数量为p*(1-1/p)^m,当p,n的值足够大时,空的磁盘页面的数量约等于n*(1/e)^(m/n);指定某个磁盘页面有k个Key的概率为C(m,k)*(1/p)^k*(1-1/p)^(m-k),C(m,k)表示求组合数。假设Key的数量m=8000000,磁盘页面的数量p=2621431,计算结果图表2所示
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | … |
123921 | 378859 | 577760 | 587049 | 447625 | 273051 | 138801 | 60477 | 23057 | 7813 | 23830 | 660 | 167 | … |
表2
表2中,第一行表示磁盘页面中分配的Key的数量,第二行表示对应的磁盘页面的数量,例如,分配到0个Key的磁盘页面的数量为123921,分配到1个Key的磁盘页面的数量为378859,分配到2个Key的磁盘页面的数量为577760。
假设扩展区中的扩展页面的容量均为4K字节,Key的长度为1K字节,考虑到Key的描述信息需要占用一定的存储空间,实际上每个扩展页面可存储的Key的数量为3个,分配的Key的数量为8、9或10个Key的磁盘页面需要1个扩展页面才能避免溢出;分配的Key的数量为11、12或13个Key的磁盘页面需要2个扩展页面才能避免溢出;分配的Key的数量为14、15或16个Key的磁盘页面需要3个扩展页面才能避免溢出;即大约有45000个key访问索引区时需要耗费两次磁盘IO,大约1000个Key访问索引区时需要耗费3次磁盘IO,需要耗费4次以上磁盘IO的Key在100个以内。
优选的,采用Bitmap技术管理扩展中扩展页面的分配和回收,假设磁盘上扩展区的容量为1G字节,每个扩展页面的同类为8K字节,这样需要Bitmap的大小为32KB。当索引区中的一个磁盘页面溢出时,根据Bitmap给溢出的磁盘页面分配一个扩展页面,将哈希值相同的磁盘页面及扩展页面组成链表,其中磁盘页面位于所述链表的头部,具体可通过磁盘页面中的next字段连接起来。
扩展区为索引区公用的存储空间,由于哈希算法的均匀性,扩展区基本上很少有Key能存入,对性能影响非常小,即使有Key冲突至扩展区,相对现有技术的二叉冲突树,其仍然能保证以较少的磁盘IO次数获取到对应的Key。例如,Key的长度为128字节,冲突至一个扩展页面时,总共可以存储128个Key,获取最大冲突Key需要两次磁盘IO,而这对于二叉树来说,最差情况需要128次磁盘IO。
S208、在所述磁盘开辟备份区,将所述索引区和扩展区中的数据的副本拷贝至所述备份区。
具体的,参见图4,DATA后面相邻的为备份区,备份区中存储Index(索引区)的副本sec-Index,Extent的副本Sec-Extent,Meta的副本Sec-Meta。
备份区和数据去前面的主区布局一致,基于可靠性考虑,备份区和主区不分布在连续的两个区域,而是一个分布在磁盘头部,一个分别在磁盘尾部。
优选的,为提高读写操作的效率,减少备份区写操作带来的性能损耗,主区数据透写,备份区设计缓存,延迟写入磁盘中。每个磁盘页面进行完整性校验位,若校验位不一致,则需要从备份区读取对应区域的磁盘页面;主区和备份区中的索引区头部设置校验位Mark,每次上电选择主区后,主区+1写入,正常下电,备份区缓存刷新后+1,此时二者的数据一致;异常掉电时,二者的Mark不一致,则二者发生竞争时仍选择上次下电的主区为本次的主区,并启动后台修复流程,最终使主区和备分区的数据一致。通过备份设计,可以避免原有HDB在二叉树丢失节点时导致子树数据丢失的情况。
参见图5,为本发明第一实施例的一种哈希数据库配置装置的结构示意图,在本实施例中,所述装置包括开辟模块10和分配模块20,
开辟模块10,用于在磁盘上开辟索引区和数据区,其中,所述索引区由p个大小相等的磁盘页面组成;
分配模块20,用于接收到Key-Value对的分配请求,将所述Key-Value对中m个Key分配至所述索引区的磁盘页面中,且将所述Key-Value对中的n个Value分配至所述数据区中,m、n和p均为大于1的整数。
本实施例与方法项实施例一属于同一构思,其带来的技术效果也相同,具体请参考方法项实施例一的描述,此处不再赘述。
进一步的,参见图6,为本发明第二实施例的一种哈希数据库的配置装置的结构示意图,在本实施例中,所述装置除包括开辟模块10和分配模块20之外,还包括溢出控制模块30、管理模块40、生成模块50和备份模块60,
溢出控制模块30,用于在所述磁盘上开辟扩展区,其中,所述扩展区由q个大小相等的扩展页面组成,q为大于1的整数;若所述索引区中的磁盘页面发生溢出时,将溢出的Key存储至所述扩展页面中。
管理模块40,用于采用Bitmap技术管理所述扩展区中q个扩展页面的分配和回收。
生成模块50,用于将哈希值相同的磁盘页面及扩展页面组成链表,其中磁盘页面位于所述链表的头部。
备份模块60,用于在所述磁盘开辟备份区,并将所述索引区和所述扩展区中的数据的副本拷贝至所述备份区,其中,所述备份区和所述索引区及扩展区不相邻。
可选的,分配模块20包括:
计算单元201,用于从m个Key中选取一个待分配Key进行哈希运算得到哈希值;
求模单元202,用于根据所述哈希值和磁盘页面的数量p进行求模得到落入的磁盘页面的序号;
分配单元203,用于将所述待分配Key存储至所述序号对应的磁盘页面。
进一步的,分配单元203用于若所述序号对应的磁盘页面的剩余容量小于所述待分配Key的长度;在所述扩展区中查询其剩余容量大于所述待分配Key长度的扩展页面;将所述待分配Key存储至所述扩展页面中。
本实施例与方法项实施例二属于同一构思,其带来的技术效果也相同,具体请参考方法项实施例二的描述,此处不再赘述。
参见图8,为本发明第三实施例的一种哈希数据库的配置装置的结构示意图,以下简称配置装置1,配置装置1包括处理器61、存储器62、输入装置63和输出装置64,处理装置1中的处理器61的数量可以是一个或多个,图8以一个处理器为例。本发明的一些实施例中,处理器61、存储器62、输入装置63和输出装置64可通过总线或其他方式连接,图8中以总线连接为例。
其中,存储器62中存储一组程序代码,且处理器61用于调用存储器62中存储的程序代码,用于执行以下操作:
在磁盘上开辟索引区和数据区,其中,所述索引区由p个大小相等的磁盘页面组成;
接收到Key-Value对的分配请求,将所述Key-Value对中m个Key分配至所述索引区的磁盘页面中,且将所述Key-Value对中的n个Value分配至所述数据区中,m、n和p均为大于1的整数。
在本发明的一些实施例中,处理器61执行所述将所述Key-Value对中m个Key分配至所述索引区的磁盘页面中的步骤包括:
从m个Key中选取一个待分配Key进行哈希运算得到哈希值;
根据所述哈希值和磁盘页面的数量p进行求模得到落入的磁盘页面的序号;
将所述待分配Key存储至所述序号对应的磁盘页面。
在本发明的一些实施例中,处理器61还用于执行:
在所述磁盘上开辟扩展区,其中,所述扩展区由q个大小相等的扩展页面组成,q为大于1的整数;
若所述索引区中的磁盘页面发生溢出时,将溢出的Key存储至所述扩展页面中。
在本发明的一些实施例中,处理器61执行所述将待分配Key分配至所述序号对应的磁盘页面的步骤包括:
若所述序号对应的磁盘页面的剩余容量小于所述待分配Key的长度;
在所述扩展区中查询其剩余容量大于所述待分配Key长度的扩展页面;
将所述待分配Key存储至所述扩展页面中。
在本发明的一些实施例中,处理器61还用于执行:
采用Bitmap技术管理所述扩展区中q个扩展页面的分配和回收。
在本发明的一些实施例中,处理器61还用于执行:
将哈希值相同的磁盘页面及扩展页面组成链表,其中磁盘页面位于所述链表的头部。
在本发明的一些实施例中,处理器61还用于执行:
在所述磁盘开辟备份区,并将所述索引区和所述扩展区中的数据的副本拷贝至所述备份区,其中,所述备份区和所述索引区及扩展区不相邻。
实施本发明的实施例,通过将哈希数据库的Key-Value对中的Key和Value进行分离,分别存储至磁盘上开辟的索引区和数据区,在接收到对哈希数据库的操作请求时,避免产生大量的磁盘IO操作,在Key-Value对的数量较大时,磁盘IO操作的次数稳定,提高了哈希数据库的操作效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
Claims (14)
1.一种哈希数据库的配置方法,其特征在于,包括:
在磁盘上开辟索引区和数据区,其中,所述索引区由p个大小相等的磁盘页面组成;
接收到键-值Key-Value对的分配请求,将所述Key-Value对中m个Key分配至所述索引区的磁盘页面中,且将所述Key-Value对中的n个Value分配至所述数据区中,m、n和p均为大于1的整数。
2.如权利要求1所述的方法,其特征在于,所述将所述Key-Value对中m个Key分配至所述索引区的磁盘页面中的步骤包括:
从m个Key中选取一个待分配Key进行哈希运算得到哈希值;
根据所述哈希值和磁盘页面的数量p进行求模得到落入的磁盘页面的序号;
将所述待分配Key存储至所述序号对应的磁盘页面。
3.如权利要求2所述的方法,其特征在于,还包括:
在所述磁盘上开辟扩展区,其中,所述扩展区由q个大小相等的扩展页面组成,q为大于1的整数;
若所述索引区中的磁盘页面发生溢出时,将溢出的Key存储至所述扩展页面中。
4.如权利要求3所述的方法,其特征在于,所述将待分配Key分配至所述序号对应的磁盘页面的步骤包括:
若所述序号对应的磁盘页面的剩余容量小于所述待分配Key的长度;
在所述扩展区中查询其剩余容量大于所述待分配Key长度的扩展页面;
将所述待分配Key存储至所述扩展页面中。
5.如权利要求4所述的方法,其特征在于,还包括:
采用Bitmap技术管理所述扩展区中q个扩展页面的分配和回收。
6.如权利要求5所述的方法,其特征在于,还包括:
将哈希值相同的磁盘页面及扩展页面组成链表,其中磁盘页面位于所述链表的头部。
7.如权利要求6所述的方法,其特征在于,还包括:
在所述磁盘开辟备份区,并将所述索引区和所述扩展区中的数据的副本拷贝至所述备份区,其中,所述备份区和所述索引区及扩展区不相邻。
8.一种哈希数据库的配置装置,其特征在于,包括:
开辟模块,用于在磁盘上开辟索引区和数据区,其中,所述索引区由p个大小相等的磁盘页面组成;
分配模块,用于接收到Key-Value对的分配请求,将所述Key-Value对中m个Key分配至所述索引区的磁盘页面中,且将所述Key-Value对中的n个Value分配至所述数据区中,m、n和p均为大于1的整数。
9.如权利要求8所述的装置,其特征在于,所述分配模块包括:
计算单元,用于从m个Key中选取一个待分配Key进行哈希运算得到哈希值;
求模单元,用于根据所述哈希值和磁盘页面的数量p进行求模得到落入的磁盘页面的序号;
分配单元,用于将所述待分配Key存储至所述序号对应的磁盘页面。
10.如权利要求9所述的装置,其特征在于,还包括:
溢出控制模块,用于在所述磁盘上开辟扩展区,其中,所述扩展区由q个大小相等的扩展页面组成,q为大于1的整数;若所述索引区中的磁盘页面发生溢出时,将溢出的Key存储至所述扩展页面中。
11.如权利要求10所述的装置,其特征在于,所述分配单元用于若所述序号对应的磁盘页面的剩余容量小于所述待分配Key的长度;
在所述扩展区中查询其剩余容量大于所述待分配Key长度的扩展页面;
将所述待分配Key存储至所述扩展页面中。
12.如权利要求11所述的装置,其特征在于,还包括:
管理模块,用于采用Bitmap技术管理所述扩展区中q个扩展页面的分配和回收。
13.如权利要求12所述的装置,其特征在于,还包括:
生成模块,用于将哈希值相同的磁盘页面及扩展页面组成链表,其中磁盘页面位于所述链表的头部。
14.如权利要求13所述的装置,其特征在于,还包括:
备份模块,用于在所述磁盘开辟备份区,并将所述索引区和所述扩展区中的数据的副本拷贝至所述备份区,其中,所述备份区和所述索引区及扩展区不相邻。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310627860.3A CN103593477A (zh) | 2013-11-29 | 2013-11-29 | 一种哈希数据库的配置方法和装置 |
PCT/CN2014/083070 WO2015078194A1 (zh) | 2013-11-29 | 2014-07-25 | 一种哈希数据库的配置方法和装置 |
EP14865948.5A EP3037988A4 (en) | 2013-11-29 | 2014-07-25 | CONFIGURATION PROCESS AND DEVICE FOR A HASH DATABASE |
US15/087,053 US10331641B2 (en) | 2013-11-29 | 2016-03-31 | Hash database configuration method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310627860.3A CN103593477A (zh) | 2013-11-29 | 2013-11-29 | 一种哈希数据库的配置方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103593477A true CN103593477A (zh) | 2014-02-19 |
Family
ID=50083618
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310627860.3A Pending CN103593477A (zh) | 2013-11-29 | 2013-11-29 | 一种哈希数据库的配置方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10331641B2 (zh) |
EP (1) | EP3037988A4 (zh) |
CN (1) | CN103593477A (zh) |
WO (1) | WO2015078194A1 (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015078194A1 (zh) * | 2013-11-29 | 2015-06-04 | 华为技术有限公司 | 一种哈希数据库的配置方法和装置 |
WO2016026433A1 (zh) * | 2014-08-19 | 2016-02-25 | 华为技术有限公司 | 一种数据处理方法和数据处理装置 |
CN108062200A (zh) * | 2016-11-08 | 2018-05-22 | 杭州海康威视数字技术股份有限公司 | 一种磁盘数据读写方法及装置 |
CN108614669A (zh) * | 2016-12-12 | 2018-10-02 | 北京忆恒创源科技有限公司 | 解决哈希冲突的键-数据访问方法与固态存储设备 |
CN105224677B (zh) * | 2015-10-16 | 2018-10-30 | 上海晶赞科技发展有限公司 | 一种数据库操作方法及装置 |
CN108920725A (zh) * | 2018-08-02 | 2018-11-30 | 网宿科技股份有限公司 | 一种对象存储的方法及对象存储网关 |
CN108965387A (zh) * | 2018-06-09 | 2018-12-07 | 西安电子科技大学 | 一种提高p2p数据存储抗毁性的均衡方法及系统 |
CN109583861A (zh) * | 2018-11-23 | 2019-04-05 | 中科驭数(北京)科技有限公司 | key-value数据库中的数据压缩方法、访问方法和系统 |
CN109753224A (zh) * | 2017-11-03 | 2019-05-14 | 浙江宇视科技有限公司 | 存储结构及存储结构配置方法 |
CN112637327A (zh) * | 2020-12-21 | 2021-04-09 | 北京奇艺世纪科技有限公司 | 一种数据处理方法、装置及系统 |
CN112905128A (zh) * | 2021-03-31 | 2021-06-04 | 浙江大华技术股份有限公司 | 门禁用户数据的管理方法和装置、存储介质及电子设备 |
CN113645140A (zh) * | 2021-07-06 | 2021-11-12 | 曙光信息产业(北京)有限公司 | 报文的统计方法、装置、存储介质及网络设备 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107918612B (zh) * | 2016-10-08 | 2019-03-05 | 腾讯科技(深圳)有限公司 | 键值存储系统数据结构的实现方法和装置 |
KR102545167B1 (ko) | 2017-11-23 | 2023-06-19 | 삼성전자주식회사 | 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법 |
US10754832B2 (en) * | 2018-01-26 | 2020-08-25 | Nicira, Inc. | Efficient physical key-value scheme for persisting virtual database data |
US20220092046A1 (en) * | 2020-09-18 | 2022-03-24 | Kioxia Corporation | System and method for efficient expansion of key value hash table |
US20240045602A1 (en) * | 2022-08-03 | 2024-02-08 | Capital One Services, Llc | Systems and methods for adaptive data partitioning within cluster systems |
CN117591608B (zh) * | 2024-01-19 | 2024-04-30 | 恒辉信达技术有限公司 | 基于分布式哈希的云原生数据库数据分片方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102402394A (zh) * | 2010-09-13 | 2012-04-04 | 腾讯科技(深圳)有限公司 | 一种基于哈希算法的数据存储方法及装置 |
CN102591792A (zh) * | 2012-01-13 | 2012-07-18 | 广州从兴电子开发有限公司 | 一种内存数据的存储方法 |
CN102982182A (zh) * | 2012-12-21 | 2013-03-20 | 浙江宇视科技有限公司 | 一种数据存储规划方法及装置 |
CN103186668A (zh) * | 2013-03-11 | 2013-07-03 | 北京京东世纪贸易有限公司 | 基于键值数据库的数据处理方法与装置以及数据存储系统 |
US20130268770A1 (en) * | 2012-04-06 | 2013-10-10 | Tad Hunt | Cryptographic hash database |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6067547A (en) * | 1997-08-12 | 2000-05-23 | Microsoft Corporation | Hash table expansion and contraction for use with internal searching |
US9086913B2 (en) * | 2008-12-31 | 2015-07-21 | Intel Corporation | Processor extensions for execution of secure embedded containers |
CN101510209B (zh) * | 2009-03-30 | 2012-05-30 | 北京金山软件有限公司 | 实现实时检索的方法、系统和服务器 |
US20100257181A1 (en) * | 2009-04-01 | 2010-10-07 | Sybase, Inc. | Dynamic Hash Table for Efficient Data Access In A Relational Database System |
US8364932B2 (en) * | 2010-10-29 | 2013-01-29 | Vmware, Inc. | System and method to prioritize large memory page allocation in virtualized systems |
JP5597666B2 (ja) * | 2012-03-26 | 2014-10-01 | 株式会社東芝 | 半導体記憶装置、情報処理システムおよび制御方法 |
US20150127649A1 (en) * | 2013-11-01 | 2015-05-07 | Cognitive Electronics, Inc. | Efficient implementations for mapreduce systems |
CN103593477A (zh) * | 2013-11-29 | 2014-02-19 | 华为技术有限公司 | 一种哈希数据库的配置方法和装置 |
-
2013
- 2013-11-29 CN CN201310627860.3A patent/CN103593477A/zh active Pending
-
2014
- 2014-07-25 EP EP14865948.5A patent/EP3037988A4/en not_active Withdrawn
- 2014-07-25 WO PCT/CN2014/083070 patent/WO2015078194A1/zh active Application Filing
-
2016
- 2016-03-31 US US15/087,053 patent/US10331641B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102402394A (zh) * | 2010-09-13 | 2012-04-04 | 腾讯科技(深圳)有限公司 | 一种基于哈希算法的数据存储方法及装置 |
CN102591792A (zh) * | 2012-01-13 | 2012-07-18 | 广州从兴电子开发有限公司 | 一种内存数据的存储方法 |
US20130268770A1 (en) * | 2012-04-06 | 2013-10-10 | Tad Hunt | Cryptographic hash database |
CN102982182A (zh) * | 2012-12-21 | 2013-03-20 | 浙江宇视科技有限公司 | 一种数据存储规划方法及装置 |
CN103186668A (zh) * | 2013-03-11 | 2013-07-03 | 北京京东世纪贸易有限公司 | 基于键值数据库的数据处理方法与装置以及数据存储系统 |
Non-Patent Citations (1)
Title |
---|
汪超 等: "基于Hash表的数据库索引结构设计与实现", 《微处理机》 * |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015078194A1 (zh) * | 2013-11-29 | 2015-06-04 | 华为技术有限公司 | 一种哈希数据库的配置方法和装置 |
US10331641B2 (en) | 2013-11-29 | 2019-06-25 | Huawei Technologies Co., Ltd. | Hash database configuration method and apparatus |
WO2016026433A1 (zh) * | 2014-08-19 | 2016-02-25 | 华为技术有限公司 | 一种数据处理方法和数据处理装置 |
CN105224677B (zh) * | 2015-10-16 | 2018-10-30 | 上海晶赞科技发展有限公司 | 一种数据库操作方法及装置 |
US11048601B2 (en) | 2016-11-08 | 2021-06-29 | Hangzhou Hikvision Digital Technology Co., Ltd. | Disk data reading/writing method and device |
CN108062200A (zh) * | 2016-11-08 | 2018-05-22 | 杭州海康威视数字技术股份有限公司 | 一种磁盘数据读写方法及装置 |
CN108062200B (zh) * | 2016-11-08 | 2019-12-20 | 杭州海康威视数字技术股份有限公司 | 一种磁盘数据读写方法及装置 |
CN108614669B (zh) * | 2016-12-12 | 2023-02-17 | 北京忆恒创源科技股份有限公司 | 解决哈希冲突的键-数据访问方法与固态存储设备 |
CN108614669A (zh) * | 2016-12-12 | 2018-10-02 | 北京忆恒创源科技有限公司 | 解决哈希冲突的键-数据访问方法与固态存储设备 |
CN109753224A (zh) * | 2017-11-03 | 2019-05-14 | 浙江宇视科技有限公司 | 存储结构及存储结构配置方法 |
CN108965387A (zh) * | 2018-06-09 | 2018-12-07 | 西安电子科技大学 | 一种提高p2p数据存储抗毁性的均衡方法及系统 |
CN108965387B (zh) * | 2018-06-09 | 2021-04-06 | 西安电子科技大学 | 一种提高p2p数据存储抗毁性的均衡方法及系统 |
CN108920725A (zh) * | 2018-08-02 | 2018-11-30 | 网宿科技股份有限公司 | 一种对象存储的方法及对象存储网关 |
CN109583861B (zh) * | 2018-11-23 | 2020-04-03 | 中科驭数(北京)科技有限公司 | key-value数据库中的数据压缩方法、访问方法和系统 |
CN109583861A (zh) * | 2018-11-23 | 2019-04-05 | 中科驭数(北京)科技有限公司 | key-value数据库中的数据压缩方法、访问方法和系统 |
CN112637327A (zh) * | 2020-12-21 | 2021-04-09 | 北京奇艺世纪科技有限公司 | 一种数据处理方法、装置及系统 |
CN112637327B (zh) * | 2020-12-21 | 2022-07-22 | 北京奇艺世纪科技有限公司 | 一种数据处理方法、装置及系统 |
CN112905128A (zh) * | 2021-03-31 | 2021-06-04 | 浙江大华技术股份有限公司 | 门禁用户数据的管理方法和装置、存储介质及电子设备 |
CN113645140A (zh) * | 2021-07-06 | 2021-11-12 | 曙光信息产业(北京)有限公司 | 报文的统计方法、装置、存储介质及网络设备 |
CN113645140B (zh) * | 2021-07-06 | 2023-04-07 | 曙光信息产业(北京)有限公司 | 报文的统计方法、装置、存储介质及网络设备 |
Also Published As
Publication number | Publication date |
---|---|
US10331641B2 (en) | 2019-06-25 |
EP3037988A4 (en) | 2016-10-05 |
EP3037988A1 (en) | 2016-06-29 |
WO2015078194A1 (zh) | 2015-06-04 |
US20160217167A1 (en) | 2016-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103593477A (zh) | 一种哈希数据库的配置方法和装置 | |
US10782882B1 (en) | Data fingerprint distribution on a data storage system | |
CN101997918B (zh) | 异构san环境中的海量存储资源按需分配的实现方法 | |
WO2020204880A1 (en) | Snapshot-enabled storage system implementing algorithm for efficient reclamation of snapshot storage space | |
US10296250B2 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
CN103544045A (zh) | 一种基于hdfs的虚拟机镜像存储系统及其构建方法 | |
CN105373342A (zh) | 异构统一存储器 | |
CN111324305B (zh) | 一种分布式存储系统中数据写入/读取方法 | |
CN108089825B (zh) | 一种基于分布式集群的存储系统 | |
CN103106286A (zh) | 元数据的管理方法和装置 | |
CN106570113B (zh) | 一种海量矢量切片数据云存储方法及系统 | |
CN110968554A (zh) | 一种基于文件链分块的区块链存储方法、存储系统及存储介质 | |
Li et al. | Efficient implementation of a multi-dimensional index structure over flash memory storage systems | |
CN107766355B (zh) | 层级数据管理方法、层级数据管理系统及即时通信系统 | |
US10963177B2 (en) | Deduplication using fingerprint tries | |
US20200341639A1 (en) | Lattice layout of replicated data across different failure domains | |
CN113297432B (zh) | 用于分区拆分与合并的方法、处理器可读介质和系统 | |
CN111274259A (zh) | 一种分布式存储系统中存储节点的数据更新方法 | |
Takatsu et al. | PPFS: A scale-out distributed file system for post-petascale systems | |
CN103530067A (zh) | 一种数据操作的方法和设备 | |
US20220269612A1 (en) | Multi-value mapping for object store | |
CN105068896A (zh) | 基于raid备份的数据处理方法及装置 | |
CN104360956A (zh) | 一种数据拷贝方法及装置 | |
Lee et al. | Boosting compaction in B-tree based key-value store by exploiting parallel reads in flash ssds | |
CN101751390B (zh) | 物件导向储存装置的磁盘配置方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140219 |
|
RJ01 | Rejection of invention patent application after publication |