CN115525668A - Kvs的数据处理方法、装置和存储介质 - Google Patents

Kvs的数据处理方法、装置和存储介质 Download PDF

Info

Publication number
CN115525668A
CN115525668A CN202211131050.4A CN202211131050A CN115525668A CN 115525668 A CN115525668 A CN 115525668A CN 202211131050 A CN202211131050 A CN 202211131050A CN 115525668 A CN115525668 A CN 115525668A
Authority
CN
China
Prior art keywords
data
kvs
pmem
segment
key value
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
CN202211131050.4A
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.)
CCB Finetech Co Ltd
Original Assignee
CCB Finetech 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 CCB Finetech Co Ltd filed Critical CCB Finetech Co Ltd
Priority to CN202211131050.4A priority Critical patent/CN115525668A/zh
Publication of CN115525668A publication Critical patent/CN115525668A/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/24Querying
    • 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

Landscapes

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

Abstract

本申请实施例提供一种KVS的数据处理方法、装置和存储介质,涉及计算机技术领域,包括:获取KVS的查询请求,其中,查询请求包括数据的键值,根据键值在索引中获取数据的指针,索引分布在动态随机存取存储器DRAM中,根据指针在持久性内存PMEM中获取查询请求对应的数据,并返回数据,其中,PMEM用于存储数据。由于采用了PMEM对KVS进行容量扩充,使得KVS的架构为DRAM+PMEM的架构,通过PMEM高速、低延迟的特性,在不降低原有KVS性能的基础上,实现对KVS的容量扩充。

Description

KVS的数据处理方法、装置和存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种KVS的数据处理方法、装置和存储介质。
背景技术
键值数据库(key value store,KVS)是一种数据存储范式,旨在存储、检索和管理关联数组。KVS通常用于缓存和存储管理,如:网站、APP、分布式存储系统的缓存和存储管理。
当前主流的KVS系统通常是基于内存的单一层次结构,这使得其硬件成本较高且容量有限,采用固态硬盘等存储设备可以解决硬件成本和容量的问题,但是需要对软件架构层面重新设计并且会产生较大的性能损失。
因此,如何使KVS系统在保持现有性能的基础上,进行容量的扩大,是本领域亟需解决的问题。
发明内容
本申请实施例提供一种KVS的数据处理方法、装置和存储介质,采用PMEM对KVS进行容量扩充,在不降低原有KVS性能的基础上,实现对KVS的容量扩充。
第一方面,本申请实施例提供一种键值数据库KVS的数据处理方法,包括:
获取KVS的查询请求,其中,所述查询请求包括数据的键值;
根据所述键值在索引中获取所述数据的指针,所述索引分布在动态随机存取存储器DRAM中;
根据所述指针在持久性内存PMEM中获取所述查询请求对应的数据,并返回所述数据,其中,所述PMEM用于存储数据。
可选的,所述根据所述指针在持久性内存PMEM中获取所述查询请求对应的数据,包括:
根据所述键值在所述PMEM中获取待查询的数据对应的分区,其中,所述PMEM根据CPU核心数被划分为多个分区;
根据所述指针在所述待查询的数据对应的分区中获取所述查询请求对应的数据。
可选的,所述PMEM的每个分区被分为多个段,每段中包括一个日志结构,所述日志结构包括日志段、数据段和映射段,所述数据段包括至少一个数据块;
其中,所述日志段用于存储日志记录,所述数据段用于存储数据,所述映射段用于记录所述数据段中数据块的分配信息;
所述根据所述指针在所述待查询的数据对应的分区中获取所述查询请求对应的数据,包括:
根据所述指针在所述待查询的数据对应的分区中的日志结构中获取所述查询请求对应的数据。
可选的,所述方法还包括:
获取KVS的写入请求,所述写入请求中包括待写入数据的键值;
判断所述DRAM中的索引中是否存在所述待写入数据的键值;
若不存在,将所述待写入数据写入所述PMEM的分区中的日志结构中,以及在所述索引中写入所述待写入数据对应的指针;其中,在一个日志结构写满后,新建一个日志结构。
可选的,所述方法还包括;
获取KVS的更新请求,所述更新请求中包括待更新数据的键值;
判断所述DRAM中的索引中是否存在所述待更新数据的键值;
若存在,将所述待更新的数据写入所述PMEM的分区中的日志结构中,并在所述索引中更新所述键值对应的指针;
将旧数据的有效性位信息更改为失效,并在所述映射段中更新所述旧数据所在数据块的分配信息。
可选的,所述方法还包括:
根据所述映射段中的分配信息,获取空闲信息,所述空闲信息包括所述数据段中的数据块的数据更新信息和数据删除信息;
根据所述空闲信息确定所述数据块中需要进行数据回收的数据大小;
根据每个数据块的数据回收的数据大小,对所述数据块进行回收。
可选的,所述根据每个数据块的数据回收的数据大小,对所述数据块进行回收,包括:
将数据回收的数据大小最大的目标数据块中的有效数据进行数据迁移,迁移至未写满的数据块中,所述有效数据根据所述数据中的有效性位信息确定;
将所述目标数据块移动至空闲块的末尾,并对所述目标数据块中的剩余数据进行删除处理。
第二方面,本申请实施例提供一种键值数据库KVS的数据处理装置,包括:
第一获取模块,用于获取KVS的查询请求,其中,所述查询请求包括数据的键值;
第二获取模块,用于根据所述键值在索引中获取所述数据的指针,所述索引分布在动态随机存取存储器DRAM中;
第三获取模块,用于根据所述指针在持久性内存PMEM中获取所述查询请求对应的数据,并返回所述数据,其中,所述PMEM用于存储数据。
可选的,上述键值数据库KVS的数据处理装置可以执行第一方面任一项所述的键值数据库KVS的数据处理方法。
第三方面,本申请提供一种电子设备,包括:存储器和处理器;
存储器用于存储计算机指令;处理器用于运行存储器存储的计算机指令实现第一方面中任一项的方法。
第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行以实现第一方面中任一项的方法。
第五方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面中任一项的方法。
本申请实施例提供的KVS的数据处理方法、装置和存储介质,通过获取KVS的查询请求,其中,查询请求包括数据的键值,根据键值在索引中获取数据的指针,索引分布在动态随机存取存储器DRAM中,根据指针在持久性内存PMEM中获取查询请求对应的数据,并返回数据,其中,PMEM用于存储数据。由于采用了PMEM对KVS进行容量扩充,使得KVS的架构为DRAM+PMEM的架构,通过PMEM高速、低延迟的特性,在不降低原有KVS性能的基础上,实现对KVS的容量扩充。
附图说明
图1为本申请实施例提供的场景示意图;
图2为本申请实施例提供的KVS的数据处理方法的流程示意图一;
图3为本申请实施例提供的分区结构示意图;
图4为本申请实施例提供的KVS的数据处理方法的流程示意图二;
图5为本申请实施例提供的KVS的数据处理方法的流程示意图三;
图6为本申请实施例提供的KVS的数据处理装置的结构示意图;
图7为本申请实施例提供的KVS的数据处理电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。
为了便于清楚描述本申请实施例的技术方案,以下,对本申请实施例中所涉及的部分术语和技术进行简单介绍:
1)动态随机存取存储器:动态随机存取存储器(Dynamic Random Access Memory,DRAM),又可以称为内存,是一种半导体存储器,由一系列电容组成,旨在为随机存取存储器(RAM)存储单个比特,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。
2)持久化内存:持久化内存(Persistent Memory,PMEM),是一种驻留在内存总线上的固态高性能按字节寻址内存设备,支持像DRAM一样访问数据,因此,PMEM具备与DRAM相当的速度和延迟,并且兼具NAND闪存的非易失性。
3)其他术语
在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
KVS被广泛应用在现有应用程序中,最常见的使用情况为作为网络服务的缓存中间件,通过KVS来获取数据,可以避免数据在数据中心和服务器之间中转带来的昂贵开销。
由于缓存需要较快的响应速度,因此KVS通常是一个完全在内存中的单层架构,但是由于内存自身的特性的影响,使用KVS会带来硬件成本的上升以及容量较小的问题。
现有技术中,可以通过使用HDD和SSD等存储设备来解决硬件成本和容量问题的方案,但是,使用HDD和SSD等存储设备不仅需要对软件的架构重新设计,还会带来性能上的损失,例如,读取速度的下降。
有鉴于此,本申请实施例提供一种KVS的数据处理方法、装置和存储介质,通过使用PMEM对KVS进行容量扩充设计,采用DRAM+PMEM的架构,可以在不降低原有KVS性能的基础上,实现对KVS的容量扩充。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以独立实现,也可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图1为本申请实施例的应用场景示意图,如图1所示,KVS通常采用索引和日志结构的组成方式,索引用于提供指向储存在指定区域的数据值的指针,日志结构用于储存具体的数据。
由于KVS是作为中间缓存件,需要较高的响应速度,因此KVS常常被设计在内存中,如图1中的a所示,但是,由于内存本身容量较小且价格昂贵的原因,导致KVS的数据储存量较小,若需要较大的容量,则会带来硬件成本的增加,即更换大容量的内存。
因此,本申请采用PMEM对KVS进行容量扩充,如图1中的b所示,将KVS中的索引设置在内存上,日志结构设置在PMEM上,采用PMEM高速、低延迟且价格低廉的特性,在不改变原有软件架构和不降低原有KVS性能的基础上,实现了对KVS容量的扩充,且不需要增加过多的硬件成本。
下面,在图1所示实施例的基础上,对本申请实施例提供的KVS的数据处理方法进行说明。
图2为本申请实施例提供的KVS的数据处理方法的流程示意图一,本申请实施例的执行主体可以为KVS的处理器(CPU),如图1所示,包括如下步骤:
S201、获取KVS的查询请求,其中,查询请求包括数据的键值。
本申请实施例中,KVS的查询请求是指在KVS中或者KVS数据库中进行查询相关数据的请求,即,KVS在接收到用户输入的查询指令后,生成的与查询指令对应的请求。
本申请实施例中,KVS中的数据是以特定的结构进行存储的,即以,键(key)+值(value)+属性的方式进行存储,其中,键又可以称为键值,值表示具体的数据,属性表示该数据的储存状态,例如,有效或者失效。因此,在KVS中查询数据时,需要根据待查询数据对应的键值来进行查询。即,用户在输入的查询请求中需要包括待查询数据对应的键值。
KVS在接收到查询请求后,获取查询请求中待查询数据对应的键值,根据该键值来进行数据查询。
S202、根据键值在索引中获取数据的指针,索引分布在动态随机存取存储器DRAM中。
本申请实施例中,指针是指一种特殊变量,可以储存数值,该储存的数值可以被编译为一个存储地址,即,指针可以认为是一个储存地址的变量,通过指针可以获取某一数据的存储地址。
本申请实施例中,索引是一种用于帮助高效获取数据的数据结构,例如,一本书中的目录就可以称为该书的索引。即,索引用于提供指向储存在指定区域的数据值的指针,即,索引是一个指针的集合,设置在DRAM中,本申请实施例中,索引使用B+Tree的结构。
索引中每一个具体的索引都具有一个索引值,该值与数据的键值一一对应,即索引与键值存在映射关系。
KVS在获取到待查询数据对应的键值后,可以通过键值与指针对应的映射关系,在DRAM中的索引中获取键值对应的指针,根据该指针来进行数据查询。
S203、根据指针在持久性内存PMEM中获取查询请求对应的数据,并返回数据,其中,PMEM用于存储数据。
本申请实施例中,KVS在获取到指针后,根据指针指向的地址,在PMEM中的相应位置获取查询请求对应的数据,并在获取到该数据后,将该数据返回。
可选的,本申请实施例中,为提高KVS的响应速度,根据KVS的CPU的核心数,对PMEM进行了分区处理,每一个分区可以运行自身的单线程KVS,每一个分区之间可以通过消息传递技术进行通信。
则根据所述指针在持久性内存PMEM中获取查询请求对应的数据,具体为:
根据键值在PMEM中获取待查询的数据对应的分区,其中,PMEM根据CPU核心数被划分为多个分区,根据指针在待查询的数据对应的分区中获取查询请求对应的数据。
示例性的,若该CPU的核心数为8个,则将PMEM划分8个区域,每个区域存储有不同的数据,在进行数据查询时,通过数据的键值获取到该数据存储于哪一个分区,在对应的分区中运行KVS进行数据查询,例如,1分区中存储了有关A、B、C、D的数据,2分区中存储了有关E、F、G的数据,待查询的数据的键值为B,则根据键值可以确定该数据存储于1分区,则只在1分区中运行对应的KVS,获取查询请求对应的数据。由于缩小了数据的查询范围,提高了KVS的响应速度。
可选的,本申请实施例中,数据是以日志结构的方式存储于PMEM中,为对PMEM中的空间进行管理,本申请实施例将PMEM中的每个分区分为N段,具体为:
PMEM的每个分区被分为多个段,每段中包括一个日志结构,日志结构包括日志段、数据段和映射段,数据段包括至少一个数据块.
其中,日志段用于存储日志记录,数据段用于存储数据,映射段用于记录数据段中数据块的分配信息。
日志记录是指KVS的每一个操作记录,数据块的分配信息是指每一个数据块中的数据写入情况,以及该数据块中每一条数据的大小、状态等信息,例如,F数据块数据已写入65%,其中,A数据的大小为2KB、状态为有效状态,B数据的大小为3KB、状态为待删除状态。
示例性的,如图3所示,1分区被均分为N个大段,每一个大段中包括一个日志结构,每一个日志结构都包括日志段、数据段和映射,其中,每一个日志结构中的数据段又被分为N个数据块。每一个大段的大小和每一个数据块的大小可以根据实际数据库的负载确定,例如,每一个大段可以为2MB大小,每一个数据块可以为64KB大小,本申请实施例对每一个大段的大小和每一个数据块的大小不进行限制。
相应的,根据指针在待查询的数据对应的分区中获取查询请求对应的数据,具体为:
根据指针在待查询的数据对应的分区中的日志结构中获取查询请求对应的数据。
进一步的,是根据指针在待查询的数据对应的分区中的日志结构中数据块中取查询请求对应的数据。
本申请实施例提供的KVS的数据处理方法,通过获取KVS的查询请求,其中,查询请求包括数据的键值,根据键值在索引中获取数据的指针,索引分布在动态随机存取存储器DRAM中,根据指针在持久性内存PMEM中获取查询请求对应的数据,并返回数据,其中,PMEM用于存储数据。由于采用了PMEM对KVS进行容量扩充,使得KVS的架构为DRAM+PMEM的架构,通过PMEM高速、低延迟的特性,在不降低原有KVS性能的基础上,实现对KVS的容量扩充。
图4为本申请实施例提供的KVS的数据处理方法的流程示意图二,在图2所示实施例提供的KVS的架构的基础上,该KVS的数据处理方法还包括数据写入和更新,如图4所示,包括如下步骤:
S401、获取KVS的写入请求,写入请求中包括待写入数据的键值。
本申请实施例中,KVS的写入请求是指在KVS中或者KVS数据库中进行数据写入的请求,即,KVS在接收到用户输入的写入指令后,生成的与写入指令对应的请求。
KVS中的数据是键(key)+值(value)+属性的方式进行存储的,因此,待写入数据也需要保持键(key)+值(value)+属性的形式,由于键值的唯一性,在进行数据写入时,需要根据键值来决定该数据写入的合法性,因此,在写入请求中需要包括待写入数据的键值。
KVS在接收到写入请求后,获取写入请求中待写入数据对应的键值,根据该键值来进行数据写入。
相应的,KVS的数据更新过程如下所示:
获取KVS的更新请求,更新请求中包括待更新数据的键值。其实现方式与KVS的数据写入过程类似,此处不在赘述。
S402、判断DRAM中的索引中是否存在待写入数据的键值,若不存在,可以执行S403所示步骤,若不存在,可以执行S404所示步骤。
本申请实施例中,在获取到待写入数据的键值后,需要在索引中搜索该键值是否存在,由于键值的唯一性,若搜索的键值存在,则表示该数据无法写入,需要重新给定待写入数据的键值,若搜索的键值不存在,则表示该数据可以写入。若键值不存在,可以执行S403所示步骤,若键值不存在,可以执行S404所示步骤。
相应的,KVS的数据更新过程如下所示:
判断DRAM中的索引中是否存在待更新数据的键值。
由于更新是对已存在的数据进行升级,因此,若搜索的键值存在,则表示待更新数据的数据存在,可以进行数据的更新,若搜索的键值不存在,则表示待更新数据的不存在。若键值存在,可以执行S403所示步骤中的更新过程,若键值不存在,可以执行S404所示步骤更新过程。
S403、将待写入数据写入PMEM的分区中的日志结构中,以及在索引中写入待写入数据对应的指针。
本申请实施例中,请继续参考图3,在进行数据写入时,KVS会将该写入操作对应的操作日志写入日志结构中的日志段,将该数据写入日志结构中的数据段,随后在索引中写入待写入数据对应的指针。
本申请实施例中,数据写入是采用追加式的写入方式写入至数据段中,即,数据写入是按照写入顺序在数据块中进行写入,直至该数据块被写满,然后更换下一个数据块进行数据写入,直至该日志结构被写满后,新建一个日志结构,进行数据写入。
对应的,在一个数据块被写满时,在映射段中将该数据块的分配信息更改为写满状态,即,将该数据块标记为不可写入。
相应的,KVS的数据更新过程如下所示:
将待更新的数据写入PMEM的分区中的日志结构中,并在索引中更新键值对应的指针,将旧数据的有效性位信息更改为失效,并在映射段中更新旧数据所在数据块的分配信息。
本申请实施例中,由于日志结构化存储中的数据是不能进行覆盖更新的,因此,本申请实施例中的数据更新是通过插入一个新的版本,使旧的数据失效来实现数据更新的,即,在数据块中追加写入一个新数据,将索引中原有数据的键值对应的指针跟改为指向新数据的存储位置,将旧数据的有效性位信息更改为失效以实现数据更新。
其中,数据的储存方式是以键(key)+值(value)+属性的方式进行存储的,该属性中包括了有效性位信息,在一个数据写入时,该有效性位信息为有效,若一个数据进行了更新,则将旧数据的效性位信息更改为无效,同时在映射段中更新旧数据所在数据块的分配信息。
可选的,若需要进行数据删除,则是将该数据的有效位信息更改为删除,同时将索引中原有数据的键值和对应的指针进行删除,并在映射段中更新需要删除的数据所在数据块的分配信息。
可以理解的是,该数据的删除方式为一种伪删除,只是删除了索引中对应的条目,实际的数据并未进行删除,数据的删除是通过统一的数据回收进行删除处理。
S404、发送写入失败消息。
本申请实施例中,若搜索的键值存在。则向用户发送写入失败的消息,以提示用户检查待写入的数据对应的键值。
相应的,在进行数据更新时,若搜索的键值不存在。则向用户发送更新失败的消息,以提示用户检查待更新的数据对应的键值是否正确。
本申请实施例提供的KVS的数据处理方法,通过获取KVS的写入请求,写入请求中包括待写入数据的键值,判断DRAM中的索引中是否存在待写入数据的键值,若不存在,将待写入数据写入PMEM的分区中的日志结构中,以及在索引中写入待写入数据对应的指针。通过将数据写入至PMEM中,使得KVS可以存储的数据形式多样,将索引写入至内存中,减少了内存的额外消耗,数据是以追加的方式写入并已日志结构进行存储,可以减少碎片的产生和额外空间的配置,使PMEM空间得到有效利用。
图5为本申请实施例提供的KVS的数据处理方法的流程示意图三,在图2所示实施例提供的KVS的架构的基础上,该KVS的数据处理方法还包括数据回收,如图4所示,包括如下步骤:
S501、根据映射段中的分配信息,获取空闲信息,空闲信息包括数据段中的数据块的数据更新信息和数据删除信息。
本申请实施例中,分配信息是指数据段中各个数据块的信息,包括每个数据块的使用状态,每一个数据块中每条数据的状态,以分配表的方式存储于映射段中。
空闲信息是指已分配的数据块中数据更新信息和数据删除信息的总和,即,空闲信息是数据块中的数据状态不是有效状态的数据信息,空闲信息也可以称为自由空间信息。
在一条数据被更新或者删除时,其数据状态会在映射段中进行同步更改,即,映射段中的该数据块的分配信息同步更改。
KVS可以以固定时间段来获取映射段中的各数据块的分配信息来获取各数据块的空闲信息。例如,KVS可以以10分钟为周期,运行一个单独的线程根据映射段中的分配信息来获取空闲信息。
S502、根据空闲信息确定数据块中需要进行数据回收的数据大小。
本申请实施例中,需要进行数据回收的数据大小是指数据状态为失效状态(该数据已被更新)和数据状态为删除状态的数据大小之和,即,已更新的数据和已删除的数据的大小占该数据块总大小的百分比。
KVS在获取到空闲信息后,可以根据空闲信息中每一条数据大小获取需要进行数据回收的数据大小。
在需要进行数据回收的数据大小达到设定的阈值时,触发数据回收功能,例如,阈值可以为整个数据块大小的80%,当该数据块中的需要进行数据回收的数据大小大于该数据块总大小的80%时,触发数据回收功能。
S503、根据每个数据块的数据回收的数据大小,对数据块进行回收。
本申请实施例中,对数据块进行回收是指将数据块中的需要进行数据回收的数据删除处理。需要数据回收的数据块为其状态已被标记为不可写入的数据块。
具体的,将数据回收的数据大小最大的目标数据块中的有效数据进行数据迁移,迁移至未写满的数据块中,有效数据根据所述数据中的有效性位信息确定,将目标数据块移动至空闲块的末尾,并对目标数据块中的剩余数据进行删除处理。
本申请实施例中,在进行数据回收时,可能会出现多个数据块中需要进行数据回收,首先会对数据回收的数据大小最大的数据块,即目标数据块进行数据回收,在回收时,将目标数据块中的数据状态为有效的数据进行迁移,追加式的写入至未写满的数据块中,同时将该数据的指针在索引中进行更新,并在映射段中对其分配信息进行同步更改。然后将该目标数据块添加至空闲数据块的末尾,对其中的所有数据进行删除处理,完成该数据块的数据回收。
在完成目标数据块的更新后,可以重复执行上述过程,以实现对满足数据回收要求的数据块进行数据回收。
本申请实施例提供的KVS的数据处理方法,通过根据映射段中的分配信息,获取空闲信息,空闲信息包括数据段中的数据块的数据更新信息和数据删除信息,根据空闲信息确定数据块中需要进行数据回收的数据大小,根据每个数据块的数据回收的数据大小,对数据块进行回收。通过对数据块中数据状态的监控,实现了对非有效数据的删除处理,提高了数据块中的空间利用率。
在上述KVS的数据处理方法的基础上,本申请实施例还提供一种KVS的数据处理装置。
图6为本申请实施例提供的KVS的数据处理装置的结构示意图,如图6所示,KVS的数据处理装置60包括:第一获取模块601、第二获取模块602以及第三获取模块603。
第一获取模块601,用于获取KVS的查询请求,其中,查询请求包括数据的键值。
第二获取模块602,用于根据键值在索引中获取数据的指针,索引分布在动态随机存取存储器DRAM中。
第三获取模块603,用于根据指针在持久性内存PMEM中获取查询请求对应的数据,并返回数据,其中,PMEM用于存储数据。
可选的,第二获取模块602,还用于根据键值在PMEM中获取待查询的数据对应的分区,其中,PMEM根据CPU核心数被划分为多个分区。
可选的,第三获取模块603,还用于根据指针在待查询的数据对应的分区中的日志结构中获取查询请求对应的数据。
可选的,KVS的数据处理装置60还包括:划分模块604。
具体的,划分模块604,用于将PMEM的每个分区分为多个段,每段中包括一个日志结构,日志结构包括日志段、数据段和映射段,数据段包括至少一个数据块;其中,日志段用于存储日志记录,数据段用于存储数据,映射段用于记录数据段中数据块的分配信息。
可选的,第一获取模块601,还用于获取KVS的写入请求,写入请求中包括待写入数据的键值,以及获取KVS的更新请求,更新请求中包括待更新数据的键值。
可选的,KVS的数据处理装置60还包括:判读模块604、写入模块605以及数据回收模块606。
可选的,判读模块604,用于判断DRAM中的索引中是否存在待写入数据的键值,以及,用于判断DRAM中的索引中是否存在待更新数据的键值。
可选的,写入模块605,用于将待写入数据写入PMEM的分区中的日志结构中,以及在索引中写入待写入数据对应的指针;其中,在一个日志结构写满后,新建一个日志结构。以及,用于将待更新的数据写入PMEM的分区中的日志结构中,并在索引中更新键值对应的指针;将旧数据的有效性位信息更改为失效,并在映射段中更新旧数据所在数据块的分配信息。
可选的,数据回收模块606,用于根据映射段中的分配信息,获取空闲信息,空闲信息包括所述数据段中的数据块的数据更新信息和数据删除信息,根据空闲信息确定数据块中需要进行数据回收的数据大小,将数据回收的数据大小最大的目标数据块中的有效数据进行数据迁移,迁移至未写满的数据块中,有效数据根据所述数据中的有效性位信息确定;将目标数据块移动至空闲块的末尾,并对目标数据块中的剩余数据进行删除处理。
本申请实施例提供的KVS的数据处理装置可以执行上述任一项实施例提供的KVS的数据处理方法,其原理和效果类似,此处不在赘述。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。
图7为本申请实施例提供的KVS的数据处理电子设备的结构示意图。如图7所示,本实施例提供的KVS的数据处理电子设备70可以包括:
处理器701。
存储器702,用于存储终端设备的可执行指令。
其中,处理器配置为经由执行可执行指令来执行上述KVS的数据处理方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本申请实施例中还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述KVS的数据处理方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
一种可能的实现方式中,计算机可读介质可以包括随机存取存储器(RandomAccess Memory,RAM),只读存储器(Read-Only Memory,ROM),只读光盘(compact discread-only memory,CD-ROM)或其它光盘存储器,磁盘存储器或其它磁存储设备,或目标于承载的任何其它介质或以指令或数据结构的形式存储所需的程序代码,并且可由计算机访问。而且,任何连接被适当地称为计算机可读介质。例如,如果使用同轴电缆,光纤电缆,双绞线,数字用户线(Digital Subscriber Line,DSL)或无线技术(如红外,无线电和微波)从网站,服务器或其它远程源传输软件,则同轴电缆,光纤电缆,双绞线,DSL或诸如红外,无线电和微波之类的无线技术包括在介质的定义中。如本文所使用的磁盘和光盘包括光盘,激光盘,光盘,数字通用光盘(Digital Versatile Disc,DVD),软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。
本申请实施例中还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述KVS的数据处理方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在上述终端设备或者服务器的具体实现中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:ApplicationSpecific Integrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
本领域技术人员可以理解,上述任一方法实施例的全部或部分步骤可以通过与程序指令相关的硬件来完成。前述的程序可以存储于计算机可读取存储介质中,该程序被执行时,执行上述方法实施例的全部或部分的步骤。
本申请技术方案如果以软件的形式实现并作为产品销售或使用时,可以存储在计算机可读取存储介质中。基于这样的理解,本申请的技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括计算机程序或者若干指令。该计算机软件产品使得计算机设备(可以是个人计算机、服务器、网络设备或者类似的电子设备)执行本申请实施例所述方法的全部或部分步骤。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (11)

1.一种键值数据库KVS的数据处理方法,其特征在于,包括:
获取KVS的查询请求,其中,所述查询请求包括数据的键值;
根据所述键值在索引中获取所述数据的指针,所述索引分布在动态随机存取存储器DRAM中;
根据所述指针在持久性内存PMEM中获取所述查询请求对应的数据,并返回所述数据,其中,所述PMEM用于存储数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述指针在持久性内存PMEM中获取所述查询请求对应的数据,包括:
根据所述键值在所述PMEM中获取待查询的数据对应的分区,其中,所述PMEM根据CPU核心数被划分为多个分区;
根据所述指针在所述待查询的数据对应的分区中获取所述查询请求对应的数据。
3.根据权利要求2所述的方法,其特征在于,所述PMEM的每个分区被分为多个段,每段中包括一个日志结构,所述日志结构包括日志段、数据段和映射段,所述数据段包括至少一个数据块;
其中,所述日志段用于存储日志记录,所述数据段用于存储数据,所述映射段用于记录所述数据段中数据块的分配信息;
所述根据所述指针在所述待查询的数据对应的分区中获取所述查询请求对应的数据,包括:
根据所述指针在所述待查询的数据对应的分区中的日志结构中获取所述查询请求对应的数据。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
获取KVS的写入请求,所述写入请求中包括待写入数据的键值;
判断所述DRAM中的索引中是否存在所述待写入数据的键值;
若不存在,将所述待写入数据写入所述PMEM的分区中的日志结构中,以及在所述索引中写入所述待写入数据对应的指针;其中,在一个日志结构写满后,新建一个日志结构。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括;
获取KVS的更新请求,所述更新请求中包括待更新数据的键值;
判断所述DRAM中的索引中是否存在所述待更新数据的键值;
若存在,将所述待更新的数据写入所述PMEM的分区中的日志结构中,并在所述索引中更新所述键值对应的指针;
将旧数据的有效性位信息更改为失效,并在所述映射段中更新所述旧数据所在数据块的分配信息。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
根据所述映射段中的分配信息,获取空闲信息,所述空闲信息包括所述数据段中的数据块的数据更新信息和数据删除信息;
根据所述空闲信息确定所述数据块中需要进行数据回收的数据大小;
根据每个数据块的数据回收的数据大小,对所述数据块进行回收。
7.根据权利要求5所述的方法,其特征在于,所述根据每个数据块的数据回收的数据大小,对所述数据块进行回收,包括:
将数据回收的数据大小最大的目标数据块中的有效数据进行数据迁移,迁移至未写满的数据块中,所述有效数据根据所述数据中的有效性位信息确定;
将所述目标数据块移动至空闲块的末尾,并对所述目标数据块中的剩余数据进行删除处理。
8.一种键值数据库KVS的数据处理装置,其特征在于,包括:
第一获取模块,用于获取KVS的查询请求,其中,所述查询请求包括数据的键值;
第二获取模块,用于根据所述键值在索引中获取所述数据的指针,所述索引分布在动态随机存取存储器DRAM中;
第三获取模块,用于根据所述指针在持久性内存PMEM中获取所述查询请求对应的数据,并返回所述数据,其中,所述PMEM用于存储数据。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行以实现权利要求1-7中任一项所述的方法。
11.一种计算机程序产品,其特征在于,包括计算机程序,其特征在于,所述计算机程序在被处理器执行时以实现权利要求1-7中任一项所述的方法。
CN202211131050.4A 2022-09-16 2022-09-16 Kvs的数据处理方法、装置和存储介质 Pending CN115525668A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211131050.4A CN115525668A (zh) 2022-09-16 2022-09-16 Kvs的数据处理方法、装置和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211131050.4A CN115525668A (zh) 2022-09-16 2022-09-16 Kvs的数据处理方法、装置和存储介质

Publications (1)

Publication Number Publication Date
CN115525668A true CN115525668A (zh) 2022-12-27

Family

ID=84697508

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211131050.4A Pending CN115525668A (zh) 2022-09-16 2022-09-16 Kvs的数据处理方法、装置和存储介质

Country Status (1)

Country Link
CN (1) CN115525668A (zh)

Similar Documents

Publication Publication Date Title
CN110825748B (zh) 利用差异化索引机制的高性能和易扩展的键值存储方法
CN108009008B (zh) 数据处理方法和系统、电子设备
CN107102955B (zh) 用于存储子系统的关联和原子回写高速缓冲存储系统和方法
US11301379B2 (en) Access request processing method and apparatus, and computer device
US9235531B2 (en) Multi-level buffer pool extensions
US8499121B2 (en) Methods and apparatus to access data in non-volatile memory
US9171027B2 (en) Managing a multi-version database
US20200257450A1 (en) Data hierarchical storage and hierarchical query method and apparatus
US11030092B2 (en) Access request processing method and apparatus, and computer system
WO2014142337A1 (ja) ストレージ装置と方法及びプログラム
KR20210123236A (ko) 키-값 장치들을 위한 키-값 저장소 아키텍처
CN115794669A (zh) 一种扩展内存的方法、装置及相关设备
KR101806394B1 (ko) 모바일 dbms환경에서 트랜잭션에 특화된 색인 캐시의 구조를 갖는 데이터 처리 방법
US11221999B2 (en) Database key compression
CN112732725B (zh) 基于nvm混合内存的自适应前缀树构建方法及其系统、介质
CN109992535B (zh) 一种存储控制方法、装置和系统
CN116755625A (zh) 一种数据处理方法、装置、设备及可读存储介质
US11687392B2 (en) Method and system for constructing persistent memory index in non-uniform memory access architecture
US11803469B2 (en) Storing data in a log-structured format in a two-tier storage system
CN115525668A (zh) Kvs的数据处理方法、装置和存储介质
KR101020781B1 (ko) 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법
US11544197B2 (en) Random-access performance for persistent memory
CN114207602A (zh) 使用概率数据结构减少请求
US11747998B1 (en) Indexing technique for large scale distributed key-value systems
US20230273728A1 (en) Storage control apparatus and method

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