当前位置: 首页 > 专利查询>中山大学专利>正文

基于多重哈希的分布式存储索引方法及系统技术方案

技术编号:33290529 阅读:15 留言:0更新日期:2022-05-01 00:08
本发明专利技术公开了基于多重哈希的分布式存储索引方法及系统,方法为:基于key

【技术实现步骤摘要】
基于多重哈希的分布式存储索引方法及系统


[0001]本专利技术属于存储索引的
,具体涉及一种基于多重哈希的分布式存储索引方法及系统。

技术介绍

[0002]自互联网发展以来,数据量的爆发式增长使得存储面临着巨大的挑战。尤其是4G大规模的使用,导致数据量和单个文件的规模日益扩大,同时视频类型的数据也使得单个文件呈现GB级别。又随着物联网时代的到来,传感器的快速部署使得数据量进一步扩大,传感器每秒钟都会收集大量的数据,使得数据量呈爆发式增长,导致大部分的场景下单一机器基本无法存储所需要的数据,分布式存储成为了解决这一难题的可能。由于传感器获取到的是海量的时序数据,应用于解决数据查找问题的索引也呈现了爆发式增长,索引系统也因此需要部署到不同的机器上,实现一个分布式的索引系统。
[0003]现有的存储索引系统主要包括B树索引和哈希索引。B+树是一种树数据结构,通常用于数据库和操作系统的文件系统中;B+树是将索引数据自底向上不断分裂组成的树形结构,在节点超过阈值时进行节点分裂,特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。LB+树使用DRAM+3DXPoint的混合架构,将非叶子节点放到DRAM中提升检索性能,叶子放到3DXPoint;利用叶子节点和非叶子节点的关系通过非叶子节点进行数据恢复。而现有的哈希结构大致分为静态哈希和动态哈希;静态哈希需要在开始的时候确定桶的数量,桶的数量不能随着数据量进行改变;动态哈希则可以在初始状态设置较少的桶数量,并随着数据量的规模扩大而进行扩容。1997年麻省理工学院提出了一种特殊的哈希算法—一致性哈希算法,通过引入虚拟节点来解决负载不均衡的问题,即将每台物理服务器虚拟为一组虚拟服务器,将虚拟服务器放置到哈希环上,如果要确定对象的服务器,需先确定对象的虚拟服务器,再由虚拟服务器确定物理服务器。
[0004]虽然B树索引及其变种B+树等索引结构能够实现有序的分布,用于范围查询时,每次访问数据时间复杂度为O(log N),但在大规模数据随机查找中会出现性能瓶颈;LB+树将B+树应用在NVM新型存储材料上,将叶子节点放在NVM非易失存储材料上,使得存储键值对不需要加锁和做日志记录等工作,大大加快了存储速度,但是LB+树只针对单机索引,在大规模数据的存储系统中单机引擎的速度受到限制,可拓展性差;哈希索引虽然能够实现O(1)的时间复杂度,在索引系统上较为常用,但是容易出现负载不均衡的问题;一致性哈希在分布式索引系统中提出了解决负载不均衡的方案,但该系统强烈依赖个人经验,并要求手动添加机器,在大数据存储系统中显得笨拙。

技术实现思路

[0005]本专利技术的主要目的在于克服现有技术的缺点与不足,提供一种基于多重哈希的分布式存储索引方法及系统,本方法采用Master/Slave架构搭建系统,实现了分布式存储;采用线性哈希算法的动态扩展性,提升了资源利用率;基于多重哈希函数,实现了数据多次备
份,避免数据丢失,提升了可靠性;对低负载率的节点进行访问与存储,实现了动态负载均衡,提升了系统吞吐量。
[0006]为了达到上述目的,本专利技术采用以下技术方案:
[0007]本专利技术一方面提供了一种基于多重哈希的分布式存储索引方法,包括下述步骤:
[0008]基于key

value存储引擎,采用Master/Slave架构搭建分布式存储索引系统;
[0009]所述Master/Slave架构包括一个Master节点和多个Slave节点;
[0010]所述Master节点存储有分布式存储索引系统信息,包括哈希算法信息和Slave节点信息,用于数据转发和Slave节点管理;所述Slave节点用于实现键值对的存储;
[0011]所述哈希算法信息包括多个线性哈希函数、哈希函数个数、分裂指针及触发节点分裂的负载临界点;所述Slave节点信息包括正使用Slave节点个数、空闲Slave节点个数、Slave节点地址和Slave节点实时负载率;
[0012]根据键值对的访问请求,Master节点调用多个线性哈希函数对键值对的键进行计算,得到所有哈希值对应的Slave节点;
[0013]Master节点向对应的Slave节点发送相应操作请求;所述操作包括增加操作、删除操作、修改操作及查找操作;
[0014]当Master节点检测到某个Slave节点的实时负载率超过触发节点分裂的负载临界点时,执行节点分裂操作。
[0015]作为优选的技术方案,所述Slave节点采用LB+

Trees数据结构,设置三层存储结构,即DRAM+NVM+SSD;
[0016]所述Slave节点的数据分布由一颗B+树构成,非叶子节点存储在DRAM上,叶子节点存储在NVM上;
[0017]每次对数据操作时,先对NVM上的叶子节点进行操作,再更新DRAM的非叶子节点;
[0018]对于Slave节点的溢出数据,使用LevelDB实现在SSD上进行串行写操作。
[0019]作为优选的技术方案,所述增加操作具体为:
[0020]基于cuckoo哈希算法的思想,Master节点根据对应的Slave节点,获取对应Slave节点的实时负载率;
[0021]按照升序排序,得到前一半的Slave节点序号,即实时负载率较低的一半Slave节点;
[0022]向实时负载率较低的一半Slave节点发送增加键值对的操作请求;
[0023]Slave节点增加操作完成后,向Master节点返回Slave节点新的实时负载率。
[0024]作为优选的技术方案,所述删除操作具体为:
[0025]Master节点向对应的Slave节点发送删除键值对的操作请求;
[0026]对应的Slave节点删除操作完成后,向Master节点返回对应Slave节点新的实时负载率。
[0027]作为优选的技术方案,所述修改操作具体为:
[0028]Master节点先向对应的Slave节点发送删除键值对的操作请求;
[0029]对应的Slave节点删除操作完成后,基于cuckoo哈希算法的思想,Master节点获取对应Slave节点的实时负载率;
[0030]按照升序排序,得到前一半的Slave节点序号,即实时负载率较低的一半Slave节
点;
[0031]向实时负载率较低的一半Slave节点发送增加键值对的操作请求;
[0032]Slave节点增加操作完成后,向Master节点返回Slave节点新的实时负载率。
[0033]作为优选的技术方案,所述查找操作具体为:
[0034]Master节点根据对应的Slave节点的实时负载率进行升序排序,按序向Slave节点发送查找请求,查找成功时返回当前Slave节点序号。
[0035]作为优选的技术方案,所述执行节点分裂操作具体为:
[0036]当Master节点检本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于多重哈希的分布式存储索引方法,其特征在于,包括下述步骤:基于key

value存储引擎,采用Master/Slave架构搭建分布式存储索引系统;所述Master/Slave架构包括一个Master节点和多个Slave节点;所述Master节点存储有分布式存储索引系统信息,包括哈希算法信息和Slave节点信息,用于数据转发和Slave节点管理;所述Slave节点用于实现键值对的存储;所述哈希算法信息包括多个线性哈希函数、哈希函数个数、分裂指针及触发节点分裂的负载临界点;所述Slave节点信息包括正使用Slave节点个数、空闲Slave节点个数、Slave节点地址和Slave节点实时负载率;根据键值对的访问请求,Master节点调用多个线性哈希函数对键值对的键进行计算,得到所有哈希值对应的Slave节点;Master节点向对应的Slave节点发送相应操作请求;所述操作包括增加操作、删除操作、修改操作及查找操作;当Master节点检测到某个Slave节点的实时负载率超过触发节点分裂的负载临界点时,执行节点分裂操作。2.根据权利要求1所述的基于多重哈希的分布式存储索引方法,其特征在于,所述Slave节点采用LB+

Trees数据结构,设置三层存储结构,即DRAM+NVM+SSD;所述Slave节点的数据分布由一颗B+树构成,非叶子节点存储在DRAM上,叶子节点存储在NVM上;每次对数据操作时,先对NVM上的叶子节点进行操作,再更新DRAM的非叶子节点;对于Slave节点的溢出数据,使用LevelDB实现在SSD上进行串行写操作。3.根据权利要求2所述的基于多重哈希的分布式存储索引方法,其特征在于,所述增加操作具体为:基于cuckoo哈希算法的思想,Master节点根据对应的Slave节点,获取对应Slave节点的实时负载率;按照升序排序,得到前一半的Slave节点序号,即实时负载率较低的一半Slave节点;向实时负载率较低的一半Slave节点发送增加键值对的操作请求;Slave节点增加操作完成后,向Master节点返回Slave节点新的实时负载率。4.根据权利要求2所述的基于多重哈希的分布式存储索引方法,其特征在于,所述删除操作具体为:Master节点向对应的Slave节点发送删除键值对的操作请求;对应的Slave节点删除操作完成后,向Master节点返回对应Slave节点新的实时负载率。5.根据权利要求2所述的基于多重哈希的分布式存储索引方法,其特征在于,所述修改操作具体为:Master节点先向对应的Slave节点发送删除键值对的操作请求;对应的Slave节点删除操作完成后,基于cuckoo哈希算法的思想,Master节点获取对应Slave节点的实时负载率;按照升序排序,得到前一半的Slave节点序号,即实时负载率较低的一半Slave节点;向实时负载率较低的一半Slave节点发送增加键值对的操作请求;
Slave节点增加操作完成后,向Master节点返回Slave节点新的实时负载率。6.根据权利要求2所述的基于多重哈希的分布式存储索引方法,其特征在于,所述查找操作具体为:Master节点根据对应的Slave节点的实时负载率进行升序排序,按序向Slave节点发送查找请求,查找成功时返回当前Slave节点序号。7.根据权利要求2所述的基于多重哈希的分布式存储索引方法,其特征在于,所述执行节点分裂操作具体为:当Master节点检测到某个节点Slave的实时负载率超过触发节点分裂的负载临界点时,对分裂指针指向的Slave节点进行分裂;在分布式存储索引系统中自动添加一个空闲Slave节点,并更新Master节点中存储索引系统的信息;逐个对Slave节点中存储的所有数据执行删除操作;删除时,先在Mas...

【专利技术属性】
技术研发人员:庞景龙郑伟诗严俊楷
申请(专利权)人:中山大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1