基于RDMA与非易失性内存的基数树访问系统技术方案

技术编号:24853223 阅读:24 留言:0更新日期:2020-07-10 19:07
本发明专利技术提供了一种基于RDMA与非易失性内存的基数树访问系统,包括:数据存储模块:采用非易失性持久内存作为基数树的存储介质;远程读写模块:建立服务端CPU与客户端的RDMA通信连接;后台处理模块:在客户端进行远程读写时进行后台处理,保证数据的一致性。S1:在基数树初始化阶段,构建一块数据块,以支持远端数据的插入、更新和删除;S2:在基数树初始数据块存满后,重构数据结构为基数树结构,其中包含前缀节点和数据节点,并将树结构的前缀节点写入到客户端;S3:定期检查基数树的数据节点。本发明专利技术树能够在有效保障数据一致性的前提下,极大减轻服务端CPU的压力,提高吞吐率,从而提高远程数据读写的整体性能。

【技术实现步骤摘要】
基于RDMA与非易失性内存的基数树访问系统
本专利技术涉及存储系统领域,具体地,涉及一种基于RDMA与非易失性内存的基数树访问系统。
技术介绍
近年来,随着非易失性内存和RDMA技术的发展,高存储性能和低延迟网络访问的数据中心已经成为一种趋势。由于非易失性内存具有可字节寻址和持久性的特性,传统的索引结构需要做出相应的调整,使得数据结构在保证数据一致性的前提下尽可能多地提高读写性能。此外,RDMA技术的发展使得本地节点能够绕过远端节点内核和CPU直接读取或写入,从而有效提高了远端节点CPU的效率,使得更低延时、更高吞吐量的远端数据访问成为可能。专利文献CN1613073A公开了改进型多路基数树,然而,传统的基于树的数据索引结构依赖于远端节点的响应,无法适应RDMA的特性,因此需要进行必要的改进和优化。基数树作为一种重要的基于树的数据索引结构,相较于B+树而言,其整体结构由插入的key值决定且插入无需通过任何key值的比较,有效减少了缓存行的刷入和必要的日志记录,因此更适应于非易失性内存下的数据索引。目前关于基数树的研究仅针对单机系统环境下的一致性保障进行了改进,针对分布式系统环境下的数据一致性和提高远端节点CPU效率以降低延时、提高吞吐量的问题,现有技术中鲜有这方面的研究。在本领域,涉及的专业术语如下:基数树:是一种多叉搜索树,其树结构由插入键的具体符号表示决定。相比于B+树,基数树的数据插入和检索无需键值的比较,同时,也避免了以节点为粒度的分裂和结合操作等。RDMA:RemoteDirectMemoryAccess,远程直接内存访问。该技术允许本地节点直接读取或写入远端节点,而无内核干预和内存拷贝发生。借助远程直接内存访问技术,能够有效提高服务器CPU效率,实现高吞吐、低延时的网络数据传输。DRAM:DynamicRandomAccessMemory,动态随机存取存储器,属于易失性存储器,是现阶段最为常见的系统内存。其特点是断电后信息丢失,相对于非易失性内存,DRAM成本较高,但是读写寿命理论上不受限制。NVM:NonVolatileMemory,非易失性内存,包括相变存储器(PCM,PhaseChangeMemory),自旋矩传输随机存取存储器(STT-RAM,Spin-TransferTorqueRAM)和3DXpoint等。这些非易失性内存具有可字节寻址的特性,在断电后仍能保留已保存的数据,并且能够提供与DRAM相当的读写性能,但是读写次数有一定的限制。
技术实现思路
针对现有技术中的缺陷,本专利技术的目的是提供一种基于RDMA与非易失性内存的基数树访问系统。根据本专利技术提供的一种基于RDMA与非易失性内存的基数树访问系统,包括:数据存储模块:采用非易失性持久内存作为基数树的存储介质;远程读写模块:建立服务端CPU与客户端的RDMA通信连接;后台处理模块:在客户端进行远程读写时进行后台处理,保证数据的一致性;所述基数树在服务端执行以下操作:S1:在所述基数树初始化阶段,构建一块数据块,以支持远端数据的插入、更新和删除;S2:在所述基数树初始数据块存满后,重构数据结构为基数树结构,其中包含前缀节点和数据节点,并将树结构的前缀节点写入到客户端;S3:定期检查所述基数树的数据节点。优选地,所述数据存储模块包括前缀节点、数据节点和元数据索引表;其中前缀节点用于数据节点的索引,同时存在于服务端和客户端;数据节点保存了实际的键值对数据,只存在于服务端;元数据索引表用于记录数据节点的具体存储情况。优选地,为了使客户端通过自行检索前缀节点,绕开服务端CPU找到对应的数据节点,所述前缀节点采用无指针的数据布局结构,将数据存储在事先分配好的连续内存空间内,以使服务端能够在树结构建立完全后,将所有前缀节点同步发送至客户端;所述前缀节点只保存所存储键的固定长度的前缀,该固定长度K由所述基数树的高度决定,所有前缀节点均按前后顺序存储了所存储键的前缀的其中一段内容,每个节点还保留1字节用于记录有效存储的前缀数目;最后一层前缀节点同时还保存了对应数据节点的节点号。优选地,所述数据节点包含一定数量的键值对,每个数据节点都有其对应的节点号,该节点号通过检索前缀节点获取,其中最后一个数据节点包含键的前缀未被前缀节点包含在内的键值对数据;所述数据节点的存储数据除去键值对外,还保留1字节的APPEND_FLAG用于区分数据的插入、更新和删除。优选地,所述元数据索引表包含N行,其中N为分配的数据节点的个数;索引表的每一行均包含4字节的锁和4字节的键值对数目,该索引表用于保证远程数据读写的一致性。优选地,所述远程读写模块部署在客户端,分为远程写和远程读操作,其中远程写操作包括远程插入、删除和更新操作,客户端在执行读写操作时,完全使用RDMA单边原语。优选地,客户端在执行远程写操作时,具体步骤如下:S1:客户端根据存储在本地的前缀节点和具体的索引键,计算索引键对应的数据节点号;S2:根据计算的数据节点号得出索引键对应数据节点的元数据地址,并向该元数据地址执行一次ATOMIC_FETCH_AND_ADD操作,该操作获取到对应元数据,并使得对应元数据的锁值加1;S3:根据获取到的元数据的锁值,判断该数据节点是否正在被其他客户端写,若锁值大于1,则数据节点忙,放弃当前写操作,并在等待后重复S1-S3步骤;若锁值为0,则检查元数据的键值对数目值,结合先前计算的数据节点号,得出索引键值在服务端数据节点中具体要插入的地址,并向该地址执行一次RDMA_WRITE_WITH_IMM操作,其中立即数为数据节点号;S4:服务端在收到客户端写操作的立即数后,判定客户端写操作已完成,此时服务端的背景线程修改对应元数据,将键值对数目加1,并将锁值置零。优选地,客户端在执行远程读操作时,具体步骤如下:S1:客户端根据存储在本地的前缀节点和具体的索引键,计算索引键对应的数据节点号;S2:根据计算的数据节点号得出索引键对应数据节点的元数据地址和数据节点的地址,并分别向两个地址相继执行两次RDMA_READ操作,获取到对应元数据的值和数据节点的值;两次RDMA_READ操作几乎同时发出,因此后两次操作的延时近似等于一次操作的延时;S3:根据读取的元数据中键值对数目查询读取的数据节点,根据索引键检索整个数据节点,找出所有键等于该索引键的数据行,并根据APPEND_FLAG进行整理,判断该键是否存在,以及是否被删除或更新,返回最新的值或在检索失败时提示键值不存在。优选地,所述后台处理模块,包括数据节点整理模块和重构模块;所述数据节点整理模块用于提高数据检索效率,所述重构模块用于满足更大容量的数据存储。优选地,所述数据节点整理模块部署于服务端,定期检查数据节点中有效键值对的数目,若有效键值对的数目低于事先设定的本文档来自技高网
...

【技术保护点】
1.一种基于RDMA与非易失性内存的基数树访问系统,其特征在于,包括:/n数据存储模块:采用非易失性持久内存作为基数树的存储介质;/n远程读写模块:建立服务端CPU与客户端的RDMA通信连接;/n后台处理模块:在客户端进行远程读写时进行后台处理,保证数据的一致性;/n所述基数树在服务端执行以下操作:/nS1:在所述基数树初始化阶段,构建一块数据块,以支持远端数据的插入、更新和删除;/nS2:在所述基数树初始数据块存满后,重构数据结构为基数树结构,其中包含前缀节点和数据节点,并将树结构的前缀节点写入到客户端;/nS3:定期检查所述基数树的数据节点。/n

【技术特征摘要】
1.一种基于RDMA与非易失性内存的基数树访问系统,其特征在于,包括:
数据存储模块:采用非易失性持久内存作为基数树的存储介质;
远程读写模块:建立服务端CPU与客户端的RDMA通信连接;
后台处理模块:在客户端进行远程读写时进行后台处理,保证数据的一致性;
所述基数树在服务端执行以下操作:
S1:在所述基数树初始化阶段,构建一块数据块,以支持远端数据的插入、更新和删除;
S2:在所述基数树初始数据块存满后,重构数据结构为基数树结构,其中包含前缀节点和数据节点,并将树结构的前缀节点写入到客户端;
S3:定期检查所述基数树的数据节点。


2.根据权利要求1所述的基于RDMA与非易失性内存的基数树访问系统,其特征在于,所述数据存储模块包括前缀节点、数据节点和元数据索引表;
其中前缀节点用于数据节点的索引,同时存在于服务端和客户端;
数据节点保存了实际的键值对数据,只存在于服务端;
元数据索引表用于记录数据节点的具体存储情况。


3.根据权利要求2所述的基于RDMA与非易失性内存的基数树访问系统,其特征在于,所述前缀节点采用无指针的数据布局结构,将数据存储在事先分配好的连续内存空间内,以使服务端能够在树结构建立完全后,将所有前缀节点同步发送至客户端;
所述前缀节点只保存所存储键的固定长度的前缀,该固定长度K由所述基数树的高度决定,所有前缀节点均按前后顺序存储了所存储键的前缀的其中一段内容,每个节点还保留1字节用于记录有效存储的前缀数目;
最后一层前缀节点同时还保存了对应数据节点的节点号。


4.根据权利要求2所述的基于RDMA与非易失性内存的基数树访问系统,其特征在于,所述数据节点包含一定数量的键值对,每个数据节点都有其对应的节点号,该节点号通过检索前缀节点获取,其中最后一个数据节点包含键的前缀未被前缀节点包含在内的键值对数据;
所述数据节点的存储数据除去键值对外,还保留1字节的APPEND_FLAG用于区分数据的插入、更新和删除。


5.根据权利要求2所述的基于RDMA与非易失性内存的基数树访问系统,其特征在于,所述元数据索引表包含N行,其中N为分配的数据节点的个数;
索引表的每一行均包含4字节的锁和4字节的键值对数目,该索引表用于保证远程数据读写的一致性。


6.根据权利要求1所述的基于RDMA与非易失性内存的基数树访问系统,其特征在于,所述远程读写模块部署在客户端,分为远程写和远程读操作,其中远程写操作包括远程插入、删除和更新操作,客户端在执行读写操作时,完全使用RDMA单边原语。


7.根据权利要求6所述的基于RDMA与非易失性内存的基数树访问系统,其特征在于,客户端在执行远程写操作时,具体步骤如下:
S1:客户端...

【专利技术属性】
技术研发人员:黄林鹏郑圣安屠要峰杨洪章沈艳艳陈雨亭应瑶瑶
申请(专利权)人:上海交通大学清华大学
类型:发明
国别省市:上海;31

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

1