基于NVM主存的数据索引方法及数据处理系统技术方案

技术编号:24498088 阅读:42 留言:0更新日期:2020-06-13 03:51
本发明专利技术公开了一种基于NVM的数据索引方法,包括:于NVM主存设置树状索引结构的叶子节点;将新增数据写入叶子节点时,判断叶子节点是否存在空闲索引项,若存在,则进行数据写入操作,反之则进行并完成节点分裂操作后再进行数据写入操作;其中,数据写入操作包括:若叶子节点的首索引行存在空闲索引项,则将新增数据写入空闲索引项;反之则将新增数据和首索引行内存储的已存数据迁移至中间索引行和/或尾索引行的空闲索引项;节点分裂操作包括:构建新叶子节点,将叶子节点的部分已存数据迁移至新叶子节点的空闲索引项。

Data index method and data processing system based on NVM main memory

【技术实现步骤摘要】
基于NVM主存的数据索引方法及数据处理系统
本专利技术涉及数据库系统及大数据系统领域,特别涉及一种面向非易失主存的树状索引结构,索引方法和系统。
技术介绍
1.1新一代非易失性存储技术新一代非易失性存储器(NVM)是一种计算机存储器,是对现有的DRAM(动态随机存储器)主存技术的替代或补充。当前的集成电路特征尺寸已经达到7nm,DRAM技术继续向下扩展至更小的特征尺寸存在巨大的挑战。新一代NVM技术通过改变存储介质的电阻来存储0/1,可以支持更小的特征尺寸,为上述问题提供了一种可行的解决方案。新一代NVM技术包括相变存储器(PCM),自旋转移扭矩磁性随机存取存储器(STT-MRAM)和忆阻器(Memristor),3DXPoint等。与DRAM技术相比,NVM技术具有下述特点:(1)NVM的读写性能与DRAM相近,但是比DRAM慢(例如3倍);(2)NVM的写比读性能差,功耗高,而且写可能有次数的限制,即同一个存储单元写的次数超过某个阈值,存储单元就会损坏;(3)写入NVM的数据在掉电后不消失,而掉电后DRAM和CPUCache中的数据将会消失;(4)为了保证CPUCache中的内容写回NVM,需要执行clwb/clflush/clflushopt等cachelineflush指令和sfence/mfence等内存操作排序指令,这些特殊指令的性能代价比普通写高(例如10倍);(5)CPU访问NVM的基本单元是一个Cacheline(例如64B)。(6)NVM模块内部的访问基本单元可能比Cacheline大(例如IntelOptaneDCPersistentMemory内部的访问单元是256B)。与闪存相比,NVM技术的性能高至少2个数量级,而且NVM允许在原位置写,而不需要类似闪存的擦除等操作。因此,NVM技术的使用特征更加接近于DRAM,被视作对DRAM主存技术的一种替代或补充。1.2包含新一代NVM主存的计算机系统图1A、B中展示了包含基于3DXPoint的IntelOptaneDCPersistentMemory的计算机系统的两种配置方式。如图1A所示,第一种配置方式把DRAM当做了3DXPoint的缓冲,内存控制器自动完成缓冲操作,系统可见的主存大小就是3DXPoint的大小。DRAM完全由硬件控制,而对软件不可见;如图1B所示,第二种配置方式中DRAM和3DXPoint都是软件可见的,软件可以决定哪些数据放入易失的DRAM,哪些数据放入非易失的3DXPoint。第一种配置主要适合运行原有的应用,不需要修改应用,就可以利用大容量的3DXPoint主存,但第一种配置无法实现NVM中持久存储数据的目的,因此,新的面向NVM主存的应用将使用第二种配置。1.3B+-Tree树状索引B+-Tree是一种树结构的索引结构。叶子节点存储索引项,都在同一层,从左到右以兄弟链表连接起来,对索引项提供了从小到大有序的存储。每个内部节点可以有多个指针,每个指针指向一个孩子节点。内部节点中的键从小到大有序,把不同的孩子子树分开。因此,B+-Tree树是一种有序的索引。B+-Tree被广泛应用于数据库和大数据系统中,以协助快速查询、更新数据。索引由于被高频调用,其性能会影响系统的整体性能。因此,针对非易失主存优化B+-Tree索引结构的设计,对于基于非易失主存的数据库和大数据系统具有重要的理论和实践意义。1.4现有技术:面向NVM优化的B+-Tree索引结构现有的面向NVM优化的B+-Tree索引结构主要包括WB+-Tree、FP-Tree、BzTree等。其主要优化思路包括下述几个方面:·注重CPUCache性能,使节点大小为CacheLine大小(即64B)的整数倍,且明显小于基于硬盘的B+-Tree节点大小(例如4KB);·采用无序叶子节点来减少NVM写;·把内部节点放入DRAM,而叶子节点放入NVM,从而提高内部节点的访问性能,同时可以在恢复时从叶子节点重建内部节点,从而保持了数据结构的持久性和宕机一致性;·利用NVM原子写而避免采用写前日志或影子副本等方式,从而可以减少NVM写和强制写回的次数。首先,现有技术都是基于理论上的NVM特性设计的,在没有真实NVM硬件时,采用了模拟仿真方法进行研究。而真实的3DXPoint硬件出现后,通过研究,专利技术人发现它具有新的重要特点:(1)其内部数据访问的粒度为256B,大于CPUCacheLine的大小64B;(2)每个64B的Line写入NVM的代价不随着写入内容不同而变化,这与前期的研究中假设不同。其次,B+-Tree节点分裂操作在现有技术中的代价很大,通常是采用日志来保证节点分裂操作的宕机一致性,而日志将引起额外的NVM写和强制写回的代价。在3DXPoint上强制写回可能引起比普通写超过10倍的性能代价,因此如何减少日志等额外操作,就是十分重要的问题。
技术实现思路
本专利技术针对现有技术的不足,提出一种基于NVM主存的数据索引方法,利用非易失主存原子写操作和3DXPoint真实硬件的特点构建树状索引结构,以降低NVM主存内数据写操作的开销。具体来说,本专利技术的数据索引方法包括:构建树状索引结构;该树状索引结构的根节点及内部节点设置于数据处理系统的DRAM主存,该树状索引结构的叶子节点设置于该数据处理系统的NVM主存;该叶子节点具有多个且处于同一层,并从左到右以兄弟链表连接;该叶子节点包括A索引单元,该A索引单元依次包括首索引行、中间索引行和尾索引行,该首索引行、该中间索引行和该尾索引行分别包括多个索引项;将新增数据写入该当前叶子节点时,判断该当前叶子节点的A索引单元是否存在空闲索引项,若存在,则进行数据写入操作,反之则进行并完成节点分裂操作后再进行该数据写入操作;其中,该数据写入操作包括:若该首索引行存在空闲索引项,则将该新增数据写入该首索引行的空闲索引项;反之则将该新增数据和该首索引行内存储的已存数据迁移至该中间索引行和/或该尾索引行的空闲索引项;该节点分裂操作包括:构建新叶子节点并加入该兄弟链表,将该当前叶子节点的部分已存数据迁移至该新叶子节点的索引单元的空闲索引项。本专利技术所述的数据索引方法,其中A索引单元NVMLine包括M个索引行Line,每个Line具有N个数据项存储位置;第1个Line为首索引行Lh,Lh的第1个数据项存储位置为索引头H,Lh的其余数据项存储位置为索引项,第2~M-1个Line为中间索引行Li,Li的所有数据项存储位置均为索引项,第M个Line为尾索引行Lt,Lt的第N个数据项为兄弟链表指针项S,Lt的其余数据项为索引项;M、N为正整数;索引头H包括写入锁定位lockbit、交替控制位altbit、索引占用位图bitmap和索引指纹位F,S包括指针S0和指针S1;lockbit用于设置当前叶子节点的写入状态;altbit用于通过NVM原子写设置S0和S1的其中一个为有效指针,且另一个为无效指针;bitmap,用于分别记录每个索引项的占本文档来自技高网
...

【技术保护点】
1.一种基于NVM的数据索引方法,其特征在于,包括:/n构建树状索引结构;该树状索引结构的根节点及内部节点设置于数据处理系统的DRAM主存,该树状索引结构的叶子节点设置于该数据处理系统的NVM主存;该叶子节点具有多个且处于同一层,并从左到右以兄弟链表连接;该叶子节点包括A索引单元,该A索引单元依次包括首索引行、中间索引行和尾索引行,该首索引行、该中间索引行和该尾索引行分别包括多个索引项;/n将新增数据写入该当前叶子节点时,判断该当前叶子节点的A索引单元是否存在空闲索引项,若存在,则进行数据写入操作,反之则进行并完成节点分裂操作后再进行该数据写入操作;/n其中,该数据写入操作包括:若该首索引行存在空闲索引项,则将该新增数据写入该首索引行的空闲索引项;反之则将该新增数据和该首索引行内存储的已存数据迁移至该中间索引行和/或该尾索引行的空闲索引项;/n该节点分裂操作包括:构建新叶子节点并加入该兄弟链表,将该当前叶子节点的部分已存数据迁移至该新叶子节点的索引单元的空闲索引项。/n

【技术特征摘要】
1.一种基于NVM的数据索引方法,其特征在于,包括:
构建树状索引结构;该树状索引结构的根节点及内部节点设置于数据处理系统的DRAM主存,该树状索引结构的叶子节点设置于该数据处理系统的NVM主存;该叶子节点具有多个且处于同一层,并从左到右以兄弟链表连接;该叶子节点包括A索引单元,该A索引单元依次包括首索引行、中间索引行和尾索引行,该首索引行、该中间索引行和该尾索引行分别包括多个索引项;
将新增数据写入该当前叶子节点时,判断该当前叶子节点的A索引单元是否存在空闲索引项,若存在,则进行数据写入操作,反之则进行并完成节点分裂操作后再进行该数据写入操作;
其中,该数据写入操作包括:若该首索引行存在空闲索引项,则将该新增数据写入该首索引行的空闲索引项;反之则将该新增数据和该首索引行内存储的已存数据迁移至该中间索引行和/或该尾索引行的空闲索引项;
该节点分裂操作包括:构建新叶子节点并加入该兄弟链表,将该当前叶子节点的部分已存数据迁移至该新叶子节点的索引单元的空闲索引项。


2.如权利要求1所述的数据索引方法,其特征在于,A索引单元NVMLine包括M个索引行Line,每个Line具有N个数据项存储位置;第1个Line为首索引行Lh,Lh的第1个数据项存储位置为索引头H,Lh的其余数据项存储位置为索引项,第2~M-1个Line为中间索引行Li,Li的所有数据项存储位置均为索引项,第M个Line为尾索引行Lt,Lt的第N个数据项为兄弟链表指针项S,Lt的其余数据项为索引项;M、N为正整数;
索引头H包括写入锁定位lockbit、交替控制位altbit、索引占用位图bitmap和索引指纹位F,S包括指针S0和指针S1;lockbit用于设置当前叶子节点的写入状态;altbit用于通过NVM原子写设置S0和S1的其中一个为有效指针,且另一个为无效指针;bitmap,用于分别记录每个索引项的占用状态;F为fingerprint数组,用于分别记录每个索引项的指纹;S的有效指针用于连接该兄弟链表。


3.如权利要求2所述的数据索引方法,其特征在于,该节点分裂操作步骤具体包括:
当叶子节点Noden的所有索引项都被占用,分配新增叶子节点Noden',Noden'具有与Noden相同的结构;
将Noden的部分已存数据复制到Noden'的索引项,并修改Noden'的首索引行Lh'索引头H'的索引占用位图bitmap';
将Noden'的兄弟链表指针项S'的有效指针指向Noden的右兄弟叶子节点Noden+1,将Noden的兄弟链表指针项S的无效指针指向Noden';
在该NVM主...

【专利技术属性】
技术研发人员:陈世敏刘霁航
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:北京;11

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

1