[发明专利]基于Bigtable分布式存储系统的数据压缩方法有效
申请号: | 201410088278.9 | 申请日: | 2014-03-12 |
公开(公告)号: | CN103812877B | 公开(公告)日: | 2016-10-12 |
发明(设计)人: | 樊凯;史晓丽;谈苗苗;李晖 | 申请(专利权)人: | 西安电子科技大学 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L29/08 |
代理公司: | 陕西电子工业专利中心 61205 | 代理人: | 王品华;朱红星 |
地址: | 710071*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 bigtable 分布式 存储系统 数据压缩 方法 | ||
技术领域
本发明属于数据处理技术领域,特别涉及一种数据压缩方法,可用于类似Bigtable分布式存储系统的存储和管理。
背景技术
Bigtable是Google设计的分布式数据存储系统,是一种用来处理海量数据的非关系型数据库,能够可靠地部署到成千上万台服务器上。Bigtable内部采用SSTable的格式存储数据,Bigtable中子表的持久化状态信息保存在Google文件系统GFS之上。Bigtable中数据的读写操作流程如图1所示,当写操作到达子表服务器时,首先将事务信息记录在日志中,成功后将记录插入Memtable有序内存缓冲区中。由于内存空间有限,当Memtable大小达到阈值时就会被冻结,新的Memtable被创建。被冻结的Memtable被转化为不可更改的SSTable,并写入GFS文件系统。
Bigtable采用三级压缩机制:1)次压缩:当Memtable大小达到阈值时会被转化为SSTable;2)合并压缩:将Memtable和一部分SSTable合并成一个新的SSTable;3)主压缩:将所有SSTable重写成一个更大的SSTable。SSTable是由内存中的数据不断导出并经过压缩之后形成的,因为Bigtable采取了三级压缩机制,所以SSTable的所有文件形成了一种层级结构,每执行一次压缩,SSTable的层级会增加一次。本方法将第一层记为Level0,第二层记为Level1,并以此类推。
Bigtable使用Manifest文件记录各个SSTable文件的管理信息,包括文件所在层级、文件名、最小键值和最大键值,Manifest文件的存储示意如图2所示。SSTable中的记录都是键值有序的,但Level0中可能存在两个SSTable文件的键值重叠的情况。在Bigtable的三级压缩中除次级压缩外都是定期执行的,而Bigtable并未指定压缩周期的大小。当写操作比较频繁时,新生成的SSTable也会比较多。如果周期较长,经过一次压缩后,会合并成一个较大的SSTable,在这个大的SSTable中进行读操作会比较耗时;如果周期较短则会频繁执行压缩,加重了系统的负担。对于定期执行的方案,通常的处理方法是根据实际运行情况设置一个经验值,然而在云时代的Bigtable中,读写操作具有不可预测性和高并发性,一个固定不变的压缩周期会导致所生成的SSTable大小不可预测。因此,Bigtable需要一种高效的数据压缩方案,既可以满足Bigtable的应用需求,又能够预测每个层级的SSTable大小。
发明内容
本发明的目的在于提出一种基于Bigtable分布式存储系统的数据压缩方法,以解决Bigtable现有方法在面对高并发的读写操作时,生成的SSTable文件大小不可预测的问题。
为实现上述目的,本发明的技术方案包括如下步骤:
(1)Bigtable分布式存储系统根据其实际运行情况,为每个层级的SSTable文件设置数量阈值;
(2)检测Bigtable分布式存储系统中第L层的SSTable文件数量是否超过该层的数量阈值,若超过则执行步骤(3),否则,继续检测;
(3)采用轮流的方式从第L层中选择待压缩的SSTable文件:
当L>0时,从第L层中任意选择一个SSTable文件;
当L=0时,在选定一个SSTable文件之后,找出该层中所有与选定的SSTable文件在关键字区间上有重合的文件;
(4)从第L+1层中找出所有与第L层中选定的SSTable文件在键值区间上有重叠的文件,并将找出的SSTable文件与第L层中选定的SSTable文件进行如下合并压缩:
4a)将第L层中选定的SSTable文件和第L+1层中找出的SSTable文件进行汇总,并分解成K个能够一次性装入内存的部分;
4b)依次将这K个部分读入内存,并利用内部排序算法对每一部分进行排序;
4c)采用多路归并排序法将排序后的K个初始有序部分进行归并。
本发明与现有技术相比具有以下优点:
第一,本发明通过为各个SSTable层级设置数量限制,而不是采用定期压缩的方式,从而克服了定期压缩所固有的缺点:如果周期较长,压缩后合并成的SSTable太大,要进行读操作会比较耗时;如果周期较短则会频繁执行压缩,加重系统的负担。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410088278.9/2.html,转载请声明来源钻瓜专利网。