同时适应磁盘与固态硬盘读写特性的海量数据存储方法技术

技术编号:15436862 阅读:89 留言:0更新日期:2017-05-25 19:06
一种同时适应磁盘与固态硬盘读写特性的海量数据存储方法,将一个块中的记录的完全排序改为部分部序,在每个块的尾部加上布隆过滤器,包括建立称为Log‑Structured Append‑Tree树,树中每个块存储的数据量达到阈值时,将块内的数据直接追加到相应孩子块内时,孩子块的数据由若干个排序序列组成,而不是通过归并排序的方式实现块内完全排序;树中每一个块保存着布隆过滤器。依照本发明专利技术,在不牺牲任何其他性能的情况下,使得写放大大大降低,大大增加了随机写效率,而且,对固态硬盘寿命起到了更好的保护和延长。在读写混合的场景中,随机读性能也有所增强,具有重要的市场价值。

Mass data storage method adapting to read-write characteristics of disk and solid state disk

A disk and solid state disk read and adapt to the massive data storage method of writing characteristics, a block of records in the fully ordered to a portion of the order, at the end of each block with Bloom filter, including the establishment of called Log Structured Append Tree tree, the amount of data stored in each block tree when the threshold is reached, will block data directly appended to the corresponding block in children, the child is composed of a plurality of blocks of data sequence, rather than through the merge sort of way to achieve complete block sorting; tree in each block preserved bloom filter. According to the invention, the write amplification is greatly reduced without sacrificing any other performance, greatly increasing the random write efficiency, and better protecting and prolonging the lifetime of the solid state disk. In the context of read / write mixing, random reading performance is also enhanced, and it has important market value.

【技术实现步骤摘要】
同时适应磁盘与固态硬盘读写特性的海量数据存储方法
本专利技术属于海量数据存储领域,特别涉及存储树,该方法可同时适应磁盘与固态硬盘读写特性。
技术介绍
现有的硬盘上常用的索引树有B-tree、LSM-tree、buffer-tree等。其中B-tree是传统的经典树,但因为其在随机写的场景中不可避免的随机写磁盘,当存储海量数据时性能较低,所以存储海量数据时常常使用其变体,如BigTable中对B-tree的变体和LSM-tree的结合使用。对于海量数据的存储,常使用LSM-tree或buffer-tree(又称为fractal-tree)作为索引树,这两者的共同特点是将待写入的记录推迟写,待积累到一定量时再批量处理。这样可以较好的解决B-tree的随机写场景中引起的随机写磁盘的问题,使得写吞吐量得到了较大的提升。在随机读的场景中,因为LSM-tree和buffer-tree的层数较多且树中的块大小比B-tree的中的块大小大很多,所以读放大较大使得随机读性能有明显降低。为了解决这个问题,bigtable/leveldb等项目在实现LSM-tree时,在每个节点保存了布隆过滤器信息,这样可以很好的降低LSM-tree的读放大,较好的解决随机读性能低的问题。但不管是B-tree还是LSM-tree/buffer-tree,这些树的写放大都较大。由于磁盘吞吐量的限制,较大的写放大限制了这些索引树随机写性能的进一步实质性的提升,而且严重损害固态硬盘的寿命。较大的写放大侵占了大部分的磁盘的吞吐量进而使得在读写混合的场景中,随机写影响随机读对磁盘性能的利用而使得随机读性能也会有一定程度的下降。
技术实现思路
本专利技术所要解决的问题是:传统树的较大的写放大使得随机写效率低下的问题,在固态硬盘盘中较大的写放大也严重的影响着固态硬盘的寿命。较大的写放大侵占了大部分的机械磁盘或固态硬盘的吞吐量进而使得在读写混合的场景中,随机写影响随机读对机械磁盘或固态硬盘性能的利用而使得随机读性能也会有一定程度的下降。由此设计了称为Log-StructuredAppend-Tree(日志结构的追加树,简称LSA-tree)的树。本专利技术提供一种同时适应磁盘与固态硬盘读写特性的海量数据存储方法,将一个块中的记录的完全排序改为部分部序,再在每个块的尾部加上布隆过滤器,实现方式如下,内存中包括可变内存缓存、不可变内存缓存和树的元数据信息,磁盘中的数据采用LSA-tree结构组织,设该树分为n层,第i层中至少ti个块最多ti+1个块,1≤i≤n-1,参数t为相邻两层块数阈值的倍数,最后一层小于等于tn个块;每个块有一个键的范围,当每个块存储的数据量达到相应阈值时,将块内的数据刷入下一层中在范围上有覆盖重叠关系的块中,将要刷的数据直接追加到相应的块内时,某一块的数据由若干个排序序列组成,而不是通过归并排序的方式实现块内完全排序;树中每一个块保存着布隆过滤器;而且,后台线程对LSA-tree树中的块的操作分为三类,包括下刷、分裂和合并;所有操作都只对非最后一层的块发起处理;将当前层的某一块与下层的一个或多个块在键上的覆盖重叠关系称为父子关系,当前层的该块称为父亲块,下一层的一个或多个块称为孩子块;下刷操作是将块内的数据下移至下一层中,但该块的范围仍保留,该块所在层的块的数目不发生变化;下刷操作的触发条件为,该块存储的数据量达到存储阈值且该块的孩子块数目小于2t;触发后,需要在下面两个执行条件均满足后进行下刷,条件1,下层的块的数目小于ti+1+1且i+1<n,或者小于tn且i+1=n;条件2,若下层为非最后一层,孩子块需都未达到存储阈值;分裂操作是将块拆分成两个,以使新生成的两个块的孩子块数目相等;分裂操作的触发条件为,该块存储的数据量达到存储阈值且该块的孩子块数目大于2t;该操作需满足的执行条件为,该块所在层的块的数目小于ti+1;合并操作是将块内的数据下移至下一层中,在下刷后该块的范围被删除,以使得该块所在层的块的数目减1;合并操作的触发条件为,该块所在层的块数目等于ti+1;该操作需要满足下面两个执行条件,条件1,下层的块的数目小于ti+1+1且i+1<n,或者小于tn且i+1=n;条件2,若下层为非最后一层,孩子块需都未达到存储阈值;而且,当用户线程插入记录时,有以下三种情况,1)若可变内存缓存未达到容量阈值,将记录追加进用户日志,再将记录插入可变内存缓存;2)若可变内存缓存达到容量阈值且不可变内存缓存不存在,先将其重命名为不可变内存缓存,再新建一个可变内存缓存插入记录;3)若可变内存缓存达到容量阈值且不可变内存缓存存在,等待后台线程将不可变内存缓存写入磁盘后销毁,用户线程再按照2)进行处理;而且,基于LSA-tree树,后台线程将不可变内存缓存写入磁盘包括以下步骤,步骤1.1,若最后一层的块的数目等于tn,则令n=n+1,并新建一层,新建的层为新的最后一层;步骤1.2,选取要处理的任务,每个任务包括选择要处理的块和该块上将要执行的操作,将不可变内存缓存也看作一种特殊的块;本选取操作设有三种优先级,从高到低依次如下,优先级1:不可变内存缓存的下刷操作,若不满足下刷的执行条件,则继续判断优先级2条件;优先级2:对于非最后一层,从上层开始判断是否存在块数等于ti+1且下层块数小于ti+1+1且i+1<n的层,或者是否存在下层块数小于tn且i+1=n的层;若存在,则选择该层中的某一块进行合并操作以减少该层的块的数目;然后在候选集合中选取最优的块,对选择出的最优块执行合并操作;若不存在这样的层,则继续判断优先级3条件;优先级3:从上层到下层依次判断是否存在存储的数据量达到存储阈值的块,若存在则选取遍历过程所遇到的第一个块;若该块的孩子块的数目小于2t,则将对该块执行下刷操作;若该块的孩子块数目大于等于2t,则将对该执行分裂操作;若选取的块将进行的是下刷操作,但因为该块存在已经到达存储阈值的孩子块而使得该操作的执行条件不满足,则改为选择该孩子块进行下刷或分裂操作,依次类推进行递归查找,直至最终选择到第一个满足下刷或分裂执行条件的块;若最终未选择到任何目标块和操作,则在用户继续插入数据时,从步骤1.1开始重新执行;步骤1.3,根据获得的任务执行实际的磁盘操作,包括下刷操作、合并操作或分裂操作;步骤1.4,申请一个排它锁,申请成功后,将执行的实际的磁盘操作所修改的树的结构信息写入树元数据变化日志,并根据此信息更新内存中的树的元信息;步骤1.5,若处理的是不可变内存缓存的下移操作,销毁不可变内存缓存;若有用户线程正睡眠,则唤醒用户线程;将本线程所获取的所有锁解锁,本线程从步骤1.1继续开始执行。而且,当用户需读取数据时,执行的步骤如下:步骤2.1,读可变内存缓存,若读取到所需要的记录即返回;步骤2.2,读不可变内存缓存,若读取到所需要的记录即返回;步骤2.3,依次读第1层到第n层,找到即返回,若到最后一层没找到,则说明数据库中不存在对应记录。而且,步骤1.3中,若任务为下刷操作,分为3种情况,情况1,若待下刷的块不存在孩子块,则直接进入步骤1.4修改该块的元信息以实现下移;当前层的被下移的块的范围保留;情况2,若待下刷的块存在孩子块且下一本文档来自技高网
...
同时适应磁盘与固态硬盘读写特性的海量数据存储方法

【技术保护点】
一种同时适应磁盘与固态硬盘读写特性的海量数据存储方法,其特征在于:将一个块中的记录的完全排序改为部分部序,再在每个块的尾部加上布隆过滤器,实现方式如下,内存中包括可变内存缓存和不可变内存缓存、树的元数据信息,建立称为Log‑Structured Append‑Tree树的结构,磁盘中的数据采用Log‑Structured Append‑Tree结构组织,设该树分为n层,第i层中至少t

【技术特征摘要】
1.一种同时适应磁盘与固态硬盘读写特性的海量数据存储方法,其特征在于:将一个块中的记录的完全排序改为部分部序,再在每个块的尾部加上布隆过滤器,实现方式如下,内存中包括可变内存缓存和不可变内存缓存、树的元数据信息,建立称为Log-StructuredAppend-Tree树的结构,磁盘中的数据采用Log-StructuredAppend-Tree结构组织,设该树分为n层,第i层中至少ti个块最多ti+1个块,1≤i≤n-1,参数t为相邻两层块数阈值的倍数,最后一层小于等于tn个块;每个块有一个键的范围,当每个块存储的数据量达到相应阈值时,将块内的数据刷入下一层中在范围上有覆盖重叠关系的块中,将要刷的数据直接追加到相应的块内时,某一块的数据由若干个排序序列组成,而不是通过归并排序的方式实现块内完全排序;树中每一个块保存着布隆过滤器。2.根据权利要求1所述同时适应磁盘与固态硬盘读写特性的海量数据存储方法,其特征在于:后台线程对Log-StructuredAppend-Tree树中的块的操作分为三类,包括下刷、分裂和合并;所有操作都只对非最后一层的块发起;将当前层的某一块与下层的一个或多个块在键上的覆盖重叠关系称为父子关系,当前层的该块称为父亲块,下一层的一个或多个块称为孩子块;下刷操作是将块内的数据下移至下一层中,但该块的范围仍保留,该块所在层的块的数目不发生变化;下刷操作的触发条件为,该块存储的数据量达到存储阈值且该块的孩子块数目小于2t;触发后,需要在下面两个执行条件均满足后进行下刷,条件1,下层的块的数目小于ti+1+1且i+1<n,或者小于tn且i=n-1;条件2,若下层为非最后一层,孩子块需都未达到存储阈值;分裂操作是将块拆分成两个,以使新生成的两个块的孩子块数目相等;分裂操作的触发条件为,该块存储的数据量达到存储阈值且该块的孩子块数目大于2t;该操作需满足的执行条件为,该块所在层的块的数目小于ti+1;合并操作是将块内的数据下移至下一层中,在下刷后该块的范围被删除,以使得该块所在层的块的数目减1;合并操作的触发条件为,该块所在层的块数目等于ti+1;该操作需要满足下面两个执行条件,条件1,下层的块的数目小于ti+1+1且i+1<n,或者小于tn且i+1=n;条件2,若下层为非最后一层,孩子块需都未达到存储阈值。3.根据权利要求2所述同时适应磁盘与固态硬盘读写特性的海量数据存储方法,其特征在于:当用户线程插入记录时,有以下三种情况,1)若可变内存缓存未达到容量阈值,将记录追加进用户日志,再将记录插入可变内存缓存;2)若可变内存缓存达到容量阈值且不可变内存缓存不存在,先将其重命名为不可变内存缓存,再新建一个可变内存缓存插入记录;3)若可变内存缓存达到容量阈值且不可变内存缓存存在,等待后台线程将不可变内存缓存写入磁盘后销毁,用户线程再按照2)进行处理。4.根据权利要求3所述同时适应磁盘与固态硬盘读写特性的海量数据存储方法,其特征在于:基于Log-StructuredAppend-Tree树,后台线程将不可变内存缓存写入磁盘包括以下步骤,步骤1.1,若最后一层的块的数目等于tn,则令n=n+1,并新建一层,新建的层为新的最后一层;步骤1.2,选取要处理的任务,每个任务包括选择要处理的块和该块上将要执行的操作,将不可变内存缓存也看作一种特殊的块;本选取操作设有三种优先级,从高到低依次如下,优先级1:不可变内存缓存的下刷操作,若不满足下刷的执行条件,则继续判断优先级2条件;优先级2:对于非最后一层,从上层开始判断是否存在块数等于ti+1且下层块数小于ti+1+1且i+1<n的层,或者是否存在块数小于tn且i=n-1的层;若存在,则选择该层中的某一块进行合...

【专利技术属性】
技术研发人员:龚才鑫龚奕利
申请(专利权)人:武汉安嘉颐科技有限公司
类型:发明
国别省市:湖北,42

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1