一种键-值存储系统中数据文件的合并压缩方法及装置制造方法

文档序号:6524740阅读:241来源:国知局
一种键-值存储系统中数据文件的合并压缩方法及装置制造方法【专利摘要】本发明公开一种键-值存储系统中数据文件的合并压缩方法及装置,属于计算机【
技术领域
】。所述方法包括:将数据节点的所有数据文件划分为若干个数据层级进行存储,其中,新增的数据文件存储在最低的数据层级;按照预定的合并周期对各数据层级中的数据文件进行合并压缩,并将合并压缩生成的数据文件从当前数据层级搬移到上一层数据层级,其中,所述合并压缩为消除各数据文件中的重复数据块。根据本发明,能够在保证重复数据块消重效果、提高存储空间利用率的基础上,降低对磁盘I/O资源的占用率。【专利说明】一种键-值存储系统中数据文件的合并压缩方法及装置【
技术领域
】[0001]本发明涉及计算机【
技术领域
】,具体涉及一种键-值(Key-Value)存储系统中数据文件的合并压缩方法及装置。【
背景技术
】[0002]在很多大数据存储系统中,数据块(数据记录)是以Key-Value对的方式存储,基于存储与读写性能的考虑,在实现上都采用数据添加(Append)模式,即所有的写操作都先将数据块写入内存表(Memtable),当Memtable达到一定大小时,再将Memtable中的数据块排序写入(Dump)到磁盘上的有序字符串表(SSTable)文件中。后续通过合并压缩(Compaction)机制将全部或部分SSTable文件合并形成新的SSTable文件,从而达到降低数据文件个数以提高访问性能、去除重复数据以节省磁盘空间的目的。[0003]Cassandra系统也采用了类似的设计方式。Cassandra数据存储空间可以抽象为一个环形结构,数据块就是通过哈希(hash)分散在这个环形存储空间上。每个数据节点负责管理这个环形存储空间上的某一块连续的范围(也叫Range),落在此Range空间上的数据块就存储在这个数据节点上。[0004]SSTable是Cassandra系统中数据处理和交换的文件存储格式。SSTable是存储一组任意有序Key-Value对的数据文件。SSTable—旦完成写入,就不可更改,只能读取。在Cassandra系统中,Compaction分为MinorCompaction(部分合并压缩)和MajorCompaction(全部合并压缩)。MajorCompaction指的是全部数据文件都参与Compaction操作,但是随着写入的数据块越来越多,磁盘剩余空间不足,MajorCompaction无法实施,这样,每次Compaction只能有部分数据文件参与,也就是只能做MinorCompaction。而在大量的MinorCompaction下,如何保证既能尽量去除重复的数据块,又能避免数据文件重复参与Compation而浪费磁盘输入/输出(I/0)资源,是众多Compaction策略需要解决的问题。[0005]现有的一种技术方案为TieredCompaction(阶梯合并压缩),其实现原理为:[0006](I)首先将SSTable文件按照大小范围划分为若干级别;[0007](2)当Memtable刷新到磁盘SSTable文件中时,从文件较小的SSTable级别开始,逐级检查SSTable个数,发现数目超过4个就将其做一次Compaction,生成一个新的SSTable文件[0008](3)直到各级别的SSTable文件都少于4个为止,这样,通过对每次4个SStable进行合并压缩,达到局部减小存储空间的目的。[0009]上述技术方案的缺点在于:[0010](I)对磁盘I/0性能有影响。由于一条记录的多个版本可能存在于多个SSTable文件中,最差的情况下可能某一条记录会存在于所有SSTable文件中,因此一条记录所在的SSTable文件可能多次重复参与Compaction才能将数据消除,并且参与次数无法确定,无形中浪费了I/0资源,间接也影响了读写性能。[0011](2)在存储空间上浪费严重。因为一个被删除记录的老版本可能会一直存在于一些老的SSTable文件中,直到这个老的SSTable文件参与Compaction才可能消除掉;或者只有进行一次MajorCompaction才可以消除。由于TieredCompaction是按照SSTable文件大小进行级别划分进而分级做MinorCompaction,这样往往导致删除操作较多(SSTable文件较小)的SSTable文件和插入操作过多(SSTable文件较大)的SSTable文件分在不同的级别中,因而对于一个经常有删除操作的应用来说会造成空间的极大浪费。[0012]现有的另一种技术方案为LeveledCompaction(层级合并压缩),这种Compaction机制借鉴自LevelDB。如图1所示,LeveledCompaction方式将数据分成金字塔形的若干个层级(Level),最底层的叫LevelO,其上分别是Levell、Level2和Level3。新写入的SSTable文件存放在LevelO,其余Level上的文件为Compaction生成的文件,因此在本Level(除了LevelO之外)内是全局有序的。同时,每个Level上的SSTable文件按照固定大小切分,因此文件大小是固定的。当LevelO生成一个SSTable文件后,会和Levell上所有与其有交集的SSTable文件进行一次合并,生成若干有序的SSTable文件存放在Levell上,然后Levell上的SSTable文件会和Level2上所有与其有交集的SSTable文件进行一次合并,依次类推,运行到Level3后周而复始。[0013]上述技术方案的缺点在于会造成磁盘I/0负载严重。由于数据块的写入都是完全随机的,因此一个Memtable写入到LevelO的SSTable文件中时,这个SStale文件上的存储的数据块范围是分散在整个逻辑存储空间的,每一个SSTable文件和Levell所有的SStable文件都有交集。因此每一次LevelO的SSTable文件Compaction,Levell的所有SSTable文件都要全部重复参与,这造成了磁盘I/0负载过大,I/0浪费比较严重。【
发明内容】[0014]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的键-值存储系统中数据文件的合并压缩方法及装置。[0015]根据本发明的一个方面,提供了一种键-值存储系统中数据文件的合并压缩方法,包括:[0016]将数据节点的所有数据文件划分为若干个数据层级进行存储,其中,新增的数据文件存储在最低的数据层级;[0017]按照预定的合并周期对各数据层级中的数据文件进行合并压缩,并将合并压缩生成的数据文件从当前数据层级搬移到上一层数据层级,其中,所述合并压缩为消除各数据文件中的重复数据块。[0018]可选地,所述合并压缩方法还包括:对于除了最低的数据层级之外的其他所有数据层级,将各数据层级的存储空间划分为若干个存储范围;[0019]所述将合并压缩生成的数据文件从当前数据层级搬移到上一层数据层级为:将合并压缩生成的数据文件存储到上一层数据层级中与该数据文件对应的存储范围中。[0020]可选地,所述对各数据层级中的数据文件进行合并压缩为:依次对数据层级中各存储范围中的数据文件进行合并压缩。[0021]可选地,任一数据层级对应的合并周期小于上一层数据层级对应的合并周期。[0022]可选地,所述合并压缩方法还包括:控制任一数据层级的合并压缩速度小于下一层数据层级的合并压缩速度。[0023]根据本发明的另一个方面,提供了一种键-值存储系统中数据文件的合并压缩装置,包括:[0024]层级划分器,适于将数据节点的所有数据文件划分为若干个数据层级进行存储,其中,新增的数据文件存储在最低的数据层级;[0025]合并压缩器,适于按照预定的合并周期对各数据层级中的数据文件进行合并压缩,并将合并压缩生成的数据文件从当前数据层级搬移到上一层数据层级,其中,所述合并压缩为消除各数据文件中的重复数据块。[0026]可选地,所述合并压缩装置还包括:[0027]存储范围划分器,适于对于除了最低的数据层级之外的其他所有数据层级,将各数据层级的存储空间划分为若干个存储范围;[0028]所述合并压缩器进一步适于:将合并压缩生成的数据文件存储到上一层数据层级中与该数据文件对应的存储范围中。[0029]可选地,所述合并压缩器进一步适于:依次对数据层级中各存储范围中的数据文件进行合并压缩。[0030]可选地,任一数据层级对应的合并周期小于上一层数据层级对应的合并周期。[0031]可选地,所述合并压缩装置还包括:[0032]限速器,适于控制任一数据层级的合并压缩速度小于下一层数据层级的合并压缩速度。[0033]根据本发明上述的一个或多个技术方案,通过对数据文件进行分层级和分阶段进行压缩合并,能够消除各数据文件中的重复数据块,从而保证重复数据块的消重效果。由于每次对数据文件进行合并压缩都是在当前数据层级内部进行,不存在跨数据层级做合并压缩的情况,这样,参与合并压缩的数据量较小,一方面对磁盘剩余空间要求较低,提高了存储空间的利用率,另一方面避免了对磁盘I/0资源的占用过大。[0034]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。【专利附图】【附图说明】[0035]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:[0036]图1示出了现有技术的基于层级的合并压缩方法示意图;[0037]图2示出了根据本发明一个实施例的键-值存储系统中数据丈件的合并压缩方法流程图;[0038]图3示出了本发明一个应用实例的基于层级的合并压缩方法示意图;[0039]图4示出了根据本发明一个实施例的键-值存储系统中数据文件的合并压缩装置结构图。【具体实施方式】[0040]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。[0041]图2示出了根据本发明一个实施例的键-值存储系统中数据文件的合并压缩方法流程图。所述合并压缩方法可以应用于键-值存储系统例如Cassandra系统的数据节点中,所述数据文件可以是SSTable文件。参照图2,所述合并压缩方法可以包括:[0042]步骤202,将数据节点的所有数据文件划分为若干个数据层级进行存储,其中,新增的数据文件存储在最低的数据层级;[0043]所划分的数据层级的数量可以根据实际需要(例如数据节点中存储的数据量大小)进行设置,例如,将所有数据文件划分为4个数据层级,即所有数据文件是分布在4个数据层级中进行存储。在Key-Value存储系统中,所有的写操作都是先将数据块(数据记录)写入Memtable,当Memtable达到一定大小时,再将Memtable中的数据块按照Key排序写入到磁盘上的SSTable文件中。新写入到磁盘上的SSTable文件即新增的数据文件是存储在所述若干个数据层级的最底层,其他数据层级存储的则是该数据层级的下一层数据层级合并压缩生成的数据文件。[0044]步骤204,按照预定的合并周期对各数据层级中的数据文件进行合并压缩,并将合并压缩生成的数据文件从当前数据层级搬移到上一层数据层级,其中,所述合并压缩为消除各数据文件中的重复数据块。[0045]每个数据层级对应一个合并周期,各合并周期可以相同,也可以不相同,具体可以根据实际需要进行设置(请参见后文)。当最底层(LevelO)对应的合并周期到达时,对该数据层级中的所有数据文件进行合并压缩。如前所述,由于数据节点中数据块的写入是完全随机的,因此将一个Memtable中的数据块排序写入到磁盘中成为LevelO的SSTable文件时,这个SSTable文件上的存储的数据范围是分散在整个逻辑存储空间的,因此LevelO中每一个SSTable文件和该层的其他所有SSTable文件都有交集,通过合并压缩能够消除这些SSTable文件中的重复数据块。LevelO的合并压缩结束后,将合并压缩得到的SSTable文件搬移到LevelO的上一层即Levell层。[0046]Levell层中的SSTable文件有可能是在LevelO层在不同的合并周期中压缩合并得到的,因此,这些SSTable文件中仍然有可能存储有数据块的不同版本,即这些SStable文件相互之间有交集。当Levell层对应的合并周期到达时,进行一次合并压缩,通过合并压缩来消除这些SSTable文件中的重复数据块,并将合并压缩得到的SSTable文件搬移到Levell的上一层即Level2层。依次类推,直到最高的数据层级完成合并压缩操作。其中,最高的数据层级对数据文件进行合并压缩操作的结果仍然存储在该最高的数据层级中。[0047]可以看出,根据本发明实施例的上述合并压缩方法,通过对数据文件进行分层级和分阶段进行压缩合并,能够消除各数据文件中的重复数据块,从而保证重复数据块的消重效果。由于每次对数据文件进行合并压缩都是在当前数据层级内部进行,不存在跨数据层级做合并压缩的情况,这样,参与合并压缩的数据量较小,一方面对磁盘剩余空间要求较低,提高了存储空间的利用率,另一方面避免了对磁盘I/0资源的占用过大。[0048]为进一步降低进行数据文件合并压缩时对磁盘I/0资源的占用,在本发明实施例的一种实现方式中,所述合并压缩方法还包括:对于除了最低的数据层级之外的其他所有数据层级,将各数据层级的存储空间划分为若干个存储范围,其中,各存储范围的大小可以相同,也可以不同。相应地,在步骤204中,所述将合并压缩生成的数据文件从当前数据层级搬移到上一层数据层级为:将合并压缩生成的数据文件存储到上一层数据层级中与该数据文件对应的存储范围中。之后,对该上一层数据层级中的数据文件进行合并压缩则为:依次对该数据层级中各存储范围中的数据文件进行合并压缩。[0049]如前所述,最低数据层级中数据文件来自于Memtable,每个数据文件存储的数据范围是分散在整个逻辑存储空间的,因此对该数据层级中的数据文件不需要进行存储范围的划分。而其他数据层级的数据文件是来自于下一层数据层级中数据文件的合并压缩,每个数据文件的数据范围对应于逻辑存储空间的一段有限存储范围,因此可以按照存储范围进行存储。上述实现方式相当于对数据层级中的数据文件分批次进行合并压缩,这进一步降低参与合并压缩的数据量,从而进一步降低了对磁盘I/0资源的占用。[0050]需要说的是,如果合并压缩生成的数据文件跨两个或多个存储范围,则在进行存储前,还可以将其分割成两个或多个数据文件,并将分割得到的数据文件分别存储到与其对应的存储范围中。[0051]另外,各数据层级划分的存储范围的数目可以根据需要进行设置。例如,对于越高的数据层级,其对应的存储范围的数目越小。又例如,各数据层级划分的存储范围的数目可以相同。[0052]如前所述,每个数据层级对应一个合并周期,各合并周期可以相同,也可以不相同。由于数据层级越高,其对应的数据文件也相对越有序,其包含的重复的数据块数目也相对越少。因此,在一种实现方式中,任一数据层级对应的合并周期小于上一层数据层级对应的合并周期,即越高的数据层级,其对应的合并周期越大。这样,能够兼顾每次读数据块时打开尽量少的数据文件的需求,和降低由于数据文件的合并压缩对磁盘I/0资源的占用的需求。基于类似的理由,还可以控制任一数据层级的合并压缩速度小于下一层数据层级的合并压缩速度,即越低的数据层级`,其对应的合并压缩速度越快。[0053]以下给出本发明实施例的一个应用实例。参照图3,该应用实例的实现原理为:[0054](I)所有SSTable文件被划分为4个数据层级,从下到上依次为LevelO、LevelULevel2和Level3,所有新写入的数据块形成的新增SSTable文件都放在最低层LevelO。[0055](2)每一层级做完合并压缩(Compaction)生成的新的SSTable文件都提升一个层级,如LevelO做Compaction生成的SSTable文件升至Levell,依此类推,顶层Level3的Compaction做完后,生成的新的SSTable文件仍然存放在Level3中。特别地,与图1所示的方案的一个不同在于,在任何时刻不存在跨层级做Compaction的情况。[0056](3)LevelO每天执行Compaction—次,Level每周执行Compaction—次,Level2每两周执行Compaction—次,Level3每四周执行Compaction—次。[0057](4)LevelI~Level3每个层级都将存储空间平均化分为n个等大小的存储范围(Range),分别为RangeO、Rangel、?..、Range_n。Levell~Level3中任何一个SSTable文件都是Compaction生成的有序文件并按照Range边界切分。因此任何一个SSTable文件都不会跨Range而存在。在执行该Level的Compaction时,以Range为粒度,依次合并。[0058]具体执行流程如下:[0059](I)首先做LevelO的Compaction,LevelO存放的是一段时间新增数据,每次Compaction都是MajorCompaction(该层的所有数据文件),每天执行此Compaction—次。[0060](2)从Levell开始依次检查是否到达了该Level对应的Compaction的执行时间点,如果到达时间点则执行相应的Compaction。Levell至Level3的Compaction的时间间隔分别为一周、两周、四周。在对任何一个Level进行Compaction时,会按照Range范围提交,即每次做一个Range内的所有SSTable文件的Compaction。[0061](3)分别对每个Level的Compaction做不同的速度的限制,Level越高限速越低,优先保证每天新增LevelO数据的Compaction。[0062]以下结合上述应用实例对本发明实施例的有益效果进行详细分析。[0063]首先,从存储空间利用率角度上讲,上述技术方案能够保证即使在数据块频繁的重复插入情况下,在4个数据层级中也只存在极少个重复副本(由于LevelO每天一次合并,Levell每周一次合并,Level2每两周一次合并,Level3每四周一次合并,因此在最差的情况下,Levell中的重复数据最多只存在7个副本,Level2/Level3最多存在2个副本)。而且这种最差情况只会持续很短的时间,因为这种情况出现时即已达到该Level执行Compaction的时间点条件,从而执行Compaction完成该Level的消重。(假设在最差的情况下,同一数据每天都会重复插入,这样在每天完成了LevelO的Compaction后,Levell就会新增一份重复数据,当Levell的重复数据一旦达到7个,也就意味着Levell执行Compaction的时间点已到。同理,其他Level—旦出现2个重复数据即到达该Level的Compaction时间点)。同时,每次参与Compaction的数据都是其中一个Range中的SSTable集合,参与数据量较小,对磁盘剩余空间要求较低,额外开销较小,因此大大减少了磁盘空间的浪费,提闻了存储空间的利用率。[0064]其次,从磁盘I/0利用效率上讲,由于每天的Compaction只需要将当天新增的LevelO的数据读写一遍即可,而每天的新增的LevelO的数据量又是有限的,远远小于Levell中的数据总量,因此和现有技术方案比,每天LevelO的Compaction过程中I/0负载大幅降低,对正常在线访问性能影响较小。同时其他Level的Compaction的执行频度又大幅降低,从而避免了磁盘I/0资源的浪费,提升了磁盘I/0利用效率。[0065]图4示出了根据本发明一个实施例的键-值存储系统中数据文件的合并压缩装置结构图。所述合并压缩装置可以应用于键-值存储系统例如Cassandra系统的数据节点中,所述数据文件可以是SSTable文件。参照图4,所述合并压缩装置可以包括层级划分器42和合并压缩器44,其中:[0066]层级划分器42适于将数据节点的所有数据文件划分为若干个数据层级进行存储,其中,新增的数据文件存储在最低的数据层级。所划分的数据层级的数量可以根据实际需要(例如数据节点中存储的数据量大小)进行设置。在Key-Value存储系统中,所有的写操作都是先将数据块(数据记录)写入Memtable,当Memtable达到一定大小时,再将Memtable中的数据块按照Key排序写入到磁盘上的SSTable文件中。新写入到磁盘上的SSTable文件即新增的数据文件是存储在所述若干个数据层级的最底层,其他数据层级存储的则是上一层数据层级合并压缩生成的数据文件。[0067]合并压缩器44适于按照预定的合并周期对各数据层级中的数据文件进行合并压缩,并将合并压缩生成的数据文件从当前数据层级搬移到上一层数据层级,其中,所述合并压缩为消除各数据文件中的重复数据块。[0068]可以看出,根据本发明实施例的上述合并压缩装置,通过对数据文件进行分层级和分阶段进行压缩合并,能够消除各数据文件中的重复数据块,从而保证重复数据块的消重效果。由于每次对数据文件进行合并压缩都是在当前数据层级内部进行,不存在跨数据层级做合并压缩的情况,这样,参与合并压缩的数据量较小,一方面对磁盘剩余空间要求较低,提高了存储空间的利用率,另一方面避免了对磁盘I/0资源的占用过大。[0069]为进一步降低进行数据文件合并压缩时对磁盘I/0资源的占用,在本发明实施例的一种实现方式中,所述合并压缩装置还包括存储范围划分器(图未示),适于对于除了最低的数据层级之外的其他所有数据层级,将各数据层级的存储空间划分为若干个存储范围。相应地,所述合并压缩器44进一步适于:将合并压缩生成的数据文件存储到上一层数据层级中与该数据文件对应的存储范围中,以及,依次对数据层级中各存储范围中的数据文件进行合并压缩。[0070]合并压缩器44在数据文件的合并压缩时,每个数据层级对应一个合并周期,各合并周期可以相同,也可以不相同。由于数据层级越高,其对应的数据文件也相对越有序,其包含的重复的数据块数目也相对越少。因此,在一种实现方式中,任一数据层级对应的合并周期小于上一层数据层级对应的合并周期,即越高的数据层级,其对应的合并周期越大。这样,能够兼顾每次读数据块时打开尽量少的数据文件的需求,和降低由于数据丈件的合并压缩对磁盘I/0资源的占用的需求。基于类似的理由,本发明实施例的数据合并装置还可以包括限速器(图未示),适于控制任一数据层级的合并压缩速度小于下一层数据层级的合并压缩速度,即越低的数据层级,其对应的合并压缩速度越快。[0071]对于上述装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。[0072]在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。[0073]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。[0074]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循【具体实施方式】的权利要求书由此明确地并入该【具体实施方式】,其中每个权利要求本身都作为本发明的单独实施例。[0075]本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。[0076]此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。[0077]本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的合并压缩装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。[0078]应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。【权利要求】1.一种键-值存储系统中数据文件的合并压缩方法,包括:将数据节点的所有数据文件划分为若干个数据层级进行存储,其中,新增的数据文件存储在最低的数据层级;按照预定的合并周期对各数据层级中的数据文件进行合并压缩,并将合并压缩生成的数据文件从当前数据层级搬移到上一层数据层级,其中,所述合并压缩为消除各数据文件中的重复数据块。2.如权利要求1所述的合并压缩方法,其中,还包括:对于除了最低的数据层级之外的其他所有数据层级,将各数据层级的存储空间划分为若干个存储范围;所述将合并压缩生成的数据文件从当前数据层级搬移到上一层数据层级为:将合并压缩生成的数据文件存储到上一层数据层级中与该数据文件对应的存储范围中。3.如权利要求2所述的合并压缩方法,其中,所述对各数据层级中的数据文件进行合并压缩为:依次对数据层级中各存储范围中的数据文件进行合并压缩。4.如权利要求1、2或3所述的合并压缩方法,其中:任一数据层级对应的合并周期小于上一层数据层级对应的合并周期。5.如权利要求4所述的合并压缩方法,其中,还包括:控制任一数据层级的合并压缩速度小于下一层数据层级的合并压缩速度。6.一种键-值存储系统中数据文件的合并压缩装置,包括:层级划分器,适于将数据节点的所有数据文件划分为若干个数据层级进行存储,其中,新增的数据文件存储在最低的数据层级;合并压缩器,适于按照预定的合并周期对各数据层级中的数据文件进行合并压缩,并将合并压缩生成的数据文件从当前数据层级搬移到上一层数据层级,其中,所述合并压缩为消除各数据文件中的重复数据块。7.如权利要求6所述的合并压缩装置,其中,还包括:存储范围划分器,适于对于除了最低的数据层级之外的其他所有数据层级,将各数据层级的存储空间划分为若干个存储范围;所述合并压缩器进一步适于:将合并压缩生成的数据文件存储到上一层数据层级中与该数据文件对应的存储范围中。8.如权利要求7所述的合并压缩装置,其中,所述合并压缩器进一步适于:依次对数据层级中各存储范围中的数据文件进行合并压缩。9.如权利要求6、7或8所述的合并压缩装置,其中:任一数据层级对应的合并周期小于上一层数据层级对应的合并周期。10.如权利要求9所述的合并压缩装置,其中,还包括:限速器,适于控制任一数据层级的合并压缩速度小于下一层数据层级的合并压缩速度。【文档编号】G06F3/06GK103744617SQ201310711265【公开日】2014年4月23日申请日期:2013年12月20日优先权日:2013年12月20日【发明者】王锋申请人:北京奇虎科技有限公司,奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1