CN103812877A - 基于Bigtable分布式存储系统的数据压缩方法 - Google Patents

基于Bigtable分布式存储系统的数据压缩方法 Download PDF

Info

Publication number
CN103812877A
CN103812877A CN201410088278.9A CN201410088278A CN103812877A CN 103812877 A CN103812877 A CN 103812877A CN 201410088278 A CN201410088278 A CN 201410088278A CN 103812877 A CN103812877 A CN 103812877A
Authority
CN
China
Prior art keywords
file
sstable
layer
sstable file
bigtable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410088278.9A
Other languages
English (en)
Other versions
CN103812877B (zh
Inventor
樊凯
史晓丽
谈苗苗
李晖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CN201410088278.9A priority Critical patent/CN103812877B/zh
Publication of CN103812877A publication Critical patent/CN103812877A/zh
Application granted granted Critical
Publication of CN103812877B publication Critical patent/CN103812877B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了一种基于Bigtable分布式存储系统的数据压缩方法,主要解决现有技术生成的SSTable文件大小不可预测的问题,其实现步骤是:1)系统根据运行情况为每个层级的SSTable文件设置数量阈值;2)检测系统中第L层的SSTable文件数量是否超过阈值,若超过则执行步骤3,否则,继续检测;3)从第L层中轮流选择待压缩的SSTable文件;4)从第L+1层中找出所有与L层选定的SSTable文件在键值区间上有重叠的文件,并将这两个层级中选出的SSTable文件进行合并压缩。本发明充分利用了SSTable文件的层级结构,加快了数据的读取速度,可用于分布式存储系统中数据的合并和压缩。

Description

基于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太大,要进行读操作会比较耗时;如果周期较短则会频繁执行压缩,加重系统的负担。
第二,本发明通过以轮流的方式从某一层中选择SSTable文件,和高一层级中的SSTable文件进行合并,使得每个文件都有机会和高层的文件进行合并;
第三,本发明通过选择高一层级中与所选文件在键值区间上有重叠的SSTable文件进行合并,可以充分利用SSTable的层级结构,使得每个层级的SSTable大小是可预测的,进一步减少子表服务器的内存使用率,加快了文件的读取速度。
附图说明
图1为Bigtable现有的三级压缩机制;
图2为Manifest文件的存储示意图;
图3为本发明的实现总流程图;
图4为本发明中在第0层选定一个SSTable文件之后,找出所有与之在关键字区间上有重合文件的子流程图;
图5为本发明中对SSTable文件进行合并压缩的子流程图;
图6为本发明中对SSTable文件进行归并排序的子流程图。
具体实施方式
下面结合附图对发明做进一步的详细描述。
参照图3,本发明的数据压缩,包括如下步骤:
步骤1.Bigtable分布式存储系统根据其实际运行情况,为每个层级的SSTable文件设置数量阈值。
步骤2.检测Bigtable分布式存储系统中第L层的SSTable文件数量是否超过该层的数量阈值,若超过则执行步骤3,否则,继续检测。
步骤3.采用轮流的方式从第L层中选择待压缩的SSTable文件。
根据SSTable文件所在层级L的不同,有如下两种情况:
当L>0时,从第L层中任意选择一个SSTable文件;
这是因为在L>0的层级中,每个SSTable文件均按照关键字的词典序排列,且任意两个SSTable文件的关键字区间不会重叠,所以在L>0的层级进行压缩时可以任意选择其中一个文件。
当L=0时,在选定一个SSTable文件之后,找出该层中所有与选定的SSTable文件在关键字区间上有重合的文件;
这是由于L=0层级中的SSTable文件是通过次压缩直接生成的,任意两个L=0层级中的SSTable文件可能存在关键字范围上的重叠。选定L=0层级的某个文件后,需要在该层找出所有与选定文件在关键字区间上有重合的文件,进而与高一层的文件进行合并,即L=0层级在进行文件选择时,可能会有多个文件参与压缩。
参照图4,当L=0时,本步骤的具体实现如下:
3a)查看所选定的SSTable文件的键值范围,并记为{N0,N1};
3b)加载Bigtable分布式文件系统中的Manifest文件,依次读取Manifest文件的每条记录;
Bigtable使用Manifest文件记录各个SSTable文件的管理信息,包括文件所在层级、文件名、最小键值和最大键值。根据Manifest文件,读取所选层级的所有SSTable文件的键值范围;
3c)读取Manifest文件中所在层级为L的记录,并将SSTable文件的键值范围记为{M0,M1},如果N0≤M0≤N1或M0≤N0≤M1,说明两个SSTable文件在键值区间上存在重叠部分,将该SSTable文件加入待压缩集合。
步骤4.从第L+1层中找出所有与第L层中选定的SSTable文件在键值区间上有重叠的文件,并将找出的SSTable文件与第L层中选定的SSTable文件进行合并压缩。
参照图5,本步骤的具体实现如下:
4a)将第L层中选定的SSTable文件和第L+1层中找出的SSTable文件进行汇总,并分解成K个能够一次性装入内存的部分;
4b)依次将这K个部分读入内存,并利用内部排序算法对每一部分进行排序;
4c)采用多路归并排序法将排序后的K个初始有序部分进行归并:
参照图6,本步骤的具体实现如下:
4c1)依次遍历排序后的K个初始有序部分,对其中的所有记录按照关键字的字典序进行重新排序;
4c2)依次读取排序后的记录,判断某个关键字所对应的的记录是否需要保存:如果某个关键字同时在第L层和第L+1层中出现,则仅保留第L层中的记录;如果某个关键字被设置了删除标志,则将其删除,否则,保留该关键字所对应的记录;
4c3)根据上述判断标准,将没有保存价值的记录直接丢弃,否则将记录写入第L+1层中新生成的一个SSTable文件中;
4c4)将之前参与合并的第L层中选定的SSTable文件和第L+1层中找出的SSTable文件删除。
通过上述步骤4c1~4c3,使SSTable文件中的关键字通过梳理,形成了一系列新的L+1层SSTable文件,之前第L层中和第L+1层中参与压缩的文件已经没有意义了,故可全部删除,这样就完成了L层与L+1层文件记录的合并过程。

Claims (3)

1.一种基于Bigtable分布式存储系统的数据压缩方法,包括如下步骤:
(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个初始有序部分进行归并。
2.根据权利要求1所述的方法,其中所述步骤(3)中当L=0时,在选定一个SSTable文件之后,找出该层中所有与选定的SSTable文件在键值范围上有重叠的文件,其步骤如下:
3a)查看所选定的SSTable文件的键值范围,并记为{N0,N1};
3b)加载Bigtable分布式文件系统中的Manifest文件,依次读取Manifest文件的每条记录;
3c)读取Manifest文件中所在层级为L的记录,并将SSTable文件的键值范围记为{M0,M1},如果N0≤M0≤N1或M0≤N0≤M1,说明两个SSTable文件在键值区间上存在重叠部分,将该SSTable文件加入待压缩集合。
3.根据权利要求1所述的基于Bigtable分布式存储系统的数据压缩方法,其中所述步骤4c)中采用多路归并排序法将排序后的K个初始有序部分进行归并,其步骤如下:
4c1)依次遍历排序后的K个初始有序部分,对其中的所有记录按照关键字的字典序进行重新排序;
4c2)依次读取排序后的记录,判断某个关键字所对应的的记录是否需要保存:如果某个关键字同时在第L层和第L+1层中出现,则仅保留第L层中的记录;如果某个关键字被设置了删除标志,则将其删除,否则,保留该关键字所对应的记录;
4c3)根据上述判断标准,将没有保存价值的记录直接丢弃,否则将记录写入第L+1层中新生成的一个SSTable文件中;
4c4)将之前参与合并的第L层中选定的SSTable文件和第L+1层中找出的SSTable文件删除。
CN201410088278.9A 2014-03-12 2014-03-12 基于Bigtable分布式存储系统的数据压缩方法 Active CN103812877B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410088278.9A CN103812877B (zh) 2014-03-12 2014-03-12 基于Bigtable分布式存储系统的数据压缩方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410088278.9A CN103812877B (zh) 2014-03-12 2014-03-12 基于Bigtable分布式存储系统的数据压缩方法

Publications (2)

Publication Number Publication Date
CN103812877A true CN103812877A (zh) 2014-05-21
CN103812877B CN103812877B (zh) 2016-10-12

Family

ID=50709078

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410088278.9A Active CN103812877B (zh) 2014-03-12 2014-03-12 基于Bigtable分布式存储系统的数据压缩方法

Country Status (1)

Country Link
CN (1) CN103812877B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104199892A (zh) * 2014-08-26 2014-12-10 上海爱数软件有限公司 一种基于压缩合并异步更新的索引读写方法
WO2017020576A1 (zh) * 2015-07-31 2017-02-09 华为技术有限公司 一种键值存储系统中文件压实的方法和装置
CN107247624A (zh) * 2017-06-05 2017-10-13 安徽大学 一种面向Key‑Value系统的协同优化方法及系统
CN108628542A (zh) * 2017-03-22 2018-10-09 华为技术有限公司 一种文件合并方法及控制器
CN109271343A (zh) * 2018-07-24 2019-01-25 华为技术有限公司 一种应用于键值存储系统中的数据合并方法和装置
WO2019165901A1 (zh) * 2018-03-01 2019-09-06 阿里巴巴集团控股有限公司 数据合并方法、基于fpga的合并器及数据库系统
CN111949439A (zh) * 2019-05-17 2020-11-17 中国移动通信集团河南有限公司 基于数据库的数据文件更新方法和装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102129458B (zh) * 2011-03-09 2012-12-12 北京翰云时代科技有限公司 关系型数据库的存储方法及装置
US10853306B2 (en) * 2011-08-02 2020-12-01 Ajay JADHAV Cloud-based distributed persistence and cache data model
CN103218365A (zh) * 2012-01-20 2013-07-24 阿里巴巴集团控股有限公司 一种SSTable文件数据处理方法及其系统
CN103268318B (zh) * 2013-04-16 2016-04-13 华中科技大学 一种强一致性的分布式键值数据库系统及其读写方法

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104199892A (zh) * 2014-08-26 2014-12-10 上海爱数软件有限公司 一种基于压缩合并异步更新的索引读写方法
CN104199892B (zh) * 2014-08-26 2018-01-30 上海爱数信息技术股份有限公司 一种基于压缩合并异步更新的索引读写方法
WO2017020576A1 (zh) * 2015-07-31 2017-02-09 华为技术有限公司 一种键值存储系统中文件压实的方法和装置
US11232073B2 (en) 2015-07-31 2022-01-25 Huawei Technologies Co., Ltd. Method and apparatus for file compaction in key-value store system
CN108628542B (zh) * 2017-03-22 2021-08-03 华为技术有限公司 一种文件合并方法及控制器
CN108628542A (zh) * 2017-03-22 2018-10-09 华为技术有限公司 一种文件合并方法及控制器
US11403021B2 (en) 2017-03-22 2022-08-02 Huawei Technologies Co., Ltd. File merging method and controller
CN107247624B (zh) * 2017-06-05 2020-10-13 安徽大学 一种面向Key-Value系统的协同优化方法及系统
CN107247624A (zh) * 2017-06-05 2017-10-13 安徽大学 一种面向Key‑Value系统的协同优化方法及系统
WO2019165901A1 (zh) * 2018-03-01 2019-09-06 阿里巴巴集团控股有限公司 数据合并方法、基于fpga的合并器及数据库系统
CN110309138A (zh) * 2018-03-01 2019-10-08 阿里巴巴集团控股有限公司 数据合并方法、基于fpga的合并器及数据库系统
CN110309138B (zh) * 2018-03-01 2023-04-07 阿里巴巴集团控股有限公司 数据合并方法、基于fpga的合并器及数据库系统
CN109271343A (zh) * 2018-07-24 2019-01-25 华为技术有限公司 一种应用于键值存储系统中的数据合并方法和装置
CN109271343B (zh) * 2018-07-24 2020-12-15 华为技术有限公司 一种应用于键值存储系统中的数据合并方法和装置
CN112527735A (zh) * 2018-07-24 2021-03-19 华为技术有限公司 一种应用于键值存储系统中的数据合并方法和装置
CN111949439A (zh) * 2019-05-17 2020-11-17 中国移动通信集团河南有限公司 基于数据库的数据文件更新方法和装置
CN111949439B (zh) * 2019-05-17 2023-08-01 中国移动通信集团河南有限公司 基于数据库的数据文件更新方法和装置

Also Published As

Publication number Publication date
CN103812877B (zh) 2016-10-12

Similar Documents

Publication Publication Date Title
CN103812877A (zh) 基于Bigtable分布式存储系统的数据压缩方法
CN101706825B (zh) 一种基于文件内容类型的重复数据删除方法
CN105630955B (zh) 一种高效动态的数据集合成员管理方法
CN102663090B (zh) 元数据查询方法和装置
CN102332029B (zh) 一种基于Hadoop 的海量可归类小文件关联存储方法
CN103488709B (zh) 一种索引建立方法及系统、检索方法及系统
CN103631940B (zh) 一种应用于hbase数据库的数据写入方法及系统
CN106201916B (zh) 一种面向ssd的非易失缓存方法
CN103412916B (zh) 一种监控系统的多维度数据存储、检索方法及装置
CN103577454A (zh) 一种文件合并方法和装置
CN102831222A (zh) 一种基于重复数据删除的差量压缩方法
CN106030498B (zh) 存储装置和数据处理方法以及存储系统
CN103198150B (zh) 一种大数据索引方法及系统
CN102323958A (zh) 重复数据删除方法
CN105159915A (zh) 可动态适应的lsm树合并方法及系统
CN101963982A (zh) 基于位置敏感哈希的删冗存储系统元数据管理方法
CN103593436A (zh) 文件合并方法和装置
CN104462389A (zh) 基于分级存储的分布式文件系统实现方法
CN111367469B (zh) 一种分层存储数据迁移方法和系统
CN102663086A (zh) 一种数据块索引的检索方法
US10496612B2 (en) Method for reliable and efficient filesystem metadata conversion
CN102467572A (zh) 支持重复数据删除程序的数据区块查询方法
CN107526550A (zh) 一种基于日志结构合并树的两阶段合并方法
CN102360318A (zh) Fat文件系统中被删除文件的恢复方法及装置
CN103514957A (zh) Ssd测试方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant