CN107066498A - 键值kv存储方法和装置 - Google Patents
键值kv存储方法和装置 Download PDFInfo
- Publication number
- CN107066498A CN107066498A CN201611262977.6A CN201611262977A CN107066498A CN 107066498 A CN107066498 A CN 107066498A CN 201611262977 A CN201611262977 A CN 201611262977A CN 107066498 A CN107066498 A CN 107066498A
- Authority
- CN
- China
- Prior art keywords
- page
- value
- physical address
- mapping table
- scm
- 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.)
- Granted
Links
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- 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/2282—Tablespace 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
本发明实施例提供了一种KV存储方法和装置,涉及数据存储领域,所述方法包括:在存储目标键值KV时,存储所述目标KV中的值Value至存储型内存SCM中的不定长页面;更新主索引和映射表,所述主索引中包括已存储的KV中的Key和逻辑地址之间的映射关系;所述映射表中包括已存储的KV的逻辑地址和物理地址之间的映射关系;在满足第一合并条件时,合并不定长页面中的Value至所述SCM中的定长页面;更新所述映射表;在满足第二合并条件时,合并定长页面中的Value至固态硬盘SSD中的块页面;再次更新所述映射表;解决了现有技术中KV存储的性能较低的问题,达到了可以提高KV存储的性能的效果。
Description
技术领域
本发明实施例涉及数据存储技术领域,特别涉及一种键值KV存储方法和装置。
背景技术
随着SCM(Storage Class Memory,存储型内存)的发展,SCM已逐渐应用于KV(KeyVlaue,键值)存储中。
在使用SCM进行存储时,可以使用SCM和SSD(Solid State Drives,固态硬盘)混合存储。而现有技术中通常将SCM作为SSD的缓存使用,因此这并未充分利用SCM的特性,现有的KV存储的性能较低。
发明内容
为了解决现有技术中KV存储的存储性能低的问题,本发明实施例提供了一种KV存储方法和装置,所述技术方案如下:
第一方面,提供了一种KV存储方法,该方法包括:
在存储目标键值KV时,存储目标KV中的值Value至存储型内存SCM中的不定长页面;
更新主索引和映射表,主索引中包括已存储的KV中的Key和逻辑地址之间的映射关系;映射表中包括已存储的KV的逻辑地址和物理地址之间的映射关系;
在满足第一合并条件时,合并不定长页面中的Value至SCM中的定长页面;更新映射表;
在满足第二合并条件时,合并定长页面中的Value至固态硬盘SSD中的块页面;
再次更新映射表。
通过将目标KV中的Value存储至SCM中的不定长页面,进而在满足第一合并条件时,将不定长页面中的Value合并至SCM中的定长页面,并在满足第二合并条件时,将SCM中的定长页面中的Value合并至SSD中;也即充分使用SCM和SSD进行混合存储;解决了现有技术中KV存储的性能较低的问题,达到了可以提高KV存储的性能的效果。
在第一种可能的实现方式中,上述更新映射表的步骤可以包括:
获取目标KV的目标逻辑地址以及在不定长页面中的目标物理地址;
获取映射表中目标逻辑地址所对应的初始物理地址;
生成物理地址链,物理地址链中包括目标物理地址以及设置在目标物理地址的预设位置处的指示信息,预设位置包括目标物理地址之前或者之后的位置,指示信息用于指向初始物理地址;
将映射表中的初始物理地址更新为物理地址链。
在第二种可能的实现方式中,在满足第一合并条件时,合并不定长页面中的Value至SCM中的定长页面;更新映射表,包括:
在物理地址链满足预设条件时,将物理地址链所指向的物理地址中的Value合并至SCM中的定长页面;预设条件包括:物理地址链的长度达到预设长度,或者,物理地址链所对应的不定长页面的个数达到预设个数。
在第三种可能的实现方式中,获取映射表中目标逻辑地址所对应的初始物理地址,包括:
若映射表中不存在目标逻辑地址所对应的物理地址,则将初始物理地址确定为空。
在第四种可能的实现方式中,在满足第一合并条件时,合并不定长页面中的Value至SCM中的定长页面;更新映射表,包括:
在SCM中不定长页面的剩余资源低于第一阈值时,合并不定长页面中的Value至SCM中的定长页面。
在第五种可能的实现方式中,在满足第二合并条件时,合并定长页面中的Value至SSD中的块页面,包括:
在相邻的定长页面的个数达到预设个数时,合并预设个数的定长页面中的Value至块页面;相邻的定长页面是指存储的Value所对应的Key的取值连续的页面;
或者,
在SCM中的定长页面的空闲资源低于第二阈值时,合并定长页面中的Value至块页面。
在第六种可能的实现方式中,该方法还包括:
在存储目标KV中的Value至不定长页面之后,更新临时索引,临时索引中包括已存储的KV中的Key和Value在不定长页面中的物理地址之间的映射关系;
更新主索引和映射表,包括:
在提交目标KV之后,根据临时索引更新主索引和映射表。
第二方面,提供了一种KV存储装置,该装置用于实现第一方面所述的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
图1是本发明各个实施例所涉及的存储设备的示意图。
图2是本发明一个实施例提供的KV存储方法的方法流程图。
图3是本发明一个实施例提供的KV存储方法的方法流程图。
图4是本发明一个实施例提供的读取数据的方法流程图。
图5是本发明一个实施例提供的读取数据的方法流程图。
图6是本发明一个实施例提供的KV存储装置的框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
下述各个实施例提供的KV存储方法可以用于存储设备中,如图1所示,该存储设备中可以包括Access method(接入入口)11、Storage Engine(存储引擎)12、DRAM(DynamicRandom Access Memory,动态随机存取存储器)13、SCM14和SSD15。其中:
Access method11用于提供对外的KV存储入口,Access method11中包含临时索引和主索引。其中,临时索引用于索引未commit(提交)的KV,该临时索引中包括Key与Value的物理地址之间的映射关系;主索引用于索引已commit的KV,该主索引中包括Key与Value的逻辑地址之间的映射关系。
Storage Engine12中包括映射表以及页面管理器。映射表包括已存储的KV的逻辑地址和物理地址之间的映射关系,物理地址用于指向DRAM13、SCM14和SSD15;页面管理器用于管理DRAM13、SCM14和SSD15,其用于申请和释放资源。
SCM14可以提供三种接口。第一种接口提供类似于内存的方式,可以使用字节寻址,也即可以申请不定长的页面,其由硬件管理;比如,M-type;第二种接口类似于块设备的方式,也即申请的页面均为定长如固定为200kB,通常情况下其由软件管理;比如,S-type;第三种接口是指可以根据使用需求灵活结合第一种接口和第二种接口的接口。在下述各个实施例中,除特殊说明外,下述各个实施例中的SCM使用第三种接口。
请参考图2,其示出了本发明一个实施例提供的KV存储方法的流程图,本实施例以该KV存储方法用于图1所示的存储设备中来举例说明。如图2所示,该KV存储方法包括:
步骤201,在存储目标KV时,存储目标KV中的Value至SCM中的不定长页面。
用户需要存储数据至存储设备时,用户可以触发数据存储请求,相应的,存储设备可以接收到该数据存储请求。其中,数据存储请求中携带有需要存储的目标KV,其中,目标KV可以为一个,也可以为多个,对此并不做限定。并且,该数据存储请求可以为首次存储目标KV的存储请求,也可以为更新已有Key的Value的更新请求,对此并不做限定。
存储设备接收到数据存储请求之后,存储设备可以根据目标KV中的Vlaue的大小在M-type的SCM中申请一个不定长页面。其中,不定长页面的大小大于Vlaue的大小,并且通常等于Vlaue的大小和数据包头的大小的总和。
在申请不定长页面时,存储设备可以根据M-type的SCM中各个存储地址被写入数据的写入次数,在M-type的SCM中申请写入次数满足预设条件的各个存储地址,申请到的各个存储地址共同组成该不定长页面。其中,预设条件包括写入次数最少,或者,写入次数小于预设次数,本实施例对此并不做限定。
通过在申请不定长页面时申请写入次数满足预设条件的页面,达到了可以实现SCM的磨损均衡,提高了SCM的性能的效果。
实际实现时,存储设备可以通过页面管理器在M-type的SCM中申请一个不定长页面,对此并不做限定。
在存储设备申请到不定长页面之后,存储设备可以存储目标KV中的Value至申请的该不定长页面。
步骤202,更新主索引和映射表,主索引中包括已存储的KV中的Key和逻辑地址之间的映射关系;映射表中包括已存储的KV的逻辑地址和物理地址之间的映射关系。
在存储Value至不定长页面之后,存储设备可以得到临时索引,该临时索引包括Key与不定长页面的物理地址之间的映射关系。可选地,若临时索引中已经包含该Key所对应的映射关系,则存储设备更新已有的映射关系,而若临时索引中未包含该Key所对应的映射关系,则该存储设备生成包括该Key与不定长页面的物理地址之间的映射关系,对此并不做限定。
在数据commit之后,存储设备可以将临时索引合并至主索引并更新映射表。本实施例所说的commit是指,当批量存储时,最后一个KV到来之后触发的动作。
可选地,存储设备更新主索引的步骤可以包括:存储设备检测主索引中是否包含临时索引中的Key所对应的映射关系,若包含,则结束;而若不包含,则存储设备将临时索引中的Key和该Key所对应的目标逻辑地址之间的映射关系添加至主索引。Key所对应的目标逻辑地址为存储设备根据Key的取值分配的地址。可选地,存储设备可以为多个Key分配同一个逻辑地址。比如,请参考
表1,其示出了Key与逻辑地址之间的映射关系。
Key的取值 | 逻辑地址 |
0-100 | 逻辑地址1 |
101-200 | 逻辑地址2 |
201-300 | 逻辑地址3 |
表1
结合表1,若目标KV的Key为89,则存储设备为该目标KV分配的逻辑地址为逻辑地址1,也就是说,目标KV中的Key所对应的目标逻辑地址为逻辑地址1。
实际实现时,存储设备更新主索引时可以通过CAS(Compare And Swap,比较并交换)技术来提高并发度,在此不再赘述。
存储设备更新映射表的步骤可以包括:
第一,获取目标KV的目标逻辑地址以及在不定长页面中的目标物理地址。
存储设备可以根据主索引获取该目标KV的目标逻辑地址,并根据临时索引确定该目标KV的目标物理地址。
第二,获取映射表中目标逻辑地址所对应的初始物理地址。
存储设备可以查询映射表中该目标逻辑地址所对应的初始物理地址。可选地,存储设备可以检测映射表中是否包含该目标逻辑地址和物理地址之间的映射关系;若不包含,则确认初始物理地址为空;而若包含,则获取映射表中的该目标逻辑地址所对应的物理地址,将获取到的物理地址作为初始物理地址。
第三,生成物理地址链,物理地址链中包括目标物理地址以及设置在目标物理地址的预设位置处的指示信息,预设位置包括目标物理地址之前或者之后的位置,指示信息用于指向初始物理地址。
以预设位置为目标物理地址的尾部为例,存储设备可以在目标物理地址的尾部增加一个指针,该指针用于指向初始物理地址,将目标物理地址和增加的该指针作为物理地址链。
实际实现时,初始物理地址也可以为物理地址链。比如,结合表1,对于逻辑地址1而言,在存储Key为30的KV之后,映射表中包含有逻辑地址1和Key为30的Value的物理地址之间的映射关系;此后,在存储Key为58的KV时,由于映射表中已经包含有逻辑地址1所对应的初始物理地址,此时,存储设备可以生成包含Key为58的Value的物理地址以及指针的物理地址链。其中该指针指向Key为30的Value的物理地址。之后,在存储Key为88的KV时,存储设备获取到逻辑地址1所对应的初始物理地址即为一个物理地址链,在此不再赘述。
第四,将映射表中的初始物理地址更新为物理地址链。
此后,存储设备即可将映射表中目标逻辑地址所对应的初始物理地址更新为物理地址链。
步骤203,在满足第一合并条件时,合并不定长页面中的Value至SCM中的定长页面。
可选地,本步骤可以包括如下两种可能的实现方式。
第一种,在物理地址链满足预设条件时,将物理地址链所指向的物理地址中的Value合并至SCM中的定长页面;预设条件包括:物理地址链的长度达到预设长度,或者,物理地址链所对应的不定长页面的个数达到预设个数。其中,物理地址链所对应的不定长页面的个数为包含的指示信息的个数+1,在此不再赘述。
对于各个逻辑地址所对应的物理地址链,若某一物理地址链满足预设条件,则存储设备可以在S-type的SCM中申请一个定长页面,并将物理地址链所指示的页面中的数据合并至该申请的定长页面中。
可选地,与申请不定长页面类似,在申请定长页面时,存储设备可以根据S-type的SCM中各个存储地址被写入数据的写入次数,在S-type的SCM中申请写入次数满足预设条件的各个存储地址,申请到的各个存储地址共同组成该不定长页面。在此不再赘述。
需要说明的是,若一个定长页面中无法存储物理地址链所对应的全部物理地址中的Value,则此时,存储设备还可以继续申请定长页面,将剩余的Value存储至继续申请的定长页面中;或者,存储设备还可以将已经申请的定长页面中存储的Value合并至SSD的块页面中,并将剩余的Value继续存储至已经申请的定长页面,本实施例在此不再赘述。
第二种,在SCM中不定长页面的剩余资源低于第一阈值时,合并不定长页面中的Value至SCM中的定长页面。
在第二种可能的实现中,当M-type的SCM的剩余资源低于第一阈值时,若此后继续有新的KV需要写入,则此时KV可能无法写入,因此,为了保证后续KV能够正常写入,存储设备可以将不定长页面中的数据合并至申请的定长页面中。其中,存储设备申请定长页面的申请方式与第一种实现方式类似,在此不再赘述。
其中,第一阈值为存储设备中预先设定的数值,对此并不做限定。
步骤204,更新映射表。
在将不定长页面中的Value合并至定长页面之后,由于Value的存储位置发生变化,因此,存储设备可以将映射表中指向合并前的不定长页面的物理地址更新为指向合并后的定长页面的物理地址,在此不再赘述。
步骤205,在满足第二合并条件时,合并定长页面中的Value至SSD中的块页面。
本步骤可以包括如下两种可能的实现方式。
第一种,在相邻的定长页面的个数达到预设个数时,合并预设个数的定长页面中的数据至块页面。
其中,相邻的定长页面是指存储的Vlaue是取值范围相邻的Key所对应的Value的定长页面。
比如,仍然以表1中逻辑地址与Key的映射关系为例,若定长页面中存储有逻辑地址1所对应Key的Value,另一定长页面中存储有逻辑地址2所对应的Key的Value,则由于逻辑地址1所对应的Key的范围与逻辑地址2所对应的Key的范围连续,因此,这两个定长页面即为相邻页面。
预设个数是系统默认的数值,在此不再赘述。
合并定长页面中的数据至SSD中的块页面的步骤可以包括:存储设备在SSD中申请一个块页面,合并定长页面中的数据至申请的块页面。其中,块页面的大小依赖于SSD的特性,并根据SSD暴露的级别来确定,比如,当SSD暴露channel级别时,块页面通常为几M到几十M,对此并不做限定。
并且,存储设备申请块页面的申请方式与在M-type和S-type中申请不定长页面和申请定长页面的申请方式类似,均可以申请写入次数满足预设条件的块页面,进而达到磨损均衡的效果。
第二种,在SCM中的定长页面的空闲资源低于第二阈值时,合并定长页面中的数据至块页面。
在第二种可能的实现方式中,在SCM中的定长页面的空闲资源低于第二阈值时,则说明此后在合并不定长页面中的数据至S-type的SCM中的定长页面时,可能会因为S-type的SCM中的剩余资源不足而导致无法存储,此时,为了释放部分S-type的SCM中的资源进而保证之后数据的正常存储,存储设备可以合并定长页面中的数据至块页面,在此不再赘述。
其中,第二阈值为存储设备预先设定的数值,对此并不做限定。
步骤206,再次更新映射表。
此后,存储设备可以再次更新映射表,并将映射表中指向合并前的定长页面的物理地址更新为指向SSD中的块页面的物理地址,在此不再赘述。
综上所述,本实施例提供的KV存储方法,通过将目标KV中的Value存储至SCM中的不定长页面,进而在满足第一合并条件时,将不定长页面中的Value合并至SCM中的定长页面,并在满足第二合并条件时,将SCM中的定长页面中的Value合并至SSD中;也即充分使用SCM和SSD进行混合存储;解决了现有技术中KV存储的性能较低的问题,达到了可以提高KV存储的性能的效果。
由于可以通过映射表来实现对SSD的管理,而无需使用现有的FTL(FlashTranslation Layer,闪存转换层),这就提高了对SSD管理的效率,也即提高了KV存储的性能。同时,由于SSD的写入是以块为单位,因此可以通过erase接口直接实现对块进行擦除,而无需后台进行垃圾回收,进一步提高了KV存储的性能。此外,通过暴露SSD中的块页面的更多信息,可以实现坏块屏蔽,保证了数据存储的安全。
在一个示例性实施例中,请参考图3,其示出了KV存储时存储设备中的各个部分交互的方法流程图。如图3所示,该KV存储的方法包括:
(1)、Access Mehtod接收数据存储请求。
(2)、Access Mehtod触发Storage Engine在M-type的SCM中申请不定长页面。
(3)、Storage Engine在M-type的SCM中根据数据写入次数申请写入次数最少的不定长页面。
(4)、Storage Engine返回页面申请成功消息至Access Mehtod。
(5)、Access Mehtod触发Storage Engine存储Value至不定长页面。
(6)、Storage Engine写入Value至SCM中的不定长页面。
(7)、Storage Engine返回写入成功消息至Access Mehtod。
(8)、Access Mehtod触发Storage Engine更新临时索引。
(9)、Storage Engine将临时索引写入至DRAM。
(10)、Storage Engine返回写入成功消息至Access Mehtod。
(11)、Access Mehtod在数据存储请求commit时触发Storage Engine将临时索引合并至主索引。
(12)、Storage Engine更新M-type的SCM的主索引以及映射表。
(13)、Storage Engine返回更新成功消息至Access Mehtod。
(14)、Storage Engine在满足第一合并条件时,在S-type的SCM中根据数据写入次数申请写入次数最少的定长页面。
(15)、Storage Engine将不定长页面中的Value合并至定长页面,更新映射表。
(16)、Storage Engine在满足第二合并条件时,在SSD中根据数据写入次数申请写入次数最少块页面。
(17)、Storage Engine将不定长页面中的Value合并至SSD中。
(18)、Storage Engine更新映射表。
在上述各个实施例中,当需要读取数据时,请参考图4,该方法包括:
步骤401,接收读请求,读请求中携带有需要查询的Key。
步骤402,检测内存中是否包含Key所对应的Value。
由于在读取物理地址中的Value至内存之后,并不会马上删除内存中的Value,因此为了提高数据读取效率,存储设备可以检测内存中是否包含需要查询的Key所对应的Value。
可选地,本步骤为可选步骤,实际实现时,存储设备还可以直接执行步骤404,对此并不做限定。
步骤403,若包含,则直接返回内存中的Value。
步骤404,若不包含,则在主索引中查询Key所对应的逻辑地址。
步骤405,在映射表中查询逻辑地址所对应的物理地址。
步骤406,读取查询到的物理地址中的Value至内存,并返回内存中的该Value。
在一个示例性例子中,请参考图5,其示出了存储设备中的各部分交互时读取数据的流程图。如图5所示,该数据读取方法包括:
(1)、Access Method接收读请求,读请求中包含Key。
(2)、Access Method触发Storage Engine检测DRAM中是否包含Key所对应的Value。
(3)、在DRAM中包含Key所对应的Value时,Storage Engine返回Value至AccessMethod。
(4)、在DRAM中不包含Key所对应的Value时,Storage Engine返回查询失败消息至Access Method。
(5)、Access Method触发Storage Engine根据读请求中的Key查询Value的逻辑地址。
(6)、Storage Engine在主索引中查询Key所对应逻辑地址。
(7)、Storage Engine根据映射表查询逻辑地址所对应的物理地址。
(8)、Storage Engine读取查询到的物理地址中的Value至DRAM。
(9)、Storage Engine返回内存中的Value。
请参考图6,其示出了本发明一个实施例提供的KV存储装置的框图,如图6所示,该KV存储装置包括:存储单元610、更新单元620和合并单元630。
其中,存储单元610,用于执行上述步骤201;
更新单元620,用于执行上述步骤202、步骤204和步骤206
合并单元630,用于执行上述步骤203和步骤205。
综上所述,本实施例提供的KV存储装置,通过将目标KV中的Value存储至SCM中的不定长页面,进而在满足第一合并条件时,将不定长页面中的Value合并至SCM中的定长页面,并在满足第二合并条件时,将SCM中的定长页面中的Value合并至SSD中;也即充分使用SCM和SSD进行混合存储;解决了现有技术中KV存储的性能较低的问题,达到了可以提高KV存储的性能的效果。
由于可以通过映射表来实现对SSD的管理,而无需使用现有的FTL(FlashTranslation Layer,闪存转换层),这就提高了对SSD管理的效率,也即提高了KV存储的性能。同时,由于SSD的写入是以块为单位,因此可以通过erase接口直接实现对块进行擦除,而无需后台进行垃圾回收,进一步提高了KV存储的性能。此外,通过暴露SSD中的块页面的更多信息,可以实现坏块屏蔽,保证了数据存储的安全。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
尽管在此结合各实施例对本发明进行了描述,然而,在实施所要求保护的本发明过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
本领域技术人员应明白,本发明的实施例可提供为方法、服务器(设备)、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。计算机程序存储/分布在合适的介质中,与其它硬件一起提供或作为硬件的一部分,也可以采用其他分布形式,如通过Internet或其它有线或无线电信系统。
本发明是参照本发明实施例的方法、服务器(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管结合具体特征及其实施例对本发明进行了描述,显而易见的,在不脱离本发明的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本发明的示例性说明,且视为已覆盖本发明范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (14)
1.一种键值KV存储方法,其特征在于,所述方法包括:
在存储目标键值KV时,存储所述目标KV中的值Value至存储型内存SCM中的不定长页面;
更新主索引和映射表,所述主索引中包括已存储的KV中的Key和逻辑地址之间的映射关系;所述映射表中包括已存储的KV的逻辑地址和物理地址之间的映射关系;
在满足第一合并条件时,合并不定长页面中的Value至所述SCM中的定长页面;更新所述映射表;
在满足第二合并条件时,合并定长页面中的Value至固态硬盘SSD中的块页面;
再次更新所述映射表。
2.根据权利要求1所述的方法,其特征在于,所述更新映射表,包括:
获取所述目标KV的目标逻辑地址以及在所述不定长页面中的目标物理地址;
获取所述映射表中所述目标逻辑地址所对应的初始物理地址;
生成物理地址链,所述物理地址链中包括所述目标物理地址以及设置在所述目标物理地址的预设位置处的指示信息,所述预设位置包括所述目标物理地址之前或者之后的位置,所述指示信息用于指向所述初始物理地址;
将所述映射表中的所述初始物理地址更新为所述物理地址链。
3.根据权利要求2所述的方法,其特征在于,所述在满足第一合并条件时,合并不定长页面中的Value至所述SCM中的定长页面,包括:
在所述物理地址链满足预设条件时,将所述物理地址链所指向的物理地址中的Value合并至所述SCM中的定长页面;所述预设条件包括:所述物理地址链的长度达到预设长度,或者,所述物理地址链所对应的不定长页面的个数达到预设个数。
4.根据权利要求2所述的方法,其特征在于,所述获取所述映射表中所述目标逻辑地址所对应的初始物理地址,包括:
若所述映射表中不存在所述目标逻辑地址所对应的物理地址,则将所述初始物理地址确定为空。
5.根据权利要求1所述的方法,其特征在于,所述在满足第一合并条件时,合并不定长页面中的Value至所述SCM中的定长页面,包括:
在所述SCM中不定长页面的剩余资源低于第一阈值时,合并不定长页面中的Value至所述SCM中的定长页面。
6.根据权利要求1所述的方法,其特征在于,所述在满足第二合并条件时,合并定长页面中的Value至SSD中的块页面,包括:
在相邻的定长页面的个数达到预设个数时,合并所述预设个数的定长页面中的Value至所述块页面;所述相邻的定长页面是指存储的Value所对应的Key的取值范围连续的页面;
或者,
在所述SCM中的定长页面的空闲资源低于第二阈值时,合并所述定长页面中的Value至所述块页面。
7.根据权利要求1至6任一所述的方法,其特征在于,所述方法还包括:
在存储所述目标KV中的Value至所述不定长页面之后,更新临时索引,所述临时索引中包括已存储的KV中的Key和Value在不定长页面中的物理地址之间的映射关系;
所述更新主索引和映射表,包括:
在提交所述目标KV之后,根据所述临时索引更新所述主索引和所述映射表。
8.一种键值KV存储装置,其特征在于,所述装置包括:
存储单元,用于在存储目标键值KV时,存储所述目标KV中的值Value至存储型内存SCM中的不定长页面;
更新单元,用于更新主索引和映射表,所述主索引中包括已存储的KV中的Key和逻辑地址之间的映射关系;所述映射表中包括已存储的KV的逻辑地址和物理地址之间的映射关系;
合并单元,用于在满足第一合并条件时,合并不定长页面中的Value至所述SCM中的定长页面;
所述更新单元,还用于更新所述映射表;
所述合并单元,还用于在满足第二合并条件时,合并定长页面中的Value至固态硬盘SSD中的块页面;
所述更新单元,还用于再次更新所述映射表。
9.根据权利要求8所述的装置,其特征在于,所述更新单元,还用于:
获取所述目标KV的目标逻辑地址以及在所述不定长页面中的目标物理地址;
获取所述映射表中所述目标逻辑地址所对应的初始物理地址;
生成物理地址链,所述物理地址链中包括所述目标物理地址以及设置在所述目标物理地址的预设位置处的指示信息,所述预设位置包括所述目标物理地址之前或者之后的位置,所述指示信息用于指向所述初始物理地址;
将所述映射表中的所述初始物理地址更新为所述物理地址链。
10.根据权利要求9所述的装置,其特征在于,所述合并单元,还用于:
在所述物理地址链满足预设条件时,将所述物理地址链所指向的物理地址中的Value合并至所述SCM中的定长页面;所述预设条件包括:所述物理地址链的长度达到预设长度,或者,所述物理地址链所对应的不定长页面的个数达到预设个数。
11.根据权利要求9所述的装置,其特征在于,所述更新单元,还用于:
若所述映射表中不存在所述目标逻辑地址所对应的物理地址,则将所述初始物理地址确定为空。
12.根据权利要求9所述的装置,其特征在于,所述合并单元,还用于:
在所述SCM中不定长页面的剩余资源低于第一阈值时,合并不定长页面中的Value至所述SCM中的定长页面。
13.根据权利要求8所述的装置,其特征在于,所述合并单元,还用于:
在相邻的定长页面的个数达到预设个数时,合并所述预设个数的定长页面中的Value至所述块页面;所述相邻的定长页面是指存储的Value所对应的Key的取值范围连续的页面;
或者,
在所述SCM中的定长页面的空闲资源低于第二阈值时,合并所述定长页面中的Value至所述块页面。
14.根据权利要求8至13任一所述的装置,其特征在于,
所述更新单元,还用于在存储所述目标KV中的Value至所述不定长页面之后,更新临时索引,所述临时索引中包括已存储的KV中的Key和Value在不定长页面中的物理地址之间的映射关系;在提交所述目标KV之后,根据所述临时索引更新所述主索引和所述映射表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611262977.6A CN107066498B (zh) | 2016-12-30 | 2016-12-30 | 键值kv存储方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611262977.6A CN107066498B (zh) | 2016-12-30 | 2016-12-30 | 键值kv存储方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107066498A true CN107066498A (zh) | 2017-08-18 |
CN107066498B CN107066498B (zh) | 2020-04-14 |
Family
ID=59623976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611262977.6A Active CN107066498B (zh) | 2016-12-30 | 2016-12-30 | 键值kv存储方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107066498B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019047612A1 (zh) * | 2017-09-11 | 2019-03-14 | 清华大学 | 基于闪存的存储路径优化的键值存储管理方法 |
CN109521959A (zh) * | 2018-11-01 | 2019-03-26 | 西安交通大学 | 一种基于ssd-smr磁盘混合键值存储系统数据组织方法 |
CN110019016A (zh) * | 2017-12-29 | 2019-07-16 | 北京忆恒创源科技有限公司 | 提供逻辑键的kv存储设备及其方法 |
CN110019073A (zh) * | 2017-12-29 | 2019-07-16 | 北京忆恒创源科技有限公司 | 使用kv存储设备提供文件系统的方法及其文件系统 |
CN110275838A (zh) * | 2018-03-16 | 2019-09-24 | 北京忆芯科技有限公司 | Kv存储设备的地址转换及其加速器 |
CN110275990A (zh) * | 2018-03-14 | 2019-09-24 | 北京忆芯科技有限公司 | Kv存储的键与值的生成方法及装置 |
CN110837338A (zh) * | 2018-08-15 | 2020-02-25 | 阿里巴巴集团控股有限公司 | 一种存储索引处理方法及装置 |
CN110968269A (zh) * | 2019-11-18 | 2020-04-07 | 华中科技大学 | 基于scm与ssd的键值存储系统及读写请求处理方法 |
WO2021027340A1 (zh) * | 2019-08-13 | 2021-02-18 | 华为技术有限公司 | 一种键值kv的存储方法、装置及存储设备 |
WO2023165448A1 (zh) * | 2022-03-02 | 2023-09-07 | 华为技术有限公司 | 一种地址管理方法及存储装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130042060A1 (en) * | 2011-08-08 | 2013-02-14 | Takao Marukame | Memory system including key-value store |
CN103268318A (zh) * | 2013-04-16 | 2013-08-28 | 华中科技大学 | 一种强一致性的分布式键值数据库系统及其读写方法 |
US20140195720A1 (en) * | 2013-01-09 | 2014-07-10 | Wisconsin Alumni Research Foundation | High-Performance Indexing For Data-Intensive Systems |
CN104536958A (zh) * | 2014-09-26 | 2015-04-22 | 杭州华为数字技术有限公司 | 一种复合索引方法,及装置 |
CN106021484A (zh) * | 2016-05-18 | 2016-10-12 | 中国电子科技集团公司第三十二研究所 | 基于内存计算的可定制多模式大数据处理系统 |
-
2016
- 2016-12-30 CN CN201611262977.6A patent/CN107066498B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130042060A1 (en) * | 2011-08-08 | 2013-02-14 | Takao Marukame | Memory system including key-value store |
US20140195720A1 (en) * | 2013-01-09 | 2014-07-10 | Wisconsin Alumni Research Foundation | High-Performance Indexing For Data-Intensive Systems |
CN103268318A (zh) * | 2013-04-16 | 2013-08-28 | 华中科技大学 | 一种强一致性的分布式键值数据库系统及其读写方法 |
CN104536958A (zh) * | 2014-09-26 | 2015-04-22 | 杭州华为数字技术有限公司 | 一种复合索引方法,及装置 |
CN106021484A (zh) * | 2016-05-18 | 2016-10-12 | 中国电子科技集团公司第三十二研究所 | 基于内存计算的可定制多模式大数据处理系统 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019047612A1 (zh) * | 2017-09-11 | 2019-03-14 | 清华大学 | 基于闪存的存储路径优化的键值存储管理方法 |
CN110019016A (zh) * | 2017-12-29 | 2019-07-16 | 北京忆恒创源科技有限公司 | 提供逻辑键的kv存储设备及其方法 |
CN110019073A (zh) * | 2017-12-29 | 2019-07-16 | 北京忆恒创源科技有限公司 | 使用kv存储设备提供文件系统的方法及其文件系统 |
CN110275990A (zh) * | 2018-03-14 | 2019-09-24 | 北京忆芯科技有限公司 | Kv存储的键与值的生成方法及装置 |
CN110275838A (zh) * | 2018-03-16 | 2019-09-24 | 北京忆芯科技有限公司 | Kv存储设备的地址转换及其加速器 |
CN110275838B (zh) * | 2018-03-16 | 2021-08-10 | 北京忆芯科技有限公司 | Kv存储设备的地址转换及其加速器 |
CN110837338A (zh) * | 2018-08-15 | 2020-02-25 | 阿里巴巴集团控股有限公司 | 一种存储索引处理方法及装置 |
CN109521959A (zh) * | 2018-11-01 | 2019-03-26 | 西安交通大学 | 一种基于ssd-smr磁盘混合键值存储系统数据组织方法 |
WO2021027340A1 (zh) * | 2019-08-13 | 2021-02-18 | 华为技术有限公司 | 一种键值kv的存储方法、装置及存储设备 |
US11868651B2 (en) | 2019-08-13 | 2024-01-09 | Huawei Technologies Co., Ltd. | Key-value KV storage method and apparatus, and storage device |
CN110968269A (zh) * | 2019-11-18 | 2020-04-07 | 华中科技大学 | 基于scm与ssd的键值存储系统及读写请求处理方法 |
WO2023165448A1 (zh) * | 2022-03-02 | 2023-09-07 | 华为技术有限公司 | 一种地址管理方法及存储装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107066498B (zh) | 2020-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107066498A (zh) | 键值kv存储方法和装置 | |
EP2817741B1 (en) | Method and apparatus utilizing non-uniform hash functions for placing records in non-uniform access memory | |
US7949839B2 (en) | Managing memory pages | |
CN107066393A (zh) | 提高地址映射表中映射信息密度的方法 | |
US10445022B1 (en) | Optimization of log-structured merge (LSM) tree-based databases using object solid state drive (SSD) devices | |
US20120317377A1 (en) | Dual flash translation layer | |
KR20080063466A (ko) | 플래시 메모리 관리 | |
CN105988723A (zh) | 一种快照处理方法及装置 | |
CN104133775A (zh) | 一种用于管理存储器的方法和装置 | |
US20180357142A1 (en) | Reporting defects in a flash memory back-up system | |
US20190332540A1 (en) | Storage management method, electronic device and computer readable medium | |
US11030125B2 (en) | Point in time copy operations from source volumes to space efficient target volumes in two stages via a non-volatile storage | |
US20120131264A1 (en) | Storage device | |
CN110399333A (zh) | 删除快照的方法、设备和计算机程序产品 | |
CN110554911A (zh) | 内存访问与分配方法、存储控制器及系统 | |
US20120047108A1 (en) | Point-in-time (pit) based thin reclamation support for systems with a storage usage map api | |
CN111190537B (zh) | 一种追加写场景下顺序存储磁盘管理的方法及系统 | |
CN105808378A (zh) | 元数据修复方法及装置 | |
CN108108309A (zh) | 涉及多nand闪存的并行访问方法、固态硬盘和计算机 | |
KR20180022538A (ko) | 저장 장치를 사전 조정하는 방법 및 시스템 | |
CN104408126B (zh) | 一种数据库的持久化写入方法、装置和系统 | |
US9778969B2 (en) | Automatic memory leak detection | |
US8068363B2 (en) | Flash memory apparatus and read operation control method therefor | |
CN105630410A (zh) | 使用非易失随机读写存储芯片动态管理文件存储区的方法 | |
CN114924923A (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 |