CN114780530A - 基于lsm树键值分离的时序数据存储方法及系统 - Google Patents
基于lsm树键值分离的时序数据存储方法及系统 Download PDFInfo
- Publication number
- CN114780530A CN114780530A CN202210486592.7A CN202210486592A CN114780530A CN 114780530 A CN114780530 A CN 114780530A CN 202210486592 A CN202210486592 A CN 202210486592A CN 114780530 A CN114780530 A CN 114780530A
- Authority
- CN
- China
- Prior art keywords
- key value
- index
- key
- deletion
- prefix
- 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.)
- Pending
Links
- 238000013500 data storage Methods 0.000 title claims abstract description 37
- 238000000926 separation method Methods 0.000 title claims abstract description 36
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000012217 deletion Methods 0.000 claims abstract description 104
- 230000037430 deletion Effects 0.000 claims abstract description 104
- 238000004140 cleaning Methods 0.000 claims abstract description 23
- 230000000717 retained effect Effects 0.000 claims description 2
- 230000002123 temporal effect Effects 0.000 claims 2
- 239000003550 marker Substances 0.000 claims 1
- 238000005204 segregation Methods 0.000 claims 1
- 230000006835 compression Effects 0.000 abstract description 11
- 238000007906 compression Methods 0.000 abstract description 11
- 238000009825 accumulation Methods 0.000 abstract description 4
- 230000003321 amplification Effects 0.000 abstract description 4
- 238000001514 detection method Methods 0.000 abstract description 4
- 238000003199 nucleic acid amplification method Methods 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 9
- 238000012163 sequencing technique Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
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/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2477—Temporal data queries
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开基于LSM树键值分离的时序数据存储方法及系统,涉及数据存储技术领域;利用键值分开存储的方式,将键存储到基于LSM树的有序索引中,将值存储到基于顺序添加到键值日志文件中,实现了快速范围查询的功能,解决现有键值存储系统读、写操作延迟高,数据量较大时产生的读、写以及空间放大等问题,同时使用基于探测的压缩算法高效清理LSM树中的过期索引,避免现有系统中LSM树压缩效率低导致索引累积而引发的各种性能问题,并根据构建的全量前缀删除统计表,利用表中索引键的前缀和元数据中定义的删除时间能够在键值日志文件清理垃圾数据时减少对有序索引的随机查询,解决现有存储系统垃圾数据清理效率低下等问题且不消耗更多资源。
Description
技术领域
本发明公开方法及系统,涉及数据存储技术领域,具体地说是基于LSM树键值分离的时序数据存储方法及系统。
背景技术
在物联网领域,时序数据具有采集频率快、数据量大、结构化等特点。在物联网系统中采集的时序数据通常又具有多个属性,而时序数据存储系统需要能够根据用户的各种查询需求快速的完成数据的查找。
目前可以使用LSM树作为基础的数据存储结构。由于索引与数据分开存储,过期索引的清理可以在LSM树的压缩中完成,但LSM树的压缩算法存在缺陷使得LSM树容易过度膨胀,虽然后续版本中LSM树的压缩算法得到改进,但依旧容易积累大量的过期索引,导致查询性能大幅下降。同时分布式数据库中过期数据的清理需要借助索引,进一步导致清理效率低下,并且系统长时间运行产生较多的垃圾数据,占用了大量磁盘空间。
发明内容
本发明针对现有技术的问题,提供基于LSM树键值分离的时序数据存储方法及系统,本发明提出的具体方案是:
基于LSM树键值分离的时序数据存储方法,基于LSM树键值分离方式,根据写请求将分布式数据库写入的键值数据封装成键值条目,所述键值条目包含索引键和元数据,所述元数据包含时间戳和标签,
根据所述元数据中标签判断所述键值条目是否为索引键的删除标记,若是则将索引键的前缀和元数据中定义的删除时间构成一对键值,放入全量前缀删除统计表,将所述键值条目写入到键值存储日志,并利用所述索引键、所述元数据以及所述键值条目在键值存储日志中的地址构造索引条目,将索引条目写入到跳表的排序字符串表中,相邻层跳表间根据排序字符串表的重合数据进行合并,判断相邻层跳表中层级较小的跳表的排序字符串表所存储的索引条目是否存在删除标记,并判断层级较大的跳表是否为非空的最深层,若均为是则丢弃所述索引条目;
根据读请求中索引键与时间戳,查询全量前缀删除统计表,判断时间戳对应的索引键是否被删除,若未被删除则查找索引条目,根据查找到的索引条目按照读请求判断是否返回键值条目,
根据清理请求,遍历最旧的键值存储日志的所有键值条目,根据全量前缀删除统计表记录的索引键的前缀和删除时间,判断所述最旧的键值存储日志是否需要保留,根据判断结果清理键值存储日志或将键值存储日志重新写入分布式数据库。
进一步,所述的基于LSM树键值分离的时序数据存储方法中所述判断相邻层跳表中层级较小的跳表的排序字符串表所存储的索引条目是否存在删除标记,若否则保留所述索引条目,将所述索引条目写入新的排序字符串表,
若是则判断层级较大的跳表是否为非空的最深层,若否则保留所述索引条目,将所述索引条目写入新的排序字符串表。
进一步,所述的基于LSM树键值分离的时序数据存储方法中将索引键的前缀和删除时间构成的键值对放入全量前缀删除统计表,包括:
将索引键的前缀和删除时间构成的键值对,写入前缀删除统计表,
并根据写请求将全部键值条目写入到键值存储日志后,将前缀删除统计表与全量前缀删除统计表进行合并。
进一步,所述的基于LSM树键值分离的时序数据存储方法中所述查询全量前缀删除统计表,判断时间戳对应的索引键是否被删除,包括:
根据全量前缀删除统计表,确认时间戳对应的索引键已经被删除,则返回空给上层应用,
根据全量前缀删除统计表,时间戳对应的索引键未被删除则在存储索引条目的跳表中查找索引条目。
进一步,所述的基于LSM树键值分离的时序数据存储方法中所述判断所述最旧的键值存储日志是否需要保留,包括:
根据索引键的前缀和删除时间,确认所述最旧的键值存储日志不需要保留,则清理键值存储日志,
根据索引键的前缀和删除时间,确认所述最旧的键值存储日志需要保留,则将键值存储日志重新写入分布式数据库。
本发明还提供基于LSM树键值分离的时序数据存储系统,包括前置统计模块、键值存储模块和有序索引模块,
键值存储模块基于LSM树键值分离方式,根据写请求将分布式数据库写入的键值数据封装成键值条目,所述键值条目包含索引键和元数据,所述元数据包含时间戳和标签,
前置统计模块根据所述元数据中标签判断所述键值条目是否为索引键的删除标记,若是则将索引键的前缀和元数据中定义的删除时间构成一对键值,放入全量前缀删除统计表,键值存储模块将所述键值条目写入到键值存储日志,
有序索引模块利用所述索引键、所述元数据以及所述键值条目在键值存储日志中的地址构造索引条目,将索引条目写入到跳表的排序字符串表中,相邻层跳表间根据排序字符串表的重合数据进行合并,判断相邻层跳表中层级较小的跳表的排序字符串表所存储的索引条目是否存在删除标记,并判断层级较大的跳表是否为非空的最深层,若均为是则丢弃所述索引条目;
前置统计模块根据读请求中索引键与时间戳,查询全量前缀删除统计表,判断时间戳对应的索引键是否被删除,若未被删除则查找索引条目,根据查找到的索引条目按照读请求判断是否返回键值条目,
根据清理请求,遍历最旧的键值存储日志的所有键值条目,根据全量前缀删除统计表记录的索引键的前缀和删除时间,判断所述最旧的键值存储日志是否需要保留,根据判断结果键值存储模块清理键值存储日志或将键值存储日志重新写入分布式数据库。
进一步,所述的基于LSM树键值分离的时序数据存储系统中所述有序索引模块判断相邻层跳表中层级较小的跳表的排序字符串表所存储的索引条目是否存在删除标记,若否则保留所述索引条目,将所述索引条目写入新的排序字符串表,
若是则判断层级较大的跳表是否为非空的最深层,若否则保留所述索引条目,将所述索引条目写入新的排序字符串表。
进一步,所述的基于LSM树键值分离的时序数据存储系统中前置统计模块将索引键的前缀和删除时间构成的键值对放入全量前缀删除统计表,包括:
将索引键的前缀和删除时间构成的键值对,写入前缀删除统计表,
并根据写请求将全部键值条目写入到键值存储日志后,将前缀删除统计表与全量前缀删除统计表进行合并。
进一步,所述的基于LSM树键值分离的时序数据存储系统中所述前置统计模块查询全量前缀删除统计表,判断时间戳对应的索引键是否被删除,包括:
根据全量前缀删除统计表,确认时间戳对应的索引键已经被删除,则返回空给上层应用,
根据全量前缀删除统计表,时间戳对应的索引键未被删除则在存储索引条目的跳表中查找索引条目。
进一步,所述的基于LSM树键值分离的时序数据存储系统中前置统计模块判断所述最旧的键值存储日志是否需要保留,包括:
根据索引键的前缀和删除时间,确认所述最旧的键值存储日志不需要保留,则键值存储模块清理键值存储日志,
根据索引键的前缀和删除时间,确认所述最旧的键值存储日志需要保留,则键值存储模块将键值存储日志重新写入分布式数据库。
本发明的有益之处是:
本发明提供基于LSM树键值分离的时序数据存储方法,实现了分布式数据库系统的存储优化。利用键值分开存储的方式,将键存储到基于LSM树的有序索引中,将值(数据)存储到基于顺序添加到键值日志文件中有序索引实现了快速范围查询的功能,顺序添加实现了随机写到顺序写的转变,解决现有键值存储系统读、写操作延迟高,数据量较大时产生的读、写以及空间放大等问题,同时使用基于探测的压缩算法能够高效地将LSM树中的过期索引快速清理掉,解决现有系统中LSM树压缩效率低导致索引累积而引发的各种性能问题,并根据构建的全量前缀删除统计表,利用表中索引键的前缀和元数据中定义的删除时间能够在键值日志文件清理垃圾数据时减少对有序索引的随机查询,解决现有存储系统垃圾数据清理效率低下的问题并且不会消耗更多的资源。
附图说明
图1是利用本发明进行数据写入的流程示意图。
图2是利用本发明进行数据存储的方式示意图。
图3是本发明系统数据读取流程示意图。
图4是利用本发明进行索引条目数据合并流程示意图。
图5是本发明中跳表的数据合并形式示意图。
图6是利用本发明进行数据清理流程示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
本发明方法基于LSM树键值分离的时序数据存储方法,基于LSM树键值分离方式,根据写请求将分布式数据库写入的键值数据封装成键值条目,所述键值条目包含索引键和元数据,所述元数据包含时间戳和标签,
根据所述元数据中标签判断所述键值条目是否为索引键的删除标记,若是则将索引键的前缀和元数据中定义的删除时间构成一对键值,放入全量前缀删除统计表,将所述键值条目写入到键值存储日志,并利用所述索引键、所述元数据以及所述键值条目在键值存储日志中的地址构造索引条目,将索引条目写入到跳表的排序字符串表中,相邻层跳表间根据排序字符串表的重合数据进行合并,判断相邻层跳表中层级较小的跳表的排序字符串表所存储的索引条目是否存在删除标记,并判断层级较大的跳表是否为非空的最深层,若均为是则丢弃所述索引条目;
根据读请求中索引键与时间戳,查询全量前缀删除统计表,判断时间戳对应的索引键是否被删除,若未被删除则查找索引条目,根据查找到的索引条目按照读请求判断是否返回键值条目,
根据清理请求,遍历最旧的键值存储日志的所有键值条目,根据全量前缀删除统计表记录的索引键的前缀和删除时间,判断所述最旧的键值存储日志是否需要保留,根据判断结果清理键值存储日志或将键值存储日志重新写入分布式数据库。
本发明方法利用键值分开存储的方式,将键存储到基于LSM树的有序索引中,将值存储到基于顺序添加到键值日志文件中,实现了快速范围查询的功能,解决现有键值存储系统读、写操作延迟高,数据量较大时产生的读、写以及空间放大等问题,同时使用基于探测的压缩算法高效清理LSM树中的过期索引,避免现有系统中LSM树压缩效率低导致索引累积而引发的各种性能问题,并根据构建的全量前缀删除统计表,利用表中索引键的前缀和元数据中定义的删除时间能够在键值日志文件清理垃圾数据时减少对有序索引的随机查询,解决现有存储系统垃圾数据清理效率低下等问题且不消耗更多资源。
具体应用中,在本发明方法的一些实施例中,进行基于LSM树键值分离的时序数据存储时,参考图1写入流程,上层应用通过接口层将写请求发到键值存储的数据库系统,通过数据库系统将写入的键值数据封装成键值条目,该键值条目中包含索引键、索引值以及元数据,元数据中包含时间戳、标签以及其他用户自定义的属性,通过数据库系统根据键值条目元数据中标签,判断该条目是否为索引键的删除标记。如果是删除标记,需要将该键值条目中索引键的前缀以及元数据中用户定义的删除时间点取出构成一对键值,写入到全量前缀删除统计表,当全量前缀删除统计表中的写入或更新操作达到设定阈值,将整个全量前缀删除统计表进行持久化存储,
键值条目写入到键值存储日志后,利用索引键、元数据以及键值条目在键值存储日志中的地址构造索引条目,再将索引条目写入到跳表中。
进一步地,可以将索引键的前缀以及元数据中用户定义的删除时间点构成的键值对,写入到字典结构的前缀删除统计表中,当此次写入操作包含的全部键值条目成功以追加的方式写入到键值存储日志后,随即将对应的前缀删除统计表发送到异步处理的队列中,由线程取出前缀删除统计表与全量前缀删除统计表进行合并,当全量前缀删除统计表中的写入或更新操作达到设定阈值,将整个全量前缀删除统计表进行持久化存储。
进一步地,将索引条目写入到跳表中,可以当跳表超过设定的大小时,再转变为只读跳表;当内存中的只读跳表超过了设定数量,将只读跳表中的数据按照字典序写入到0层跳表的排序字符串表中;当0层跳表的排序字符串表超过设定数量后,将0层的多个排序字符串表合并生成更大的排序字符串表写入到1层跳表并进行落盘。同理,当1层跳表的排序字符串表超过设定大小后,将1层跳表的多个排序字符串表合并生成更大的排序字符串表写入到2层并进行落盘,更高层的合并操作与之类似。只有0层跳表的排序字符串表之间的数据会有重叠,1层或更高层的同层排序字符串表之间的数据不会有重叠。
上述涉及到的键值存储与索引条目存储的结构如图2所示。无论是键值日志文件的落盘还是索引条目文件的落盘都会被记录并同步落盘,避免因故障宕机引起数据丢失。
进一步地,键值存储时通过数据库系统进行索引条目的数据合并时,流程如图4和图5,其中0层的排序字符串表的默认数量为5,0层不限制大小,1层默认大小为64MB,之后每层扩大10倍,可以设置最大容量超过6TB,数据合并按照层来进行,在合并开始前先计算各层中排序字符串表总的实际大小与各层额定大小的比值,比值超过1的层参与合并。首先从下一层(如2层)中选取一个与当前层中各表重合度最高的排序字符串表记为下层表,再从当前层(如1层)中选取出所有与下层表重叠的排序字符串表记为上层表,然后利用归并排序将上层表和下层表进行合并,此过程中保留每条索引键对应的最新版本的键值条目,如果合并过程中发现上层表中存在索引条目有删除标记,且下层表所在层级的更高层级上不存在排序字符串表,则丢弃该索引条目。如通过上述合并流程能够高效的清理已删除的索引数据。
基于LSM树键值分离的时序数据存储时,参考图3的读取流程,上层应用通过接口层将读请求发到键值存储的数据库系统,通过数据库系统根据读请求中的索引键与时间戳,在全局前缀删除表中进行查询,如果判断时间戳对应索引键已经被删除,则直接返回空给上层应用;如果判断时间戳对应索引键未被删除,则进行索引条目查找。在内存中的跳表中进行索引条目查找,如果在跳表中找到则直接返回给上层应用,如果在跳表中没有找到,则继续在0层的排序字符串表中进行查找,以此类推直到找到待查询的索引条目。找到索引条目后,根据读请求的详细内容判断是否需要返回键值条目,如果需要则根据索引条目中地址到对应的键值日志文件中读取键值条目,读取成功后将数据返回。
基于LSM树键值分离的时序数据存储时,参考图6的数据清理流程,上层应用通过接口层将清理请求发到键值存储的数据库系统。通过数据库系统首先拷贝全量前缀删除统计表,然后找到文件编号最小(最旧)的键值日志文件,依次遍历文件中的所有键值条目,根据全量前缀删除统计表中所记录表的前缀以及对应的删除时间戳,判断日志条目是否需要保留,若不需要则直接跳过,若需要则重新执行写入流程。另外,键值日志文件序号是全局递增,并且不会被复用。键值日志文件清理完毕后可以将操作过程与结果记录进行持久化存储,避免发生数据丢失。
本发明还提供基于LSM树键值分离的时序数据存储装置,包括前置统计模块、键值存储模块和有序索引模块,
键值存储模块基于LSM树键值分离方式,根据写请求将分布式数据库写入的键值数据封装成键值条目,所述键值条目包含索引键和元数据,所述元数据包含时间戳和标签,
前置统计模块根据所述元数据中标签判断所述键值条目是否为索引键的删除标记,若是则将索引键的前缀和元数据中定义的删除时间构成一对键值,放入全量前缀删除统计表,键值存储模块将所述键值条目写入到键值存储日志,
有序索引模块利用所述索引键、所述元数据以及所述键值条目在键值存储日志中的地址构造索引条目,将索引条目写入到跳表的排序字符串表中,相邻层跳表间根据排序字符串表的重合数据进行合并,判断相邻层跳表中层级较小的跳表的排序字符串表所存储的索引条目是否存在删除标记,并判断层级较大的跳表是否为非空的最深层,若均为是则丢弃所述索引条目;
前置统计模块根据读请求中索引键与时间戳,查询全量前缀删除统计表,判断时间戳对应的索引键是否被删除,若未被删除则查找索引条目,根据查找到的索引条目按照读请求判断是否返回键值条目,
根据清理请求,遍历最旧的键值存储日志的所有键值条目,根据全量前缀删除统计表记录的索引键的前缀和删除时间,判断所述最旧的键值存储日志是否需要保留,根据判断结果键值存储模块清理键值存储日志或将键值存储日志重新写入。
上述系统内的各模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
同样地,本发明系统实现了分布式数据库系统的存储优化。利用键值分开存储的方式,将键存储到基于LSM树的有序索引中,将值(数据)存储到基于顺序添加到键值日志文件中有序索引实现了快速范围查询的功能,顺序添加实现了随机写到顺序写的转变,解决现有键值存储系统读、写操作延迟高,数据量较大时产生的读、写以及空间放大等问题,同时使用基于探测的压缩算法能够高效地将LSM树中的过期索引快速清理掉,解决现有系统中LSM树压缩效率低导致索引累积而引发的各种性能问题,并根据构建的全量前缀删除统计表,利用表中索引键的前缀和元数据中定义的删除时间能够在键值日志文件清理垃圾数据时减少对有序索引的随机查询,解决现有存储系统垃圾数据清理效率低下的问题并且不会消耗更多的资源。
需要说明的是,上述各流程和各系统结构中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。
Claims (10)
1.基于LSM树键值分离的时序数据存储方法,其特征是基于LSM树键值分离方式,根据写请求通过分布式数据库将写入的键值数据封装成键值条目,所述键值条目包含索引键和元数据,所述元数据包含时间戳和标签,
根据所述元数据中标签判断所述键值条目是否存在索引键的删除标记,若是则将索引键的前缀和所述元数据中定义的删除时间构成一对键值,放入全量前缀删除统计表,
将所述键值条目写入到键值存储日志,利用所述索引键、所述元数据以及所述键值条目在键值存储日志中的地址构造索引条目,将索引条目写入到跳表的排序字符串表中,相邻层跳表间根据排序字符串表的重合数据进行合并,判断相邻层跳表中层级较小的跳表的排序字符串表所存储的索引条目是否存在删除标记,并判断层级较大的跳表是否为非空的最深层,若均为是则丢弃所述索引条目;
根据读请求中索引键与时间戳,查询全量前缀删除统计表,判断读请求中时间戳对应的索引键是否被删除,若未被删除则查找索引条目,根据查找到的索引条目按照读请求判断是否返回键值条目;
根据清理请求,遍历最旧的键值存储日志的所有键值条目,根据全量前缀删除统计表记录的索引键的前缀和删除时间,判断所述最旧的键值存储日志是否需要保留,根据判断结果清理键值存储日志或将键值存储日志重新写入分布式数据库。
2.根据权利要求1所述的基于LSM树键值分离的时序数据存储方法,其特征是所述判断相邻层跳表中层级较小的跳表的排序字符串表所存储的索引条目是否存在删除标记,若否则保留所述索引条目,将所述索引条目写入新的排序字符串表,
若是则判断层级较大的跳表是否为非空的最深层,若否则保留所述索引条目,将所述索引条目写入新的排序字符串表。
3.根据权利要求1所述的基于LSM树键值分离的时序数据存储方法,其特征是将索引键的前缀和删除时间构成的键值对放入全量前缀删除统计表,包括:
将索引键的前缀和删除时间构成的键值对,写入前缀删除统计表,
并根据写请求将全部键值条目写入到键值存储日志后,将前缀删除统计表与全量前缀删除统计表进行合并。
4.根据权利要求1所述的基于LSM树键值分离的时序数据存储方法,其特征是所述查询全量前缀删除统计表,判断时间戳对应的索引键是否被删除,包括:
根据全量前缀删除统计表,确认时间戳对应的索引键已经被删除,则返回空给上层应用,
根据全量前缀删除统计表,时间戳对应的索引键未被删除则在存储索引条目的跳表中查找索引条目。
5.根据权利要求1所述的基于LSM树键值分离的时序数据存储方法,其特征是所述判断所述最旧的键值存储日志是否需要保留,包括:
根据索引键的前缀和删除时间,确认所述最旧的键值存储日志不需要保留,则清理键值存储日志,
根据索引键的前缀和删除时间,确认所述最旧的键值存储日志需要保留,则将键值存储日志重新写入分布式数据库。
6.基于LSM树键值分离的时序数据存储系统,其特征是包括前置统计模块、键值存储模块和有序索引模块,
键值存储模块基于LSM树键值分离方式,根据写请求将分布式数据库写入的键值数据封装成键值条目,所述键值条目包含索引键和元数据,所述元数据包含时间戳和标签,
前置统计模块根据所述元数据中标签判断所述键值条目是否为索引键的删除标记,若是则将索引键的前缀和元数据中定义的删除时间构成一对键值,放入全量前缀删除统计表,键值存储模块将所述键值条目写入到键值存储日志,
有序索引模块利用所述索引键、所述元数据以及所述键值条目在键值存储日志中的地址构造索引条目,将索引条目写入到跳表的排序字符串表中,相邻层跳表间根据排序字符串表的重合数据进行合并,判断相邻层跳表中层级较小的跳表的排序字符串表所存储的索引条目是否存在删除标记,并判断层级较大的跳表是否为非空的最深层,若均为是则丢弃所述索引条目;
前置统计模块根据读请求中索引键与时间戳,查询全量前缀删除统计表,判断时间戳对应的索引键是否被删除,若未被删除则查找索引条目,根据查找到的索引条目按照读请求判断是否返回键值条目,
根据清理请求,遍历最旧的键值存储日志的所有键值条目,根据全量前缀删除统计表记录的索引键的前缀和删除时间,判断所述最旧的键值存储日志是否需要保留,根据判断结果键值存储模块清理键值存储日志或将键值存储日志重新写入分布式数据库。
7.根据权利要求6所述的基于LSM树键值分离的时序数据存储系统,其特征是所述有序索引模块判断相邻层跳表中层级较小的跳表的排序字符串表所存储的索引条目是否存在删除标记,若否则保留所述索引条目,将所述索引条目写入新的排序字符串表,
若是则判断层级较大的跳表是否为非空的最深层,若否则保留所述索引条目,将所述索引条目写入新的排序字符串表。
8.根据权利要求6所述的基于LSM树键值分离的时序数据存储系统,其特征是前置统计模块将索引键的前缀和删除时间构成的键值对放入全量前缀删除统计表,包括:
将索引键的前缀和删除时间构成的键值对,写入前缀删除统计表,
并根据写请求将全部键值条目写入到键值存储日志后,将前缀删除统计表与全量前缀删除统计表进行合并。
9.根据权利要求6所述的基于LSM树键值分离的时序数据存储系统,其特征是所述前置统计模块查询全量前缀删除统计表,判断时间戳对应的索引键是否被删除,包括:
根据全量前缀删除统计表,确认时间戳对应的索引键已经被删除,则返回空给上层应用,
根据全量前缀删除统计表,时间戳对应的索引键未被删除则在存储索引条目的跳表中查找索引条目。
10.根据权利要求6所述的基于LSM树键值分离的时序数据存储系统,其特征是前置统计模块判断所述最旧的键值存储日志是否需要保留,包括:
根据索引键的前缀和删除时间,确认所述最旧的键值存储日志不需要保留,则键值存储模块清理键值存储日志,
根据索引键的前缀和删除时间,确认所述最旧的键值存储日志需要保留,则键值存储模块将键值存储日志重新写入分布式数据库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210486592.7A CN114780530A (zh) | 2022-05-06 | 2022-05-06 | 基于lsm树键值分离的时序数据存储方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210486592.7A CN114780530A (zh) | 2022-05-06 | 2022-05-06 | 基于lsm树键值分离的时序数据存储方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114780530A true CN114780530A (zh) | 2022-07-22 |
Family
ID=82435913
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210486592.7A Pending CN114780530A (zh) | 2022-05-06 | 2022-05-06 | 基于lsm树键值分离的时序数据存储方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114780530A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115098045A (zh) * | 2022-08-23 | 2022-09-23 | 成都止观互娱科技有限公司 | 一种数据存储系统及网络数据读取和写入方法 |
CN116414839A (zh) * | 2023-04-14 | 2023-07-11 | 中国科学院软件研究所 | 一种基于LSM_Tree的面向SSD的时序数据存储方法和系统 |
CN117131012A (zh) * | 2023-08-28 | 2023-11-28 | 中国科学院软件研究所 | 一种可持久化和可扩展的轻量级多版本有序键值存储系统 |
CN117390031A (zh) * | 2023-12-11 | 2024-01-12 | 武汉纺织大学 | 一种基于lsm树的存储系统中二级索引有效性的验证方法 |
-
2022
- 2022-05-06 CN CN202210486592.7A patent/CN114780530A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115098045A (zh) * | 2022-08-23 | 2022-09-23 | 成都止观互娱科技有限公司 | 一种数据存储系统及网络数据读取和写入方法 |
CN116414839A (zh) * | 2023-04-14 | 2023-07-11 | 中国科学院软件研究所 | 一种基于LSM_Tree的面向SSD的时序数据存储方法和系统 |
CN117131012A (zh) * | 2023-08-28 | 2023-11-28 | 中国科学院软件研究所 | 一种可持久化和可扩展的轻量级多版本有序键值存储系统 |
CN117131012B (zh) * | 2023-08-28 | 2024-04-16 | 中国科学院软件研究所 | 一种可持久化和可扩展的轻量级多版本有序键值存储系统 |
CN117390031A (zh) * | 2023-12-11 | 2024-01-12 | 武汉纺织大学 | 一种基于lsm树的存储系统中二级索引有效性的验证方法 |
CN117390031B (zh) * | 2023-12-11 | 2024-03-08 | 武汉纺织大学 | 一种基于lsm树的存储系统中二级索引有效性的验证方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI702506B (zh) | 用於合併樹廢棄項目指標之系統、機器可讀媒體及機器實施之方法 | |
CN114780530A (zh) | 基于lsm树键值分离的时序数据存储方法及系统 | |
TWI719281B (zh) | 用於串流選擇之系統、機器可讀媒體、及機器實施之方法 | |
TWI702503B (zh) | 實施用於維護操作之合併樹修改之系統、方法及電腦可讀媒體 | |
CN107491523B (zh) | 存储数据对象的方法及装置 | |
CN105912687B (zh) | 海量分布式数据库存储单元 | |
JP5996088B2 (ja) | 暗号ハッシュ・データベース | |
TW201913416A (zh) | 索引鍵值結構樹資料庫 | |
US20040205044A1 (en) | Method for storing inverted index, method for on-line updating the same and inverted index mechanism | |
US20160350302A1 (en) | Dynamically splitting a range of a node in a distributed hash table | |
CN112131140B (zh) | 基于ssd的支持高效存储空间管理的键值分离存储方法 | |
TWI549009B (zh) | 資料庫管理方法、資料庫管理系統,以及資料庫樹狀結構 | |
CN110888837B (zh) | 对象存储小文件归并方法及装置 | |
KR20180046377A (ko) | 압축된 포워드 맵을 가지는 저장소 티어 | |
KR101656750B1 (ko) | 인덱스정보를 생성하는 데이터베이스의 아카이빙 방법 및 장치, 인덱스정보를 포함하는 아카이빙된 데이터베이스의 검색 방법 및 장치 | |
CN114610708A (zh) | 一种向量数据处理方法及装置、电子设备及存储介质 | |
CN113553476A (zh) | 一种利用哈希减少写停顿的键值存储方法 | |
CN105183391B (zh) | 一种分布式数据平台下数据存储的方法和装置 | |
CN113867627B (zh) | 一种存储系统性能优化方法及系统 | |
CN109299143B (zh) | 基于Redis缓存的数据互操作测试知识库的知识快速索引方法 | |
CN114691041A (zh) | 键值存储系统、垃圾回收方法 | |
CN107133334B (zh) | 基于高带宽存储系统的数据同步方法 | |
CN116909939A (zh) | 基于lsm树的键值分离存储引擎垃圾回收方法、系统及设备 | |
Jensen et al. | Optimality in external memory hashing | |
CN113641681B (zh) | 一种空间自适应的海量数据查询方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20221128 Address after: Room 305-22, Building 2, No. 1158 Zhangdong Road and No. 1059 Dangui Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai, 200120 Applicant after: Shanghai Yunxi Technology Co.,Ltd. Address before: Building S02, 1036 Gaoxin Langchao Road, Jinan, Shandong 250100 Applicant before: Shandong Inspur Scientific Research Institute Co.,Ltd. |
|
TA01 | Transfer of patent application right |