【技术实现步骤摘要】
该专利技术涉及本地数据存储管理系统,尤其涉及基于SSD (固态硬盘)的Key-Value(键值)型本地存储方法及系统。
技术介绍
数据的组织管理主要分为三步,一是数据的在线存取,主要指的是获得数据和提供读取服务,即面向传统的OLTP型负载,二是数据的组织,传统上指的是将OLTP型数据库中的数据转为适合数据仓库的数据格式,即称为ETL的过程。三是数据分析,指的是进行长时间,复杂的数据挖掘等工作来发现数据中的联系和潜在价值,也就是OLAP型任务。本文中,我们关注的是数据的在线存取部分。 传统的方案中,满足数据在线存取任务的是以MySQL为代表的关系型数据库。关系型数据库是上世纪70年代的产物,产生伊始的主体架构沿袭至今。关系型数据库是数据存储管理发展史上的里程碑,其特点是擅长严格事务处理,提供数据安全性保障等。但对于大数据时代的新型负载,关系型数据库体现出了其固有的局限性其一,大数据负载的规模变化快,当新业务上线时,相关的数据量往往急速上升,而当业务调整时,数据量又可能会快速收缩,转移到别的业务上去。而在传统数据库面向的应用场景一般都是在比较静态的用户群体中进行,扩展和收缩会牵涉到数据库的分库分表操作。这些复杂的行为一是会耗费大量人力物力,二是可能导致相关业务的暂时下线,这是目前的互联网服务商很难接受的。其二,大数据负载的形式变化快。传统的数据库在线事务处理中,一般面向的文书,报表等,都具有比较固定的格式内容,而正如上文已经提到的那样,现今面临的负载中,越来越多的却是没有固定范式,或者经常根据业务需要进行调整的的非结构化数据或半结构化数据。这种灵活性是传统的 ...
【技术保护点】
【技术特征摘要】
1.一种基于SSD的Key-Value型本地存储方法,其特征在于,包括 步骤1,对于数据采用内存快照B+树索引结构,进行内存中的读写分离操作; 步骤2,经过索引后的数据,针对B+树页面使用FIFO队列管理缓存; 步骤3,对所述数据页面追加写入SSD,通过空洞文件机制在日志型追加写入的数据中实现逻辑页号和物理位置的映射管理。2.如权利要求I所述的基于SSD的Key-Value型本地存储方法,其特征在于,所述步骤I包括 步骤21,根节点A为B+树根节点,如对首节点D做一次更新操作;首先将首节点D页面进行拷贝,拷贝的副本页面为首节点D’,然后在首节点D’页面中进行所需要的更新;步骤22,进行完这个操作以后,需要对中间节点B中对首节点D’的索引也做更新,根据内存快照的原则,为了防止读写竞争,需要先对中间节点B进行拷贝,然后在副本中间节点 B’中进行更新操作;依次操作,所述拷贝过程也在根节点A上发生; 步骤23,当整个更新操作完成时,形成了一棵以根节点A’为根节点的新B+树,根节点A’相比较A,指向B’的索引有变化,而其他索引仍然不变; 步骤24,中间节点B’更新了指向首节点D’的页面,其他索引没有变化。3.如权利要求I所述的基于SSD的Key-Value型本地存储方法,其特征在于,所述步骤2包括 步骤31,FIFO页级写缓存的设计使用环形队列的结构,整个环划分为write区域和read区域,write区域中为正在进行写操作,尚未提交的页面,read区域中为已经完成写操作并提交的页面,可以供读操作从缓存中获得; 步骤32, write指针指向write区域的末尾,该指针也是下一个写操作向写缓存申请新页面时装载的位置,在系统运行时,write指针位置不断获得新页面并沿着环形队列前移,同时完成写操作的页面提交为read区域,并由read指针指向新近提交的页面位置; 步骤33,在这个过程中,后台异步写入线程将以适合应用需求的速度将read区域依次持久化到SSD中,已经完成持久化的页面区域称为flush区域,一个flush指针指向下一个要做持久化的页面,flush区域为read区域的一部分,供write指针获得新页面的区域;步骤34,在后台异步写入线程将相应页面写入SSD中的过程中,已经在环形队列中存在更新拷贝的页面属于冗余页面,不需要进行写入,本方法中将跳过该种页面,同时在SSD的数据文件中制造同样大小的文件空洞,该文件空洞不占用实际空间也不进行实际写入操作,但保持了逻辑页号和数据页面在文件中位移的对应关系。4.如权利要求I所述的基于SSD的Key-Value型本地存储方法,其特征在于,所述步骤3读出操作包括 步骤41,获得当前的B+树根节点,作为B+树索引查找的起点;读操作无需对页面进行加锁; 步骤42,对于包括根节点在内的中间节点页面进行页面内部的折半查找,取得正确的索引项,获得下一个需要进行查找的页面逻辑页号,这一查找过程直到获得叶子节点后终结;因为内存快照技术的使用,读操作无需对页面进行加锁; 步骤43,通过逻辑页号获得物理页面的操作通过调用内存池管理模块完成;内存池管理模块将该页号与FIFO队列中最小的页号相比较,判断是否在队列中,如果比最小页号大,也就是缓存命中的情况,直接返回内存池管理中的页面引用; 步骤44,如果没有命中缓冲,则需要分配额外页面空间,然后到SSD中读取;用逻辑页号获得SSD中的数据需要通过调用日志型数据管理模块的功能来完成;因为文件空洞机制的作用,日志型数据管理模块此时的任务非常简单,只需要用逻辑页号乘以页面大小,然后读取相应页面即可; 步骤45,最后在叶子节点页面中完成最终的Key-Value对查找,返回结果。5.如权利要求I所述的基于SSD的Key-Value型本地存储方法,其特征在于,所述步骤3写入操作流程还包括 步骤51,通过B+树的查找来确定要插入新数据记录的正确位置,获得当前的B+树根 节点,作为B+树索引查找的起点;读操作无需对页面进行加锁;对于内存池管理模块中的FIFO环形队列Read Region的改变全部发生在写线程中,所以写线程本身对于页面缓存命中的判断就不需要进行加锁; 步骤52,完成查找正确插入位置的操作时,写线程将根节点到插入位置页面整条路径的页面压入一个栈结构中,该栈结构中除了保存指向对应页面的指针外,还保存了路径中的中间节点指向子节点的页内索引号; 步骤53,写入页面的过程将会依次弹出栈中页指针,这里使用内存快照的技术来避免加锁保护,对一个页面的修改,需要先调用内存池管理的接口来请求一个新的页面,然后将源页面的内容拷贝到新页面中,再进行修改操作;在随后弹出的父节点页面中,需要将原先指向子节点的索引页号修改为新的逻辑页号; 步骤54,父节点页面中,需要将原先指向子节点的索引页号修改为新的逻辑页号,这个修改也同样是利用内存快照完成;如果子节点发生了分裂,则还需要插入分裂点; 步骤55,当整个写操作完成后,进行提交,需要进行的操作是将已经完成写入或者更新的所有页面并入Read Region中,然后修改新的B+树根节点为当前的索引B+树根节点。6.一种基于SSD的Key-Value型本地存储系统,其特征在于,包括 内存快照B+树索引模块,用于对于数据采用内存...
【专利技术属性】
技术研发人员:刘凯捷,熊劲,孙凝晖,
申请(专利权)人:中国科学院计算技术研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。