CN112416940B - 键值对存储方法、装置、终端设备以及存储介质 - Google Patents

键值对存储方法、装置、终端设备以及存储介质 Download PDF

Info

Publication number
CN112416940B
CN112416940B CN202011369014.2A CN202011369014A CN112416940B CN 112416940 B CN112416940 B CN 112416940B CN 202011369014 A CN202011369014 A CN 202011369014A CN 112416940 B CN112416940 B CN 112416940B
Authority
CN
China
Prior art keywords
key value
storage
value pair
key
result
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
Application number
CN202011369014.2A
Other languages
English (en)
Other versions
CN112416940A (zh
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.)
Sangfor Technologies Co Ltd
Original Assignee
Sangfor Technologies 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 Sangfor Technologies Co Ltd filed Critical Sangfor Technologies Co Ltd
Priority to CN202011369014.2A priority Critical patent/CN112416940B/zh
Publication of CN112416940A publication Critical patent/CN112416940A/zh
Application granted granted Critical
Publication of CN112416940B publication Critical patent/CN112416940B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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

本发明公开一种键值对存储方法,所述键值对存储方法包括以下步骤:接收客户端发送的待存储键值对;按照第一预设顺序对所述待存储键值对添加哨兵键值对,获得结果键值对;将所述结果键值对写入内存表中,获得待处理内存表;将所述待处理内存表中的结果键值对持久化到第一本地存储系统中,获得存储日志。本发明还公开了一种键值对存储装置、终端设备以及计算机可读存储介质。所以利用本申请的键值对存储方法,降低了处理器的占用率,处理器的性能消耗较低,终端设备的运行速度较快。

Description

键值对存储方法、装置、终端设备以及存储介质
技术领域
本发明涉及数据存储技术领域,特别涉及一种键值对存储、装置、终端设备以及计算机可读存储介质。
背景技术
在键值存储系统中,可以对键值对(key-value对)进行增、删、改和查操作的存储系统。每个键值对由key(键)和value(值)两部分组成。
键值对在本地存储系统的存储流程如下:接收到的键值对时,将键值对持久化至预写日志系统,预写日志系统将键值对写入内存中的内存表,当内存表被写满时,写满的内存表会转为只读内存表,将只读内存表中的键值对持久化到本地存储系统中,获得存储日志。
但是,采用现有的键值对键值对存储,终端设备将键值对存储到本地存储系统时,终端设备的处理器性能消耗较多,终端设备的运行速度较慢。
发明内容
本发明的主要目的是提供种键值对存储、装置、终端设备以及计算机可读存储介质,旨在解决现有技术中终端设备将键值对存储到本地存储系统时,终端设备的处理器性能消耗较多,终端设备的运行速度较慢的技术问题。
为实现上述目的,本发明提出一种键值对存储方法,其特征在于,所述键值对存储方法包括以下步骤:
接收客户端发送的待存储键值对;
按照第一预设顺序对所述待存储键值对添加哨兵键值对,获得结果键值对;
将所述结果键值对写入内存表中,获得待处理内存表;
将所述待处理内存表中的结果键值对持久化到第一本地存储系统中,获得存储日志。
可选的,所述将所述待处理内存表中的结果键值对持久化到第一本地存储系统中,获得存储日志的步骤之后,所述方法还包括:
基于所述第一本地存储系统中的存储状态,获得所述第一本地存储系统的快照;
基于所述快照,在所述存储日志中确定出待清理存储日志;
将所述存储日志中的所述待清理存储日志删除,获得结果存储日志,并将所述快照存储到所述第一本地存储系统。
可选的,所述基于所述第一本地存储系统中的存储状态,获得所述第一本地存储系统的快照的步骤之前,所述方法还包括:
获取所述存储日志中结果键值对的哨兵键值;
所述基于所述第一本地存储系统中的存储状态,获得所述第一本地存储系统的快照的步骤包括:
基于所述第一本地存储系统的存储状态和所述存储日志中结果键值对的哨兵键值,获得所述第一本地存储系统的快照。
可选的,所述基于所述快照,在所述存储日志中确定出待清理存储日志的步骤包括:
在所述存储日志中结果键值对的哨兵键值中确定出与所述索引满足预设条件的选定哨兵键值;
将与所述选定哨兵键值对应的结果键值对确定为选定结果键值对;
在所述存储日志中确定出与所述选定结果键值对对应的待清理存储日志。
可选的,所述方法用于终端设备,所述终端设备与发送端通过一致性协议连接;所述将所述存储日志中的所述待清理存储日志删除,获得结果存储日志,并将所述快照存储到所述第一本地存储系统的步骤之后,所述方法还包括:
接收所述发送端发送的同步请求;
基于所述同步请求,将所述快照和所述结果存储日志发送至所述发送端,以使所述发送端基于所述快照和所述结果存储日志,对所述发送端的第二本地存储系统进行存储状态的恢复。
可选的,所述将所述待处理内存表中的结果键值对持久化到第一本地存储系统中,获得存储日志的步骤包括:
按照第二预设顺序将所述待处理内存表转换为只读内存表;
利用回刷方法,按照所述第二预设顺序将所述只读内存表中的结果键值对持久化到第一本地存储系统中,获得存储日志。
可选的,所述一致性协议为RAFT或,PAXOS,所述第一本地存储系统为基于LSM树的本地存储系统,所述第二本地存储系统为基于LSM树的本地存储系统。
此外,为实现上述目的,本发明还提出了一种键值对存储装置,所述装置包括:
接收模块,用于接收客户端发送的待存储键值对;
添加模块,用于按照第一预设顺序对所述待存储键值对添加哨兵键值对,获得结果键值对;
写入模块,用于将所述结果键值对写入内存表中,获得待处理内存表;
持久化模块,用于将所述待处理内存表中的结果键值对持久化到第一本地存储系统中,获得存储日志。
此外,为实现上述目的,本发明还提出了一种终端设备,所述终端设备包括:存储器、处理器及存储在所述存储器上并在所述处理器上运行存储程序,所述存储程序被所述处理器执行时实现如上述任一项所述的键值对存储的步骤。
此外,为实现上述目的,本发明还提出了一种计算机可读存储介质,所述计算机可读存储介质上存储有存储程序,所述存储程序被处理器执行时实现如上述任一项所述的键值对存储的步骤。
本发明技术方案提出了一种键值对存储方法,通过接收客户端发送的待存储键值对;按照第一预设顺序对所述待存储键值对添加哨兵键值对,获得结果键值对;将所述结果键值对写入内存表中,获得待处理内存表;将所述待处理内存表中的结果键值对持久化到第一本地存储系统中,获得存储日志。利用现有的键值对存储技术进行键值对的存储时,需要将键值对序列化并持久化至预写日志系统时,并将只读内存表中的键值对持久化到本地存储系统中,存在两次持久化的过程,对键值对进行持久化时,终端设备的处理器占用率较高,两次持久化的过程更是使得终端设备的处理器占用率极高,而本申请,通过按照第一预设顺序对待存储键值对添加哨兵键值对,以对待存储键值对进行序列化,并不需要进行待存储键值对的持久化,只在将所述待处理内存表中的结果键值对存储到第一本地存储系统中时,进行一次持久化,终端设备的处理器使用率较低,所以利用本申请的键值对存储方法,降低了处理器的占用率,处理器的性能消耗较低,终端设备的运行速度较快。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为本发明实施例方案涉及的硬件运行环境的终端设备结构示意图;
图2为本发明键值对存储方法第一实施例的流程示意图;
图3为本发明键值对存储方法第二实施例的流程示意图;
图4为本发明结果键值对的存储状态示意图;
图5为本发明键值对存储装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的终端设备结构示意图。
终端设备可以是移动电话、智能电话、笔记本电脑、数字广播接收器、个人数字助理(PDA)、平板电脑(PAD)等用户设备(User Equipment,UE)、手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其它处理设备、移动台(Mobile station,MS)等。终端设备可能被称为用户终端、便携式终端、台式终端等。
通常,终端设备包括:至少一个处理器301、存储器302以及存储在所述存储器上并可在所述处理器上运行的存储程序,所述存储程序配置为实现如前所述的键值对存储的步骤。
处理器301可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器301可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器301也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(CentralProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器301可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。处理器301还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关键值对存储操作,使得键值对存储模型可以自主训练学习,提高效率和准确度。
存储器302可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器302还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器302中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器301所执行以实现本申请中方法实施例提供的键值对存储。
在一些实施例中,终端还可选包括有:通信接口303和至少一个外围设备。处理器301、存储器302和通信接口303之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与通信接口303相连。具体地,外围设备包括:射频电路304、显示屏305和电源306中的至少一种。
通信接口303可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器301和存储器302。在一些实施例中,处理器301、存储器302和通信接口303被集成在同一芯片或电路板上;在一些其他实施例中,处理器301、存储器302和通信接口303中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路304用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路304通过电磁信号与通信网络以及其他通信设备进行通信。射频电路304将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路304包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路304可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路304还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏305用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏305是触摸显示屏时,显示屏305还具有采集在显示屏305的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器301进行处理。此时,显示屏305还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏305可以为一个,电子设备的前面板;在另一些实施例中,显示屏305可以为至少两个,分别设置在电子设备的不同表面或呈折叠设计;在再一些实施例中,显示屏305可以是柔性显示屏,设置在电子设备的弯曲表面上或折叠面上。甚至,显示屏305还可以设置成非矩形的不规则图形,也即异形屏。显示屏305可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
电源306用于为电子设备中的各个组件进行供电。电源306可以是交流电、直流电、一次性电池或可充电电池。当电源306包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
本领域技术人员可以理解,图1中示出的结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有存储程序,所述存储程序被处理器执行时实现如上文所述的键值对存储的步骤。因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。确定为示例,程序指令可被部署为在一个终端设备上执行,或者在位于一个地点的多个终端设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个终端设备上执行。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的计算机可读存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
基于上述硬件结构,提出本发明键值对存储方法的实施例。
参照图2,图2为本发明键值对存储方法第一实施例的流程示意图,所述方法用于终端设备,所述方法包括以下步骤:
步骤S11:接收客户端发送的待存储键值对。
需要说明的是,本发明的执行主体是终端设备,终端设备的结构参照上述描述,此处不再赘述。客户端可以是与所述终端设备连接的电子设备,客户端结构参照上述终端设备的结构,结构相似,此处不再赘述。通常,客户端发送的为请求数据,而请求数据是以键值对的方式进行传输、存储和处理的,本发明的键值对即是代指请求数据。
步骤S12:按照第一预设顺序对所述待存储键值对添加哨兵键值对,获得结果键值对。
需要说明的是,待存储键值对具有键和键对应的键值,在本申请实施例中需要对待存储键值对按照第一预设顺序添加哨兵键值对,一个待存储键值对对应一个哨兵键值对,待存储键值对和对应的哨兵键值对的和为一个结果键值对,哨兵键值对包括哨兵键(特殊字符串,用户可以根据需求设定字符串组成格式)和哨兵键的哨兵键值,其中,哨兵键值是指待存储键值对获得的顺序号,顺序号是基于第一预设顺序获得的,对某一个待存储键值对添加的哨兵键值对的哨兵键值,即是该待存储键值对在第一预设顺序中的排列序号(接收时间越靠前靠前的待存储键值对的序列号越小,本申请所涉及的顺序号均是按照顺序号由小到达为例进行解释);通常,第一预设顺序是待存储键值对接收时的时间顺序,即,接收到一个待存储键值对时,基于待存储键值对接收的时间顺序,对其添加一个哨兵键值对。
例如,待存储键值对A键值对是第1005个被接收到的键值对,则对该待存储键值对添加的哨兵键值对的哨兵键值为1005,其中,该待存储键值对对应的结果键值也是第1005个获得结果键值对。
步骤S13:将所述结果键值对写入内存表中,获得待处理内存表。
需要说明的是,每获得一个结果键值对就将该结果键值对存储在内存表中,获得待处理内存表。
例如,内存表中存储有300个键值对,该300个键值对的哨兵键值为301到600,当获得第601个结果键值对(其哨兵键值为601)时,将第601个结果键值对写入(存储于)所述内存表中,获得待处理内存表,待处理内存表包括301个结果键值对。
步骤S14:将所述待处理内存表中的结果键值对持久化到第一本地存储系统中,获得存储日志。
需要说明的是,持久化是指把数据(本申请指结果键值对)保存到可永久保存的存储设备中(本申请为第一本地存储系统)。持久化的主要应用是将内存中的结果键值对存储在第一本地存储系统中。
具体的,按照第二预设顺序将所述待处理内存表转换为只读内存表;利用回刷方法,按照所述第二预设顺序将所述只读内存表中的结果键值对持久化到第一本地存储系统中,获得存储日志,其中,第一本地存储系统是本实施例的执行主体终端设备中的本地存储系统。
需要说明的是,在待处理内存表已经写满结果键值对时,将该内存表转换为只读内存表,只读内存表中的结果键值对并不会变化,并将只读内存表中的结果键值对持久化到第一本地存储系统中,获得存储日志,一个存储日志中包括一个结果键值对(包括待存储键值对和对应的哨兵键值对),和执行该结果键值对时第一本地存储系统存储状态的修改信息等,可以理解的是,结果键值对持久化至第一本地存储系统的过程,即是利用结果键值对生成对应的存储日志的过程,第一本地存储系统存储的实际是包括结果键值对的存储日志,而非结果键值对与存储日志的和;同时存储日志基于只读内存表中的结果键值对获得,存储日志包括结果键值对中的待存储键值对和哨兵键值对,存储日志也是具有序列的,存储日志的序列与第一预设顺序对应,即存储日志中结果键值对的哨兵键值即是存储日志的顺序号。
另外,第二预设顺序是指获得待处理内存表的时间顺序和获得只读内存表的时间顺序,即,待处理内存表获得的时间顺序即为待处理内存表转换为只读内存表的预设顺序,只读内存表获得的时间顺序即为只读内存表持久化的预设顺序。可以理解的是,第一预设顺序与第二预设顺序是对应的,即,第一预设顺序和第二预设顺序均是基于时间顺序获得。
例如,待待处理内存表写满结果键值对时,包括400个结果键值对,并将包括400个结果键值对的待处理内存表转换为只读存储表,将只读存储表中的400个结果键值对持久化到第一本地存储系统中,共对应400个存储日志。
本实施例技术方案提出了一种键值对存储方法,通过接收客户端发送的待存储键值对;按照第一预设顺序对所述待存储键值对添加哨兵键值对,获得结果键值对;将所述结果键值对写入内存表中,获得待处理内存表;将所述待处理内存表中的结果键值对持久化到第一本地存储系统中,获得存储日志。利用现有的键值对存储技术进行键值对的存储时,需要将键值对序列化并持久化至预写日志系统时,并将只读内存表中的键值对持久化到本地存储系统中,存在两次持久化的过程,对键值对进行持久化时,终端设备的处理器占用率较高,两次持久化的过程更是使得终端设备的处理器占用率极高,而本申请,通过按照第一预设顺序对待存储键值对添加哨兵键值对,以对待存储键值对进行序列化,并不需要进行待存储键值对的持久化,只在将所述待处理内存表中的结果键值对存储到第一本地存储系统中时,进行一次持久化,终端设备的处理器使用率较低,所以利用本申请的键值对存储方法,降低了处理器的占用率,处理器的性能消耗较低,终端设备的运行速度较快。
参照图3,图3为本发明键值对存储方法第二实施例的流程示意图;所述方法还用于终端设备,所述方法包括:
S21:基于所述第一本地存储系统中的存储状态,获得所述第一本地存储系统的快照;
S22:基于所述快照,在所述存储日志中确定出待清理存储日志;
S23:将所述存储日志中的所述待清理存储日志删除,获得结果存储日志,并将所述快照存储到所述第一本地存储系统。
需要说明的是,第一本地存储系统的某一时刻的快照是基于第一本地存储系统在该时刻的存储状态获得。通常,可以在获得新的存储日志时,即以该时刻为基准,获得新的快照;也可以设定预设时间间隔,在预设时间间隔到达时,获得新的快照。
当每一个结果键值对持久化到第一本地存储系统时,第一本地存储系统的存储状态会发生变化,同时,随着第一本地存储系统接收到的键值对的增加,存储日志也会增加。然而,第一本地存储系统存储容量是有限的,不可能实现所有存储日志的保存,为了节省第一本地存储系统的存储空间,需要删除一些存储日志,以释放存储空间。此时,需要确定待清理存储日志,将所述存储日志中的所述待清理存储日志删除,剩下的存储日志即为获得结果存储日志。某一时刻的待清理存储日志,包括第一本地存储系统从初始化的存储状态到该时刻的存储状态所涉及的结果键值对对应的存储日志,同时,该时刻的存储状态以快照的方式进行存储,快照的存储空间远小于待清理的存储日志,所以,通过存储快照来代替存储待清理存储日志,节约了第一本地存储系统的存储空间。
进一步的,步骤S21之前,还包括:获取所述存储日志中结果键值对的哨兵键值;相应的,所述步骤S21包括:基于所述第一本地存储系统的存储状态和所述存储日志中结果键值对的哨兵键值,获得所述第一本地存储系统的快照。
可以理解的是,已持久化的结果键值对是全部结果键值对中的一部分,其中有一部分未持久化的结果键值对存储于待处理内存表和只读内存表中。为了清理第一本地存储系统的存储日志,只能对以持久化的结果键值对对应的存储日志进行清理。存储日志中包括结果键值对,所以存储日志具有结果键值对的哨兵键值,由于,结果键值对的顺序号(哨兵键值)是基于第一预设顺序获得的,结果键值对的第一预设顺序的顺序号(接收时间越靠前靠前的待存储键值对的序列号越小)为哨兵键值;以第一预设顺序为待存储键值对的接收时间顺序为例,在某一时刻,哨兵键值最大时,则最大的哨兵键值对应的结果键值对是最新的,且,最新的结果键值对对应的存储日志也会是最新的,第一本地存储系统的存储状态也会是最新的,需要获取第一本地存储系统的快照,可以理解的是,该时刻快照中的索引即是第一本地存储系统中的存储日志的哨兵键值最大值。可以理解的是,当第一预设顺序为其他顺序时,可以参照此处例子进行快照的索引的确定。通常获得新的快照时,可删除原有的快照,以释放存储空间。
进一步的,所述步骤S22包括:在所述存储日志中结果键值对的哨兵键值中确定出与所述索引满足预设条件的选定哨兵键值;将与所述选定哨兵键值对应的结果键值对确定为选定结果键值对;在所述存储日志中确定出与所述选定结果键值对对应的待清理存储日志。
需要说明的是,预设条件的目的是在存储日志中筛选出排在存储日志序列前端的存储日志,即,以与索引相同的一个哨兵键值为基准哨兵键值,将存储日志中哨兵键值排在该基准哨兵键值之前的哨兵键值确定为选定哨兵键值;将与所述选定哨兵键值对应的结果键值对确定为选定结果键值对;在所述存储日志中确定出与所述选定结果键值对对应的待清理存储日志。例如,依旧以待存储键值对接收的时间顺序为第一预设顺序为例,哨兵键值小于或等于所述索引(上文所述最大哨兵键值)时,所述哨兵键值与所述索引满足预设条件,将哨兵键值小于或等于索引的哨兵键值确定为选定哨兵键值,进而利用选定哨兵键值确定出待清理存储日志;可以理解的是,哨兵键值小于或等于所述索引的结果键值对对应的存储日志(待清理存储日志)与快照是存在信息重叠的(终端设备第一本地存储系统的某一时刻的存储状态可以是以该时刻快照的方式进行保存,也可以该时刻待清理存储日志的方式保存,一个初始化的本地存储系统可以利用快照或待清理存储日志,将该初始化的本地存储系统的存储状态同步到第一本地存储系统该时刻的存储状态),此时,只需要保存占用空间较少的快照即可,删除待清理的存储日志,以释放存储空间。
进一步的,所述终端设备与发送端通过一致性协议连接;所述将所述存储日志中的所述待清理存储日志删除,获得结果存储日志,并将所述快照存储到所述第一本地存储系统的步骤之后,所述方法还包括:接收所述发送端发送的同步请求;基于所述同步请求,将所述快照和所述结果存储日志发送至所述发送端,以使所述发送端基于所述快照和所述存储日志,对所述发送端的第二本地存储系统进行存储状态的恢复。
需要说明的是,单终端设备发生故障时,会导致待存储键值对无法被存储,为了避免该情况的发生,可以将待存储的键值对复制到多台设备(发送端与所述终端设备的集合,发送端结构参照上述终端设备的描述,此处不再赘述),为了使多台设备均可对待存储键值对进行存储,且存储内容一致,本发明将发送端和终端设备通过一致性协议连接。通常,常见的一致性协议可以包括RAFT或PAXOS。
具体应用中,以RAFT协议为例。RAFT协议管理多个设备组成的复制组,复制组中具有有一个leader(终端设备)和多个followers(发送端)。leader接受客户端的待存储键值对,并将待存储键值对进行复制,并分发给followers,以使leader和followers将待存储键值对分别存储到本地存储系统(leader将待存储键值对存储在第一本地存储系统,followers将待存储键值对存储在第二本地存储系统)中,以分别获得存储日志。followers被动接受leader指令。当复制组中超过半数的成员(包括leader和followers)已经将待存储键值对进行存储时,leader通知客户端请求处理成功。
当发送端由于某些原因(停电、设备损坏或设备维护等)掉线时,在发送端重与终端设备连接时,发送端通常已错失一定数量的待存储键值对,此时,发送端需要对第二本地存储系统进行存储状态的恢复,向终端设备发送同步请求,终端设备基于所述同步请求,将所述快照和所述结果存储日志发送至所述发送端,以使所述发送端基于所述快照和结果所述存储日志,对所述发送端的第二本地存储系统进行存储状态的恢复。
例如,在同一一致性协议中的复制组包括多个设备为一个终端设备和两个发送端(A发送端和B发送端),当B发送端长时间离线并回归复制组时,B发送端的快照索引为800,结果存储日志包括哨兵值801到900的结果存储日志,B发送端需要进行存储状态的恢复,此时,A发送端最新的快照索引为1000,结果存储日志包括哨兵键值1001到1100的结果存储日志,B发送端无法根据自己的快照和结果存储日志进行存储状态的恢复,发送同步请求给终端设备,终端设备发送终端设备的快照和结果存储日志,发送端基于终端设备的快照和结果存储日志,对发送端的本地存储系统进行存储状态的恢复,发送端的本地存储系统的存储状态已是最新。
进一步的,所述第一本地存储系统为基于LSM树的本地存储系统,所述第二本地存储系统为基于LSM树的本地存储系统。
需要说明的是,存储日志在第一本地存储系统和第二本地存储系统的存储格式为SST文件。
第一本地存储系统和第二本地存储系统的数据组织如下:存储系统中的SST文件分成不同的level,包括L0、L1、L2······Ln,除去L0是由只读内存表中的结果键值对直接持久化而来,其他level均能保证该level中的结果键值对是按照结果键值对的key(结果键值对中待存储键值对的键)的时间序有序排列(即本申请以哨兵键值为时间顺序的顺序号,通过哨兵键值来确定结果键值对的顺序),顺次填充在每个SST文件中,不同levels可能有key相同的结果键值对,较高level的结果键值对,是较迟写入的。当Li层的数据量过大时,会触发一个compaction操作,将Li和L(i+1)层重合(结果键值对的键相同)的SST文件进行合并,生成新的SST文件(新的SST文件中结果键值对对的键不变,键值为较新的结果键值对的键值),旧SST文件(原较新的结果键值对的SST文件和原较旧的结果键值对的SST文件)均删除,新的SST文件存储在L(i+1)层。
第一本地存储系统和第二本地存储系统数据的检索:按着只读内存表、L0、L1、······LN,从高到低(N值从小到大,即,从只读内存表开始,沿着L0、L1、······LN的顺序)的顺序逐level查找,当查找到相应key的结果键值对的时候,就返回相应的键值对,直到LN都查找不到时,返回key不存在。参照在上一段描述可知,key相同的结果键值对,结果键值对较新的键值一定在较高的level,所以按着从高到低的查找方法,一定可以确保返回的结果键值对的键值是最新的。
可以理解的是,当终端设备断线时,发送端可以作为新的终端设备继续执行本发明的键值对存储方法,断线的终端设备重连时,作为新的发送端,以利用新的新的终端设备的快照和结果存储日志,对新的发送端的本地存储系统的存储状态进行恢复。即,一直处于连接状态的设备可以作为本发明键值对存储方法的执行主体,断线重连的设备即为发送端,终端设备和发送端并没有绝对的界限。
在本实施例中,发送端可以在断线重连时,利用终端设备中的快照和结果存储日志进行发送端的第二本地存储系统的存储状态的恢复,保证了发送端和终端设备各自本地存储系统的存储状态处于最新状态。
参照图4,图4为本发明结果键值对的存储状态示意图。每个结果键值对均以方框的形式表示,方框中的数字代表结果键值对的哨兵键值,即,哨兵键值为结果键值对的获得顺序的顺序号,顺序号为500、600和700等间隔为100的数据表示,并非连续的自然数(用户也可以根据自己的需求,设定连续的自然数为顺序号,本发明不做限制,只要满足顺序号由小到大代表顺序由先到后即可)。
横线上方区域51代表内存表,内存表51中的结果键值对包括只读内存表的结果键值对(内存表中的实线框)和待处理内存表的结果键值对(内存表中的虚线框)。横线下方区域52代表持久化的结果键值对(以结果存储日志的方式进行存储);哨兵键值大的结果存储日志排列在较高的level,键值较低的结果存储日志排列在较低的level。在进行检索时,从内存表中的数据开始检索,并且以检索到的最大哨兵键值对应的结果键值对为最新的结果键值对,确定键值对的存储状态,此时检索到的最大哨兵键值为1000。当进行存储状态的恢复时,只能利用结果存储日志中的哨兵键值最大的700对应的结果存储日志之前的结果存储日志和快照进行存储状态的恢复。
参照图5,图5为本发明键值对存储装置第一实施例的结构框图,装置用于终端设备,所述装置包括:
接收模块10,用于接收客户端发送的待存储键值对;
添加模块20,用于按照第一预设顺序对所述待存储键值对添加哨兵键值对,获得结果键值对;
写入模块30,用于将所述结果键值对写入内存表中,获得待处理内存表;
持久化模块40,用于将所述待处理内存表中的结果键值对持久化到第一本地存储系统中,获得存储日志。
以上所述仅为本发明的可选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。

Claims (10)

1.一种键值对存储方法,其特征在于,所述键值对存储方法包括以下步骤:
接收客户端发送的待存储键值对;
按照第一预设顺序对所述待存储键值对添加哨兵键值对,获得结果键值对;其中,所述哨兵键值对包括哨兵键和哨兵键的哨兵键值,所述哨兵键值是指所述待存储键值对获得的顺序号;
将所述结果键值对写入内存表中,获得待处理内存表;
将所述待处理内存表中的结果键值对持久化到第一本地存储系统中,获得存储日志。
2.如权利要求1所述的键值对存储方法,其特征在于,所述将所述待处理内存表中的结果键值对持久化到第一本地存储系统中,获得存储日志的步骤之后,所述方法还包括:
基于所述第一本地存储系统中的存储状态,获得所述第一本地存储系统的快照;
基于所述快照,在所述存储日志中确定出待清理存储日志;
将所述存储日志中的所述待清理存储日志删除,获得结果存储日志,并将所述快照存储到所述第一本地存储系统。
3.如权利要求2所述的键值对存储方法,其特征在于,所述基于所述第一本地存储系统中的存储状态,获得所述第一本地存储系统的快照的步骤之前,所述方法还包括:
获取所述存储日志中结果键值对的哨兵键值;
所述基于所述第一本地存储系统中的存储状态,获得所述第一本地存储系统的快照的步骤包括:
基于所述第一本地存储系统的存储状态和所述存储日志中结果键值对的哨兵键值,获得所述第一本地存储系统的快照。
4.如权利要求3所述的键值对存储方法,其特征在于,所述基于所述快照,在所述存储日志中确定出待清理存储日志的步骤包括:
在所述存储日志中结果键值对的哨兵键值中确定出与所述快照的索引满足预设条件的选定哨兵键值;
将与所述选定哨兵键值对应的结果键值对确定为选定结果键值对;
在所述存储日志中确定出与所述选定结果键值对对应的待清理存储日志。
5.如权利要求4所述的键值对存储方法,其特征在于,所述方法用于终端设备,所述终端设备与发送端通过一致性协议连接;所述将所述存储日志中的所述待清理存储日志删除,获得结果存储日志,并将所述快照存储到所述第一本地存储系统的步骤之后,所述方法还包括:
接收所述发送端发送的同步请求;
基于所述同步请求,将所述快照和所述结果存储日志发送至所述发送端,以使所述发送端基于所述快照和所述结果存储日志,对所述发送端的第二本地存储系统进行存储状态的恢复。
6.如权利要求5所述的键值对存储方法,其特征在于,所述将所述待处理内存表中的结果键值对持久化到第一本地存储系统中,获得存储日志的步骤包括:
按照第二预设顺序将所述待处理内存表转换为只读内存表;
利用回刷方法,按照所述第二预设顺序将所述只读内存表中的结果键值对持久化到第一本地存储系统中,获得存储日志。
7.如权利要求6所述的键值对存储方法,其特征在于,所述一致性协议为RAFT或,PAXOS,所述第一本地存储系统为基于LSM树的本地存储系统,所述第二本地存储系统为基于LSM树的本地存储系统。
8.一种键值对存储装置,其特征在于,所述装置包括:
接收模块,用于接收客户端发送的待存储键值对;
添加模块,用于按照第一预设顺序对所述待存储键值对添加哨兵键值对,获得结果键值对;其中,所述哨兵键值对包括哨兵键和哨兵键的哨兵键值,所述哨兵键值是指所述待存储键值对获得的顺序号;
写入模块,用于将所述结果键值对写入内存表中,获得待处理内存表;
持久化模块,用于将所述待处理内存表中的结果键值对持久化到第一本地存储系统中,获得存储日志。
9.一种终端设备,其特征在于,所述终端设备包括:存储器、处理器及存储在所述存储器上并在所述处理器上运行存储程序,所述存储程序被所述处理器执行时实现如权利要求1至7中任一项所述的键值对存储方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有存储程序,所述存储程序被处理器执行时实现如权利要求1至7中任一项所述的键值对存储方法的步骤。
CN202011369014.2A 2020-11-27 2020-11-27 键值对存储方法、装置、终端设备以及存储介质 Active CN112416940B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011369014.2A CN112416940B (zh) 2020-11-27 2020-11-27 键值对存储方法、装置、终端设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011369014.2A CN112416940B (zh) 2020-11-27 2020-11-27 键值对存储方法、装置、终端设备以及存储介质

Publications (2)

Publication Number Publication Date
CN112416940A CN112416940A (zh) 2021-02-26
CN112416940B true CN112416940B (zh) 2024-05-28

Family

ID=74829311

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011369014.2A Active CN112416940B (zh) 2020-11-27 2020-11-27 键值对存储方法、装置、终端设备以及存储介质

Country Status (1)

Country Link
CN (1) CN112416940B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113535857A (zh) * 2021-08-04 2021-10-22 阿波罗智联(北京)科技有限公司 数据同步方法及装置

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106446140A (zh) * 2016-09-20 2017-02-22 北京百度网讯科技有限公司 用于数据持久化的方法及装置
CN106886375A (zh) * 2017-03-27 2017-06-23 百度在线网络技术(北京)有限公司 存储数据的方法和装置
CN110147296A (zh) * 2018-02-11 2019-08-20 华为技术有限公司 数据处理方法、装置、设备及可读存储介质
CN110321367A (zh) * 2019-06-28 2019-10-11 北京奇艺世纪科技有限公司 一种数据存储方法、数据查询方法及相关装置、电子设备
CN110347852A (zh) * 2019-06-06 2019-10-18 华中科技大学 嵌入横向扩展键值存储系统的文件系统及文件管理方法
CN110377531A (zh) * 2019-07-19 2019-10-25 清华大学 基于日志结构的持久性内存存储引擎装置及控制方法
CN110489421A (zh) * 2019-08-22 2019-11-22 腾讯科技(深圳)有限公司 数据存储方法、装置、计算机可读存储介质和计算机设备
CN110597814A (zh) * 2019-09-16 2019-12-20 腾讯科技(深圳)有限公司 结构化数据的序列化、反序列化方法以及装置
CN111309270A (zh) * 2020-03-13 2020-06-19 清华大学 一种持久性内存键值存储系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7451166B2 (en) * 2005-01-13 2008-11-11 International Business Machines Corporation System and method for maintaining checkpoints of a keyed data structure using a sequential log
US10795821B2 (en) * 2018-12-04 2020-10-06 Vmware, Inc. Memory efficient key-value store
US10803006B1 (en) * 2019-04-01 2020-10-13 MemVerge, Inc Persistent memory key-value store in a distributed memory architecture
US11222022B2 (en) * 2019-04-17 2022-01-11 Verizon Patent And Licensing Inc. Method and system for searching a key-value storage

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106446140A (zh) * 2016-09-20 2017-02-22 北京百度网讯科技有限公司 用于数据持久化的方法及装置
CN106886375A (zh) * 2017-03-27 2017-06-23 百度在线网络技术(北京)有限公司 存储数据的方法和装置
CN110147296A (zh) * 2018-02-11 2019-08-20 华为技术有限公司 数据处理方法、装置、设备及可读存储介质
CN110347852A (zh) * 2019-06-06 2019-10-18 华中科技大学 嵌入横向扩展键值存储系统的文件系统及文件管理方法
CN110321367A (zh) * 2019-06-28 2019-10-11 北京奇艺世纪科技有限公司 一种数据存储方法、数据查询方法及相关装置、电子设备
CN110377531A (zh) * 2019-07-19 2019-10-25 清华大学 基于日志结构的持久性内存存储引擎装置及控制方法
CN110489421A (zh) * 2019-08-22 2019-11-22 腾讯科技(深圳)有限公司 数据存储方法、装置、计算机可读存储介质和计算机设备
CN110597814A (zh) * 2019-09-16 2019-12-20 腾讯科技(深圳)有限公司 结构化数据的序列化、反序列化方法以及装置
CN111309270A (zh) * 2020-03-13 2020-06-19 清华大学 一种持久性内存键值存储系统

Also Published As

Publication number Publication date
CN112416940A (zh) 2021-02-26

Similar Documents

Publication Publication Date Title
US11755414B2 (en) Data recovery using bitmap data structure
CN108475235A (zh) 利用dram程序高速缓存的非易失性随机存取系统存储器
CN112883036B (zh) 索引创建方法、装置、存储服务器以及存储介质
CN105874428B (zh) 用于多个操作系统环境中的操作系统转变的技术
CN114048168A (zh) 电子档案归档方法、装置、设备、系统及存储介质
CN112416940B (zh) 键值对存储方法、装置、终端设备以及存储介质
CN110209341B (zh) 一种数据写入方法、装置和存储设备
CN113038198A (zh) 视频数据下载方法、装置、终端设备以及存储介质
CN112506904A (zh) 数据质量评估方法、装置、终端设备以及存储介质
WO2024139279A1 (zh) 访问控制列表规则配置方法、装置、电子设备及存储介质
CN111858147B (zh) 容灾处理方法、装置、移动终端及存储介质
CN113886688B (zh) 对象的关联关系预测方法、装置、终端设备以及存储介质
CN113225234B (zh) 资产探测方法、装置、终端设备以及计算机可读存储介质
CN112564924B (zh) 计算机扩展卡及区块链终端设备
CN114385077A (zh) Fpga信号调制解调动态重构方法、装置、系统及存储介质
CN112035036A (zh) 电子白板共享方法、系统、终端设备及存储介质
CN209946882U (zh) 一种基于fpga的数据存储与转储系统
CN112346885A (zh) 电子设备控制方法、装置、设备以及计算机可读存储介质
CN112925744A (zh) 刷机包修改方法、装置、终端设备以及存储介质
CN100495315C (zh) 一种通过usb端口在电子设备同步显示的装置与方法
CN111723123B (zh) 轨迹预测方法、装置、电子设备及存储介质
CN111193697B (zh) 社交账号的不可信度检测方法、装置及系统
CN107608797B (zh) 文件处理方法、装置、存储介质及电子设备
CN112346865A (zh) 文件获取方法、装置、终端设备以及存储介质
CN114153658A (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
GR01 Patent grant
GR01 Patent grant