[发明专利]一种优化的SSD数据更新方法有效

专利信息
申请号: 201510458844.5 申请日: 2015-07-30
公开(公告)号: CN105117415B 公开(公告)日: 2018-07-03
发明(设计)人: 段章峰;伍卫国;崔金华 申请(专利权)人: 西安交通大学
主分类号: G06F17/30 分类号: G06F17/30
代理公司: 西安智大知识产权代理事务所 61215 代理人: 贺建斌
地址: 710049*** 国省代码: 陕西;61
权利要求书: 查看更多 说明书: 查看更多
摘要: 一种优化的SSD数据更新方法,针对SSD上存储的字符类型的数据,结合使用线段树和B树两种数据结构,在保证查询效率的同时,减少索引结构所占空间,在对字符数据进行更新时,利用集合交并运算特点,将两个数据块中相同key的不同value进行更新,其他数据则原样写回,通过采用基于线段B树的LSM方法,将对于SSD上字符数据的随机更新转化为数据的顺序写入,有效避免了SSD的写入放大问题,加快了SSD的写入数据速度,提高了数据库操作效率。
搜索关键词: 数据更新 字符数据 更新 写入 线段 数据库操作 查询效率 数据结构 索引结构 写入数据 字符类型 数据块 线段树 写回 运算 优化 存储 放大 集合 转化 保证
【主权项】:
1.一种优化的SSD数据更新方法,其特征在于,包括以下步骤:第一步,建立线段B树结构:在内存数据库中,先利用字符串数据的共享前缀信息,将共享相同前缀的字符串组成一个字符串区间;然后将这个区间数据利用B树结构写入算法插入到线段B树中;最后,整个数据结构的逻辑视图为一颗B树,B树的节点存储着关键字字符串区间信息;第二步,使用pLSM方法完成数据的更新操作,多组件间的pLSM方法的合并过程和两组件的pLSM方法的合并过程步骤相同,两组件的pLSM方法的合并过程如下:1)从常驻内存C0中读入未合并的叶子节点数据,填入合并块中;2)从常驻磁盘C1中读入未合并的叶子节点数据,填入合并块中;3)对合并块中的数据进行归并排序,若遇到相等的关键字时,以常驻内存C0中的数据为最新数据,进行更新操作;4)重复步骤1)、2)、3),当合并块满时,追加的写回磁盘,然后重新读取常驻内存C0和常驻磁盘C1中未合并的叶子节点数据;5)当常驻内存C0和常驻磁盘C1的所有叶子节点都进行了合并操作后,表示一个合并过程结束,常驻内存C0中的更新操作数据被合并到磁盘中;通过上述合并步骤,对于SSD盘上数据的更新,先写入内存中结构,然后采用逐级合并的策略写回SSD,在写回过程中,不直接对SSD中的数据进行修改,而是通过合并过程来产生更新后的数据,并且追加写入新文件中,当合并完成后,删除旧文件;第三步,使用线段B树结构对SSD盘上的数据提供索引:使用pLSM方法后,由于SSD盘中存储有多个数据文件,对于数据的查找操作,先在位于内存中的常驻内存C0结构中查找,如果没有找到,那么逐级在磁盘结构中查找,从常驻磁盘C1,C2一直到Ck,直到找到为止;在查找过程中,如果同一数据字段在多个结构中同时出现,pLSM方法保证每次读取中都能取回最新且正确的数据,在查找操作中,如果在内存中没有找到所需数据,就从磁盘中读取数据;当在SSD盘中的索引结构中查找时,关键字的比较转化为测试待查找数据是否在区间内,如果找到包含待查找数据的区间信息,则读取其在数据文件中的偏移量,通过文件偏移量访问数据文件,得到待查找key对应的value,将一次访问中的整个区间数据缓存在内存中,组成一个缓冲区,当下次的同一区间内部的数据访问到来时,则直接在内存中进行操作,缓冲的组织采用双向链表组织,并且通过LRU方法来淘汰不常用的缓冲数据。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交通大学,未经西安交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201510458844.5/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top