CN110389942B - 一种无垃圾回收的键值分离存储方法和系统 - Google Patents
一种无垃圾回收的键值分离存储方法和系统 Download PDFInfo
- Publication number
- CN110389942B CN110389942B CN201910540348.2A CN201910540348A CN110389942B CN 110389942 B CN110389942 B CN 110389942B CN 201910540348 A CN201910540348 A CN 201910540348A CN 110389942 B CN110389942 B CN 110389942B
- Authority
- CN
- China
- Prior art keywords
- key
- data
- failure data
- key value
- offset address
- 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
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/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
-
- 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/221—Column-oriented storage; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种无垃圾回收的键值分离存储方法,属于计算机存储技术领域,解决现有键值分离键值存储系统在更新密集型工作负载下无法实现高性能的问题。本发明主要针对更新密集型工作负载,通过对失效数据的有效管理,实现就地更新,从而消除存储过程中的垃圾回收操作,避免键值存储系统中有效数据的频繁重写,减少键值存储系统的写放大。对于更新密集型工作负载,本发明首先采用键值分离的方法将数据存储在值存储管理区,并将数据中的键存储在LSM树中进行管理,接下来通过收集、管理和复用失效数据索引对失效数据实现就地更新、覆盖回收,去除垃圾回收过程,避免由于垃圾回收而产生的开销,提升键值存储系统的性能。
Description
技术领域
本发明属于计算机存储技术领域,更具体地,涉及一种无垃圾回收的键值分离存储方法和系统。
背景技术
基于日志结构合并树(Log-Structured Merge Tree,简称LSM树)的键值存储系统是面向写密集型应用的存储方案,其能提供较好的写性能。然而,LSM树在读写操作中会产生较高的写放大,当有更多的键值数据写入LSM树时,LSM树将进行频繁的数据合并操作,这样也会导致产生大量的额外I/O操作;此外,当这样的写放大达到50倍或以上时,对于键值存储系统的写性能和固态盘(Solid state disk,简称SSD)的耐久性都是不利的。
为了减少上述LSM树的数据合并操作所带来的开销,研究者们提出了键值分离思想,其具体是将值存储在仅支持追加写的循环日志中,而使用LSM树管理键和元数据(即循环日志中键值对所在的地址)。键值分离的主要目的是减小LSM树中数据规模的大小,同时保留LSM树的索引特性,以便实现高效的插入、更新和查询。
然而,上述基于键值分离的键值存储系统依然存在不可忽略的缺陷:当其被应用于更新密集型工作负载时,会产生较高的写放大和性能损失,其根本原因在于,当用于值存储的循环日志的大小超过阈值时,需要进行频繁的垃圾回收操作,以释放被更新或被删除的失效数据所占用的空间,而垃圾回收操作会导致大量的系统开销,并在更新密集型工作负载下产生接近于传统基于LSM树的键值存储方案键值存储系统的写放大倍数。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种无垃圾回收的键值分离存储方法和系统,其目的在于,解决现有基于键值分离的键值存储系统在应用于更新密集型工作负载时,会产生较高的写放大和性能损失的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种无垃圾回收的键值分离存储方法,包括以下步骤:
(1)获取键值对数据,并判断预先建立的失效数据队列中是否存在失效数据,如果是则进入步骤(6),否则进入步骤(2);
(2)将该键值对数据存储在磁盘的日志文件中;
(3)获取该键值对数据在日志文件中的偏移地址,将该偏移地址和该键值对数据中的键一起存储在LSM树中;
(4)判断LSM树中的相邻层之间是否发生了文件合并操作,如果是则进入步骤(5),否则返回步骤(1);
(5)获取文件合并操作过程中产生的失效数据,并将该失效数据存储在预先建立的失效数据队列中,其中该失效数据包括该失效数据的偏移地址、及其对应的键,过程结束;
(6)从失效数据队列中取出位于最头部的失效数据,将待写入键值对数据写入磁盘中该失效数据的偏移地址处,并将该偏移地址和该待写入键值对数据中的键一起存储在LSM树中,过程结束。
优选地,预先建立的失效数据队列用于存储LSM树的文件合并操作过程中产生的失效数据。
优选地,日志文件是值日志。
按照本发明的另一方面,提供了一种无垃圾回收的键值分离存储系统,包括:
第一模块,用于获取键值对数据,并判断预先建立的失效数据队列中是否存在失效数据,如果是则进入第六模块,否则进入第二模块;
第二模块,用于将该键值对数据存储在磁盘的日志文件中;
第三模块,用于获取该键值对数据在日志文件中的偏移地址,将该偏移地址和该键值对数据中的键一起存储在LSM树中;
第四模块,用于判断LSM树中的相邻层之间是否发生了文件合并操作,如果是则进入第五模块,否则返回第一模块;
第五模块,用于获取文件合并操作过程中产生的失效数据,并将该失效数据存储在预先建立的失效数据队列中,其中该失效数据包括该失效数据的偏移地址、及其对应的键,过程结束;
第六模块,用于从失效数据队列中取出位于最头部的失效数据,将待写入键值对数据写入磁盘中该失效数据的偏移地址处,并将该偏移地址和该待写入键值对数据中的键一起存储在LSM树中,过程结束。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
1、本发明能够解决现有基于键值分离的键值存储系统在应用于更新密集型工作负载时,仍然会产生较高的写放大和性能损失的技术问题:由于本发明采用了步骤(5)实现了失效地址的获取,并采用了步骤(6)以就地更新的方式实现键值存储系统中失效数据的覆盖回收,从而避免了有效数据在垃圾回收过程中被反复重写,以及日志文件中写放大现象的出现,并提升了键值存储系统的性能。
2、本发明通过步骤(6)实现了数据的就地更新,并通过步骤(2)实现了基于键值分离的写入操作,从而为键值存储系统提供了两条不同的写入途径,有效提升了键值存储系统的性能。
3、由于本发明没有在日志文件中设置预留空间,因此本发明的键值存储系统具有更大的可用存储空间。
附图说明
图1是本发明无垃圾回收的键值分离存储方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明主要涉及以下三方面的操作:
(1)获取失效索引
本发明需要收集的失效索引就来源于键存储管理模块的合并操作中。在LevelDB中,一条数据是否应该被丢弃用一个布尔类型的变量drop来标记,LevelDB只对那些没有被标记为drop的数据进行后续处理,而对于那标记了drop的数据直接删除。而在本发明中,LevelDB用来存储实际键值对数据的索引,所以,在LevelDB中存放的数据是键和键值对在Value Log中的偏移地址。在这个前提下,那些被标记为drop的数据就是失效数据索引,因此可以通过对这些被标记为drop的数据进行收集、分解等进一步处理,解析出其中的键和值,这里的值就是在Value Log中失效数据的地址信息。
(2)管理失效索引
失效索引的管理过程可以被抽象成生产者-消费者模型。其中生产者负责不断地收集失效数据,即失效的Value Log偏移地址,失效索引管理模块会对这些失效的偏移地址进行管理和维护;消费者负责不断地将失效数据的偏移地址提供给上层的写入逻辑模块,被成功使用后的失效索引会从失效索引管理模块中删除。生产者-消费者模型的一个优点是,生产者和消费者之间没有直接的耦合关系,不会直接互相调用,这样无论是生产者还是消费者发生变化,都不会直接对对方造成影响。把失效索引管理模块设计成生产者-消费者模型,可以有效的避免失效索引的收集和使用的相互耦合对系统性能造成的影响,而且使得失效索引收集和使用操作更加独立,让系统对于失效数据的处理能力达到了一种动态平衡。
(3)使用失效索引
失效索引管理模块通过收集管理LevelDB中在合并操作中产生的失效数据索引,即Value Log中失效数据的偏移地址,为前台的写操作提供了另一条新的写入途径。在键值分离系统的传统设计中,数据写入只有一种方式,当用户写入一条键值对数据时,这条写入的数据首先追加写入到Value Log中,然后将该键值对的key连同该键值对存放在ValueLog中的地址一起写入到LSM树中,删除键值对也只是从LSM树中删除,而不会修改ValueLog。也就是说,Value Log中的所有有效值在LSM树中都有对应的key,而Value Log中的其他无效的值将在后续的垃圾回收过程中被删除。因为本系统的目标就是去除垃圾回收这个过程,所以可以利用收集到的无效数据的索引直接定位到Value Log中失效数据的位置,直接以就地更新的方式将新数据写入,这样就避免了系统中较高的垃圾回收开销。
键值存储系统为了清晰阐述本发明,对本申请文件中出现的术语加以解释和说明:
写放大:从底层存储设备写的数据量与用户请求的数据量之间的比值。
键值分离:在基于LSM树的键值存储系统中,在合并过程中只对key进行排序,而value可以单独进行管理。
垃圾回收(Garbage collection,简称GC):在基于标准LSM树的键值存储系统中,当键值对被删除或更新时,系统不会立即回收失效数据,而是在之后的合并过程中进行处理。在键值分离以后,LSM树的合并操作只能维护LSM树中的数据,而无法对日志文件中的数据进行管理,也无法对其中的失效数据进行回收处理,因此,系统需要对日志文件中的失效数据提供额外的垃圾回收策略。
如图1所示,本发明无垃圾回收的键值分离存储方法包括以下步骤:
(1)获取键值对数据,并判断预先建立的失效数据队列中是否存在失效数据,如果是则进入步骤(6),否则进入步骤(2);
具体而言,预先建立的失效数据队列用于存储日志结构合并树(Log-StructuredMerge Tree,简称LSM树)的文件合并操作过程中产生的失效数据,
(2)将该键值对数据存储在磁盘的日志文件中;
具体而言,本发明中使用的日志文件,是值日志(Value Log),其是由Lanyue Lu等人在《WiscKey:Separating Keys from Values in SSD-Conscious Storage》一文中提出的,在此不再赘述。
(3)获取该键值对数据在日志文件中的偏移地址(Offset),将该偏移地址和该键值对数据中的键一起存储在LSM树中;
通过上述步骤(2)和(3),能够实现键值分离的过程,在相同的键值对数据大小的情况下,本发明的LSM树中存储的数据量相对于现有键值数据库中LSM树中存储的数据量大为减少。
(4)判断LSM树中的相邻层之间是否发生了文件合并操作,如果是则进入步骤(5),否则返回步骤(1);
(5)获取文件合并操作过程中产生的失效数据,并将该失效数据存储在预先建立的失效数据队列中,其中该失效数据包括该失效数据的偏移地址、及其对应的键,过程结束;
(6)从失效数据队列中取出位于最头部的失效数据,将待写入键值对数据写入磁盘中该失效数据的偏移地址处,并将该偏移地址和该待写入键值对数据中的键一起存储在LSM树中,过程结束。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种无垃圾回收的键值分离存储方法,其特征在于,包括以下步骤:
(1)获取键值对数据,并判断预先建立的失效数据队列中是否存在失效数据,如果是则进入步骤(6),否则进入步骤(2);
(2)将该键值对数据存储在磁盘的日志文件中;
(3)获取该键值对数据在日志文件中的偏移地址,将该偏移地址和该键值对数据中的键一起存储在LSM树中;
(4)判断LSM树中的相邻层之间是否发生了文件合并操作,如果是则进入步骤(5),否则返回步骤(1);
(5)获取文件合并操作过程中产生的失效数据,并将该失效数据存储在预先建立的失效数据队列中,其中该失效数据包括该失效数据的偏移地址、及其对应的键,过程结束;
(6)从失效数据队列中取出位于最头部的失效数据,将待写入键值对数据写入磁盘中该失效数据的偏移地址处,并将该偏移地址和该待写入键值对数据中的键一起存储在LSM树中,过程结束。
2.根据权利要求1所述的键值分离存储方法,其特征在于,预先建立的失效数据队列用于存储LSM树的文件合并操作过程中产生的失效数据。
3.根据权利要求1所述的键值分离存储方法,其特征在于,日志文件是值日志。
4.一种无垃圾回收的键值分离存储系统,其特征在于,包括:
第一模块,用于获取键值对数据,并判断预先建立的失效数据队列中是否存在失效数据,如果是则进入第六模块,否则进入第二模块;
第二模块,用于将该键值对数据存储在磁盘的日志文件中;
第三模块,用于获取该键值对数据在日志文件中的偏移地址,将该偏移地址和该键值对数据中的键一起存储在LSM树中;
第四模块,用于判断LSM树中的相邻层之间是否发生了文件合并操作,如果是则进入第五模块,否则返回第一模块;
第五模块,用于获取文件合并操作过程中产生的失效数据,并将该失效数据存储在预先建立的失效数据队列中,其中该失效数据包括该失效数据的偏移地址、及其对应的键,过程结束;
第六模块,用于从失效数据队列中取出位于最头部的失效数据,将待写入键值对数据写入磁盘中该失效数据的偏移地址处,并将该偏移地址和该待写入键值对数据中的键一起存储在LSM树中,过程结束。
5.根据权利要求4所述的键值分离存储系统,其特征在于,预先建立的失效数据队列用于存储LSM树的文件合并操作过程中产生的失效数据。
6.根据权利要求4所述的键值分离存储系统,其特征在于,日志文件是值日志。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910540348.2A CN110389942B (zh) | 2019-06-21 | 2019-06-21 | 一种无垃圾回收的键值分离存储方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910540348.2A CN110389942B (zh) | 2019-06-21 | 2019-06-21 | 一种无垃圾回收的键值分离存储方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110389942A CN110389942A (zh) | 2019-10-29 |
CN110389942B true CN110389942B (zh) | 2021-07-30 |
Family
ID=68285609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910540348.2A Active CN110389942B (zh) | 2019-06-21 | 2019-06-21 | 一种无垃圾回收的键值分离存储方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110389942B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110825748B (zh) * | 2019-11-05 | 2023-05-16 | 平凯星辰(北京)科技有限公司 | 利用差异化索引机制的高性能和易扩展的键值存储方法 |
CN111400312B (zh) * | 2020-02-25 | 2023-04-28 | 华南理工大学 | 一种基于改进lsm树的边缘存储数据库 |
CN111399777B (zh) * | 2020-03-16 | 2023-05-16 | 平凯星辰(北京)科技有限公司 | 一种基于数据值分类的差异化键值数据存储方法 |
CN113495847B (zh) * | 2020-04-04 | 2023-08-18 | 厦门网宿有限公司 | 一种存储空间回收方法、系统及计算机存储介质 |
CN113094372A (zh) * | 2021-04-16 | 2021-07-09 | 三星(中国)半导体有限公司 | 数据存取方法、数据存取控制装置及数据存取系统 |
CN113626431A (zh) * | 2021-07-28 | 2021-11-09 | 浪潮云信息技术股份公司 | 一种基于lsm树的延迟垃圾回收的键值分离存储方法及系统 |
CN113901273A (zh) * | 2021-09-07 | 2022-01-07 | 联想(北京)有限公司 | 一种数据处理方法及装置 |
CN114020707B (zh) * | 2022-01-06 | 2022-06-14 | 阿里云计算有限公司 | 存储空间回收方法、存储介质及程序产品 |
CN118069074B (zh) * | 2024-04-22 | 2024-06-21 | 联想凌拓科技有限公司 | 一种数据处理方法及装置、存储介质、计算机程序产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109033278A (zh) * | 2018-07-11 | 2018-12-18 | 江苏通付盾科技有限公司 | 数据处理方法、装置、电子设备及计算机存储介质 |
CN109271343A (zh) * | 2018-07-24 | 2019-01-25 | 华为技术有限公司 | 一种应用于键值存储系统中的数据合并方法和装置 |
US10204127B1 (en) * | 2011-12-31 | 2019-02-12 | Richard Michael Nemes | Methods and apparatus for information storage and retrieval using a caching technique with probe-limited open-address hashing |
-
2019
- 2019-06-21 CN CN201910540348.2A patent/CN110389942B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10204127B1 (en) * | 2011-12-31 | 2019-02-12 | Richard Michael Nemes | Methods and apparatus for information storage and retrieval using a caching technique with probe-limited open-address hashing |
CN109033278A (zh) * | 2018-07-11 | 2018-12-18 | 江苏通付盾科技有限公司 | 数据处理方法、装置、电子设备及计算机存储介质 |
CN109271343A (zh) * | 2018-07-24 | 2019-01-25 | 华为技术有限公司 | 一种应用于键值存储系统中的数据合并方法和装置 |
Non-Patent Citations (1)
Title |
---|
Key-Value型NoSQL本地存储系统研究;马文龙等;《计算机学报》;20170601;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110389942A (zh) | 2019-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110389942B (zh) | 一种无垃圾回收的键值分离存储方法和系统 | |
US11567921B2 (en) | Rowgroup consolidation with global delta accumulation and versioning in distributed systems | |
US9514211B2 (en) | High throughput data modifications using blind update operations | |
US10671594B2 (en) | Statement based migration for adaptively building and updating a column store database from a row store database based on query demands using disparate database systems | |
US7418544B2 (en) | Method and system for log structured relational database objects | |
CN110825748A (zh) | 利用差异化索引机制的高性能和易扩展的键值存储方法 | |
US9996557B2 (en) | Database storage system based on optical disk and method using the system | |
CN103294710A (zh) | 一种数据存取方法和装置 | |
CN104731921A (zh) | Hadoop分布式文件系统针对日志型小文件的存储和处理方法 | |
CN110309233A (zh) | 数据存储的方法、装置、服务器和存储介质 | |
CN105045850B (zh) | 云存储日志文件系统中垃圾数据回收方法 | |
US7225206B2 (en) | System and method for reorganizing stored data | |
CN112131140B (zh) | 基于ssd的支持高效存储空间管理的键值分离存储方法 | |
WO2023098316A1 (zh) | 一种图数据库的检索方法和装置 | |
US8108356B2 (en) | Method for recovering data in a storage system | |
TW201514734A (zh) | 資料庫管理方法、資料庫管理系統,以及資料庫樹狀結構 | |
CN114706836B (zh) | 一种基于机载嵌入式数据库的数据生命周期管理方法 | |
CN110659305B (zh) | 基于非易失存储系统的高性能关系型数据库服务系统 | |
CN109871338B (zh) | 一种数据存储方法、装置及计算机设备 | |
Doekemeijer et al. | Key-Value Stores on Flash Storage Devices: A Survey | |
US20160203197A1 (en) | Method and System for Automatic Management of Dynamically Allocated Memory in a Computing Unit | |
US20120317384A1 (en) | Data storage method | |
CN108664217A (zh) | 一种降低固态盘存储系统写性能抖动的缓存方法及系统 | |
CN115576956B (zh) | 一种数据处理方法、系统、设备以及存储介质 | |
JPS59220853A (ja) | デイスクキヤツシユシステム |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |