CN112394874B - 一种键值kv的存储方法、装置及存储设备 - Google Patents
一种键值kv的存储方法、装置及存储设备 Download PDFInfo
- Publication number
- CN112394874B CN112394874B CN201910744198.7A CN201910744198A CN112394874B CN 112394874 B CN112394874 B CN 112394874B CN 201910744198 A CN201910744198 A CN 201910744198A CN 112394874 B CN112394874 B CN 112394874B
- Authority
- CN
- China
- Prior art keywords
- key
- value
- physical address
- storage
- chip
- 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
- 238000003860 storage Methods 0.000 title claims abstract description 131
- 238000000034 method Methods 0.000 title claims abstract description 66
- 238000013507 mapping Methods 0.000 claims abstract description 52
- 238000012545 processing Methods 0.000 claims description 41
- 230000008569 process Effects 0.000 claims description 8
- 238000013508 migration Methods 0.000 claims description 6
- 230000005012 migration Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 5
- 239000007787 solid Substances 0.000 claims description 2
- 238000013403 standard screening design Methods 0.000 description 173
- 230000006870 function Effects 0.000 description 18
- 238000004891 communication Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011065 in-situ storage Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000035939 shock Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种键值KV的存储方法、装置及存储设备,涉及存储技术领域。该存储方法应用于包括第一存储芯片和第二存储芯片的SSD。第一存储芯片的擦写寿命低于第二存储芯片的擦写寿命,利用这一特性,将第一键值中的第一键和第一值分别存储于第一存储芯片和第二存储芯片中,并创建第一键、第一键的物理地址以及第一值的物理地址三者之间的映射关系。这样,在需要更新键值中的值的时候,SSD无需读取键,直接对值进行更新即可。相比于现有技术而言,本发明实施例提供的存储方法不存在额外的读写操作,有效的延长了SSD的使用寿命。
Description
技术领域
本申请涉及存储技术领域,尤其涉及一种键值KV的存储方法、装置及存储设备。
背景技术
为了支撑各类键值(key-value,KV)型数据库(存储KV结构的数据),用于存储KV的固态硬盘(solid state disk,SSD),简称为KV-SSD,随之而出。与块(block)存储的传统SSD相同,KV-SSD中Nand-Flash芯片的读、写粒度为一个页(page),读写特性为擦除后再写(write-after-erase),即芯片上的数据不能原地更新。当需要变更某一数据时,需要将新数据存储在空闲页,而将原来存储数据的页标记为“无效”。
现有的KV-SSD将KV作为一个对象存储于存储空间,而KV中数据的更新往往是对值(value)的更新。这样,在每次对已经存储的KV中的值(value)进行更新时,KV-SSD均需要先读出已经存储的键(key),再将其写入到新的页中。很显然,上述操作带来了很多额外的读写操作,会严重影响KV-SSD的使用寿命。
发明内容
本申请提供一种键值KV的存储方法、装置及存储设备,用于解决读写操作多,严重影响SSD的使用寿命的问题。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供一种键值KV的存储方法,该存储方法应用于包括第一存储芯片和第二存储芯片的SSD,第一存储芯片的擦写寿命低于第二存储芯片的擦写寿命。SSD在接收到用于请求写入第一键和第一值的写请求后,将第一键存储于第一存储芯片,并将第一值存储于第二存储芯片。在存储第一键和第一值后,SSD还创建第一键、第一键的物理地址以及第一值的物理地址三者之间的映射关系。这里,第一键的物理地址用于指示第一键存储于第一存储芯片的存储空间,第一值的物理地址用于指示第一值存储于第二存储芯片的存储空间。
第一存储芯片的擦写寿命低于第二存储芯片的擦写寿命,利用这一特性,SSD将键和值分别存储于不同的存储芯片中。这样,在需要更新键值中的值的时候,SSD无需读取键,直接对值进行更新即可。相比于现有技术而言,本发明实施例提供的存储方法不存在额外的读写操作,有效的延长了SSD的使用寿命。
可选的,在本申请的一种可能的实现方式中,SSD还接收包括第一键的第一请求,该第一请求用于请求对第一键对应的值进行处理。相应的,在确定映射关系包括第一键时,SSD从映射关系中获取与第一键的物理地址对应的第一值的物理地址,并根据第一值的物理地址,处理第一值。
可选的,在本申请的一种可能的实现方式中,第一请求具体用于读取第一键对应的第一值。
可选的,在本申请的一种可能的实现方式中,第一请求具体用于删除第一键对应的第一值。相应的,这种场景中,上述“SSD根据第一值的物理地址,处理第一值”的方法包括:SSD为第一值的物理地址所指示的存储空间添加第一无效标识。此外,SSD还为第一键的物理地址所指示的存储空间添加第二无效标识,以及删除映射关系。
SSD中存储芯片的读写特性为擦除后再写,不能原地更新数据,因此,在删除第一键和第一值时,SSD为第一值的物理地址所指示的存储空间添加第一无效标识,以及为第一键的物理地址所指示的存储空间添加第二无效标识。为了保持数据的一致性,SSD还删除映射关系。
可选的,在本申请的一种可能的实现方式中,第一请求还包括第二值,第一请求具体用于将第一键对应的第一值更新为第二值。相应的,这种场景中,上述“SSD根据第一值的物理地址,处理第一值”的方法包括:SSD为第一值的物理地址所指示的存储空间添加第一无效标识。此外,SSD还确定第一物理地址,并在第一物理地址中存储第二值,以及将映射关系中第一值的物理地址更新为第一物理地址,该第一物理地址用于指示第二存储芯片中未存储数据的存储空间。
SSD中存储芯片的读写特性为擦除后再写,不能原地更新数据,因此,在将第一值更新为第二值时,SSD为第一值的物理地址所指示的存储空间添加第一无效标识,并将第二值存储于未存储数据的存储空间中。为了保持数据的一致性,SSD还更新映射关系。
可选的,在本申请的一种可能的实现方式中,SSD还获取预设时间段内与第一键对应的值的更新频率;若更新频率小于预设阈值,则SSD将与第一键当前对应的值迁移到第一存储芯片,并将映射关系中与第一键对应的值的物理地址更新为迁移后的物理地址。
更新频率为预设时间段内与第一键对应的值的更新次数。可选的,每次更新与第一键对应的值时,SSD均将更新次数加一。若在预设时间段内,更新频率小于预设阈值,则说明与第一键对应的值为冷数据。对于冷数据,SSD可以将其存储于写时延较长、单位存储量较大的存储芯片中。写时延较长、单位存储量较大的存储芯片的擦写寿命较短,因此,SSD可以将冷数据存储于第一存储芯片。由于第一存储芯片和第二存储芯片均部署于SSD中,因此,与第一键对应的值的迁移是在同一个SSD中完成的,不会占用盘外带宽,对当前业务也不会造成影响。
第二方面,提供一种键值KV的存储装置,该存储装置能够实现第一方面及其任意一种可能的实现方式中的功能。这些功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。
在本申请的一种可能的方式中,该存储装置可以包括接收单元、存储单元和处理单元,该接收单元、存储单元和处理单元可以执行上述第一方面及其任意一种可能的实现方式的键值KV的存储方法中的相应功能。例如:接收单元,用于接收写请求,该写请求包括第一键key和第一值value,写请求用于请求写入第一键和第一值。存储单元,用于将接收单元接收到的第一键存储于第一存储芯片,并将第一值存储于第二存储芯片。处理单元,用于创建第一键、第一键的物理地址以及第一值的物理地址三者之间的映射关系,第一键的物理地址用于指示第一键存储于第一存储芯片的存储空间,第一值的物理地址用于指示第一值存储于第二存储芯片的存储空间。
第三方面,提供一种存储设备,用于执行上述第一方面及其各种可能的实现方式所述的键值KV的存储方法。
可选的,该设备还包括收发器,该收发器可以用于执行上述第一方面及其任意一种可能的实现方式所述的键值KV的存储方法中收发数据、信令或信息的步骤,例如,接收写请求。
第四方面,还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令;当计算机指令在计算机上运行时,该计算机执行如上述第一方面及其各种可能的实现方式所述的键值KV的存储方法。
第五方面,还提供一种计算机程序产品,该计算机程序产品包括计算机指令,当计算机指令在计算机上运行时,使得计算机执行如上述第一方面及其各种可能的实现方式所述的键值KV的存储方法。
需要说明的是,上述计算机指令可以全部或者部分存储在计算机存储介质上,其中,计算机存储介质可以与处理器封装在一起的,也可以与处理器单独封装,本申请对此不作限定。
本申请中第二方面、第三方面、第四方面、第五方面及其各种实现方式的描述,可以参考第一方面及其各种实现方式中的详细描述;并且,第二方面、第三方面、第四方面、第五方面及其各种实现方式的有益效果,可以参考第一方面及其各种实现方式中的有益效果分析,此处不再赘述。
在本申请中,上述键值KV的存储装置的名字对设备或功能模块本身不构成限定,在实际实现中,这些设备或功能模块可以以其他名称出现。只要各个设备或功能模块的功能和本申请类似,属于本申请权利要求及其等同技术的范围之内。
本申请的这些方面或其他方面在以下的描述中会更加简明易懂。
附图说明
图1为本发明实施例中SSD的硬件结构示意图;
图2为本发明实施例中存储系统的架构示意图;
图3为本发明实施例提供的键值KV的存储方法的流程示意图一;
图4为本发明实施例中写入第一键和第一值的流程示意图;
图5为本发明实施例提供的键值KV的存储方法的流程示意图二;
图6为本发明实施例提供的键值KV的存储方法的流程示意图三;
图7为本发明实施例提供的更新第一值的流程示意图;
图8为本发明实施例提供的键值KV的存储方法的流程示意图四;
图9为本发明实施例提供的键值KV的存储方法的流程示意图五;
图10为本发明实施例提供的键值KV的存储装置的结构示意图。
具体实施方式
闪速存储器也称为闪存(flash),以高速的数据存储速度、节能、噪声小、抗震、体积小、断电后数据不易丢失等优势取代磁盘成为主流存储设备的首选。介质为Nand-Flash芯片的SSD被应用于越来越多的存储设备中。
一般的,SSD包括SSD控制器、Nand-Flash阵列以及辅助器件。图1示出了本发明实施例中SSD的硬件结构。如图1所示,本申请实施例中SSD包括SSD控制器10、Nand-Flash阵列11以及辅助器件12。
SSD控制器10主要包括通信接口101、处理器(processor)102、缓存(cache)103、通道控制器104以及系统总线105。通信接口101、处理器102、缓存103以及通道控制器104通过系统总线105完成相互间的通信。
通信接口101,可以为串行连接SCSI接口(serial attached SCSI,SAS),或者为串行高级技术附件(serial advanced technology attachment,SATA)等,用于与其他设备(如主机)通信。
处理器102可能是中央处理器(central processing unit,CPU),或者是特定集成电路(application specific integrated circuit,ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。在本发明实施例中,处理器102可以用于接收来自主机的写请求或者读请求、处理所述写请求或者所述读请求、将所述写请求或者所述读请求发送给Nand-Flash阵列11以及其他操作。
处理器102中还可以包括缓存(图1中未示出),用于存储各种程序指令。例如,缓存中可以包括闪存转换层(flash translation layer,FTL)。本发明实施例中FTL可以理解为元数据表,其功能可以参考下述描述。或者,处理器102也可以通过其他软件模块来实现元数据表的类似功能。
缓存103用于缓存从外设(如主机)接收的数据或从Nand-Flash阵列11读取的数据。缓存103可以是随机存取存储器(random access memory,RAM)、只读存储器(read-onlymemory,ROM)、闪存(flash memory)等各种可以存储数据的非短暂性的(non-transitory)机器可读介质,在此不做限定。举例来说,当接收到主机发送的写请求时,可以将所述写请求保存在缓存103中,由处理器102对其进行处理。另外,在某些应用场景下,缓存103也可以置于SSD控制器10的外部。
可选的,处理器102中的缓存和缓存103可以集成设置或者独立设置,本申请实施例对此不做限定。
通道控制器104用于与Nand-Flash阵列11通信。
Nand-Flash阵列11由若干个Nand-Flash芯片110组成。在SSD内部利用通道(channel)将若干个Nand-Flash芯片110连接起来。各个通道之间可以实现写请求的并发处理。示例性的,如果SSD控制器10接收到多个写请求,可以由多个通道分别执行一个写请求,由此提高处理写请求的效率。
Nand-Flash阵列11中的每个Nand-Flash芯片110与通道控制器104的一个通道对应。为了提高可靠性,一般会预留通道控制器104中的一个通道用于错误检查和纠正(errorchecking and correcting,ECC)的校验。
每个Nand-Flash芯片110的读、写粒度为一个页,读写特性为擦除后再写(write-after-erase),即芯片上的数据不能原地更新。当需要变更某一数据时,需要将新数据存储在空闲页,而将原来存储数据的页标记为“无效”。
辅助器件12包括动态随机存储器(dynamic random access memory,DRAM)、电源等支持系统运行的器件。
Nand-Flash芯片110至今已经经过四代的变化,每一代的变化主要反映在单个存储单元存储数据的大小。
第一代Nand-Flash芯片采用单存储单元存储1比特数据的(single-level cell,SLC)技术,单个存储单元只能保存1比特的数据,该Nand-Flash芯片也称为SLC芯片。第二代Nand-Flash芯片使用的是单存储单元存储2比特数据的(multi-level cell,MLC)技术,单个存储单元可以保存2比特的数据,该Nand-Flash芯片也称为MLC芯片。第三代Nand-Flash芯片使用的是单存储单元存储3比特数据的(triple-level cell,TLC)技术,单个存储单元可以保存3比特的数据,该Nand-Flash芯片也称为TLC芯片。第四代Nand-Flash芯片使用的是单存储单元存储4比特数据的(quad-level cell,QLC)技术,单个存储单元可以保存4比特数据,该Nand-Flash芯片也称为QLC芯片。
尽管每一代Nand-Flash芯片在存储密度上有所进步,但是在提升存储密度的同时,也损失了芯片的擦写寿命和写时延。相比于SLC芯片的高擦写寿命(如10万次量级)、高速读写性能,QLC芯片的擦写寿命短了很多(如只有1000次左右),并且其写时延也明显高于SLC芯片的读写时延。下述表1示出了上述四种Nand-Flash芯片的读时延、写时延、擦除时延及擦写寿命。
表1
芯片类型 | 读时延(微秒) | 写时延(微秒) | 擦除时延(微秒) | 擦写寿命 |
SLC | 25 | 200-300 | 1500-2000 | 100KB |
MLC | 50 | 600-900 | ~3000 | ~10KB |
TLC | ~75 | ~900-1350 | ~4500 | ~3KB |
QLC | 122 | 2705 | 15000 | ~1KB |
表1中的“~”表示“大约”,如:TLC芯片的读时延大约为75微秒(μs),或者为75μs左右。从表1可以看出,SLC芯片、MLC芯片、TLC芯片、QLC芯片的读时延、写时延和擦除时延均依次递增,擦写寿命逐渐降低。相对于写时延和擦除时延而言,读时延增加的粒度较小,因此,可以认为芯片的升级对读时延的影响较小。
目前,业界使用较多的是KV-SSD。KV-SSD中存储KV结构的数据。KV-SSD中SSD控制器所包括的通信接口可以为KV接口,用于直接对接上层(主机侧)的KV数据库。图2示出了包括主机20和KV-SSD 21的存储系统的架构。如图2所示,KV-SSD 21中的KV接口直接与主机20中KV数据库的KV存储引擎对接,这样,KV-SSD 21只需要完成KV到Nand-Flash阵列中物理地址的映射,即可完成数据的读写。KV-SSD 21对外呈现出了较低的读写时延,性能较高。图2中KV-SSD 21的硬件结构可以参考上述图1,主机20还包括与KV存储引擎通信的应用层。
现有的KV-SSD将KV作为一个对象存储于存储空间,而KV中数据的更新往往是对值(value)的更新。这样,在每次对已经存储的KV中的值(value)进行更新时,KV-SSD均需要从旧的页中先读出已经存储的键(key),再将其写入到新的页中。很显然,上述操作带来了很多额外的读写操作,会严重影响KV-SSD的使用寿命。
为此,本发明实施例提供一种键值KV的存储方法,该存储方法应用于包括第一存储芯片和第二存储芯片的SSD(具体可以为KV-SSD)。第一存储芯片的擦写寿命低于第二存储芯片的擦写寿命,利用这一特性,SSD将键值中的键和值分别存储于第一存储芯片和第二存储芯片中,并记录键的物理地址与值的物理地址之间的映射关系。这样,在需要更新键值中的值的时候,SSD无需读取键,直接对值进行更新即可。相比于现有技术而言,本发明实施例提供的存储方法不存在额外的读写操作,有效的延长了SSD的使用寿命。
本发明实施例提供的存储方法适用于包括主机和KV-SSD的存储系统,该存储系统的架构可以参考上述图2。当然,主机和KV-SSD之间还可以包括其他设备,如存储控制器,该存储控制器与主机交互,可以接收主机发送的消息/命令,用于管理KV-SSD。图2中并未示出除主机和KV-SSD之外的其他设备。
图2中的主机20可以是具备写数据或读数据的需求,与KV-SSD 21通信的任何系统和/或装置。例如,主机20可以是计算装置、个人计算机、便携式计算机、工作站、服务器、路由器、网络装置、个人数字助理、数字相机、数字电话或其组合。主机20可以包括若干主机。
在实际应用中,主机20和KV-SSD 21可以集成在一个存储设备中,如:主机20包括KV-SSD 21;或者,主机20和KV-SSD 21位于相互独立的两个设备中,如:KV-SSD 21相对于主机20是远程的,主机20通过无线通信链路与KV-SSD 21通信;本发明实施例不对主机20和KV-SSD 21的位置关系做任何限定。
具体的,主机20可以向KV-SSD 21发送写请求,KV-SSD 21中的SSD控制器接收所述写请求之后将所述写请求携带的键值写入Nand-Flash阵列中。另外,主机20还可以向KV-SSD 21发送读请求,KV-SSD 21中的SSD控制器接收所述读请求之后,确定是否存储有所述读请求中的键(key);如果有则确定与该键的物理地址对应的值(value)的物理地址,并根据确定出的物理地址,获取值(value),并直接将获取到的值(value)发送给主机20;如果没有则向主机20发送用于指示不存在与键(key)对应的值(value)的消息。
此外,主机20还可以向KV-SSD 21发送更新请求、删除请求等,这里不再一一列举。
可选的,本发明实施例中主机20向KV-SSD 21发送的请求具体可以为键值存储(key-value store,KVS)命令,该KVS命令为读命令(GET命令)、写命令(PUT命令)、删除命令(DELETE命令)、更新命令(UPDATE命令)等。
本发明实施例中的KV-SSD 21的硬件结构可以参考上述图1。需要说明的是,KV-SSD 21中的Nand-Flash阵列包括至少两种类型的Nand-Flash芯片,如SLC芯片、MLC芯片、TLC芯片、QLC芯片中的至少两种。
本发明实施例涉及到的第一存储芯片可以为SLC芯片、MLC芯片、TLC芯片以及QLC芯片中的一种,第二存储芯片可以为SLC芯片、MLC芯片、TLC芯片以及QLC芯片中擦写寿命高于第一存储芯片的一种芯片。例如,第一存储芯片为QLC芯片,第二存储芯片为SLC芯片。
KV-SSD 21中第一存储芯片和第二存储芯片的数量均可以为一个或多个,本发明实施例对此不作限定。
本发明实施例中的第一存储芯片预先配置为用于存储键(key),第二存储芯片预先配置为用于存储值(value)。
下面结合图1所示的SSD以及图2所示的存储系统对本发明实施例提供的键值KV的存储方法进行描述。所述存储方法可应用在图2所示的KV-SSD 21中,以下步骤如无特别说明,均由KV-SSD 21中的SSD控制器执行。
为了便于理解,本发明实施例以KV-SSD 21包括SLC芯片和QLC芯片为例进行说明。
如图3所示,本实施例提供的键值KV的存储方法包括如下步骤。
S300、主机20向KV-SSD 21发送包括第一键和第一值的写请求,请求写入所述第一键和第一值。
S301、KV-SSD 21中的SSD控制器将第一键存储于QLC芯片,将第一值存储于SLC芯片。
具体的,SSD控制器将第一键存储于QLC芯片的空白页中。本实施例采用第一键的物理地址表示第一键存储于QLC芯片的存储空间,即第一键的物理地址表示QLC芯片中存储第一键的空白页。
SSD控制器还将第一值存储于SLC芯片的空白页中。本实施例采用第一值的物理地址表示第一键存储于SLC芯片的存储空间,即第一值的物理地址表示SLC芯片中存储第一值的空白页。
示例性的,如图4所示,图4中SLC芯片和QLC芯片中的矩形框表示页,空白的矩形框表示空白页。若一个物理地址对应一个页(page),SLC芯片中page 0的物理地址为n,page1的物理地址为n+1,依次类推。同理,QLC芯片中page 0的物理地址为m,page 1的物理地址为m+1,依次类推。SSD控制器将第一键存储于QLC芯片的page 0中,即在物理地址m存储第一键。SSD控制器将第一值存储于SLC芯片的page 0中,即在物理地址n存储第一值。
S302、SSD控制器创建第一键、第一键的物理地址以及第一值的物理地址三者之间的映射关系。
第一键、第一键的物理地址以及第一值的物理地址三者之间的映射关系可以存储于元数据表中。元数据表包括KV-SSD中存储的每一键值对中的键、键的物理地址以及值的物理地址之间的映射关系。
该元数据表可以存储于SSD控制器的缓存中,也可以周期性的将缓存中的元数据表存储于Nand-Flash阵列中性能较高、擦写寿命较高的Nand-Flash芯片(如SLC芯片)中,本发明实施例对此不作限定。
示例性的,如图4所示,SSD控制器在物理地址m存储第一键,以及在物理地址n存储第一值后,将物理地址m和物理地址n之间的映射关系存储于元数据表中。
在存储第一键和第一值后,主机20还可能会请求读取第一键对应的值,即请求读取第一值。下面对主机20请求读取第一值的过程进行说明。
基于上述图3,如图5所示,本实施例提供的键值KV的存储方法包括如下步骤。
S500、主机20向KV-SSD 21发送包括第一键的读请求,请求读取第一键对应的值。
S501、KV-SSD 21中的SSD控制器判断是否存储有第一键。
接收到上述读请求后,SSD控制器查询映射关系是否包括第一键。若不包括第一键,即未存储第一键,则SSD控制器继续执行S502;若包括第一键,即存储有第一键,则SSD控制器继续执行S503~S505。
S502、SSD控制器向主机20发送用于指示不存在与第一键对应的值的通知消息1。
若QLC芯片中未存储第一键,则说明KV-SSD 21中未存储有第一键以及与第一键对应的值,因此,SSD控制器向主机20发送用于指示不存在与第一键对应的值的通知消息1。
S503、SSD控制器从映射关系中获取与第一键的物理地址对应的第一值的物理地址。
若QLC芯片中存储有第一键,则说明KV-SSD 21中的映射关系包括有第一键的物理地址以及于第一键对应的值(假设该值为第一值)的物理地址。
SSD控制器在QLC芯片中查找到第一键后,确定出该第一键的物理地址,进而,SSD控制器根据第一键的物理地址,从映射关系中获取与该第一键的物理地址对应的第一值的物理地址。
S504、SSD控制器根据获取到的物理地址,读取第一值。
示例性的,基于上述图4,SSD控制器确定出第一键的物理地址为物理地址m,并从元数据表中查找与物理地址m对应的物理地址为物理地址n,则SSD控制器从物理地址n读取第一值。
S505、SSD控制器向主机发送第一值。
除了上述写流程(如图3所示)和读流程(如图5所示)之外,主机20还可能会请求更新第一值为第二值。现对此进行描述。
基于上述图3,如图6所示,本实施例提供的键值KV的存储方法包括如下步骤。
S600、主机20向KV-SSD 21发送包括第一键和第二值的更新请求,请求将与第一键对应的值更新为第二值。
S601、KV-SSD 21中的SSD控制器判断是否存储有第一键。
接收到上述更新请求后,SSD控制器查询映射关系是否包括第一键。若不包括第一键,即未存储第一键,则SSD控制器继续执行S602;若包括第一键,即存储有第一键,则SSD控制器继续执行S603~S606。
S602、SSD控制器向主机20发送用于指示不存在与第一键对应的值的通知消息2。
若QLC芯片中未存储第一键,则说明KV-SSD 21中未存储有第一键以及与第一键对应的值,因此,SSD控制器向主机20发送用于指示不存在与第一键对应的值的通知消息2。
S603、SSD控制器从映射关系中获取与第一键的物理地址对应的第一值的物理地址。
若QLC芯片中存储有第一键,则说明KV-SSD 21中的映射关系包括有第一键的物理地址以及于第一键对应的值(假设该值为第一值)的物理地址。
SSD控制器在QLC芯片中查找到第一键后,确定出该第一键的物理地址,进而,SSD控制器根据第一键的物理地址,从映射关系中获取与该第一键的物理地址对应的第一值的物理地址。
S604、SSD控制器为第一值的物理地址所指示的存储空间添加第一无效标识。
S605、SSD控制器确定第一物理地址,并在第一物理地址中存储第二值。
第一物理地址用于指示SLC芯片中未存储数据的存储空间。该第一物理地址所指示的存储空间可以为空白页。
示例性的,结合上述图4,如图7所示,图7中的矩形框表示页,空白的矩形框表示空白页。SSD控制器确定出第一键的物理地址为物理地址m,并从元数据表中查找与物理地址m对应的物理地址为物理地址n,则SSD控制器在物理地址n所指示的页上添加第一无效标识,并在物理地址为n+1的页(该页为空白页)上写第二值。图7中采用“*”表示无效。本发明实施例中的下述任一示例中的“*”均表示无效。
可选的,SSD控制器在第一物理地址中存储第二值后,向主机20发送更新成功响应。
S606、SSD控制器将映射关系中第一值的物理地址更新为第一物理地址。
由于与第一键对应的值已经从第一值更新为第二值,为了保证数据的统一性,SSD控制器将映射关系中第一值的物理地址更新为第一物理地址。这样,后续,在主机20请求读取第一键对应的值的时候,SSD控制器根据映射关系中第一键的物理地址与第一物理地址,确定第一物理地址,进而获取第二值。
本发明实施例提供的存储方法中,主机20还可能会请求删除第一键和第一值。现对此进行描述。
基于上述图3,如图8所示,本实施例提供的键值KV的存储方法包括如下步骤。
S800、主机20向KV-SSD 21发送包括第一键的删除请求,请求删除第一键以及与第一键对应的值。
S801、KV-SSD 21中的SSD控制器判断是否存储有第一键。
接收到上述删除请求后,SSD控制器查询映射关系是否包括第一键。若不包括第一键,即未存储第一键,则SSD控制器继续执行S802;若包括第一键,即存储有第一键,则SSD控制器继续执行S803~S805。
S802、SSD控制器向主机20发送用于指示不存在与第一键对应的值的通知消息3。
若QLC芯片中未存储第一键,则说明KV-SSD 21中未存储有第一键以及与第一键对应的值,因此,SSD控制器向主机20发送用于指示不存在与第一键对应的值的通知消息3。
S803、SSD控制器从映射关系中获取与第一键的物理地址对应的第一值的物理地址。
若QLC芯片中存储有第一键,则说明KV-SSD 21中的映射关系包括有第一键的物理地址以及于第一键对应的值(假设该值为第一值)的物理地址。
SSD控制器在QLC芯片中查找到第一键后,确定出该第一键的物理地址,进而,SSD控制器根据第一键的物理地址,从映射关系中获取与该第一键的物理地址对应的第一值的物理地址。
S804、SSD控制器为第一值的物理地址所指示的存储空间添加第一无效标识,并为第一键的物理地址所指示的存储空间添加第二无效标识。
S804可以参考上述对图8的描述,这里不再详细赘述。
S805、SSD控制器删除第一键、第一键的物理地址以及第一值的物理地址三者之间的映射关系。
综上,本发明实施例中的键和值分别存储于不同类型的存储芯片(具体为Nand-Flash芯片),并记录键、键的物理地址与值的物理地址三者之间的映射关系。这样,在需要更新键值中的值的时候,KV-SSD无需读取键,直接对值进行更新即可。相比于现有技术而言,本发明实施例提供的存储方法不存在额外的读写操作,有效的延长了KV-SSD的使用寿命。
此外,KV-SSD包括不同类型的存储芯片,能够充分发挥各种类型的存储芯片的特性,从而提升KV-SSD的整体性能,有效地降低KV-SSD的成本。
通常,存储设备中一部分数据的读写频率较高,如大于第一阈值,该数据为热数据。当然,存储设备中也会有一部分数据的读写频率较低,如小于第二阈值,该数据为冷数据。
结合上述描述可知,芯片的升级对读时延的影响较小。当KV-SSD中存在冷数据时,KV-SSD可以将冷数据迁移到写时延较长、单位存储量较大的存储芯片中,以提高KV-SSD的性能。
具体的,基于上述图3,如图9所示,本实施例提供的键值KV的存储方法包括如下步骤。
S900、KV-SSD 21中的SSD控制器获取预设时间段内与第一键对应的值的更新频率。
可选的,映射关系还可以包括与第一键对应的值的更新频率。
SSD控制器可以周期性的统计预设时间段内与第一键对应的值的更新频率,每次统计后均执行后续步骤。
S901、SSD控制器判断与第一键对应的值的更新频率是否大于或等于预设阈值。
若与第一键对应的值的更新频率大于或等于预设阈值,则说明与第一键对应的值为热数据,SSD控制器退出此次操作,即执行S902。若与第一键对应的值的更新频率小于预设阈值,则说明与第一键对应的值为冷数据,SSD控制器继续执行S903和S904,以提高KV-SSD的性能。
S902、SSD控制器退出此次操作。
S903、SSD控制器将与第一键当前对应的值迁移到QLC芯片。
即使将与第一键当前对应的值迁移到QLC芯片,读时延也不会造成很大影响,且QLC芯片的单位存储量比SLC芯片的单位存储量大,有效地提高了系统的性能。
S904、SSD控制器将元数据表中与第一键当前对应的值的物理地址更新为迁移后的物理地址。
本实施例中的SSD控制器是在同一KV-SSD中完成数据迁移,没有占用盘外带宽,对当前业务不会造成影响。
上述主要从方法的角度对本发明实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本发明实施例可以根据上述方法示例对键值KV的存储装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
如图10所示,为本发明实施例提供的一种键值KV的存储装置30的结构示意图。键值KV的存储装置30用于执行图3、图5、图6、图8或图9所示的键值KV的存储方法。键值KV的存储装置30可以包括接收单元301、存储单元302和处理单元303。
接收单元301,用于接收写请求,所述写请求包括第一键key和第一值value,所述写请求用于请求写入所述第一键和所述第一值。例如,结合图3,接收单元301可以用于执行S300。存储单元302,用于将所述接收单元301接收到的所述第一键存储于所述第一存储芯片,并将所述第一值存储于所述第二存储芯片。例如,结合图3,存储单元302可以用于执行S301。处理单元303,用于创建所述第一键、第一键的物理地址以及第一值的物理地址三者之间的映射关系,所述第一键的物理地址用于指示所述第一键存储于所述第一存储芯片的存储空间,所述第一值的物理地址用于指示所述第一值存储于所述第二存储芯片的存储空间。例如,结合图3,处理单元303可以用于执行S302。
可选的,接收单元301,还用于接收第一请求,所述第一请求包括所述第一键,所述第一请求用于请求对所述第一键对应的值进行处理。例如,结合图5、图6或图8,接收单元301可以用于执行S500、S600、S800。
可选的,处理单元303,还用于确定所述映射关系包括所述第一键,以及从所述映射关系中获取与所述第一键的物理地址对应的所述第一值的物理地址,以及根据所述第一值的物理地址,处理所述第一值。
可选的,所述第一请求具体用于读取所述第一键对应的所述第一值。
可选的,所述第一请求具体用于删除所述第一键对应的所述第一值。所述处理单元303,具体用于为所述第一值的物理地址所指示的存储空间添加第一无效标识。此外,所述处理单元303,还用于为所述第一键的物理地址所指示的存储空间添加第二无效标识,以及删除所述映射关系。例如,结合图8,处理单元303可以用于执行S801、S803、S804、S805。
可选的,所述第一请求还包括第二值,所述第一请求具体用于将所述第一键对应的所述第一值更新为所述第二值。所述处理单元303,具体用于为所述第一值的物理地址所指示的存储空间添加第一无效标识。此外,所述处理单元303,还用于确定第一物理地址,所述第一物理地址用于指示所述第二存储芯片中未存储数据的存储空间。例如,结合图6,处理单元303可以用于执行S604、S605。所述存储单元302,用于在所述处理单元303确定的所述第一物理地址中存储所述第二值。例如,结合图6,存储单元302可以用于执行S605。所述处理单元303,还用于将所述映射关系中所述第一值的物理地址更新为所述第一物理地址。例如,结合图6,处理单元303可以用于执行S606。
可选的,处理单元303还用于:获取预设时间段内所述与所述第一键对应的值的更新频率;若所述更新频率小于预设阈值,将与所述第一键当前对应的值迁移到所述第一存储芯片;将所述映射关系中与所述第一键对应的值的物理地址更新为迁移后的物理地址。例如,结合图9,处理单元303可以用于执行S900~S904。
当然,本发明实施例提供的键值KV的存储装置30包括但不限于上述模块,例如键值KV的存储装置30还可以包括发送单元304。发送单元304可以与其他设备(如主机)通信,如发送通知消息1等。
在实际实现时,接收单元301、存储单元302、处理单元303和发送单元304均可以由图1所示的处理器102调用缓存103中的程序代码来实现。其具体的执行过程可参考图3、图5、图6、图8或图9所示的键值KV的存储方法部分的描述,这里不再赘述。
本发明另一实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当指令在计算机上运行时,使得计算机执行上述方法实施例所示的方法。
在本发明另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机指令,当指令在计算机上运行时,使得计算机执行上述方法实施例所示的方法。
本领域普通技术人员将会理解,本发明的各个方面、或各个方面的可能实现方式可以被具体实施为系统、方法或者计算机程序产品。因此,本发明的各方面、或各个方面的可能实现方式可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件等等),或者组合软件和硬件方面的实施例的形式,在这里都统称为“电路”、“模块”或者“系统”。此外,本发明的各方面、或各个方面的可能实现方式可以采用计算机程序产品的形式,计算机程序产品是指存储在计算机可读介质中的计算机可读程序代码。
计算机可读介质包含但不限于电子、磁性、光学、电磁、红外或半导体系统、设备或者装置,或者前述的任意适当组合,如随机访问存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、光盘。
计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代码,使得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作。
计算机可读程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为单独的软件包、部分在用户的计算机上并且部分在远程计算机上,或者完全在远程计算机或者服务器上执行。也应该注意,在某些替代实施方案中,在流程图中各步骤、或框图中各块所注明的功能可能不按图中注明的顺序发生。例如,依赖于所涉及的功能,接连示出的两个步骤、或两个块实际上可能被大致同时执行,或者这些块有时候可能被以相反顺序执行。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,本领域普通技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (16)
1.一种键值KV的存储方法,其特征在于,应用于固态硬盘SSD,所述SSD包括第一存储芯片和第二存储芯片,所述第一存储芯片的擦写寿命低于所述第二存储芯片的擦写寿命;所述存储方法包括:
接收写请求,所述写请求包括第一键key和第一值value,所述写请求用于请求写入所述第一键和所述第一值;
将所述第一键存储于所述第一存储芯片,并将所述第一值存储于所述第二存储芯片;
创建所述第一键、第一键的物理地址以及第一值的物理地址三者之间的映射关系,所述第一键的物理地址用于指示所述第一键存储于所述第一存储芯片的存储空间,所述第一值的物理地址用于指示所述第一值存储于所述第二存储芯片的存储空间。
2.根据权利要求1所述的存储方法,其特征在于,所述方法还包括:
接收第一请求,所述第一请求包括所述第一键,所述第一请求用于请求对所述第一键对应的值进行处理;
确定所述映射关系包括所述第一键;
从所述映射关系中获取与所述第一键的物理地址对应的所述第一值的物理地址;
根据所述第一值的物理地址,处理所述第一值。
3.根据权利要求2所述的存储方法,其特征在于,所述第一请求具体用于读取所述第一键对应的所述第一值。
4.根据权利要求2所述的存储方法,其特征在于,所述第一请求具体用于删除所述第一键对应的所述第一值;
所述根据所述第一值的物理地址,处理所述第一值,包括:
为所述第一值的物理地址所指示的存储空间添加第一无效标识;
所述方法还包括:
为所述第一键的物理地址所指示的存储空间添加第二无效标识;
删除所述映射关系。
5.根据权利要求2所述的存储方法,其特征在于,所述第一请求还包括第二值,所述第一请求具体用于将所述第一键对应的所述第一值更新为所述第二值;
所述根据所述第一值的物理地址,处理所述第一值,包括:
为所述第一值的物理地址所指示的存储空间添加第一无效标识;
所述方法还包括:
确定第一物理地址,所述第一物理地址用于指示所述第二存储芯片中未存储数据的存储空间;
在所述第一物理地址中存储所述第二值;
将所述映射关系中所述第一值的物理地址更新为所述第一物理地址。
6.根据权利要求1-5中任意一项所述的存储方法,其特征在于,所述方法还包括:
获取预设时间段内,与所述第一键对应的值的更新频率;
若所述更新频率小于预设阈值,将与所述第一键当前对应的值迁移到所述第一存储芯片;
将所述映射关系中与所述第一键对应的值的物理地址更新为迁移后的物理地址。
7.一种键值KV的存储装置,其特征在于,所述装置包括第一存储芯片和第二存储芯片,所述第一存储芯片的擦写寿命低于所述第二存储芯片的擦写寿命;所述存储装置包括:
接收单元,用于接收写请求,所述写请求包括第一键key和第一值value,所述写请求用于请求写入所述第一键和所述第一值;
存储单元,用于将所述接收单元接收到的所述第一键存储于所述第一存储芯片,并将所述第一值存储于所述第二存储芯片;
处理单元,用于创建所述第一键、第一键的物理地址以及第一值的物理地址三者之间的映射关系,所述第一键的物理地址用于指示所述第一键存储于所述第一存储芯片的存储空间,所述第一值的物理地址用于指示所述第一值存储于所述第二存储芯片的存储空间。
8.根据权利要求7所述的存储装置,其特征在于,
所述接收单元,还用于接收第一请求,所述第一请求包括所述第一键,所述第一请求用于请求对所述第一键对应的值进行处理;
所述处理单元,还用于确定所述映射关系包括所述第一键,以及从所述映射关系中获取与所述第一键的物理地址对应的所述第一值的物理地址,以及根据所述第一值的物理地址,处理所述第一值。
9.根据权利要求8所述的存储装置,其特征在于,所述第一请求具体用于读取所述第一键对应的所述第一值。
10.根据权利要求8所述的存储装置,其特征在于,所述第一请求具体用于删除所述第一键对应的所述第一值;
所述处理单元,具体用于为所述第一值的物理地址所指示的存储空间添加第一无效标识;
所述处理单元,还用于为所述第一键的物理地址所指示的存储空间添加第二无效标识,以及删除所述映射关系。
11.根据权利要求8所述的存储装置,其特征在于,所述第一请求还包括第二值,所述第一请求具体用于将所述第一键对应的所述第一值更新为所述第二值;
所述处理单元,具体用于为所述第一值的物理地址所指示的存储空间添加第一无效标识;
所述处理单元,还用于确定第一物理地址,所述第一物理地址用于指示所述第二存储芯片中未存储数据的存储空间;
所述存储单元,用于在所述处理单元确定的所述第一物理地址中存储所述第二值;
所述处理单元,还用于将所述映射关系中所述第一值的物理地址更新为所述第一物理地址。
12.根据权利要求7-11中任意一项所述的存储装置,其特征在于,所述处理单元还用于:
获取预设时间段内,与所述第一键对应的值的更新频率;
若所述更新频率小于预设阈值,将与所述第一键当前对应的值迁移到所述第一存储芯片;
将所述映射关系中与所述第一键对应的值的物理地址更新为迁移后的物理地址。
13.一种存储设备,其特征在于,包括:处理器,以及存储器;所述存储器与所述处理器耦合,所述存储器存储有程序代码;
所述处理器调用所述存储器中的程序代码,实现如权利要求1-6中任意一项所述的键值KV的存储方法。
14.一种计算机可读存储介质,其特征在于,包括指令,当所述指令在计算机上运行时,使得所述计算机实现如权利要求1-6中任意一项所述的键值KV的存储方法。
15.一种固态硬盘SSD,其特征在于,包括第一存储芯片和第二存储芯片,所述SSD,用于实现如权利要求1-6中任意一项所述的键值KV的存储方法。
16.一种计算机程序产品,其特征在于,包含程序或指令,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如权利要求1-6中任意一项所述的键值KV的存储方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910744198.7A CN112394874B (zh) | 2019-08-13 | 2019-08-13 | 一种键值kv的存储方法、装置及存储设备 |
EP20851466.1A EP4012547B1 (en) | 2019-08-13 | 2020-05-06 | Storage method and apparatus for key value (kv) and storage device |
PCT/CN2020/088825 WO2021027340A1 (zh) | 2019-08-13 | 2020-05-06 | 一种键值kv的存储方法、装置及存储设备 |
US17/669,726 US11868651B2 (en) | 2019-08-13 | 2022-02-11 | Key-value KV storage method and apparatus, and storage device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910744198.7A CN112394874B (zh) | 2019-08-13 | 2019-08-13 | 一种键值kv的存储方法、装置及存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112394874A CN112394874A (zh) | 2021-02-23 |
CN112394874B true CN112394874B (zh) | 2024-08-20 |
Family
ID=74570890
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910744198.7A Active CN112394874B (zh) | 2019-08-13 | 2019-08-13 | 一种键值kv的存储方法、装置及存储设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11868651B2 (zh) |
EP (1) | EP4012547B1 (zh) |
CN (1) | CN112394874B (zh) |
WO (1) | WO2021027340A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210397345A1 (en) * | 2020-05-19 | 2021-12-23 | Nutanix, Inc. | Managing i/o amplification in log-structured merge trees |
US11573706B2 (en) * | 2021-06-07 | 2023-02-07 | Western Digital Technologies, Inc. | Data storage device and method for efficient image searching |
US20240078032A1 (en) * | 2022-09-06 | 2024-03-07 | Western Digital Technologies, Inc. | Metadata Management In Key Value Data Storage Device |
CN117785018A (zh) * | 2022-09-22 | 2024-03-29 | 超聚变数字技术有限公司 | 键值存储方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109521959A (zh) * | 2018-11-01 | 2019-03-26 | 西安交通大学 | 一种基于ssd-smr磁盘混合键值存储系统数据组织方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8327066B2 (en) * | 2008-09-30 | 2012-12-04 | Samsung Electronics Co., Ltd. | Method of managing a solid state drive, associated systems and implementations |
US8780633B2 (en) * | 2012-11-09 | 2014-07-15 | SanDisk Technologies, Inc. | De-duplication system using NAND flash based content addressable memory |
US9336129B2 (en) * | 2013-10-02 | 2016-05-10 | Sandisk Technologies Inc. | System and method for bank logical data remapping |
KR102310246B1 (ko) * | 2014-04-23 | 2021-10-08 | 삼성전자주식회사 | 세컨더리 인덱스 생성 방법 및 세컨더리 인덱스 저장 장치 |
US10289722B2 (en) * | 2015-11-17 | 2019-05-14 | Samsung Electronics Co., Ltd. | System and methods for multi-level key-value store |
US10303382B1 (en) * | 2016-01-27 | 2019-05-28 | OmniTier Storage, Inc. | Application defined storage device |
CN106383670B (zh) * | 2016-09-21 | 2020-02-14 | 华为技术有限公司 | 一种数据处理方法及存储设备 |
CN107066498B (zh) * | 2016-12-30 | 2020-04-14 | 成都华为技术有限公司 | 键值kv存储方法和装置 |
US10795760B2 (en) | 2017-03-20 | 2020-10-06 | Samsung Electronics Co., Ltd. | Key value SSD |
US10496371B2 (en) * | 2017-06-29 | 2019-12-03 | Intel Corporation | Key-value compaction |
US10678768B2 (en) * | 2017-06-30 | 2020-06-09 | Intel Corporation | Logical band-based key-value storage structure |
KR20190031692A (ko) * | 2017-09-18 | 2019-03-27 | 에스케이하이닉스 주식회사 | 데이터 처리 시스템 및 데이터 처리 시스템의 동작방법 |
KR102395196B1 (ko) * | 2017-10-17 | 2022-05-06 | 삼성전자주식회사 | 파라미터 교정 기능을 갖는 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
US11392544B2 (en) * | 2018-02-06 | 2022-07-19 | Samsung Electronics Co., Ltd. | System and method for leveraging key-value storage to efficiently store data and metadata in a distributed file system |
WO2020010325A1 (en) * | 2018-07-05 | 2020-01-09 | Fungible, Inc. | Data processing unit with key value store |
KR102714982B1 (ko) * | 2019-07-05 | 2024-10-10 | 삼성전자주식회사 | 키-밸류 기반으로 데이터를 저장하는 스토리지 장치 및 이의 동작 방법 |
-
2019
- 2019-08-13 CN CN201910744198.7A patent/CN112394874B/zh active Active
-
2020
- 2020-05-06 EP EP20851466.1A patent/EP4012547B1/en active Active
- 2020-05-06 WO PCT/CN2020/088825 patent/WO2021027340A1/zh unknown
-
2022
- 2022-02-11 US US17/669,726 patent/US11868651B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109521959A (zh) * | 2018-11-01 | 2019-03-26 | 西安交通大学 | 一种基于ssd-smr磁盘混合键值存储系统数据组织方法 |
Also Published As
Publication number | Publication date |
---|---|
US11868651B2 (en) | 2024-01-09 |
CN112394874A (zh) | 2021-02-23 |
WO2021027340A1 (zh) | 2021-02-18 |
EP4012547A4 (en) | 2022-11-02 |
EP4012547B1 (en) | 2023-10-25 |
US20220164132A1 (en) | 2022-05-26 |
EP4012547A1 (en) | 2022-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11640353B2 (en) | Memory system, data storage device, user device and data management method thereof | |
US11893238B2 (en) | Method of controlling nonvolatile semiconductor memory | |
CN112394874B (zh) | 一种键值kv的存储方法、装置及存储设备 | |
KR101257691B1 (ko) | 메모리 컨트롤러 및 이의 데이터 관리방법 | |
KR101465789B1 (ko) | 페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템의쓰기 및 병합 방법 | |
KR102013430B1 (ko) | 어레이 컨트롤러, 솔리드 스테이트 디스크, 및 데이터를 기록하기 위해 솔리드 스테이트 디스크를 제어하는 방법 | |
US8909895B2 (en) | Memory apparatus | |
US10223027B2 (en) | Optimized garbage collection for solid-state storage devices | |
JP2013544414A (ja) | トランザクションログの復元 | |
US9122586B2 (en) | Physical-to-logical address map to speed up a recycle operation in a solid state drive | |
US11726906B2 (en) | Memory device and non-transitory computer readable recording medium | |
JPWO2015015611A1 (ja) | ストレージシステム及びデータライト方法 | |
CN106775436B (zh) | 数据存取方法、存储器控制电路单元与存储器 | |
US20230342294A1 (en) | Memory device and non-transitory computer readable recording medium | |
US20180307426A1 (en) | Storage apparatus and storage control method | |
CN106201326B (zh) | 信息处理装置 | |
CN109002265B (zh) | 一种数据处理的方法以及相关装置 | |
TW201624288A (zh) | 快取記憶體裝置及非暫態電腦可讀取記錄媒體 | |
KR20210142863A (ko) | 데이터 처리 시스템의 동작 효율성을 높이기 위한 장치 및 방법 | |
US10474569B2 (en) | Information processing device including nonvolatile cache memory and processor | |
KR20210063814A (ko) | 메모리 시스템의 리드 동작 방법 및 장치 |
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 |