本发明专利技术实施例公开了一种哈希数据库的配置方法,包括:在磁盘上开辟索引区和数据区,其中,所述索引区由p个大小相等的磁盘页面组成;接收到Key-Value对的分配请求,将所述Key-Value对中m个Key分配至所述索引区的磁盘页面中,且将所述Key-Value对中的n个Value分配至所述数据区中,m、n和p均为大于1的整数。本发明专利技术实施例还公开了一种哈希数据库的配置装置。采用本发明专利技术,提高哈希数据库的访问效率。
【技术实现步骤摘要】
一种哈希数据库的配置方法和装置
本专利技术涉及计算机领域,尤其涉及一种哈希数据库的配置方法和装置。
技术介绍
随着网络的发展,信息呈现爆炸性增长,人类的数据达到前所未有的规模,这些超大规模的数据存储和管理已经成为一大挑战。基于DHT (Distributed Hash Table)技术的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数据库从逻辑上分为四个部分,分别为:Bucket Array:即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均为大于I的整数。在第一种可能的实现方式中,所述将所述Key-Value对中m个Key分配至所述索引区的磁盘页面中的步骤包括:从m个Key中选取一个待分配Key进行哈希运算得到哈希值;根据所述哈希值和磁盘页面的数量p进行求模得到落入的磁盘页面的序号;将所述待分配Key存储至所述序号对应的磁盘页面。结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:在所述磁盘上开辟扩展区,其中,所述扩展区由q个大小相等的扩展页面组成,q为大于I的整数;若所述索引区中的磁盘页面发生溢出时,将溢出的Key存储至所述扩展页面中。结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述将待分配Key分配至所述序号对应的磁盘页面的步骤包括:若所述序号对应的磁盘页面的剩余容量小于所述待分配Key的长度;在所述扩展区中查询其剩余容量大于所述待分配Key长度的扩展页面;将所述待分配Key存储至所述扩展页面中。结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,还包括:采用Bitmap技术管理所述扩展区中q个扩展页面的分配和回收。结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,还包括:将哈希值相同的磁盘页面及扩展页面组成链表,其中磁盘页面位于所述链表的头部。结合第一方面的第五种可能的实现方式,在第六种可能的实现方式中,还包括:在所述磁盘开辟备份区,并将所述索引区和所述扩展区中的数据的副本拷贝至所述备份区,其中,所述备份区和所述索引区及扩展区不相邻。本专利技术第二方面提供了一种哈希数据库的配置装置,包括:开辟模块,用于在磁盘上开辟索引区和数据区,其中,所述索引区由p个大小相等的磁盘页面组成;分配模块,用于接收到Key-Value对的分配请求,将所述Key-Value对中m个Key分配至所述索引区的磁盘页面中,且将所述Key-Value对中的n个Value分配至所述数据区中,m、n和p均为大于I的整数。在第一种可能的实现方式中,所述分配模块包括:计算单元,用于从m个Key中选取一个待分配Key进行哈希运算得到哈希值;求模单元,用于根据所述哈希值和磁盘页面的数量p进行求模得到落入的磁盘页面的序号;分配单元,用于将所述待分配Key存储至所述序号对应的磁盘页面。结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:溢出控制模块,用于在所述磁盘上开辟扩展区,其中,所述扩展区由q个大小相等的扩展页面组成,q为大于I的整数;若所述索引区中的磁盘页面发生溢出时,将溢出的Key存储至所述扩展页面中。结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述分配单元用于若所述序号对应的磁盘页面的剩余容量小于所述待分配Key的长度;在所述扩展区中查询其剩余容量大于所述待分配Key长度的扩展页面;将所述待分配Key存储至所述扩展页面中。结合第二方面得第三种可能的实现方式,在第四种可能的实现方式中,还包括:管理模块,用于采用Bitmap技术管理所述扩展区中q个扩展页面的分配和回收。结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,还包括:生成模块,用于将哈希值相同的磁盘页面及扩展页面组成链表,其中磁盘页面位于所述链表的头部。结合第二方面的第五种可能的实现方式,在第六种可能的实现方式中,还包括:备份模块,用于在所述磁盘开辟备份区,并将所述索引区和所述扩展区中的数据的副本拷贝至所述备份区,其中,所述备份区和所述索引区及扩展区不相邻。实施本专利技术,具有如下有益效果:通过将哈希数据库的Key-Value对中的Key和Value进行分离,分别存储至磁盘上开辟的索引区和数据区,在接收到对哈希数据库的操作请求时,避免产生大量的磁盘IO操作,在Key-Value对的数量较大时,磁盘IO操作的次数稳定,提高了哈希数据库的操作效率。【附图说明】为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是现有技术中哈希数据库的结构示意图;图2是本专利技术第一实施例的一种哈希数据库的配置方法的流程示意图;图3是本专利技术第二实施例的一种哈希数据库的配置方法的流程示意图;图4本专利技术实本文档来自技高网...
【技术保护点】
一种哈希数据库的配置方法,其特征在于,包括:在磁盘上开辟索引区和数据区,其中,所述索引区由p个大小相等的磁盘页面组成;接收到键?值Key?Value对的分配请求,将所述Key?Value对中m个Key分配至所述索引区的磁盘页面中,且将所述Key?Value对中的n个Value分配至所述数据区中,m、n和p均为大于1的整数。
【技术特征摘要】
1.一种哈希数据库的配置方法,其特征在于,包括: 在磁盘上开辟索引区和数据区,其中,所述索引区由P个大小相等的磁盘页面组成; 接收到键-值Key-Value对的分配请求,将所述Key-Value对中m个Key分配至所述索引区的磁盘页面中,且将所述Key-Value对中的n个Value分配至所述数据区中,m、n和P均为大于I的整数。2.如权利要求1所述的方法,其特征在于,所述将所述Key-Value对中m个Key分配至所述索引区的磁盘页面中的步骤包括: 从m个Key中选取一个待分配Key进行哈希运算得到哈希值; 根据所述哈希值和磁盘页面的数量P进行求模得到落入的磁盘页面的序号; 将所述待分配Key存储至所述序号对应的磁盘页面。3.如权利要求2所述的方法,其特征在于,还包括: 在所述磁盘上开辟扩展区,其中,所述扩展区由q个大小相等的扩展页面组成,q为大于I的整数; 若所述索引区中的磁盘页面发生溢出时,将溢出的Key存储至所述扩展页面中。4.如权利要求3所述的方法,其特征在于,所述将待分配Key分配至所述序号对应的磁盘页面的步骤包括: 若所述序号对应的磁盘页面的剩余容量小于所述待分配Key的长度; 在所述扩展区中查询其剩余容量大于所述待分配Key长度的扩展页面; 将所述待分配Key存储至所述扩展页面中。5.如权利要求4所述的方法,其特征在于,还包括: 采用Bitmap技术管理所述扩展区中q个扩展页面的分配和回收。6.如权利要求5所述的方法,其特征在于,还包括: 将哈希值相同的磁盘页面及扩展页面组成链表,其中磁盘页面位于所述链表的头部。7.如权利要求6所述的方法,其特征在于,还包括: 在所述磁盘开辟备份区,并将所述索引区和所述扩展区中的数据的副本拷贝至所述备份区,其中,所述备份区和所述索引区及扩展区不相邻。8.一种哈希数...
【专利技术属性】
技术研发人员:张雷,鲍栋,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。