CN106897315B - Kv项有效性获取方法以及装置 - Google Patents
Kv项有效性获取方法以及装置 Download PDFInfo
- Publication number
- CN106897315B CN106897315B CN201510962971.9A CN201510962971A CN106897315B CN 106897315 B CN106897315 B CN 106897315B CN 201510962971 A CN201510962971 A CN 201510962971A CN 106897315 B CN106897315 B CN 106897315B
- Authority
- CN
- China
- Prior art keywords
- item
- page
- ith
- acquiring
- validity
- 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
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000010586 diagram Methods 0.000 description 7
- 230000002085 persistent effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
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/2237—Vectors, bitmaps or matrices
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项进行编号,在垃圾回收时获取第i个页面的起始KV项的编号以及结束KV项的编号,其中,KV项包括索引、数据以及元数据,页面为读取单位;根据起始KV项的编号以及结束KV项的编号计算得到第i个页面的KV项的编号范围;根据第i个页面的KV项的编号查找有效性存储空间以获取第i个页面中的每个KV项的有效性,其中,有效性存储空间包括多个存储单元,存储单元用于存储KV项的有效性,有效性为有效状态或者无效状态。上述方法能够提高存储空间的利用率。
Description
技术领域
本申请涉及存储领域,特别是涉及一种KV项有效性获取方法以及装置。
背景技术
键值存储,即Key-Value存储,简称KV存储。KV存储是按照索引和文件组合的形式进行组织,索引和文件的组合称为KV项。其中,索引用于标识KV项,文件用于存储数据,KV项的大小可以变化,KV项的大小主要取决于文件的大小。所以,KV存储适合不涉及过多数据关系业务关系的业务数据,例如,网络社交平台和电商产生的业务数据,能够有效减少读写磁盘的次数。
KV项通常存储在持久化存储介质中。当需要对持久化存储介质进行垃圾回收时,先将进行垃圾回收的存储空间中的有效KV项迁移到有效的区域中或者确定进行垃圾回收的存储空间中没有有效KV项。而要将需要进行垃圾回收的存储空间中有效KV项迁移到有效的区域,或者,确定需要进行垃圾回收的存储空间中没有有效KV项,都必须首先获得需要进行垃圾回收的存储空间中的KV项的有效性。
如图1所示,现有技术提供了一种KV项有效性获取方法,将固态硬盘(Solid StateDrives,SSD)中的存储空间划分为多个大小相同的数据单元110。每个KV项使用整数个数据单元110进行存储,即,当KV项的大小小于或者等于1个数据单元110的大小时,1个KV项使用1个数据单元110进行存储,当KV项的大于1个数据单元110的大小,而小于或者等于2个数据单元110的大小时,1个KV项使用2个数据单元110进行存储,依此类推。在存储级内存(StoreClass Memory,SCM)中存储有位图(bitmap)120。位图120包括多个位121,位图120中的每个位120与SSD中的一个数据单元110对应。当位图120中的位121的值为“1”(图中用黑块进行表示)时,表示位121对应的数据单元110为有效状态(图中用带条纹的方块表示),当位图120中的位121的值为“0”(图中用白块进行表示)时,表示位121对应的数据单元110为无效状态(图中用带散点的方块表示)。如图1中所示,位图120中的第1个位对应第1个数据单元110,第2个位对应第2个数据单元110,第3个位对应第3个数据单元110,……。第1个KV项存储在第1个数据单元110中,第2个KV项存储在第2个数据单元110以及第3个数据单元110中,第3个KV项存储在第4个数据单元110中,第4个KV项存储在第5个数据单元110、第6个数据单元110以及第7个KV数据单元中,……。第1个KV项为无效数据,第2个KV项为有效数据,第3个KV项为无效数据,第4个KV项为有效数据,……。所以,位图120的第1个位121被设置成0,第2个位121被设置为1,第3个位121被设置为1,第4个位121被设置为0,第5个位121被设置为1,第6个位121被设置为1,第7个位121被设置为1,……。通过读取位图120中的各个位121的状态,就能够获知各个数据单元110的有效性。但是,在这种方式中,如果KV项的大小不是刚好为整数个块110的大小时,就会导致存储空间被浪费。
发明内容
本申请提供一种KV项有效性获取方法以及装置,能够提高存储空间的利用率。
第一方面,提供了一种KV项有效性获取方法,包括:
获取第i个页面的起始KV项的编号以及结束KV项的编号,其中,KV项包括索引、数据项以及元数据,所述页面为读取单位,所述KV项连续存储于部分、一个或多个块中;
根据所述起始KV项的编号以及结束KV项的编号计算得到第i个页面的KV项的编号范围;
根据所述第i个页面的KV项的编号查找有效性存储空间以获取所述第i个页面中的KV项的有效性,其中,所述有效性存储空间包括多个与KV项对应的存储单元,所述存储单元用于存储对应KV项的有效性,所述有效性为有效状态或者无效状态。
结合第一方面,本发明第一方面的第一种可能的实施方式中,在获取第i个页面的起始KV项的编号以及结束KV项的编号之前,还包括:对KV项进行编号,并将KV项的编号存储到哈希表和/或所述KV项中。
结合第一方面的第一种可能的实施方式,本发明第一方面的第二种可能的实施方式中,所述方法还包括:在删除或者更改KV项时,从哈希表和/或需要删除或者更改的KV项中获取所述需要删除或者更改的KV项的编号;根据所述需要删除或者更改的KV项的编号在所述有效性存储单元中查找到对应的存储单元;将所述对应的存储单元标记为无效状态。
结合第一方面或第一方面的第一种或第二种可能的实施方式,本发明第一方面的第三种可能的实施方式中,获取第i个页面的起始KV项的编号以及结束KV项的编号具体包括:获取第i个页面的页面信息以及第i+1个页面的页面信息,其中,第i个页面的页面信息包括第i个页面的起始KV项的编号;根据所述第i个页面的页面信息获得第i个页面的起始KV项的编号;根据所述第i+1个页面的页面信息获取第i+1个页面的起始KV项的编号,并根据第i+1个页面的起始KV项的编号获得所述第i个页面的结束KV项的编号;或者,获取第i-1个页面的页面信息以及第i个页面的页面信息,其中,第i个页面的页面信息包括第i个页面的结束KV项的编号;根据所述第i个页面的页面信息获得第i个页面的结束KV项的编号;根据所述第i-1个页面的页面信息获取第i-1个页面的结束KV项的编号,并根据第i-1个页面的结束KV项的编号获得所述第i个页面的开始KV项的编号;或者,获取第i个页面的页面信息,其中,第i个页面的页面信息包括第i个页面的开始和结束KV项的编号。
结合第一方面或第一方面的第一种至第三种可能的实施方式中的任意一种,本发明第一方面的第四种可能的实施方式中,所述有效性存储空间为位图,所述位图中的位的序号与KV项的编号对应,所述位图中的位的值用于表示对应的KV项的有效性。
结合第一方面或第一方面的第一种至第四种可能的实施方式中的任意一种,本发明第一方面的第五种可能的实施方式中,所述页面信息还包括第i个页面的起始KV项的偏移量,所述根据所述第i个页面的KV项的编号查找有效性存储空间以获取所述第i个页面中的KV项的有效性之后,还包括:根据第i个页面的起始KV项的偏移量查找到第i个页面的起始KV项的地址,并进而找到第i个页面中有效性为有效状态的KV项的地址;将第i个页面中有效性为有效状态的KV项拷贝到有效数据区域。
第二方面,提供了一种KV项有效性获取装置,包括:获取模块、计算模块以及查找模块,所述获取模块用于获取第i个页面的起始KV项的编号以及结束KV项的编号,其中,KV项包括索引、数据项以及元数据,所述页面为读取单位,所述KV项连续存储于部分、一个或多个块中;所述计算模块用于根据所述起始KV项的编号以及结束KV项的编号计算得到第i个页面的KV项的编号的范围;所述查找模块用于根据所述第i个页面的KV项的编号查找有效性存储空间以获取所述第i个页面中的KV项的有效性,其中,所述有效性存储空间包括多个与KV项对应的存储单元,所述存储单元用于存储对应KV项的有效性,所述有效性为有效状态或者无效状态。
结合第二方面,本发明第二方面的第一种可能的实施方式中,所述装置还包括存储模块,所述存储模块用于对KV项进行编号,并将KV项的编号存储到哈希表和/或所述KV项中。
结合第二方面的第一种可能的实施方式,本发明第二方面的第二种可能的实施方式中,所述装置还包括标记模块,所述获取模块用于在删除或者更改KV项时,从哈希表和/或需要删除或者更改的KV项中获取所述需要删除或者更改的KV项的编号;所述查找模块用于根据所述需要删除或者更改的KV项的编号在所述有效性存储单元中查找到对应的存储单元;所述标记模块用于将所述对应的存储单元标记为无效状态。
结合第二方面或第二方面的第一种或第二种可能的实施方式,本发明第二方面的第三种可能的实施方式中,所述获取模块具体用于获取第i个页面的页面信息以及第i+1个页面的页面信息,其中,第i个页面的页面信息包括第i个页面的起始KV项的编号;根据所述第i个页面的页面信息获得第i个页面的起始KV项的编号;根据所述第i+1个页面的页面信息获取第i+1个页面的起始KV项的编号,并根据第i+1个页面的起始KV项的编号获得所述第i个页面的结束KV项的编号;或者,获取第i-1个页面的页面信息以及第i个页面的页面信息,其中,第i个页面的页面信息包括第i个页面的结束KV项的编号;根据所述第i个页面的页面信息获得第i个页面的结束KV项的编号;根据所述第i-1个页面的页面信息获取第i-1个页面的结束KV项的编号,并根据第i-1个页面的结束KV项的编号获得所述第i个页面的开始KV项的编号;或者,获取第i个页面的页面信息,其中,第i个页面的页面信息包括第i个页面的开始和结束KV项的编号。
结合第二方面或第二方面的第一种至第三种可能的实施方式中的任意一种,本发明第二方面的第四种可能的实施方式中,所述有效性存储空间为位图,所述位图中的位的序号与KV项的编号对应,所述位图中的位的值用于表示对应的KV项的有效性。
结合第二方面或第二方面的第一种至第四种可能的实施方式中的任意一种,本发明第二方面的第五种可能的实施方式中,所述页面信息还包括第i个页面的起始KV项的偏移量,所述装置还包括查址模块以及拷贝模块,所述查址模块用于根据第i个页面的起始KV项的偏移量查找到第i个页面的起始KV项的地址,并进而找到第i个页面中有效性为有效状态的KV项的地址;所述拷贝模块用于将第i个页面中有效性为有效状态的KV项拷贝到有效数据区域。
通过上述方案,一方面,在第i个页面中的KV项连续存储,并且对第i个页面中的KV项进行了编号,另一方面,在有效性存储空间中的对应的存储单元存储了第i个页面的KV项的有效性。所以,能够通过获取第i个页面的起始KV项的编号以及结束KV项的编号计算得到第i个页面的KV项的编号,并根据第i个页面的KV项的编号查找对应的存储单元,从而获得第i个页面的KV项的有效性。
附图说明
图1是现有技术中通过位图与SSD中块的映射关系的示意图;
图2是本发明提供的一种KV项有效性获取方法的流程图;
图3a是本发明提供的一种KV项有效性获取方法中KV项的编号的存储方式一的示意图;
图3b是本发明提供的一种KV项有效性获取方法中KV项的编号的存储方式二的示意图;
图3c是本发明提供的一种KV项有效性获取方法中KV项的编号的存储方式三的示意图;
图4是本发明提供的一种KV项有效性获取方法中通过位图查找到KV项的有效性的示意图;
图5是本发明提供的一种KV项有效性获取装置的结构示意图。
具体实施方式
需要说明的是,在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”指两者中的至少一种,例如“A和/或B”包括单独A、单独B、A和B三种情况。如无特别声明,“A、B和/或C”包括单独A、单独B、单独C,以及以上A、B、C的任意组合。
参考图2,图2是本发明提供的一种KV项有效性获取方法的流程图。本实施方式的KV项有效性获取方法包括:
210:对KV项进行编号,并将KV项的编号存储到哈希表和/或KV项中。
请一并参阅图3a,存储空间可以分成多个块,每个块包含多个页面310。在一个页面310中,可以存储一个或者多个KV项320,或者可以在多个页面310中,存储一个KV项320,具体由KV项320的大小决定。KV项320在存储空间的部分、一个或多个块中连续不间断存储。其中,存储空间可以是SSD等等。可以理解的是,KV项320是存储在页面310中的,但是,为了便于表示,图中将KV项320和页面310分开进行表示。
在将KV项320存储到存储空间时,对KV项320按照一定的规则进行编号。其中,编号可以是数字编号、字母编号等等。例如,对KV项320按照1,2,3……的规律进行编号。KV项320的编号可以存储在KV项320自身中(如图3a所示),可以存储在哈希表340中(如图3b所示),也可以同时存储在哈希表340以及KV项320自身中(如图3c所示)。其中,哈希表340存储在SCM或者DRAM中,包括多个项341,每个项341与一个KV项320对应,KV项320的编号可以存储到哈希表340对应的项341中。此外,还将每个页面中的第一个完整的KV项的编号以及第一个完整的KV项的偏移地址存储到页面信息中。其中,页面信息存储在SCM。
SCM中还设置有有效性存储空间。在一具体的实施例中,有效性存储空间可以是位图330,位图330包括多个位331,位图330中的位331的序号与KV项320的编号对应,位图330中的位331的值用于表示对应的KV项320的有效性。KV项320的有效性包括有效状态或者无效状态,当位图330中的位331的值为“1”时,表示对应的KV项320的有效性为有效状态,当位图330中的位331的值为“0”时,表示对应的KV项320的有效性为无效状态。或者,当位图330中的位331的值为“0”时,表示对应的KV项320的有效性为有效状态,当位图330中的位331的值为“1”时,表示对应的KV项320的有效性为无效状态。在另一具体的实施例中,有效性存储空间可以是存储空间的一部分,包括多个字段,每个字段与一个KV项320对应,用于存储对应的KV项320的有效性。当字段的值为第一值时,表示对应的KV项320的有效性为无效状态;当字段的值为第二值时,表示对应的KV项320的有效性为有效状态。
220:判断是否删除或者更改KV项。
删除KV项为使被删除的KV项转化为无效状态,更改KV项为使原来的KV项处于无效状态,并将新的KV项写到新的位置。所以,当删除或者更改了KV项后,原来的KV项都会处于无效状态。判断是否删除或者更改KV项,如果删除或者更改了KV项,进入步骤230;如果没有删除或者更改KV项,进步步骤240。
230:对对应的存储单元标记。
在删除或者更改KV项时,原来的KV项都会处于无效状态,所以,需要对对应的存储单元进行标记,以将对应的存储单元的有效性从有效状态更改为无效状态。标记时,如果被删除或者被修改的KV项的编号存储在自身中,则可以直接从自身中读取编号,并根据KV项的编号与有效性存储单元的对应关系查找到对应的存储单元,并将对应的存储单元标记为无效状态。如果被删除或者被修改的KV项的编号存储在哈希表中,则可以根据被删除或者被修改的KV项与哈希表的项的对应关系,查找到对应的项,并从对应的项中读取被删除或者被修改的KV项的编号,根据KV项的编号与有效性存储单元的对应关系查找到对应的存储单元,并将对应的存储单元标记为无效状态。
240:获取第i个页面的起始KV项的编号以及结束KV项的编号。
第i个页面的起始KV项为第i个页面中的第一个完整的KV项。第i个页面的结束KV项为第i个页面中的最后一个KV项,最后一个KV项可以是完整的KV项,也可以是不完整的KV项(即最后一个KV项的一部分存储在下一个页面中)。
获取第i个页面的起始KV项的编号以及结束KV项的编号的方法为:
(1)在SCM中存储各个页面的页面信息,其中,第i个页面的页面信息包括第i个页面的起始KV项的编号。获取第i个页面的页面信息,并从第i个页面的页面信息中获取第i个页面的起始KV项的编号。然后,从第i+1个页面的页面信息中获取第i+1个页面的起始KV项的编号。第i+1个页面的起始KV项的编号的上一个编号即为第i个页面的结束KV项的编号。
(2)在SCM中存储各个页面的页面信息,其中,第i个页面的页面信息包括第i个页面的结束KV项的编号。获取第i个页面的页面信息,并从第i个页面的页面信息中获取第i个页面的结束KV项的编号。然后,从第i-1个页面的页面信息中获取第i-1个页面的结束KV项的编号。第i-1个页面的起始KV项的编号的下一个编号即为第i个页面的起始KV项的编号。
(3)在SCM中存储各个页面的页面信息,其中,第i个页面的页面信息包括第i个页面的起始KV项的编号以及第i个页面的结束KV项的编号。获取第i个页面的页面信息,并从第i个页面的页面信息中获取第i个页面的起始KV项的编号以及第i个页面的结束KV项的编号。
250:根据起始KV项的编号以及结束KV项的编号计算得到第i个页面的KV项的编号的范围。
在获得第i个页面的起始KV项的编号以及结束KV项的编号后,根据编号的规则就可以计算出第i个页面的KV项的编号。例如,以图4为例,第1个页面310的起始KV项320的编号为0,结束KV项320的编号为1,且编号的规律为1,2,3,……,所以,第1个页面310的KV项320的编号为0,1。第2个页面310的起始KV项320的编号为0,结束KV项320的编号为1,且编号的规律为1,2,3,……,所以,第2个页面310的KV项320的编号为2,3。
260:根据第i个页面的KV项的编号查找有效性存储空间以获取第i个页面中的KV项的有效性。
在获得第i个页面的KV项后,根据KV项和有效性存储空间的对应关系,查找到第i个页面中的KV项的有效性。继续以图4为例,第一个页面310的KV项320的编号分别为编号0和编号1,所以,第一个页面310的KV项320对应位图330的第一个位331,以及第二个位331。第一个位331的值为0(图中以白块表示),第二个位331的值为1(图中以黑块表示),所以,查询位图331后可以知道,编号为0的KV项320的有效性为无效状态,编号为1的KV项320的有效性为有效状态。
270:判断第i个页面是否具有有效KV项。
如果第i个页面不存在有效KV项,则指向下一个页面,并返回步骤240,如果第i个页面存在有效KV项,则进入步骤280。
280:将第i个页面中有效性为有效状态的KV项拷贝到有效数据区域。
在一具体的实施例中,页面信息还包括第i个页面的起始KV项的偏移量。所以,可以根据第i个页面的起始KV项的偏移量查找到第i个页面的起始KV项的地址,并进而找到第i个页面中有效性为有效状态的KV项的地址。然后,将第i个页面中有效性为有效状态的KV项拷贝到有效数据区域。其中,有效数据区域是存储空间中的一部分存储区域且能够用于从存储数据。
290:进行擦除操作。
重复执行步骤240至步骤280,直到需要进行垃圾回收的页面都处理完毕。然后,对需要进行垃圾回收的页面进行擦除操作,擦除完成后,这些页面又可以重新用于存储数据。
可以理解的是,如果只需要对KV项的有效性进行标记,可以只执行步骤210至步骤230。如果只需要根据标记的结果进行垃圾回收,则可以只执行步骤240至步骤290。
通过上述方案,一方面,在第i个页面中的KV项连续存储,并且对第i个页面中的KV项进行了编号,另一方面,在有效性存储空间中的对应的存储单元存储了第i个页面的KV项的有效性。所以,能够通过获取第i个页面的起始KV项的编号以及结束KV项的编号计算得到第i个页面的KV项的编号,并根据第i个页面的KV项的编号查找对应的存储单元,从而获得第i个页面的KV项的有效性。
参阅图5,图5是本发明提供的一种KV项有效性获取装置的结构示意图。本实施例的KV项有效性获取装置包括:获取模块510、计算模块520以及查找模块530。
所述获取模块510用于获取第i个页面的起始KV项的编号以及结束KV项的编号,其中,KV项包括索引、数据项以及元数据,所述页面为存储单位,所述KV项连续存储于部分、一个或多个块中;
所述计算模块520用于根据所述起始KV项的编号以及结束KV项的编号计算得到第i个页面的KV项的编号范围;
所述查找模块530用于根据所述第i个页面的KV项的编号查找有效性存储空间以获取所述第i个页面中的KV项的有效性,其中,所述有效性存储空间包括多个与KV项对应的存储单元,所述存储单元用于存储对应KV项的有效性,所述有效性为有效状态或者无效状态。
可选地,所述装置还包括存储模块540,所述存储模块540用于对KV项进行编号,并将KV项的编号存储到哈希表和/或所述KV项中。
可选地,所述装置还包括标记模块550,所述获取模块510用于在删除或者更改KV项时,从哈希表和/或需要删除或者更改的KV项中获取所述需要删除或者更改的KV项的编号;所述查找模块530用于根据所述需要删除或者更改的KV项的编号在所述有效性存储单元中查找到对应的存储单元;所述标记模块550用于将所述对应的存储单元标记为无效状态。
可选地,所述获取模块510具体用于获取第i个页面的页面信息以及第i+1个页面的页面信息,其中,第i个页面的页面信息包括第i个页面的起始KV项的编号;根据所述第i个页面的页面信息获得第i个页面的起始KV项的编号;根据所述第i+1个页面的页面信息获取第i+1个页面的起始KV项的编号,并根据第i+1个页面的起始KV项的编号获得所述第i个页面的结束KV项的编号;或者,获取第i-1个页面的页面信息以及第i个页面的页面信息,其中,第i个页面的页面信息包括第i个页面的结束KV项的编号;根据所述第i个页面的页面信息获得第i个页面的结束KV项的编号;根据所述第i-1个页面的页面信息获取第i-1个页面的结束KV项的编号,并根据第i-1个页面的结束KV项的编号获得所述第i个页面的开始KV项的编号;或者,获取第i个页面的页面信息,其中,第i个页面的页面信息包括第i个页面的开始和结束KV项的编号。
可选地,所述有效性存储空间为位图,所述位图中的位的序号与KV项的编号对应,所述位图中的位的值用于表示对应的KV项的有效性。
可选地,所述页面信息还包括第i个页面的起始KV项的偏移量,所述装置还包括查址模块560以及拷贝模块570,所述查址模块560用于根据第i个页面的起始KV项的偏移量查找到第i个页面的起始KV项的地址,并进而找到第i个页面中有效性为有效状态的KV项的地址;所述拷贝模块570用于将第i个页面中有效性为有效状态的KV项拷贝到有效数据区域。
本实施例的装置与图1所示的方法对应,具体请参阅图1以及相关描述,此处不再展开描述。
通过上述方案,一方面,在第i个页面中的KV项连续存储,并且对第i个页面中的KV项进行了编号,另一方面,在有效性存储空间中的对应的存储单元存储了第i个页面的KV项的有效性。所以,能够通过获取第i个页面的起始KV项的编号以及结束KV项的编号计算得到第i个页面的KV项的编号,并根据第i个页面的KV项的编号查找对应的存储单元,从而获得第i个页面的KV项的有效性。
Claims (12)
1.一种KV项有效性获取方法,其特征在于,包括:
获取第i个页面的起始KV项的编号以及结束KV项的编号,其中,KV项包括索引、数据项以及元数据,所述页面为读取单位,所述KV项连续存储于部分、一个或多个块中;
根据所述起始KV项的编号以及结束KV项的编号计算得到第i个页面的KV项的编号范围;
根据所述第i个页面的KV项的编号查找有效性存储空间以获取所述第i个页面中的KV项的有效性,其中,所述有效性存储空间包括多个与KV项对应的存储单元,所述存储单元用于存储对应KV项的有效性,所述有效性为有效状态或者无效状态;KV项的有效性是通过位图中的位的值对应表示的;
判断第i个页面是否具有有效KV项;
将第i个页面中有效性为有效状态的KV项拷贝到有效数据区域。
2.根据权利要求1所述的方法,其特征在于,在获取第i个页面的起始KV项的编号以及结束KV项的编号之前,还包括:
对KV项进行编号,并将KV项的编号存储到哈希表和/或所述KV项中。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在删除或者更改KV项时,从哈希表和/或需要删除或者更改的KV项中获取所述需要删除或者更改的KV项的编号;
根据所述需要删除或者更改的KV项的编号在所述有效性存储空间中查找到对应的存储单元;
将所述对应的存储单元标记为无效状态。
4.根据权利要求1至3任一权利要求所述的方法,其特征在于,获取第i个页面的起始KV项的编号以及结束KV项的编号具体包括:
获取第i个页面的页面信息以及第i+1个页面的页面信息,其中,第i个页面的页面信息包括第i个页面的起始KV项的编号;
根据所述第i个页面的页面信息获得第i个页面的起始KV项的编号;
根据所述第i+1个页面的页面信息获取第i+1个页面的起始KV项的编号,并根据第i+1个页面的起始KV项的编号获得所述第i个页面的结束KV项的编号;或者,
获取第i-1个页面的页面信息以及第i个页面的页面信息,其中,第i个页面的页面信息包括第i个页面的结束KV项的编号;
根据所述第i个页面的页面信息获得第i个页面的结束KV项的编号;
根据所述第i-1个页面的页面信息获取第i-1个页面的结束KV项的编号,并根据第i-1个页面的结束KV项的编号获得所述第i个页面的开始KV项的编号;或者,
获取第i个页面的页面信息,其中,第i个页面的页面信息包括第i个页面的开始和结束KV项的编号。
5.根据权利要求1-3任一权利要求所述的方法,其特征在于,所述有效性存储空间为位图,所述位图中的位的序号与KV项的编号对应,所述位图中的位的值用于表示对应的KV项的有效性。
6.根据权利要求4所述的方法,其特征在于,所述页面信息还包括第i个页面的起始KV项的偏移量,所述根据所述第i个页面的KV项的编号查找有效性存储空间以获取所述第i个页面中的KV项的有效性之后,还包括:
根据第i个页面的起始KV项的偏移量查找到第i个页面的起始KV项的地址,并进而找到第i个页面中有效性为有效状态的KV项的地址;
将第i个页面中有效性为有效状态的KV项拷贝到有效数据区域。
7.一种KV项有效性获取装置,其特征在于,包括:获取模块、计算模块以及查找模块,
所述获取模块用于获取第i个页面的起始KV项的编号以及结束KV项的编号,其中,KV项包括索引、数据项以及元数据,所述页面为读取单位,所述KV项连续存储于部分、一个或多个块中;
所述计算模块用于根据所述起始KV项的编号以及结束KV项的编号计算得到第i个页面的KV项的编号的范围;
所述查找模块用于根据所述第i个页面的KV项的编号查找有效性存储空间以获取所述第i个页面中的KV项的有效性,其中,所述有效性存储空间包括多个与KV项对应的存储单元,所述存储单元用于存储对应KV项的有效性,所述有效性为有效状态或者无效状态;KV项的有效性是通过位图中的位的值对应表示的;
拷贝模块用于判断第i个页面是否具有有效KV项;将第i个页面中有效性为有效状态的KV项拷贝到有效数据区域。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括存储模块,
所述存储模块用于对KV项进行编号,并将KV项的编号存储到哈希表和/或所述KV项中。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括标记模块,
所述获取模块用于在删除或者更改KV项时,从哈希表和/或需要删除或者更改的KV项中获取所述需要删除或者更改的KV项的编号;
所述查找模块用于根据所述需要删除或者更改的KV项的编号在所述有效性存储空间中查找到对应的存储单元;
所述标记模块用于将所述对应的存储单元标记为无效状态。
10.根据权利要求7至9任一权利要求所述的装置,所述获取模块具体用于获取第i个页面的页面信息以及第i+1个页面的页面信息,其中,第i个页面的页面信息包括第i个页面的起始KV项的编号;根据所述第i个页面的页面信息获得第i个页面的起始KV项的编号;根据所述第i+1个页面的页面信息获取第i+1个页面的起始KV项的编号,并根据第i+1个页面的起始KV项的编号获得所述第i个页面的结束KV项的编号;或者,获取第i-1个页面的页面信息以及第i个页面的页面信息,其中,第i个页面的页面信息包括第i个页面的结束KV项的编号;根据所述第i个页面的页面信息获得第i个页面的结束KV项的编号;根据所述第i-1个页面的页面信息获取第i-1个页面的结束KV项的编号,并根据第i-1个页面的结束KV项的编号获得所述第i个页面的开始KV项的编号;或者,获取第i个页面的页面信息,其中,第i个页面的页面信息包括第i个页面的开始和结束KV项的编号。
11.根据权利要求7-9任一权利要求所述的装置,其特征在于,所述有效性存储空间为位图,所述位图中的位的序号与KV项的编号对应,所述位图中的位的值用于表示对应的KV项的有效性。
12.根据权利要求7-9任一权利要求所述的装置,其特征在于,所述页面信息还包括第i个页面的起始KV项的偏移量,所述装置还包括查址模块以及拷贝模块,
所述查址模块用于根据第i个页面的起始KV项的偏移量查找到第i个页面的起始KV项的地址,并进而找到第i个页面中有效性为有效状态的KV项的地址;
所述拷贝模块用于将第i个页面中有效性为有效状态的KV项拷贝到有效数据区域。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510962971.9A CN106897315B (zh) | 2015-12-21 | 2015-12-21 | Kv项有效性获取方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510962971.9A CN106897315B (zh) | 2015-12-21 | 2015-12-21 | Kv项有效性获取方法以及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106897315A CN106897315A (zh) | 2017-06-27 |
CN106897315B true CN106897315B (zh) | 2020-09-29 |
Family
ID=59191561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510962971.9A Active CN106897315B (zh) | 2015-12-21 | 2015-12-21 | Kv项有效性获取方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106897315B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947669B (zh) * | 2017-12-21 | 2024-11-01 | 北京忆恒创源科技股份有限公司 | Kv存储设备的地址转换方法与系统 |
CN110019073B (zh) * | 2017-12-29 | 2024-09-03 | 北京忆恒创源科技股份有限公司 | 使用kv存储设备提供文件系统的方法及其文件系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6185552B1 (en) * | 1998-03-19 | 2001-02-06 | 3Com Corporation | Method and apparatus using a binary search engine for searching and maintaining a distributed data structure |
CN104484471B (zh) * | 2014-12-31 | 2017-09-15 | 天津南大通用数据技术股份有限公司 | 一种高性能数据存储引擎的实现方法 |
CN104657500A (zh) * | 2015-03-12 | 2015-05-27 | 浪潮集团有限公司 | 一种基于key-value键值对的分布式存储方法 |
-
2015
- 2015-12-21 CN CN201510962971.9A patent/CN106897315B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN106897315A (zh) | 2017-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10303596B2 (en) | Read-write control method for memory, and corresponding memory and server | |
JP4740216B2 (ja) | 不揮発性メモリ管理方法及び装置 | |
US9501225B2 (en) | Shrinking virtual hard disk image | |
WO2013152678A1 (zh) | 元数据查询方法和装置 | |
CN101645043B (zh) | 写数据的方法、读数据的方法及存储设备 | |
CN103914483B (zh) | 文件存储方法、装置及文件读取方法、装置 | |
JP2005267600A5 (zh) | ||
US20160216915A1 (en) | Controller, flash memory apparatus, method for identifying data block stability, and method for storing data in flash memory apparatus | |
CN103019887A (zh) | 数据备份方法及装置 | |
CN108255912B (zh) | 一种表项数据存储、查询方法及其装置 | |
CN107135662B (zh) | 一种差异数据备份方法、存储系统和差异数据备份装置 | |
CN101464901A (zh) | 一种对象存储设备中的对象查找方法 | |
WO2016101145A1 (zh) | 一种控制器、识别数据块稳定性的方法和存储系统 | |
CN106886370A (zh) | 一种基于ssd去重技术的数据安全删除方法及系统 | |
KR20210027625A (ko) | 데이터 저장장치의 주소 맵핑 테이블 운용 방법 | |
CN104516822A (zh) | 一种内存访问方法和设备 | |
CN106897315B (zh) | Kv项有效性获取方法以及装置 | |
JP2007220107A (ja) | 不揮発性メモリのマッピング情報管理装置及び方法 | |
EP3093772B1 (en) | Data processing method, data writing method, and related apparatus | |
KR20190123819A (ko) | 데이터 저장장치의 주소 맵핑 테이블 운용 방법 | |
CN107122124B (zh) | 数据处理方法及装置 | |
US10198209B2 (en) | Memory storage recycling | |
CN112380174B (zh) | 含删除文件的xfs文件系统解析方法、终端设备及存储介质 | |
US8341376B1 (en) | System, method, and computer program for repartitioning data based on access of the data | |
CN114547031A (zh) | 键值对数据库操作方法、装置及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |