CN105159915B - 可动态适应的lsm树合并方法及系统 - Google Patents
可动态适应的lsm树合并方法及系统 Download PDFInfo
- Publication number
- CN105159915B CN105159915B CN201510419480.XA CN201510419480A CN105159915B CN 105159915 B CN105159915 B CN 105159915B CN 201510419480 A CN201510419480 A CN 201510419480A CN 105159915 B CN105159915 B CN 105159915B
- Authority
- CN
- China
- Prior art keywords
- node
- file
- tree
- key assignments
- child
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明适用于文件处理技术领域,提供了一种可动态适应的LSM树合并方法,所述方法包括:将键值区间划分为若干节点,将所述节点组织为树形结构,每个所述节点对应一键值区间,每个所述键值区间包含对应该键值区间范围的文件;根据当前数据的分布动态调整树的形状;当有新写入的文件时,遍历树寻找最适节点放入;对文件进行处理时,对节点内部进行Minor Compact处理,并且只通过叶节点执行Major Compact。本发明还相应的提供一种实现上述方法的可动态适应的LSM树合并系统。借此,本发明可以实现动态适应数据的分布,提高数据合并效率。
Description
技术领域
本发明涉及文件处理技术领域,尤其涉及一种可动态适应的LSM树合并方法及系统。
背景技术
Log-structured merge树,也被称为LSM树,是目前NoSQL数据库常用的数据组织方式。它把对索引的变更进行延迟和批量处理,并通过类似归并排序的方式高效地将更新迁移到磁盘。LSM树的节点在具体实现中往往就是一个文件,文件内部有序,文件之间无序,查询时需要查询所有文件,合并每个文件的结果,从而造成性能低下,所以一般会把若干个文件合并成一个大文件,通过合并文件,减少文件数量,真正删除数据,以减少每次查询涉及到的文件数,提高数据的查询效率,即Compact。Compact过程会读多个文件合并后重新写成文件,这会占用大量磁盘I/O等相关资源,而不当的Compact或不及时的Compact又会造成查询时涉及过多文件而使它的性能下降。目前主流的合并方法:Tiered Compact、LevelDBCompact和Stripe Compact。
1.Tiered Compact策略如下:
(1)首先将候选文件按照入库时间(Sequence ID,即顺序号)从旧到新排序,候选集为正在合并的文件之后的文件;
(2)如果请求是一个Major Compact,如果目前的文件列表是所有的文件,则进行Major Compact,否则不能进行Major Compact;
(3)如果列表文件数量小于配置的合并最小文件数量阈值,则放弃做MinorCompact;
(4)使用一个ratio参数,选取按照从老到新的顺序进行,遍历每个文件时,如果它的大小小于所有比它新的文件的和与ratio的乘积,则它是一个候选;
(5)选取处理的文件个数大于配置的合并最小文件数量阈值,则进行MinorCompact,否则放弃执行。
该方法和系统简单易实现,完成合并操作以后能够提升读性能,但是合并过程本身的代价是比较大的,在更新密集型的操作中,这样就会带来以下问题:
(1)数据分布不一致,一行数据可能在一个文件中,也可能跨越多个文件,最坏情况下可能每个文件中都有,这样针对不同key查询时涉及到的文件数量不同,查询性能不稳定;
(2)浪费大量I/O,一个文件可能执行多次合并,滚雪球似的反复被重写。没有考虑数据的分布,如不变化的key区间其实是不需要再被合并的了,但是在这个算法中仍然会执行这不必要的合并;
(3)只有Major Compact时才会清除掉删除数据,而Major Compact由于需要合并重写所有文件,消耗资源比较严重,执行时间很长,所以不会频繁执行,一般一天执行一次。那么由于无法保证删除的数据要多久才能被清除,在删除密集型操作中,有大量空间可能被浪费;
(4)合并过程中旧的文件只有在新的文件写入完成后才能删除,需要额外占用磁盘空间。Major Compact要将所有的文件合并重写,使得临时磁盘空间到达原来的两倍。
2.LevelDB Compact策略如下:
(1)当Level-L的文件总大小超过阈值时,后台线程进行合并;
(2)从Level-L中选出一个文件,从Level-(L+1)中选出与它的键值范围交叠的文件。Level-0比较特殊,因为Level-0的文件键值是互相交叠的,所以需要特别处理从Level-0到Level-1的合并:如果文件之间有键值交叠,可能需要从Level-0中选出多于一个文件;
(3)合并线程读取这些文件内容,归并排序生成一系列Level-(L+1)文件,当生成文件的大小超过2MB的时候就转而生成一个新文件来写入,还有与当前键值范围交叠的Level-(L+2)文件超过了10个时,那么也需要转而生成一个新文件来写入,这样可以保证后续Level-(L+1)文件的合并不会挑选出太多Level-(L+2)的文件;
(4)当新文件生成并服务后,老的文件就会被舍弃;
(5)对于一个Level,文件合并的顺序是轮流的,记录上次此Level合并的最大键值(end key),下次此Level合并的时候则选择此键值开始的第一个文件(如果没有则转回此Level的第一个文件);
(6)合并清除同一个键的旧数据,也会清除删除标记影响的数据,当更高Level中没有此键值范围的文件就可以清除删除标记。
算法的好处是在合并的过程中,仅需由两个Level的部分文件参与,而不是要对所有文件执行合并操作,这样会加快合并执行的效率。大部分的读操作有LRU特性,都会落入较低的Level上。因此,数据越“热”,Level就越低,有利于多种存储介质的合理使用。
算法的主要问题是它无法动态调整Level层数,如果Level过多,在递归合并的过程中,容易造成某个区间的合并风暴,并且每次下推都需要重写文件。此外,不同Level之间的键值没有对应关系,上层Level的键值区间对应下层Level的区间事先无法预测,当上层Level的某一个文件需要与下层Level合并的时候,对下层Level的影响范围并不存在确定性,由当前的键值范围影响。
3.Stripe Compact策略如下:
(1)对于Region下的键值区间进行二次切分,分成更多小区间,每个区间即为Stripe;
(2)Region下的数据文件分为Level-0和Level-1两层。其中Level-0包括整个键值区间,从内存中刷写下来的文件和批量导入产生的文件默认放在Level-0;
(3)当Level-0文件积累到阈值时,通过合并把Level-0的文件切分到Level-1,每个键值与其相交的Stripe都会形成一个文件放入相应Stripe;
(4)Stripe内部可以进行合并以防止Stripe文件数过多;
(5)Stripe的切分有两种方式:基于个数的方式(Count-based)和基于大小的方式(Size-based);
(6)读取时,一个键值所涉及的数据范围有内存、Level-0所有文件、以及Level-1中对应的Stripe的文件;
(7)容错机制。在Level-1的Stripe间的键值范围应该是连续的,如果出现异常情况导致Stripe之间存在空洞,那么可将所有Level-1的文件重新放回Level-0;
Stripe合并保留了分层的优势的同时,降低了层级数量和文件个数,有利于Region的分裂和合并。它的问题在于Level-1中Stripe的分布和数量很难动态调整,如果Stripe过小,从Level-0刷写下来的文件就会过小;如果Stripe过大,Stripe区间很大,每个Stripe中会遇到与Region内部Tiered Compact同样的问题。
现有技术无法动态适应数据的分布,数据的组织方式无法随着数据的分布不同而高效地动态调整,合并效率低下,经常做一些无用的合并,占用系统资源。
综上可知,现有技术在实际使用上显然存在不便与缺陷,所以有必要加以改进。
发明内容
针对上述的缺陷,本发明的目的在于提供一种可动态适应的LSM树合并方法及系统,其可以动态适应数据的分布,提高数据合并效率。
为了实现上述目的,本发明提供一种可动态适应的LSM树合并方法,所述方法包括:
将键值区间划分为若干节点,将所述节点组织为树形结构,每个所述节点对应一键值区间,每个所述键值区间包含对应该键值区间范围的文件;
根据当前数据的分布动态调整树的形状;
当有新写入的文件时,遍历树寻找最适节点放入;
对文件进行处理时,对节点内部进行Minor Compact处理,并且只通过叶节点执行Major Compact。
根据本发明的可动态适应的LSM树合并方法,所述树形结构的根节点对应完整的键值区间;
所述树形结构的子节点是父节点的划分,所有子节点的键值区间组合起来形成所述父节点的键值区间,且各个子节点对应的键值区间之间相互连续、互斥无重合。
根据本发明的可动态适应的LSM树合并方法,所述根据当前数据的分布动态调整树的形状步骤包括:
根据当前数据的分布动态调整树的节点数量和/或树的高度和/或树的度。
根据本发明的可动态适应的LSM树合并方法,所述方法还包括:
当文件中缺失了所在的节点信息时,遍历树寻找最适节点放入所述文件。
根据本发明的可动态适应的LSM树合并方法,所述当有新写入的文件时,遍历树寻找最适节点放入步骤之前还包括:
配置每个节点的最大值SizeMax和最小值SizeMin;
设置每个节点的子节点个数最大值ChildrenNumberMax和最小值ChildrenNumberMin。
根据本发明的可动态适应的LSM树合并方法,所述当有新写入的文件时,遍历树寻找最适节点放入步骤包括:
当一个非叶节点的文件总大小大于SizeMax时,将所述文件分发到子节点;
当一个叶节点的文件总大小大于SizeMax,且该叶节点的兄弟节点的数量小于ChildrenNumberMax时,该叶节点分裂为两个大小相同的与原节点同深度的兄弟节点,所述叶节点对应的键值区间也相应的分开。
根据本发明的可动态适应的LSM树合并方法,所述当有新写入的文件时,遍历树寻找最适节点放入步骤包括:
当一个叶节点的文件总大小大于SizeMax,且该叶节点的兄弟节点的数量不小于ChildrenNumberMax时,将该叶节点分裂出两个相同大小的子节点,该叶节点的键值区间也相应的分为两部分,并分配给子节点,把所述文件写到所述两个子节点中;
当一个叶节点的大小小于SizeMin时,将该叶节点与兄弟节点合并。
根据本发明的可动态适应的LSM树合并方法,所述当有新写入的文件时,遍历树寻找最适节点放入步骤包括:
当上一层的节点数目小于ChildrenNumberMin,并且存在一个节点的子节点数目与这一层节点数量的和不大于ChildrenNumberMax时,则将该子节点上提处理。
本发明还提供一种可动态适应的LSM树合并系统,包括:
树组建模块,用于将键值区间划分为若干节点,将所述节点组织为树形结构,每个所述节点对应一键值区间,每个所述键值区间包含对应该键值区间范围的文件;
树调整模块,用于根据当前数据的分布动态调整树的形状;
节点配置模块,用于当有新写入的文件时,遍历树寻找最适节点放入;
文件处理模块,用于对文件进行处理时,对节点内部进行Minor Compact处理,并且只通过叶节点执行Major Compact。
根据本发明的可动态适应的LSM树合并系统,所述系统还包括:
阈值配置模块,用于配置每个节点的最大值SizeMax和最小值SizeMin;以及设置每个节点的子节点个数最大值ChildrenNumberMax和最小值ChildrenNumberMin。
本发明通过将键值区间划分为若干节点,将所述节点组织为树形结构,每个所述节点对应一键值区间,每个所述键值区间包含对应该键值区间范围的文件,并根据当前数据的分布动态调整树的形状,借此优化组织形式来提高合并效率和查询速度。当有新写入的文件时,遍历树寻找最适节点放入,一次找到当前最适合的节点,减少文件从根往叶子节点流动时合并的次数。当对文件进行处理时,对节点内部进行Minor Compact处理,并且只通过叶节点执行MajorCompact,借此减小Major Compact范围,提高合并效率。
附图说明
图1是本发明的可动态适应的LSM树合并方法流程图;
图2是本发明一实施例的随机数据情况下查询涉及文件数示意图;
图3是本发明一实施例的随机数据情况下的平均合并数示意图;
图4是本发明一实施例的时序数据情况下查询涉及文件数示意图;
图5是本发明一实施例的时序数据情况下平均合并数示意图;
图6是本发明一实施例的数据组织方式结构示意图;
图7是本发明一实施例的数据组织方式与分布结构示意图;
图8是本发明的可动态适应的LSM树合并系统结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
发明人在进行基于LSM的数据存储系统研究时,发现现有技术中的缺陷是由不当的合并策略导致的。经过对现有合并方法和传统数据库数据组织方法研究发现,解决该项缺陷可以通过树形结构的数据组织的方法来实现。LevelDB Compact将文件按照层级组织,但是层级之间并没有直接联系,当在层级之间发生合并时并不知道涉及到的下层区间。Stripe Compact定义了两个层级,但是这样的限制又会使得区间的大小很难调整。本发明通过提出的树形结构旨在解决上述问题,实现动态适应,提高查询速度和合并效率
参见图1,本发明提供了一种可动态适应的LSM树合并方法,其包括下述步骤:
步骤S101,将键值区间划分为若干节点,将所述节点组织为树形结构,每个所述节点对应一键值区间,每个所述键值区间包含对应该键值区间范围的文件。
具体的,本发明中树形结构的根节点对应完整的键值区间,树形结构的子节点是父节点的划分,即:所有子节点的键值区间组合起来形成父节点的键值区间,且各个子节点对应的键值区间之间相互连续、互斥无重合。
步骤S102,根据当前数据的分布动态调整树的形状。
随着树的节点中数据的变化,树形结构可以根据当前数据的分布动态调整树的形状,具体包括调节树的节点数量和/或树的高度和/树的度。借此,通过步骤S101和S102的优化组织形式,可以大大提高合并效率和查询速度。
步骤S103,当有新写入的文件时,遍历树寻找最适节点放入。
本发明所述的最适节点,具体的说是节点深度越深越适合放入文件。一次找到当前最适合的节点,可以减少文件从根往叶子节点流动时合并的次数。
步骤S104,对文件进行处理时,对节点内部进行Minor Compact处理,并且只通过叶节点执行Major Compact。通过该步骤S104,可以减小Major Compact范围,提高合并效率。
优选的是,当文件中缺失了所在的节点信息时,与新加入的文件相同采用相同处理方式,遍历树寻找最适节点放入文件,借此保证在极端条件下数据不会丢失,提高处理系统可靠性和数据安全性。
在基于LSM的数据存储系统中,本发明的方法主要影响的是系统资源,如磁盘I/O和查询时涉及的文件数量。在下述实施例中,本发明测试中选择了随机数据和时序数据两种场景,数据总量为2亿个键值对,每个键值对1KB大小。
图2示出的是随机数据情况下查询涉及文件数,图3示出的是随机数据情况下的平均合并数。根据图2和图3所示,本发明提出的方法在随机数据中与Tiered Compact结果相当,但在时序数据中本发明比Tiered Compact文件数少80%,IO减少50%。由此可见,本发明可以大大节省系统资源。
图4示出的是时序数据情况下查询涉及文件数,图5示出的是时序数据情况下平均合并数。如图4和图5所示本专利提出的方法在时序数据中比Stripe Compact文件数减少50%,IO减少50%。(图2~图5所示的实施例中的文件数是指查询时涉及到的文件数量)
图6是本发明一实施例的数据组织方式结构示意图。该实施例中,在组织好树形结构后,步骤S103之前还包括:配置每个节点的最大值SizeMax和最小值SizeMin;设置每个节点的子节点个数最大值ChildrenNumberMax和最小值ChildrenNumberMin。并且步骤S103在遍历树寻找最适节点放入新文件具体包括如下处理规则:
当一个非叶节点的文件总大小大于SizeMax时,将所述文件分发到子节点;
当一个叶节点的文件总大小大于SizeMax,且该叶节点的兄弟节点的数量小于ChildrenNumberMax时,该叶节点分裂为两个大小相同的与原节点同深度的兄弟节点,所述叶节点对应的键值区间也相应的分开;
当一个叶节点的文件总大小大于SizeMax,且该叶节点的兄弟节点的数量不小于ChildrenNumberMax时,将该叶节点分裂出两个相同大小的子节点,该叶节点的键值区间也相应的分为两部分,并分配给子节点,把所述文件写到所述两个子节点中;
当一个叶节点的大小小于SizeMin时,将该叶节点与兄弟节点合并;
当上一层的节点数目小于ChildrenNumberMin,并且存在一个节点的子节点数目与这一层节点数量的和不大于ChildrenNumberMax时,则将该子节点上提处理,借此可以压缩路径。
进一步的,本发明在查询一个键值Rowkey的数据时,如图7所示,先从根节点开始,从根节点到叶节点的路径上依次选出与RowKey相关的节点;再把这些节点的文件返回给上层接口,再根据这些文件的键值区间对文件进行过滤。如图7所示每个区间都对应了键值范围,当查询Rowkey=7540的数据时,那么候选就是N0、N2、N4节点内的文件,选出文件后再根据文件的键值区间过滤。
另外本发明在进行查询时,可首先给出查询请求键值范围[A,B),然后从根节开始向下搜索包含[A,B)的节点,并返回所有满足的节点文件,完成查询过程。
参见图8,本发明提供了一种实现上述方法的可动态适应的LSM树合并系统,该系统100包括:
树组建模块10,用于将键值区间划分为若干节点,将所述节点组织为树形结构,每个所述节点对应一键值区间,每个所述键值区间包含对应该键值区间范围的文件。
本发明中树形结构的根节点对应完整的键值区间,树形结构的子节点是父节点的划分,即:所有子节点的键值区间组合起来形成父节点的键值区间,且各个子节点对应的键值区间之间相互连续、互斥无重合。
树调整模块20,用于根据当前数据的分布动态调整树的形状。
随着树的节点中数据的变化,树形结构可以根据当前数据的分布动态调整树的形状,具体包括调节树的节点数量和/或树的高度和/树的度。借此,本发明优化组织形式,大大提高合并效率和查询速度
阈值配置模块30,用于配置每个节点的最大值SizeMax和最小值SizeMin;以及设置每个节点的子节点个数最大值ChildrenNumberMax和最小值ChildrenNumberMin。
节点配置模块40,用于当有新写入的文件时,遍历树寻找最适节点放入。本发明所述的最适节点,具体的说是节点深度越深越适合放入文件。一次找到当前最适合的节点,可以减少文件从根往叶子节点流动时合并的次数。
在遍历树寻找最适节点放入新文件具体包括如下处理规则:
当一个非叶节点的文件总大小大于SizeMax时,将所述文件分发到子节点;
当一个叶节点的文件总大小大于SizeMax,且该叶节点的兄弟节点的数量小于ChildrenNumberMax时,该叶节点分裂为两个大小相同的与原节点同深度的兄弟节点,所述叶节点对应的键值区间也相应的分开;
当一个叶节点的文件总大小大于SizeMax,且该叶节点的兄弟节点的数量不小于ChildrenNumberMax时,将该叶节点分裂出两个相同大小的子节点,该叶节点的键值区间也相应的分为两部分,并分配给子节点,把所述文件写到所述两个子节点中;
当一个叶节点的大小小于SizeMin时,将该叶节点与兄弟节点合并;
当上一层的节点数目小于ChildrenNumberMin,并且存在一个节点的子节点数目与这一层节点数量的和不大于ChildrenNumberMax时,则将该子节点上提处理,借此可以压缩路径。
文件处理模块50,用于对文件进行处理时,对节点内部进行Minor Compact处理,并且只通过叶节点执行Major Compact,借此减小Major Compact范围,提高合并效率。
综上所述,本发明通过将键值区间划分为若干节点,将所述节点组织为树形结构,每个所述节点对应一键值区间,每个所述键值区间包含对应该键值区间范围的文件,并根据当前数据的分布动态调整树的形状,借此优化组织形式来提高合并效率和查询速度。当有新写入的文件时,遍历树寻找最适节点放入,一次找到当前最适合的节点,减少文件从根往叶子节点流动时合并的次数。当对文件进行处理时,对节点内部进行Minor Compact处理,并且只通过叶节点执行Major Compact,借此减小Major Compact范围,提高合并效率。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (8)
1.一种可动态适应的LSM树合并方法,其特征在于,所述方法包括:
将键值区间划分为若干节点,将所述节点组织为树形结构,每个所述节点对应一键值区间,每个所述键值区间包含对应该键值区间范围的文件;
根据当前数据的分布动态调整树的形状;
当有新写入的文件时,遍历树寻找最适节点放入;
对文件进行处理时,对节点内部进行Minor Compact处理,并且只通过叶节点执行Major Compact;
其中所述当有新写入的文件时,遍历树寻找最适节点放入步骤之前还包括:配置每个节点的最大值SizeMax和最小值SizeMin;设置每个节点的子节点个数最大值ChildrenNumberMax和最小值ChildrenNumberMin;
所述当有新写入的文件时,遍历树寻找最适节点放入步骤包括:
当一个非叶节点的文件总大小大于SizeMax时,将所述文件分发到子节点;
当一个叶节点的文件总大小大于SizeMax,且该叶节点的兄弟节点的数量小于ChildrenNumberMax时,该叶节点分裂为两个大小相同的与原节点同深度的兄弟节点,所述叶节点对应的键值区间也相应的分开。
2.根据权利要求1所述的可动态适应的LSM树合并方法,其特征在于,所述树形结构的根节点对应完整的键值区间;
所述树形结构的子节点是父节点的划分,所有子节点的键值区间组合起来形成所述父节点的键值区间,且各个子节点对应的键值区间之间相互连续、互斥无重合。
3.根据权利要求1所述的可动态适应的LSM树合并方法,其特征在于,所述根据当前数据的分布动态调整树的形状步骤包括:
根据当前数据的分布动态调整树的节点数量和/或树的高度和/或树的度。
4.根据权利要求1所述的可动态适应的LSM树合并方法,其特征在于,所述方法还包括:
当文件中缺失了所在的节点信息时,遍历树寻找最适节点放入所述文件。
5.根据权利要求1所述的可动态适应的LSM树合并方法,其特征在于,所述当有新写入的文件时,遍历树寻找最适节点放入步骤包括:
当一个叶节点的文件总大小大于SizeMax,且该叶节点的兄弟节点的数量不小于ChildrenNumberMax时,将该叶节点分裂出两个相同大小的子节点,该叶节点的键值区间也相应的分为两部分,并分配给子节点,把所述文件写到所述两个子节点中;
当一个叶节点的大小小于SizeMin时,将该叶节点与兄弟节点合并。
6.根据权利要求1所述的可动态适应的LSM树合并方法,其特征在于,所述当有新写入的文件时,遍历树寻找最适节点放入步骤包括:
当上一层的节点数目小于ChildrenNumberMin,并且存在一个节点的子节点数目与这一层节点数量的和不大于ChildrenNumberMax时,则将该子节点上提处理。
7.一种可动态适应的LSM树合并系统,其特征在于,包括:
树组建模块,用于将键值区间划分为若干节点,将所述节点组织为树形结构,每个所述节点对应一键值区间,每个所述键值区间包含对应该键值区间范围的文件;
树调整模块,用于根据当前数据的分布动态调整树的形状;
节点配置模块,用于当有新写入的文件时,遍历树寻找最适节点放入;
文件处理模块,用于对文件进行处理时,对节点内部进行Minor Compact处理,并且只通过叶节点执行Major Compact;
其中所述当有新写入的文件时,遍历树寻找最适节点放入之前还包括:配置每个节点的最大值SizeMax和最小值SizeMin;设置每个节点的子节点个数最大值ChildrenNumberMax和最小值ChildrenNumberMin;
所述当有新写入的文件时,遍历树寻找最适节点放入包括:
当一个非叶节点的文件总大小大于SizeMax时,将所述文件分发到子节点;
当一个叶节点的文件总大小大于SizeMax,且该叶节点的兄弟节点的数量小于ChildrenNumberMax时,该叶节点分裂为两个大小相同的与原节点同深度的兄弟节点,所述叶节点对应的键值区间也相应的分开。
8.根据权利要求7所述的可动态适应的LSM树合并系统,其特征在于,所述系统还包括:
阈值配置模块,用于配置每个节点的最大值SizeMax和最小值SizeMin;以及设置每个节点的子节点个数最大值ChildrenNumberMax和最小值ChildrenNumberMin。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510419480.XA CN105159915B (zh) | 2015-07-16 | 2015-07-16 | 可动态适应的lsm树合并方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510419480.XA CN105159915B (zh) | 2015-07-16 | 2015-07-16 | 可动态适应的lsm树合并方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105159915A CN105159915A (zh) | 2015-12-16 |
CN105159915B true CN105159915B (zh) | 2018-07-10 |
Family
ID=54800772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510419480.XA Active CN105159915B (zh) | 2015-07-16 | 2015-07-16 | 可动态适应的lsm树合并方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105159915B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107861959A (zh) * | 2016-09-22 | 2018-03-30 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置及系统 |
CN108153754B (zh) * | 2016-12-02 | 2021-09-14 | 中国移动通信有限公司研究院 | 一种数据处理方法及其装置 |
CN106682184B (zh) * | 2016-12-29 | 2019-12-20 | 华中科技大学 | 一种基于日志合并树结构的轻量级合并方法 |
WO2018120233A1 (zh) * | 2016-12-30 | 2018-07-05 | 华为技术有限公司 | 一种事务处理方法及装置 |
CN106844650A (zh) * | 2017-01-20 | 2017-06-13 | 中国科学院计算技术研究所 | 一种日志合并树的合并方法及系统 |
CN107291541B (zh) * | 2017-06-23 | 2020-07-10 | 安徽大学 | 面向Key-Value系统的compaction粗粒度进程级并行优化方法及系统 |
CN107341243A (zh) * | 2017-07-06 | 2017-11-10 | 携程旅游网络技术(上海)有限公司 | 基于区间树查找算法的结算周期生成方法及系统 |
US10783186B2 (en) | 2017-08-31 | 2020-09-22 | Micron Technology, Inc. | Heterogenous key-value sets in tree database |
CN107526550B (zh) * | 2017-09-06 | 2020-01-17 | 中国人民大学 | 一种基于日志结构合并树的两阶段合并方法 |
CN108717448B (zh) * | 2018-05-18 | 2022-02-25 | 南京大学 | 一种面向键值对存储的范围查询过滤方法和键值对存储系统 |
CN108804625B (zh) * | 2018-05-31 | 2020-05-12 | 阿里巴巴集团控股有限公司 | 一种lsm树的优化方法、装置及计算机设备 |
CN109542897B (zh) * | 2018-10-30 | 2021-06-11 | 广东科学技术职业学院 | 一种二叉查找树的方法及系统 |
CN110032565A (zh) * | 2019-03-26 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 一种生成统计信息的方法、系统以及电子设备 |
CN110377227B (zh) * | 2019-06-13 | 2020-07-07 | 阿里巴巴集团控股有限公司 | 一种数据分块存储方法、装置及电子设备 |
US10983975B2 (en) | 2019-06-13 | 2021-04-20 | Ant Financial (Hang Zhou) Network Technology Co., Ltd. | Data block storage method and apparatus, and electronic device |
CN111475507B (zh) * | 2020-03-31 | 2022-06-21 | 浙江大学 | 一种工作负载自适应单层lsmt的键值数据索引方法 |
CN111897784B (zh) * | 2020-07-13 | 2022-12-06 | 安徽大学 | 一种面向键值存储的近数据计算集群系统 |
CN112463048B (zh) * | 2020-11-26 | 2022-08-30 | 新华三技术有限公司成都分公司 | 一种compact处理速度的调整方法、装置、电子设备和介质 |
CN117725035B (zh) * | 2024-01-30 | 2024-06-18 | 支付宝(杭州)信息技术有限公司 | 一种针对lsm树的文件合并方法及相关设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101388842A (zh) * | 2008-10-30 | 2009-03-18 | 华为技术有限公司 | 一种存储方法和装置 |
US8965849B1 (en) * | 2012-08-06 | 2015-02-24 | Amazon Technologies, Inc. | Static sorted index replication |
CN104408091A (zh) * | 2014-11-11 | 2015-03-11 | 清华大学 | 分布式文件系统的数据存储方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101286160B (zh) * | 2008-05-30 | 2010-09-22 | 同济大学 | 数据库索引的方法 |
CN102867059A (zh) * | 2012-09-19 | 2013-01-09 | 浪潮(北京)电子信息产业有限公司 | 一种树形结构中数据的处理方法和系统 |
US9846711B2 (en) * | 2012-12-28 | 2017-12-19 | Facebook, Inc. | LSM cache |
CN103593436B (zh) * | 2013-11-12 | 2017-02-08 | 华为技术有限公司 | 文件合并方法和装置 |
CN103744628B (zh) * | 2014-01-27 | 2016-09-28 | 北京奇虎科技有限公司 | SSTable文件存储方法及装置 |
-
2015
- 2015-07-16 CN CN201510419480.XA patent/CN105159915B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101388842A (zh) * | 2008-10-30 | 2009-03-18 | 华为技术有限公司 | 一种存储方法和装置 |
US8965849B1 (en) * | 2012-08-06 | 2015-02-24 | Amazon Technologies, Inc. | Static sorted index replication |
CN104408091A (zh) * | 2014-11-11 | 2015-03-11 | 清华大学 | 分布式文件系统的数据存储方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105159915A (zh) | 2015-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105159915B (zh) | 可动态适应的lsm树合并方法及系统 | |
CN103631940B (zh) | 一种应用于hbase数据库的数据写入方法及系统 | |
CN102332029B (zh) | 一种基于Hadoop 的海量可归类小文件关联存储方法 | |
CN104376053B (zh) | 一种基于海量气象数据的存储与检索方法 | |
CN103229173B (zh) | 元数据管理方法及系统 | |
CN106502587B (zh) | 硬盘数据管理方法和硬盘控制装置 | |
CN103823865A (zh) | 一种数据库主存索引方法 | |
CN109284299B (zh) | 重构具有存储感知的混合索引的方法 | |
CN103279532B (zh) | 多集合元素去重并标识所属集合的过滤系统及其方法 | |
CN111399777A (zh) | 一种基于数据值分类的差异化键值数据存储方法 | |
CN105320775A (zh) | 数据的存取方法和装置 | |
CN102981971B (zh) | 一种快速响应的相变存储器损耗均衡方法 | |
CN110058822A (zh) | 一种磁盘阵列横向拓展方法 | |
CN106951375A (zh) | 在存储系统中删除快照卷的方法及装置 | |
CN105912687A (zh) | 海量分布式数据库存储单元 | |
CN106469120A (zh) | 碎片整理方法、装置及设备 | |
CN103198150A (zh) | 一种大数据索引方法及系统 | |
CN103812877B (zh) | 基于Bigtable分布式存储系统的数据压缩方法 | |
US8682872B2 (en) | Index page split avoidance with mass insert processing | |
CN105787037A (zh) | 一种重复数据的删除方法及装置 | |
CN104182436B (zh) | 一种清理数据库的方法及装置 | |
CN109213445A (zh) | 一种存储系统元数据的管理方法、管理系统及相关装置 | |
Min et al. | A system framework for map air update navigation service | |
CN104572492A (zh) | 一种烧录数据到fat32分区的方法和装置 | |
CN106326040A (zh) | 一种快照元数据管理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB03 | Change of inventor or designer information |
Inventor after: Cheng Xueqi Inventor after: Zhang Qianxi Inventor after: Zhang Jingliang Inventor after: Liao Huaming Inventor after: Lin Siming Inventor before: Cheng Xueqi Inventor before: Zhang Qianxi Inventor before: Zhang Jingliang Inventor before: Liao Huaming |
|
COR | Change of bibliographic data | ||
GR01 | Patent grant | ||
GR01 | Patent grant |