CN111400306B - 基于rdma与非易失性内存的基数树访问系统 - Google Patents

基于rdma与非易失性内存的基数树访问系统 Download PDF

Info

Publication number
CN111400306B
CN111400306B CN202010104445.XA CN202010104445A CN111400306B CN 111400306 B CN111400306 B CN 111400306B CN 202010104445 A CN202010104445 A CN 202010104445A CN 111400306 B CN111400306 B CN 111400306B
Authority
CN
China
Prior art keywords
data
node
tree
key
prefix
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
CN202010104445.XA
Other languages
English (en)
Other versions
CN111400306A (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.)
Tsinghua University
Shanghai Jiaotong University
Original Assignee
Tsinghua University
Shanghai Jiaotong University
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 Tsinghua University, Shanghai Jiaotong University filed Critical Tsinghua University
Priority to CN202010104445.XA priority Critical patent/CN111400306B/zh
Publication of CN111400306A publication Critical patent/CN111400306A/zh
Application granted granted Critical
Publication of CN111400306B publication Critical patent/CN111400306B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/24569Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

基于RDMA与非易失性内存的基数树访问系统
技术领域
本发明涉及存储系统领域,具体地,涉及一种基于RDMA与非易失性内存的基数树访问系统。
背景技术
近年来,随着非易失性内存和RDMA技术的发展,高存储性能和低延迟网络访问的数据中心已经成为一种趋势。由于非易失性内存具有可字节寻址和持久性的特性,传统的索引结构需要做出相应的调整,使得数据结构在保证数据一致性的前提下尽可能多地提高读写性能。此外,RDMA技术的发展使得本地节点能够绕过远端节点内核和CPU直接读取或写入,从而有效提高了远端节点CPU的效率,使得更低延时、更高吞吐量的远端数据访问成为可能。
专利文献CN 1613073A公开了改进型多路基数树,然而,传统的基于树的数据索引结构依赖于远端节点的响应,无法适应RDMA的特性,因此需要进行必要的改进和优化。
基数树作为一种重要的基于树的数据索引结构,相较于B+树而言,其整体结构由插入的key值决定且插入无需通过任何key值的比较,有效减少了缓存行的刷入和必要的日志记录,因此更适应于非易失性内存下的数据索引。目前关于基数树的研究仅针对单机系统环境下的一致性保障进行了改进,针对分布式系统环境下的数据一致性和提高远端节点CPU效率以降低延时、提高吞吐量的问题,现有技术中鲜有这方面的研究。
在本领域,涉及的专业术语如下:
基数树:是一种多叉搜索树,其树结构由插入键的具体符号表示决定。相比于B+树,基数树的数据插入和检索无需键值的比较,同时,也避免了以节点为粒度的分裂和结合操作等。
RDMA:Remote Direct Memory Access,远程直接内存访问。该技术允许本地节点直接读取或写入远端节点,而无内核干预和内存拷贝发生。借助远程直接内存访问技术,能够有效提高服务器CPU效率,实现高吞吐、低延时的网络数据传输。
DRAM:Dynamic Random Access Memory,动态随机存取存储器,属于易失性存储器,是现阶段最为常见的系统内存。其特点是断电后信息丢失,相对于非易失性内存,DRAM成本较高,但是读写寿命理论上不受限制。
NVM:Non Volatile Memory,非易失性内存,包括相变存储器(PCM,Phase ChangeMemory),自旋矩传输随机存取存储器(STT-RAM,Spin-Transfer Torque RAM)和3D Xpoint等。这些非易失性内存具有可字节寻址的特性,在断电后仍能保留已保存的数据,并且能够提供与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进行整理,判断该键是否存在,以及是否被删除或更新,返回最新的值或在检索失败时提示键值不存在。
优选地,所述后台处理模块,包括数据节点整理模块和重构模块;
所述数据节点整理模块用于提高数据检索效率,所述重构模块用于满足更大容量的数据存储。
优选地,所述数据节点整理模块部署于服务端,定期检查数据节点中有效键值对的数目,若有效键值对的数目低于事先设定的阈值,则执行整理操作,将包含相同键的键值对整理为一个,并将APPEDN_FLAG设置为插入;
所述重构模块定期检查各数据节点中有效键值对的数目,若该数目高于事先设定的阈值,则执行重构操作;
重构操作包括前缀节点增高操作和前缀节点加宽操作,若最后一块数据节点的有效数据行数目大于预先设定的阈值,则进行前缀节点加宽操作;否则,则进行前缀节点增高操作;
为了使后续读写操作不被阻断,所述基数树采用影子树的机制,同时保留两棵基数树,一棵为有效树,一棵为影子树,通过TREE_FLAG标记有效树;
在重构时先在影子树上进行重构操作,当影子树重构完成后,通过改变TREE_FLAG的值原子更新有效树。
与现有技术相比,本发明具有如下的有益效果:
本发明树能够在有效保障数据一致性的前提下,极大减轻服务端CPU的压力,降低远程数据获取的响应延时,提高吞吐率,从而提高远程数据读写的整体性能,具有广泛的市场应用价值。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是本发明实施例的基于RDMA和非易失性内存的基数树访问系统的框架总模块示意图;
图2是本发明实施例的数据存储结构示意图;
图3是本发明实施例中前缀节点和数据节点的具体细节图;
图4是本发明实施例中元数据索引表结构图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
本发明实施例的一种基于RDMA与非易失性内存的基数树访问系统框架总模块示意图如图1所示,所述基数树包括数据存储模块、远程读写模块和后台处理模块。根据本发明实施例的基于RDMA与非易失性内存的基数树,首先将服务端和客户端通过RDMA进行网络互联,以支持客户端执行远程读写模块。客户端在执行读写操作时,完全使用RDMA单边原语,极大地减轻了服务端CPU的负载压力。数据存储模块主要部署在服务端,部分数据结构将通过服务端写入到客户端。服务端采用非易失性持久内存作为基数树的存储介质。服务端在客户端进行远程读写的同时进行必要的后台处理,以保证数据的一致性以及更为高效的读写性能。
下面结合框架具体阐述服务端数据存储模块操作步骤如下:
S1:在所述基数树初始化阶段,构建一块数据块,以支持远端数据的插入、更新和删除。
S2:在所述基数树初始数据块存满后,重构数据结构为基数树结构,其中包含前缀节点和数据节点,并将树结构的前缀节点写入到客户端。
S3:后台定期检查所述基数树的数据节点,在数据节点有效数据过少或过多时执行相应的数据块整理及重构操作,以保证远程读写的效率。
在本发明的一个实施例中,数据存储模块包括前缀节点、数据节点和元数据索引表,如图2-4所示;每一个前缀节点对应下一层的m个前缀节点,第i层前缀节点存储键的第i位字符,例如键ABEF,在第1层存储字符A,第2层存储字符B,第3层存储字符E,由于本例中前缀节点的高度K为3,因此只存储三位字符。最后一层(第3层)还另外存储键对应数据节点的节点号,本例中键ABEF存储于数据节点0,因此在第3层前缀节点对应的节点号数组中存储的数字为0。若键的长度L小于树的高度K,则键将会被依次索引到能索引到的前缀节点的下一层前缀节点的第一个节点处,例如键AT,将会被依次索引到前缀节点m+3。需要说明的是,前缀节点只在服务端进行基数树重构时才会被改变,在执行读写操作时不会变化。
下面具体阐述数据节点索引步骤如下:
S1:根据索引键,按层索引前缀节点。如果索引键的第i个字符在第i层的对应前缀节点(节点号为PREFIXi)的字符数组的第p位,则该索引键在第i+1层前缀节点的节点号可根据计算公式得出。定义每一层前缀节点的第一个节点为该层的基节点,则第i层的基节点的节点号(BASEi)计算公式如下:
Figure BDA0002388041090000061
则第i+1层前缀节点的节点号的计算公式如下:
PREFIXi+1=BASEi+1+(PREFIXi+BASEi)*m+p。
S2:当索引到最后一层前缀节点时,若索引键的第i个字符在第i层的对应前缀节点(节点号为PREFIXi)的字符数组的第p位,则检索该前缀节点中存储的数据节点号数组的第p位,获取对应的数据节点号。
需要说明的是,若在S1和S2的检索过程中,索引键的第i个字符在第i层前缀节点的字符数组中没有存储,则停止检索,并默认该键值存储在最后一块数据节点中。
在本发明的一个实施例中,远程读写模块主要由客户端来执行,包括远程写和远程读,其中远程写包括远程插入、删除和更新操作。
下面具体阐述远程写步骤如下:
S1:客户端根据存储在本地的前缀节点和具体的索引键,计算索引键对应的数据节点号,计算过程如前文数据节点索引步骤所述。
S2:根据计算的数据节点号得出索引键对应数据节点的元数据地址,并向该地址执行一次ATOMIC_FETCH_AND_ADD操作,该操作获取到对应元数据,并使得对应元数据的锁值加1。
S3:根据获取到的元数据的锁值,判断该数据节点是否正在被其他客户端写,若锁值大于1,则数据节点忙,放弃当前写操作,并在等待后重复S1-S3步骤;若锁值为0,则检查元数据的键值对数目值,结合先前计算的数据节点号,得出索引键值在服务端数据节点中具体要插入的地址,并向该地址执行一次RDMA_WRITE_WITH_IMM操作,其中立即数为数据节点号。
S4:服务端在收到客户端写操作的立即数后,即可判定客户端写操作已完成,此时服务端的背景线程将自动修改对应元数据,将键值对数目加1,并将锁值置零。
需要说明的是,只有当键值对成功写入到数据节点后,元数据中的键值对数目值才会被服务端修改,因此能够很好地保证数据的一致性;此外,8字节的元数据能够被原子修改,避免了复杂的日志记录;同时,所述基数树使用的追加写入的方式也非常适合非易失性内存和RDMA单边写的特性。
下面具体阐述远程读步骤如下:
S1:客户端根据存储在本地的前缀节点和具体的索引键,计算索引键对应的数据节点号,计算过程如前文数据节点索引步骤所述。
S2:根据计算的数据节点号得出索引键对应数据节点的元数据地址和数据节点的地址,并分别向两个地址相继执行两次RDMA_READ操作,获取到对应元数据的值和数据节点的值。
S3:根据读取的元数据中键值对数目查询读取的数据节点,根据索引键检索整个数据节点,找出所有键等于该索引键的数据行,并根据APPEND_FLAG进行整理,判断该键是否存在,以及是否被删除或更新,返回最新的值或在检索失败时提示键值不存在。
注意到,由于所述基数树采用了追加写的方式,而只有当写完成后元数据中的键值对数目才会被修改,因此远程读不会被远程写阻断。
在本发明的一个实施例中,后台处理模块主要由服务端来执行,包括数据节点整理模块和重构模块。
下面具体阐述数据节点整理模块步骤如下:
S1:服务端定期检查每个数据节点中有效数据行的数目,若该数目低于预先设定的阈值,则新分配一块内存,整理当前数据节点,将有效数据行写入新分配的内存中;
S2:通过修改对应元数据(包括锁值设置为特定值,键值对数目置零)锁定该数据节点;
S3:复制新分配内存中的内容至原始数据节点;
S4:修改对应元数据,即将锁值置0,键值对数目更新为当前数据节点的键值对数目。
重构模块包括前缀节点增高模式和前缀节点加宽模式,若最后一块数据节点的有效数据行数目大于预先设定的阈值,则进行前缀节点加宽操作;否则,则进行前缀节点增高操作。
下面具体阐述前缀节点加宽步骤如下:
S1:服务端通过修改元数据锁定最后一块数据节点;
S2:复制有效树的前缀节点到影子树中;
S3:根据最后一块数据节点中的数据行在影子树的前缀节点中添加前缀;
S4:根据影子树的前缀节点得出所需的全部数据节点的数目,并分配内存;
S5:初始化影子树的元数据,将所有数据节点的元数据的锁值值置1,键值对数目置0;
S6:将有效树的最后一块数据节点的数据行依次插入到影子树中;
S7:依次锁定有效树的其他数据节点,并把数据行插入到有效树中;
S8:通过修改TREE_FLAG,将影子树设置为新的有效树,而原来的有效树则相应地成为新的影子树;
S9:将新的前缀节点写入到客户端;
S10:写入成功后将所有数据节点的元数据的锁值置0,并回收原来的数据节点内存。
注意到在S1-S6中,写和读操作依然是可以继续进行没有被阻断的,而在S7-S10中也只有写操作被部分阻断,读操作依然可以继续执行。
前缀节点增高操作与前缀节点加宽操作类似,该操作使得前缀节点的高度K加1,增加了每个数据节点能够容纳的数据行数目。
另外,本发明实施例的基于RDMA和非易失性内存的基数树的其他构成以及作用对于本领域的技术人员而言是已知的,为了减少冗余,不做赘述。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

Claims (10)

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:客户端根据存储在本地的前缀节点和具体的索引键,计算索引键对应的数据节点号;
S2:根据计算的数据节点号得出索引键对应数据节点的元数据地址,并向该元数据地址执行一次ATOMIC_FETCH_AND_ADD操作,该操作获取到对应元数据,并使得对应元数据的锁值加1;
S3:根据获取到的元数据的锁值,判断该数据节点是否正在被其他客户端写,若锁值大于1,则数据节点忙,放弃当前写操作,并在等待后重复S1-S3步骤;若锁值为0,则检查元数据的键值对数目值,结合先前计算的数据节点号,得出索引键值在服务端数据节点中具体要插入的地址,并向该地址执行一次RDMA_WRITE_WITH_IMM操作,其中立即数为数据节点号;
S4:服务端在收到客户端写操作的立即数后,判定客户端写操作已完成,此时服务端的背景线程修改对应元数据,将键值对数目加1,并将锁值置零。
8.根据权利要求6所述的基于RDMA与非易失性内存的基数树访问系统,其特征在于,客户端在执行远程读操作时,具体步骤如下:
S1:客户端根据存储在本地的前缀节点和具体的索引键,计算索引键对应的数据节点号;
S2:根据计算的数据节点号得出索引键对应数据节点的元数据地址和数据节点的地址,并分别向两个地址相继执行两次RDMA_READ操作,获取到对应元数据的值和数据节点的值;
S3:根据读取的元数据中键值对数目查询读取的数据节点,根据索引键检索整个数据节点,找出所有键等于该索引键的数据行,并根据APPEND_FLAG进行整理,判断该键是否存在,以及是否被删除或更新,返回最新的值或在检索失败时提示键值不存在。
9.根据权利要求1所述的基于RDMA与非易失性内存的基数树访问系统,其特征在于,所述后台处理模块,包括数据节点整理模块和重构模块;
所述数据节点整理模块用于提高数据检索效率,所述重构模块用于满足更大容量的数据存储。
10.根据权利要求9所述的基于RDMA与非易失性内存的基数树访问系统,其特征在于,所述数据节点整理模块部署于服务端,定期检查数据节点中有效键值对的数目,若有效键值对的数目低于事先设定的阈值,则执行整理操作,将包含相同键的键值对整理为一个,并将APPEDN_FLAG设置为插入;
所述重构模块定期检查各数据节点中有效键值对的数目,若该数目高于事先设定的阈值,则执行重构操作;
重构操作包括前缀节点增高操作和前缀节点加宽操作,若最后一块数据节点的有效数据行数目大于预先设定的阈值,则进行前缀节点加宽操作;否则,则进行前缀节点增高操作;
为了使后续读写操作不被阻断,所述基数树采用影子树的机制,同时保留两棵基数树,一棵为有效树,一棵为影子树,通过TREE_FLAG标记有效树;
在重构时先在影子树上进行重构操作,当影子树重构完成后,通过改变TREE_FLAG的值原子更新有效树。
CN202010104445.XA 2020-02-20 2020-02-20 基于rdma与非易失性内存的基数树访问系统 Active CN111400306B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010104445.XA CN111400306B (zh) 2020-02-20 2020-02-20 基于rdma与非易失性内存的基数树访问系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010104445.XA CN111400306B (zh) 2020-02-20 2020-02-20 基于rdma与非易失性内存的基数树访问系统

Publications (2)

Publication Number Publication Date
CN111400306A CN111400306A (zh) 2020-07-10
CN111400306B true CN111400306B (zh) 2023-03-28

Family

ID=71434234

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010104445.XA Active CN111400306B (zh) 2020-02-20 2020-02-20 基于rdma与非易失性内存的基数树访问系统

Country Status (1)

Country Link
CN (1) CN111400306B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112784117B (zh) * 2021-01-06 2023-06-02 北京信息科技大学 一种用于海量数据的高级基数树构建方法和构建系统
CN112817887B (zh) * 2021-02-24 2021-09-17 上海交通大学 分离可组合式架构下的远内存访问优化方法及系统
CN113704217A (zh) * 2021-06-30 2021-11-26 上海交通大学 一种分布式持久性内存文件系统中元数据及数据组织架构方法
CN113448897B (zh) * 2021-07-12 2022-09-06 上海交通大学 适用于纯用户态远端直接内存访问的优化方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107111528A (zh) * 2015-03-04 2017-08-29 闪迪技术有限公司 用于存储错误管理的系统和方法
CN107577492A (zh) * 2017-08-10 2018-01-12 上海交通大学 加速文件系统读写的nvm块设备驱动方法及系统
CN108509613A (zh) * 2018-04-03 2018-09-07 重庆大学 一种利用nvm提升加密文件系统性能的方法
CN110069431A (zh) * 2018-01-24 2019-07-30 上海交通大学 基于RDMA和HTM的弹性Key-Value键值对数据存储方法
CN110113420A (zh) * 2019-05-08 2019-08-09 重庆大学 基于nvm的分布式消息队列管理系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8725934B2 (en) * 2011-12-22 2014-05-13 Fusion-Io, Inc. Methods and appratuses for atomic storage operations

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107111528A (zh) * 2015-03-04 2017-08-29 闪迪技术有限公司 用于存储错误管理的系统和方法
CN107577492A (zh) * 2017-08-10 2018-01-12 上海交通大学 加速文件系统读写的nvm块设备驱动方法及系统
CN110069431A (zh) * 2018-01-24 2019-07-30 上海交通大学 基于RDMA和HTM的弹性Key-Value键值对数据存储方法
CN108509613A (zh) * 2018-04-03 2018-09-07 重庆大学 一种利用nvm提升加密文件系统性能的方法
CN110113420A (zh) * 2019-05-08 2019-08-09 重庆大学 基于nvm的分布式消息队列管理系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Haixin Huang 等.Forca: Fast and Atomic Remote Direct Access to Persistent Memory.《2018 IEEE 36th International Conference on Computer Design》.全文. *

Also Published As

Publication number Publication date
CN111400306A (zh) 2020-07-10

Similar Documents

Publication Publication Date Title
CN111400306B (zh) 基于rdma与非易失性内存的基数树访问系统
CN110347852B (zh) 嵌入横向扩展键值存储系统的文件系统及文件管理方法
CN105117415B (zh) 一种优化的ssd数据更新方法
CN109299113B (zh) 具有存储感知的混合索引的范围查询方法
CN107153707B (zh) 一种针对非易失内存的哈希表构建方法及系统
US8868926B2 (en) Cryptographic hash database
CN112000846B (zh) 基于gpu分组lsm树索引的方法
CN104238962B (zh) 向缓存中写入数据的方法及装置
US11269772B2 (en) Persistent memory storage engine device based on log structure and control method thereof
CN111190904B (zh) 一种图-关系数据库混合存储的方法和装置
CN107463447A (zh) 一种基于远程直接非易失内存访问的b+树管理方法
CN113377868B (zh) 一种基于分布式kv数据库的离线存储系统
CN108134739B (zh) 一种基于索引特里树的路由查找方法及装置
CN100424699C (zh) 一种属性可扩展的对象文件系统
US20220027349A1 (en) Efficient indexed data structures for persistent memory
US11210281B2 (en) Technique for log records management in database management system
CN109165321B (zh) 一种基于非易失内存的一致性哈希表构建方法和系统
CN106055679A (zh) 一种多层次缓存感知型索引方法
CN114064984A (zh) 一种基于稀疏数组链表的世界状态增量更新方法及装置
CN113722320A (zh) 一种基于并行的图数据索引的持久化方法
US8156126B2 (en) Method for the allocation of data on physical media by a file system that eliminates duplicate data
CN106168883A (zh) 一种高效的数据组织与访问方法
CN116501760A (zh) 一种内存与前缀树相结合的高效分布式元数据管理方法
CN111274259A (zh) 一种分布式存储系统中存储节点的数据更新方法
CN111274456B (zh) 基于nvm主存的数据索引方法及数据处理系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant