[发明专利]多线程持久性B+树数据结构设计与实现方法有效
申请号: | 201811129623.3 | 申请日: | 2018-09-27 |
公开(公告)号: | CN109407979B | 公开(公告)日: | 2020-07-28 |
发明(设计)人: | 舒继武;陆游游;胡庆达;刘昊 | 申请(专利权)人: | 清华大学 |
主分类号: | G06F3/06 | 分类号: | G06F3/06;G06F12/02 |
代理公司: | 北京清亦华知识产权代理事务所(普通合伙) 11201 | 代理人: | 张润 |
地址: | 10008*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 多线程 持久性 数据 结构设计 实现 方法 | ||
1.一种多线程持久性B+树数据结构设计与实现方法,其特征在于,包括以下步骤:
在预设的B+树中引入一层基于链式结构的影子叶节点;
通过基于混合主存的数据布局策略将基于链表的叶节点存储在NVM中,以生成基于数组结构的树层,并且将索引数据结构的其他部分存储在DRAM中,以生成基于链表结构的链层,使得通过分层的易失性树结构和持久性链表结构的设计避免平衡和排序的持久化开销;
设计嵌入式的细粒度锁机制和乐观写机制,以分别用于读写操作之间和写写操作之间的并发控制,其中,所述乐观写机制为将树节点和链表节点的并发控制机制进行分离,以将持久化延迟从树节点粒度的加锁路径上移除。
2.根据权利要求1所述的多线程持久性B+树数据结构设计与实现方法,其特征在于,其中,所述嵌入式的细粒度锁机制为每个链表节点设计一个更新标记位和删除标记位,以将不满足预设条件的持久化延迟从读操作的版本验证路径上移除。
3.根据权利要求1所述的多线程持久性B+树数据结构设计与实现方法,其特征在于,位于所述DRAM中的基于数组结构的树层,其每一个节点能容纳预设数量的键值对,其中,树节点的每个键值对指向下一层的树节点或者链表节点,以在任意个树节点的键值对数量超过或者低于预设阙值,树节点会执行分裂或者合并操作,在上一层的树节点中插入或者删除一个键值对。
4.根据权利要求1所述的多线程持久性B+树数据结构设计与实现方法,其特征在于,位于所述NVM中的基于数组结构的链层,将链层存储在非易失主存中,其中,所述链层为一个有序的链表,每个链表节点仅存储一个键值对,且用右指针相连,利用CPU原子操作保证其原子性和一致性的插入/删除/更新操作。
5.根据权利要求1所述的多线程持久性B+树数据结构设计与实现方法,其特征在于,每个树操作均从根结点开始搜索,直到找到对应的叶节点,其中,在访问任意一个树节点之前,执行预取指令,将整个树节点读取到CPU缓存中,以掩盖所述整个树节点的访存延迟,并且分别将键数组和值数组存放在不同的主存空间中,以只预取键数组,降低每次预取操作的数据总量。
6.根据权利要求1所述的多线程持久性B+树数据结构设计与实现方法,其特征在于,选取预设阈值的键数组大小,使用线性查找操作取代二分查找操作,将所述线性查找操作放在主存空间上进行,并利用SIMD指令加速,其中,每个键值对配备1B的指纹,且每个指纹都是对应键值的哈希值,并将指纹数组存储在叶节点的头部。
7.根据权利要求1所述的多线程持久性B+树数据结构设计与实现方法,其特征在于,其中,
1)对于读写操作间的冲突,则采用基于版本号的并发控制机制,其中,在每个树节点上采用一个版本号计数器,版本号在每次树节点状态被改变的时候递增,对于插入、删除或者更新操作,在修改树节点之前申请锁,并将对应版本号置为脏,并在完成操作后且版本号加1后,释放掉对应树节点的锁,且如果版本号被修改或者被加锁,则读操作就会重复执行1)过程,直到版本号验证通过;
2)对于写写操作间的冲突,则采用树节点粒度的锁机制,其中,采用树节点粒度的锁确保修改不同树节点的写操作同时执行,叶节点之间通过右指针相连,并且预设所述叶节点的分裂方向只能从左往右,并自底向上申请所述树节点的锁,且在所述树节点发生分裂或者删除时,申请上一层树节点的锁,链表节点和叶节点的键值对有一一对应的关系,使得所述写操作只有在获取树层对应叶节点的锁之后,才会修改所述链表节点。
8.根据权利要求1所述的多线程持久性B+树数据结构设计与实现方法,其特征在于,在每次分配和释放一个链表节点之前,每次从系统主存分配器中分配一块非易失主存空间,并且将所述非易失主存空间的地址和长度持久化到一个持久性链表中,并将分配到的所述主存空间分割成预设大小的主存块,并通过一个易失性的空闲主存块链表维护,以用于链层的主存分配和释放操作,且在系统恢复时,恢复线程扫描持久性链表上的元数据信息和链层的节点,判断出正在使用的和没有被使用的主存块,从而重建易失性的空闲主存块链表。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811129623.3/1.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置