System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本说明书一个或多个实施例涉及数据库,尤其涉及一种基于lsm树的文件合并方法及相关设备。
技术介绍
1、完美哈希是一种面向静态数据集的无冲突的哈希映射方式,具有索引空间小,查询效率高的特点。在基于完美哈希索引的采用日志结构合并树(the log-structuredmerge tree,lsm-tree)组织数据的存储引擎中,lsm-tree的每一个存储层中可以包括多个哈希文件,每个哈希文件中包含的键值对(key-value,kv)数据都基于完美哈希构建索引。并且,当某一存储层的某一哈希文件中的key-value数据累积到一定规模时,就会触发层与层之间的文件合并。如此一来,在数据更新频繁的情况下,大量数据不断写入哈希文件,将会触发大量的文件合并操作,因此,如何提升文件合并效率是亟待解决的问题。
技术实现思路
1、有鉴于此,本说明书一个或多个实施例提供一种基于lsm树的文件合并方法及相关设备。
2、第一方面,本说明书提供了一种基于lsm树的文件合并方法,所述lsm树包括多个存储层,每个存储层中分别存储了多个哈希文件,每个哈希文件中包含若干个key-value数据;所述方法包括:
3、对所述多个存储层中待合并的第一哈希文件和第二哈希文件进行文件合并,并将合并后得到的多个key-value数据依次写入内存中预先构建的多个缓冲区中空闲的任一缓冲区;
4、响应于该缓冲区内存储的数据量大于第一阈值,将该缓冲区内的key-value数据写入合并后的第三哈希文件中
5、将合并后得到的剩余key-value数据依次写入所述多个缓冲区中空闲的其他缓冲区,所述空闲的缓冲区为存储的数据量小于第二阈值的缓冲区。
6、第二方面,本说明书提供了一种基于lsm树的文件合并装置,所述lsm树包括多个存储层,每个存储层中分别存储了多个哈希文件,每个哈希文件中包含若干个key-value数据;所述装置包括:
7、第一写入缓冲区单元,用于对所述多个存储层中待合并的第一哈希文件和第二哈希文件进行文件合并,并将合并后得到的多个key-value数据依次写入内存中预先构建的多个缓冲区中空闲的任一缓冲区;
8、写入文件单元,用于响应于该缓冲区内存储的数据量大于第一阈值,将该缓冲区内的key-value数据写入合并后的第三哈希文件中;以及,
9、第二写入缓冲区单元,用于将合并后得到的剩余key-value数据依次写入所述多个缓冲区中空闲的其他缓冲区,所述空闲的缓冲区为存储的数据量小于第二阈值的缓冲区。
10、相应地,本说明书还提供了一种计算机设备,包括:存储器和处理器;所述存储器上存储有可由所述处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行上述第一方面所述的基于lsm树的文件合并方法。
11、相应地,本说明书还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如上述第一方面所述的基于lsm树的文件合并方法。
12、相应地,本说明书还提供了一种计算机程序产品,所述计算机程序产品包括计算机程序/指令,所述计算机程序/指令被处理器执行时,执行如上述第一方面所述的基于lsm树的文件合并方法。
13、综上所述,lsm树包括多个存储层,每个存储层中分别存储了多个哈希文件,每个哈希文件中可以包含若干个key-value数据。首先,存储引擎可以对多个存储层中待合并的第一哈希文件和第二哈希文件进行数据文件合并,并将合并后得到的多个key-value数据依次写入内存中预先构建的多个缓冲区中空闲的任一缓冲区。此外,响应于该缓冲区内写入的数据量大于第一阈值,存储引擎可以将该缓冲区内的key-value数据写入合并后的第三哈希文件中;以及,将合并后得到的剩余key-value数据依次写入多个缓冲区中空闲的其他缓冲区。如此,本申请首先在内存中预先构建了多个缓冲区,在文件合并过程中,合并得到的key-value数据可以先写入其中任一空闲的缓冲区,待该缓冲区被写满后,再将其中的key-value数据写入合并后的新哈希文件中,与此同时,文件合并得到的剩余key-value数据可以继续写入其他空闲的缓冲区内,以此类推,可以使得数据合并过程与合并后数据写入文件的过程形成二级流水线,避免文件写入阻塞原本的合并过程,极大程度上提升了整体的文件合并效率。
本文档来自技高网...【技术保护点】
1.一种基于LSM树的文件合并方法,其特征在于,所述LSM树包括多个存储层,每个存储层中存储了多个哈希文件,每个哈希文件中包含若干个key-value数据;所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述对所述多个存储层中待合并的第一哈希文件和第二哈希文件进行文件合并,包括:
3.根据权利要求2所述的方法,其特征在于,每个哈希文件中还包含与若干个key-value数据中的key分别对应的哈希值;所述将所述N个key-value数据和所述M个key-value数据进行合并,包括:
4.根据权利要求3所述的方法,其特征在于,所述根据所述N个哈希值和所述M个哈希值,确定与合并后的所述第三哈希文件对应的完美哈希索引参数,包括:
5.根据权利要求4所述的方法,其特征在于,所述响应于所述N个key-value数据中的第一key-value数据与M个key-value数据中的第二key-value数据所对应的完美哈希槽位相同,将所述第一key-value数据与所述第二key-value数据进行合并,包括:
6.根据权利要
7.根据权利要求2所述的方法,其特征在于,每个哈希文件中包括按序排列的多个数据片段,每个数据片段存储了该哈希文件中的部分key-value数据;所述获取所述多个存储层中待合并的第一哈希文件中包含的N个key-value数据,以及待合并的第二哈希文件中包含的M个key-value数据,包括:
8.根据权利要求1-7任意一项所述的方法,其特征在于,所述响应于该缓冲区内存储的数据量大于第一阈值,将该缓冲区内的key-value数据写入合并后的第三哈希文件中,包括:
9.一种基于LSM树的文件合并装置,其特征在于,所述LSM树包括多个存储层,每个存储层中分别存储了多个哈希文件,每个哈希文件中包含若干个key-value数据;所述装置包括:
10.一种计算机设备,其特征在于,包括:存储器和处理器;所述存储器上存储有可由所述处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行如权利要求1至8任意一项所述的方法。
11.一种计算机可读存储介质,其特征在于,其上存储有计算机程序/指令,所述计算机程序/指令被处理器执行时实现如权利要求1至8任意一项所述的方法。
12.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现如权利要求1至8任意一项所述的方法。
...【技术特征摘要】
1.一种基于lsm树的文件合并方法,其特征在于,所述lsm树包括多个存储层,每个存储层中存储了多个哈希文件,每个哈希文件中包含若干个key-value数据;所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述对所述多个存储层中待合并的第一哈希文件和第二哈希文件进行文件合并,包括:
3.根据权利要求2所述的方法,其特征在于,每个哈希文件中还包含与若干个key-value数据中的key分别对应的哈希值;所述将所述n个key-value数据和所述m个key-value数据进行合并,包括:
4.根据权利要求3所述的方法,其特征在于,所述根据所述n个哈希值和所述m个哈希值,确定与合并后的所述第三哈希文件对应的完美哈希索引参数,包括:
5.根据权利要求4所述的方法,其特征在于,所述响应于所述n个key-value数据中的第一key-value数据与m个key-value数据中的第二key-value数据所对应的完美哈希槽位相同,将所述第一key-value数据与所述第二key-value数据进行合并,包括:
6.根据权利要求5所述的方法,其特征在于,所述内存对象为数组,与所述数组对应的存储空间中包含分别与不同的完美哈希槽位对应的多个存储块。
7.根据权利要求2所述的方...
【专利技术属性】
技术研发人员:黄华,王伟生,覃博,
申请(专利权)人:支付宝杭州信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。