[发明专利]一种key与value分开存储的key-value存储系统设计方法无效
申请号: | 201310499659.1 | 申请日: | 2013-10-22 |
公开(公告)号: | CN103559027A | 公开(公告)日: | 2014-02-05 |
发明(设计)人: | 王雷;赵玉龙;王宇 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 北京永创新实专利事务所 11121 | 代理人: | 祗志洁 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 key value 分开 存储 存储系统 设计 方法 | ||
技术领域
本发明涉及存储系统和程序设计技术领域,具体涉及键(key)-值(value)存储系统的设计方法。
背景技术
key-value存储系统如Leveldb,Hbase,Cassandra的底层结构都是以bigtable为基础,其存储结构类似于图1所示。这些存储系统会将key和value作为一个整体,即一条记录(record)存入系统。在写入过程中,会对记录以key值顺序进行排序,这样就打乱了记录的写入顺序,在磁盘上呈现随机分布的现象。当record的读取顺序与写入顺序接近时,就会带来大量的读磁盘开销,从而影响读性能。
发明内容
本发明为了提升某些情况下现在的key-value存储系统的读性能,提供了一种key与value分开存储的key-value存储系统设计方法,通过对以bigtable为基础的现有key-value存储系统做少量改动,使这些存储系统在读取顺序与写入顺序接近时的读性能显著提高。
本发明的一种key与value分开存储的key-value存储系统设计方法,包括如下步骤:
第一步,构造value在文件的写入和读取函数,将value在单独的文件中存储。
步骤1.1,构造value的写入函数,写入函数的输入参数包括value的内容和长度,返回值为value在文件中的偏移;每次在文件结尾处写入value值,并设置一个变量来保存文件结尾的偏移量。
步骤1.2,构造value的读取函数,读取函数的输入参数包括value在文件中的偏移和长度,返回值是字符串形式的value值;value的读取使用内存映射。
第二步,实现键值对(key-value)的写入和读取。
步骤2.1,键值对的写入,具体是:对一个key-value,首先将value按照步骤1.1写入文件,并获得value在文件中的偏移,然后,将value在文件中的偏移和value的长度组合成一个64位的信息字段,并对信息字段进行base64编码,最后,将key和经过base64编码的信息字段作为一个键值对,写入现有key-value存储系统。
步骤2.2,键值对的读取,具体是:首先,根据key值,从现有key-value存储系统中读取对应的信息字段;然后,对读取的信息字段进行base64解码,从中获取对应value在文件中的偏移和长度;最后,将获得的偏移和长度作为参数,调用步骤1.2中value的读取函数,得到真正的value值。
步骤1.2所述的value的读取使用内存映射,所使用总的映射空间最多为100MB。
步骤1.2所述的value的读取函数,所实现的操作为:
首先,对输入的value在文件中的偏移addr进行4kB的对齐操作,获得偏移f_offset;
然后,在总的映射空间中查找f_offset,若查找到,获取对应的内存映射的起始地址mmap_start,否则,将文件中读取从偏移f_offset开始的大小为K的内容,映射到内存中,并获取对应的内容映射的起始地址mmap_start,K为每次内存映射的大小;
最后,判断所需的value内容是否全部在mmap_start开始的大小为K的内存中,若在,直接读取内存mmap_start+addr-f_offset开始的长度为length个字节的内容,否则,先从内存mmap_start+addr-f_offset开始读取f_offset+K-addr个字节的内容,再对f_offset+f_offset+K开始处的文件进行映射,读取所需value剩下的内容;length为value的长度。
本发明的key-value存储系统设计方法的优点和积极效果在于:本发明适用于value的长度在200B以上的数据存储,在一次读取时,需要额外多进行一次读磁盘操作,但从整体上看,对于局部性较好的数据,读磁盘的次数实际上是减少了;当数据的读取顺序与写入顺序接近时,可以大幅度提升key-value存储系统的读取性能;同时,实现本发明方法所需要的代码修改简单,方便移植于其他key-value存储系统上。
附图说明
图1是bigtable存储示意图;
图2是本发明的key-value存储系统设计方法的流程示意图;
图3中,(a)是使用A系统记录在磁盘上的逻辑结构,(b)是适用本发明方法后,记录在磁盘上的逻辑结构。
具体实施方式
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310499659.1/2.html,转载请声明来源钻瓜专利网。