CN114138792A - 一种Key-value分离存储方法及系统 - Google Patents

一种Key-value分离存储方法及系统 Download PDF

Info

Publication number
CN114138792A
CN114138792A CN202111461856.5A CN202111461856A CN114138792A CN 114138792 A CN114138792 A CN 114138792A CN 202111461856 A CN202111461856 A CN 202111461856A CN 114138792 A CN114138792 A CN 114138792A
Authority
CN
China
Prior art keywords
key
value
node
data
storage method
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
Application number
CN202111461856.5A
Other languages
English (en)
Inventor
李刘鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Yunxi Technology Co ltd
Original Assignee
Inspur Cloud Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Cloud Information Technology Co Ltd filed Critical Inspur Cloud Information Technology Co Ltd
Priority to CN202111461856.5A priority Critical patent/CN114138792A/zh
Publication of CN114138792A publication Critical patent/CN114138792A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明特别涉及一种Key‑value分离存储方法及系统。该Key‑value分离存储方法及系统,将ART前缀树作为数据索引的基本数据结构,在每条数据的节点Node内部为key值和value值分别分配空间进行存储,并在节点Node内存储对应的SequenceNumber和ValueType,实现对Key‑value的分离,数据存储过程中不再进行编码,直接对key、SequenceNumber、ValueType和value进行存储与读取,进而降低IO吞吐量,增加CPU cache命中率,提升数据库的读写性能。该Key‑value分离存储方法及系统,数据读写操作时无需对相应信息进行解码操作,可以直接使用节点Node获取信息,减少了磁盘I/O消耗,降低了IO吞吐量,增加了CPU cache命中率,提升了数据库的读写性能。

Description

一种Key-value分离存储方法及系统
技术领域
本发明涉及数据存储管理技术领域,特别涉及一种Key-value分离存储方法及系统。
背景技术
在当前网络环境下,信息流转迅速,其中涉及大量文档、图片、语音、视频等的输入输出,广大用户群体对信息的写入与查询的性能提出了更高的要求。
RocksDB数据库是基于LevelDB开发的一款提供Key-value(键值)存储与读写功能的LSM-tree架构引擎,具有以下特点:
1)高效能
RocksDB使用日志结构化数据库引擎,完全用C++编写,以达到最高性能。密钥和值只是任意大小的字节流。
2)为快速存储进行了优化
RocksDB针对快速、低延迟的存储进行了优化,如闪存驱动器和高速磁盘驱动器。RocksDB充分利用了闪存或RAM提供的高读/写速率的潜力。
3)适应性强
RocksDB可以适应不同的工作负载。从MyRocks等数据库存储引擎到应用数据缓存再到嵌入式工作负载,RocksDB可以满足各种数据需求。
4)基本和高级数据库操作
RocksDB提供了基本的操作,如打开和关闭数据库,读写到更高级的操作,如合并和压实过滤器。
现有RocksDB数据库采用的数据存储方式是先将key、SequenceNumber(序号)、ValueType、value进行编码,再将编码后的数据存储在一整块分配好的内存中,读取Key-value信息时获取整块内存,然后根据首地址依次进行解码操作以得到相应数据。该方法在一定程度上会降低数据的写入与读取性能。
在进行数据迁移过程中,很多时候需要比较key值,因此需要将经过编码存储的数据解析出来,但是大量数据并发处理时频繁进行编码解码必然会影响IO性能。
为了保障RocksDB数据库的读写性能,本发明提出了一种Key-value分离存储方法及系统。
发明内容
本发明为了弥补现有技术的缺陷,提供了一种简单高效的Key-value分离存储方法及系统。
本发明是通过如下技术方案实现的:
一种Key-value分离存储方法,其特征在于:将ART前缀树作为数据索引的基本数据结构,在每条数据的节点Node内部为key值和value值分别分配空间进行存储,并在节点Node内存储对应的SequenceNumber和ValueType,实现对Key-value的分离,同时数据存储过程中不再进行编码,而是直接对key、SequenceNumber、ValueType和value进行存储与读取,进而降低IO吞吐量,增加CPU cache命中率,提升数据库的读写性能。
该Key-value分离存储方法,实现流程如下:
S1.数据写入时,先建立一个新的节点Node作为Key-value数据的一个版本,并在当前版本节点Node中为key和value分配内存空间,将key和value拷贝存入当前版本Node中;
S2.为节点Node成员SequenceNumber和ValueType分别进行赋值,以存储的当前版本信息;
S3.待全部信息存入节点Node后,将节点Node地址挂载到ART索引树上;
S4.读取数据时获取当前节点Node,调用对应的取值函数GetXX()即可获取信息,无需进行额外的解码操作。
对迭代器进行改造,不再通过内存首地址获取数据信息,而是通过节点Node的Get操作直接获取当前Key-value数据的相关信息,减少对数据的解码操作。
当不同版本间比较时,不再使用内存首地址(该方法内存地址对外不可见)进行解码比较,直接使用节点Node获取key信息进行比较即可。
使用查询工具Seek进行查询操作时,不必传入内存地址解析key,直接传入节点Node指针获取相应key信息即可。每次Seek查询都减少了一次解码操作,一定程度上提升了读的性能。
基于本发明Key-value分离存储方法的系统,其特征在于包括ART前缀树模块和节点Node管理模块,所述ART前缀树模块用于生成数据索引的基本数据结构,所述节点Node管理模块用于为key和value分配内存空间进行存储,同时存储对应的SequenceNumber和ValueType,以实现对Key-value的分离。
一种计算机设备,其特征在于:包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述Key-value分离存储方法的步骤。
一种计算机可读存储介质,其特征在于:其上存储有计算机程序,所述计算机程序被处理器执行时实现该Key-value分离存储方法的步骤。
本发明的有益效果是:该Key-value分离存储方法及系统,数据读写操作时无需对相应信息进行解码操作,可以直接使用节点Node获取信息,减少了磁盘I/O消耗,降低了IO吞吐量,增加了CPU cache命中率,提升了数据库的读写性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
附图1为本发明ART前缀树与多版本Key-value数据间结构示意图。
附图2为本发明节点Node中Key-value数据示意图。
具体实施方式
为了使本技术领域的人员更好的理解本发明中的技术方案,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚,完整的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
该Key-value分离存储方法,将ART前缀树作为数据索引的基本数据结构,在每条数据的节点Node内部为key值和value值分别分配空间进行存储,并在节点Node内存储对应的SequenceNumber和ValueType,实现对Key-value的分离,同时数据存储过程中不再进行编码,而是直接对key、SequenceNumber、ValueType和value进行存储与读取,进而降低IO吞吐量,增加CPU cache命中率,提升数据库的读写性能。
附图1中展示了一种三级ART前缀树结构。本领域技术人员须知,在实际应用中,ART前缀树的结构并不限于附图中的三级结构。
该Key-value分离存储方法,实现流程如下:
S1.数据写入时,先建立一个新的节点Node作为Key-value数据的一个版本,并在当前版本节点Node中为key和value分配内存空间,将key和value拷贝存入当前版本Node中;
S2.为节点Node成员SequenceNumber和ValueType分别进行赋值,以存储的当前版本信息;
S3.待全部信息存入节点Node后,将节点Node地址挂载到ART索引树上;
S4.读取数据时获取当前节点Node,调用对应的取值函数GetXX()即可获取信息,无需进行额外的解码操作。
对迭代器进行改造,不再通过内存首地址获取数据信息,而是通过节点Node的Get操作直接获取当前Key-value数据的相关信息,减少对数据的解码操作。
当不同版本间比较时,不再使用内存首地址(该方法内存地址对外不可见)进行解码比较,直接使用节点Node获取key信息进行比较即可。
使用查询工具Seek进行查询操作时,不必传入内存地址解析key,直接传入节点Node指针获取相应key信息即可。每次Seek查询都减少了一次解码操作,一定程度上提升了读的性能。
基于该Key-value分离存储方法的系统,包括ART前缀树模块和节点Node管理模块,所述ART前缀树模块用于生成数据索引的基本数据结构,所述节点Node管理模块用于为key和value分配内存空间进行存储,同时存储对应的SequenceNumber和ValueType,以实现对Key-value的分离。
该计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现该Key-value分离存储方法的步骤。
该计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现该Key-value分离存储方法的步骤。
与现有技术相比,该Key-value分离存储方法及系统,数据读写操作时无需对相应信息进行解码操作,可以直接使用节点Node获取信息,减少了磁盘I/O消耗,降低了IO吞吐量,增加了CPU cache命中率,提升了数据库的读写性能。
以上所述的实施例,只是本发明具体实施方式的一种,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。

Claims (8)

1.一种Key-value分离存储方法,其特征在于:将ART前缀树作为数据索引的基本数据结构,在每条数据的节点Node内部为key值和value值分别分配空间进行存储,并在节点Node内存储对应的SequenceNumber和ValueType,实现对Key-value的分离,同时数据存储过程中不再进行编码,而是直接对key、SequenceNumber、ValueType和value进行存储与读取,进而降低IO吞吐量,增加CPU cache命中率,提升数据库的读写性能。
2.根据权利要求1所述的Key-value分离存储方法,其特征在于,包括以下步骤:
S1.数据写入时,先建立一个新的节点Node作为Key-value数据的一个版本,并在当前版本节点Node中为key和value分配内存空间,将key和value拷贝存入当前版本Node中;
S2.为节点Node成员SequenceNumber和ValueType分别进行赋值,以存储的当前版本信息;
S3.待全部信息存入节点Node后,将节点Node地址挂载到ART索引树上;
S4.读取数据时获取当前节点Node,调用对应的取值函数GetXX()即可获取信息,无需进行额外的解码操作。
3.根据权利要求2所述的Key-value分离存储方法,其特征在于:对迭代器进行改造,不再通过内存首地址获取数据信息,而是通过节点Node的Get操作直接获取当前Key-value数据的相关信息,减少对数据的解码操作。
4.根据权利要求3所述的Key-value分离存储方法,其特征在于:当不同版本间比较时,直接使用节点Node获取key信息进行比较即可。
5.根据权利要求3所述的Key-value分离存储方法,其特征在于:进行查询操作时,直接传入节点Node指针获取相应key信息即可。
6.根据权利要求1~5所述的Key-value分离存储方法的系统,其特征在于:包括ART前缀树模块和节点Node管理模块,所述ART前缀树模块用于生成数据索引的基本数据结构,所述节点Node管理模块用于为key和value分配内存空间进行存储,同时存储对应的SequenceNumber和ValueType,以实现对Key-value的分离。
7.一种计算机设备,其特征在于:包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现权利要求1~5所述的Key-value分离存储方法的步骤。
8.一种计算机可读存储介质,其特征在于:其上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1~5所述的Key-value分离存储方法的步骤。
CN202111461856.5A 2021-12-02 2021-12-02 一种Key-value分离存储方法及系统 Pending CN114138792A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111461856.5A CN114138792A (zh) 2021-12-02 2021-12-02 一种Key-value分离存储方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111461856.5A CN114138792A (zh) 2021-12-02 2021-12-02 一种Key-value分离存储方法及系统

Publications (1)

Publication Number Publication Date
CN114138792A true CN114138792A (zh) 2022-03-04

Family

ID=80387201

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111461856.5A Pending CN114138792A (zh) 2021-12-02 2021-12-02 一种Key-value分离存储方法及系统

Country Status (1)

Country Link
CN (1) CN114138792A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114077609A (zh) * 2022-01-19 2022-02-22 北京四维纵横数据技术有限公司 数据存储及检索方法,装置,计算机可读存储介质及电子设备
CN115905246A (zh) * 2023-03-14 2023-04-04 智者四海(北京)技术有限公司 基于动态压缩前缀树的kv缓存方法与装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114077609A (zh) * 2022-01-19 2022-02-22 北京四维纵横数据技术有限公司 数据存储及检索方法,装置,计算机可读存储介质及电子设备
CN114077609B (zh) * 2022-01-19 2022-04-22 北京四维纵横数据技术有限公司 数据存储及检索方法,装置,计算机可读存储介质及电子设备
CN115905246A (zh) * 2023-03-14 2023-04-04 智者四海(北京)技术有限公司 基于动态压缩前缀树的kv缓存方法与装置

Similar Documents

Publication Publication Date Title
He et al. RCFile: A fast and space-efficient data placement structure in MapReduce-based warehouse systems
US9678969B2 (en) Metadata updating method and apparatus based on columnar storage in distributed file system, and host
CN103294710B (zh) 一种数据存取方法和装置
US9092321B2 (en) System and method for performing efficient searches and queries in a storage node
US9021189B2 (en) System and method for performing efficient processing of data stored in a storage node
US8819335B1 (en) System and method for executing map-reduce tasks in a storage device
Jiang et al. The performance of mapreduce: An in-depth study
US9298775B2 (en) Changing the compression level of query plans
CN112579602B (zh) 多版本数据存储方法、装置、计算机设备及存储介质
CN114138792A (zh) 一种Key-value分离存储方法及系统
US10296497B2 (en) Storing a key value to a deleted row based on key range density
CN113569508B (zh) 基于id进行数据索引与访问的数据库模型构建方法及设备
CN113821573B (zh) 海量数据快速检索服务构建方法、系统、终端及存储介质
CN103729429A (zh) 一种基于HBase压缩方法
WO2022037015A1 (zh) 一种基于持久性内存的列式存储方法、装置及设备
US20130041887A1 (en) Adding entries to an index based on use of the index
Liu et al. Using provenance to efficiently improve metadata searching performance in storage systems
CN113468209A (zh) 一种电网监控系统高速内存数据库访问方法
US10262000B1 (en) Global distributed file append using log-structured file system
WO2024197789A1 (zh) 一种细粒度文件系统以及文件读写方法
CN110569243A (zh) 一种数据查询方法、数据查询插件和数据查询服务器
Ragavan et al. A Novel Big Data Storage Reduction Model for Drill Down Search.
Jin et al. The research for storage scheme based on Hadoop
CN116975067B (zh) 无模式数据存储方法、装置、计算机设备及介质
Wang et al. LeaderKV: Improving Read Performance of KV Stores via Learned Index and Decoupled KV Table

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: 20221215

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: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park

Applicant before: Inspur cloud Information Technology Co.,Ltd.

TA01 Transfer of patent application right