CN103812877A - 基于Bigtable分布式存储系统的数据压缩方法 - Google Patents
基于Bigtable分布式存储系统的数据压缩方法 Download PDFInfo
- 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
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是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文件删除。
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)
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)
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 | 华中科技大学 | 一种强一致性的分布式键值数据库系统及其读写方法 |
-
2014
- 2014-03-12 CN CN201410088278.9A patent/CN103812877B/zh active Active
Cited By (17)
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 |