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‑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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。