CN107765992B - 一种处理数据的方法和装置 - Google Patents
一种处理数据的方法和装置 Download PDFInfo
- Publication number
- CN107765992B CN107765992B CN201610702578.0A CN201610702578A CN107765992B CN 107765992 B CN107765992 B CN 107765992B CN 201610702578 A CN201610702578 A CN 201610702578A CN 107765992 B CN107765992 B CN 107765992B
- Authority
- CN
- China
- Prior art keywords
- key
- index
- nvm
- value
- index item
- 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
Images
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/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
- 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/2255—Hash tables
-
- 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
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- 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/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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]
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)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种处理数据的方法和装置,涉及数据处理技术领域,用以减少向NVM中写入数据的次数,从而减少***的消耗,延长NVM的使用寿命。该方法应用于支持KV存储***的服务器中,服务器包括NVM;该方法包括:接收更新操作,该更新操作包括第一Key和与第一Key对应的目标Value;将第一Key和目标Value写入NVM的空闲存储空间;将NVM中存储的第一Key对应的源索引项更新为目标索引项,源索引项包括源Value所在的Key‑Value对在NVM中的位置信息,目标索引项包括目标Value所在的Key‑Value对在NVM中的位置信息。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种处理数据的方法和装置。
背景技术
原子性是指事务的操作全部完成或全部不完成。在键值(Key-Value,KV)存储***中,数据以Key-Value对的结构进行存储。
在KV存储***中,更新数据的过程包括:服务器在接收到携带Key和该Key对应的目标Value的更新操作之后,使用该Key对应的目标Value覆盖非易失性存储器(non-volatile memory,NVM)中存储的该Key对应的源Value。若在使用该目标Value覆盖该源Value的过程中,***发生宕机,则NVM中存储的该Key对应的Value不是该Key对应的目标Value,也不是该Key对应的源Value。如图1所示,假设源Value包括a和b,目标Value包括a'和b';若在使用a'覆盖a的结束时刻,***发生宕机,则NVM中存储的该Key对应的Value包括a'和b。该情况下,更新操作的写原子性被破坏。
为了解决上述问题,写数据的过程包括:服务器在NVM的一个数据区中先写入***标识(+),再写入Key-Value对;并记录该数据区中的Key-Value对的个数。更新数据的过程包括:服务器在接收到携带Key和该Key对应的目标Value的更新操作之后,先在该Key对应的源Value所在的数据区内写入***标识(-)、Key-源Value对,再写入***标识(+)、Key-目标Value对;并更新所记录的该数据区中的Key-Value对的个数。示例的,假设NVM的一个数据区内存储有1个Key-Value对,且该Key-Value对中的Key为8,Value包括x1和x2,那么,该数据区中存储的数据为+8x1x2;假设更新操作中携带的Key为8,Value包括y1和y2,则服务器在该数据区内写入-8x1x2+8y1y2,并将所记录的该数据区中的Key-Value对的个数更新为3。
在上述方法中,若服务器在NVM内写入该目标Value的过程中,***发生宕机,则该数据区内记录的Key-Value对的个数未更新,也就是说,该数据区内的有效的Key-Value对的个数未更新,该情况下,NVM中存储的该Key对应的Value为源Value;示例的,基于图2,若服务器在NVM内写入8y1y2的过程中,***发生宕机,则该数据区内记录的Key-Value对的个数为1,也就是说,NVM中存储的为+8x1x2为有效Key-Value对。若服务器在NVM内写入该目标Value的过程中,***没有发生宕机,则根据上述方法可知,NVM中存储的该Key对应的Value为目标Value。因此,上述方法能够保证更新操作的写原子性。
但是,上述方法中,服务器在更新数据的过程中,需要将该Key以及该Key对应的源Value写入NVM中,且需要在NVM中写入***标识,因此,增加了向NVM中写入数据的次数,从而增加了***的消耗,缩短了NVM的使用寿命。
发明内容
本发明的实施例提供一种处理数据的方法和装置,用于减少向NVM中写入数据的次数,从而减少***的消耗,延长NVM的使用寿命。
为了达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种处理数据的方法,应用于支持KV存储***的服务器中,服务器包括NVM;该方法可以包括:接收更新操作,该更新操作包括第一Key和与第一Key对应的目标Value,其中,第一Key可以是NVM中存储的任意一个Key;将第一Key和第一Key对应的目标Value写入NVM的空闲存储空间;将NVM中存储的第一Key对应的源索引项更新为目标索引项,其中,源索引项包括源Value所在的Key-Value对在NVM中的位置信息,目标索引项包括目标Value所在的Key-Value对在NVM中的位置信息。可见,若将第一Key和第一Key对应的目标Value写入NVM的过程中***发生宕机,则由于第一Key对应的源索引项有效,该源索引项指向的Value是第一Key对应的源Value;若没有发生宕机,则第一Key对应的目标索引项有效,该目标索引项指向的Value是第一Key对应的目标Value。因此,能够保证更新操作的写原子性。另外,与现有技术相比,不需要在NVM中写入源Value以及***标识,也不需要记录数据区中存储的Key-Value对的个数等,因此,减少了向NVM中写入数据的次数,从而降低了***的消耗,延长了NVM的使用寿命。
在一种可能的设计中,为了提升服务器的读写性能,将第一Key和第一Key对应的目标Value写入NVM的空闲存储空间,可以包括:将第一Key和第一Key对应的目标Value写入缓存中,然后,将缓存中的第一Key和第一Key对应的目标Value写入NVM的空闲存储空间,即将第一Key和第一Key对应的目标Value持久化。
在一种可能的设计中,索引项可以包括Key和KV-index,如图6所示。其中,KV-index表示该索引项指向的Key-Value在NVM中的位置信息,Key为该Key-Value对中的Key。
在一种可能的设计中,在将NVM中存储的第一Key对应的源索引项更新为目标索引项之前,该方法还可以包括:根据哈希算法从索引结构中查找第一Key对应的源索引项。该可能的设计中,给出了一种查找索引项的方式,具体实现时不限于此。
在一种可能的设计中,由于具体实现时,Key所占的存储空间可能较大,这样,在向NVM中写入索引项的过程中,不能保证写原子性,为了解决该问题,可以将图6所示的索引项中的Key替换为:该Key生成的具有原子写指令粒度的值,如图7所示。其中,具有原子写指令粒度的值,可以理解为:该值所占的存储空间的大小满足写原子性。可选的,生成的具有原子写指令粒度的值所占的存储空间可以是4bit或8bit等。
基于此,根据哈希算法从索引结构中查找第一Key对应的源索引项,可以包括:将第一Key生成具有原子写指令粒度的第二Key;根据哈希算法从索引结构中查找第二Key对应的索引项;根据第二Key对应的索引项,获取NVM中的该索引项对应的Key;若该索引项对应的Key与第一Key相同,则将该索引项作为第一Key对应的源索引项。
可选的,该方法还可以包括:若该索引项对应的Key与第一Key不同,则根据哈希算法在索引结构读取索引项,判断该索引项是否为0;若该索引项为0,则向客户端返回错误响应。若该索引项不为0,则判断第二Key与该索引项中的Key是否相同,若是,则将该索引项作为第二Key对应的索引项;若否,则根据哈希冲突算法,从索引结构中读取索引项,判断若该索引项是否为0,……直至向客户端返回错误响应,或将该索引项作为第二Key对应的索引项。
在一种可能的设计中,在将NVM中存储的Key对应的源索引项更新为目标索引项之后,该方法还可以包括:将源Value标记为无效数据。具体的:服务器将第一Key和第一Key对应的源Value所占的存储空间添加到空闲链表。该可选的设计,通过对无效数据进行标记,能够使服务器对这些无效数据所占的存储空间进行再利用,例如,服务器可以在接收到写操作之后,向这些存储空间中写入数据等,从而提高存储空间的利用率。
在一种可能的设计中,在将第一Key对应的源索引项更新为目标索引项之后,该方法还可以包括:接收删除操作,删除操作包括第一Key;根据哈希算法从索引结构中查询第一Key对应的目标索引项;将目标索引项标记为无效索引项。将目标索引项标记为无效索引项,可以包括:服务器将目标索引项置0;示例的,服务器在将目标索引项标记为无效索引项之后,目标索引项对应的第一Key-目标Value对为无效数据。
在一种可能的设计中,在将第一Key对应的源索引项更新为目标索引项之后,该方法还可以包括:接收查询操作,查询操作包括第一Key;根据哈希算法从索引结构中查询第一Key对应的目标索引项;根据目标索引项获取第一Key对应的目标Value。
在一种可能的设计中,该方法还可以包括:接收写操作,写操作包括第三Key和第三Key对应的Value;将第三Key和第三Key对应的Value写入NVM的空闲存储空间;在索引结构中添加第三Key对应的索引项。其中,第三Key可以是NVM中存储的除第一Key之外的任一个Key。
可选的,为了增加服务器的读写速度,将第三Key和第三Key对应的Value写入NVM的空闲存储空间,可以包括:将第三Key和第三Key对应的Value写入缓存,然后将缓存中的第三Key和第三Key对应的Value写入NVM的空闲存储空间。
第二方面,提供一种处理数据的方法,应用于支持KV存储***的服务器中,服务器包括NVM;该方法可以包括:接收写操作,写操作包括第一Key和第一Key对应的Value;将第一Key和第一Key对应的Value写入NVM的空闲存储空间;在索引结构中添加第一Key对应的索引项。其中,第一Key可以是上述方面中的第一Key,在索引结构中添加的第一Key对应的索引项具体是上述方面中的源索引项。其相关说明可以参见上文,此处不再赘述。
在一种可能的设计中,该方法可以包括:执行更新操作、查询操作和删除操作中的至少一种,具体可以参考上文中的提供的对应的更新方法、查询方法和删除方法中的至少一种。该可能的设计中的相关内容的解释均可以参考上文。
第三方面,提供一种处理数据的装置,应用于支持KV存储***的服务器中,服务器包括NVM;该装置可以是服务器中的一个功能模块,也可以是该服务器。该装置可以实现上述第一方面或第一方面提供的任一种可能的设计提供的方法示例中所执行的功能,示例的,该装置可以包括:接收单元,写入单元和更新单元。其中,接收单元,用于接收更新操作,更新操作包括第一关键字Key和与第一Key对应的目标值Value。写入单元,用于将第一Key和第一Key对应的目标Value写入NVM的空闲存储空间。更新单元,用于将NVM中存储的第一Key对应的源索引项更新为目标索引项,其中,源索引项包括源Value所在的Key-Value对在NVM中的位置信息,目标索引项包括目标Value所在的Key-Value对在NVM中的位置信息。
在一种可能的设计中,该装置还可以包括:查找单元,用于根据哈希算法从索引结构中查找所述第一Key对应的源索引项。
在一种可能的设计中,查找单元具体可以用于:将第一Key生成具有原子写指令粒度的第二Key;根据哈希算法从索引结构中查找第二Key对应的索引项;根据第二Key对应的索引项,获取NVM中的该索引项对应的Key;若该索引项对应的Key与所述第一Key相同,则将该索引项作为第一Key对应的源索引项。
在一种可能的设计中,该装置还可以包括:标记单元,用于将源Value标记为无效数据。
在一种可能的设计中,接收单元具体可以用于:接收删除操作,删除操作包括第一Key。该情况下,该装置还可以包括:查找单元,用于根据哈希算法从索引结构中查询第一Key对应的目标索引项;标记单元,用于将目标索引项标记为无效索引项。
在一种可能的设计中,接收单元具体可以用于:接收查询操作,查询操作包括第一Key。该情况下,该装置还可以包括:查找单元,用于根据哈希算法从索引结构中查询第一Key对应的目标索引项;获取单元,用于根据目标索引项获取第一Key对应的目标Value。
在一种可能的设计中,接收单元具体可以用于:接收写操作,写操作包括第三Key和第三Key对应的Value;写入单元具体可以用于:将第三Key和第三Key对应的Value写入NVM的空闲存储空间。该情况下,该装置还可以包括:添加单元,用于在索引结构中添加第三Key对应的索引项。
第四方面,提供一种处理数据的装置,应用于支持KV存储***的服务器中,服务器包括NVM;该装置可以是服务器中的一个功能模块,也可以是该服务器。该装置可以实现上述第二方面或第二方面提供的任一种可能的设计提供的方法示例中所执行的功能,示例的,该装置可以包括:接收单元、写入单元和添加单元。其中,接收单元用于接收写操作,写操作包括第一Key和第一Key对应的Value。写入单元,用于将第一Key和第一Key对应的Value写入NVM的空闲存储空间。添加单元,用于在索引结构中添加第一Key对应的索引项。该方法中的第一Key可以是上述方面中的第一Key,在索引结构中添加的第一Key对应的索引项具体是上述方面中的源索引项。其相关说明可以参见上文,此处不再赘述。
在一种可能的设计中,该装置还可以用于执行更新操作、查询操作和删除操作中的至少一种,具体可以参考上文中的提供的对应的更新方法、查询方法和删除方法中的至少一种。对应的,该装置可以包含上文中的提供的装置中的更新方法所对应的功能模块、查询方法所对应的功能模块和删除方法所对应的功能模块,此处不再赘述。
又一方面,本发明实施例提供了一种处理数据的装置,该装置可以实现上述第一方面或第一方面的任一种可能的设计中的功能,所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个上述功能相应的模块。
在一种可能的设计中,该装置的结构中包括处理器和收发器,该处理器被配置为支持该装置执行上述方法中相应的功能。该收发器用于支持该装置与其他网元之间的通信。该装置还可以包括存储器,该存储器用于与处理器耦合,其保存该装置必要的程序指令和数据。
再一方面,本发明实施例提供了一种计算机存储介质,用于储存为上述第一方面或第一方面的任一种可能的设计中所用的计算机软件指令,其包含用于执行上述第一方面或第一方面的任一种可能的设计中所设计的程序。
又一方面,本发明实施例提供了一种处理数据的装置,该装置可以实现上述第二方面或第二方面的任一种可能的设计中的功能,所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个上述功能相应的模块。
在一种可能的设计中,该装置的结构中包括处理器和收发器,该处理器被配置为支持该装置执行上述方法中相应的功能。该收发器用于支持该装置与其他网元之间的通信。该装置还可以包括存储器,该存储器用于与处理器耦合,其保存该装置必要的程序指令和数据。
再一方面,本发明实施例提供了一种计算机存储介质,用于储存为上述第二方面或第二方面的任一种可能的设计中所用的计算机软件指令,其包含用于执行上述第二方面或第二方面的任一种可能的设计中所设计的程序。
可以理解地,上述提供的任一种处理数据装置或计算机存储介质均用于执行上文所提供的对应的处理数据的方法,因此其所能达到的有益效果可参考上文所提供的相应的处理数据的方法中的有益效果,此处不再赘述。
附图说明
图1为现有技术提供的一种原子性被破坏的示意图;
图2为现有技术提供的一种更新数据的示意图;
图3为本发明实施例提供的技术方案所适用的一种***的架构示意图;
图4为本发明实施例提供的一种处理数据的方法流程示意图;
图4a为本发明实施例提供的另一种更新数据的方法流程示意图;
图4b为本发明实施例提供的另一种更新数据的方法流程示意图;
图5为本发明实施例提供的一种索引结构的示意图;
图6为本发明实施例提供的一种索引项的示意图;
图7为本发明实施例提供的另一种索引项的示意图;
图8为本发明实施例提供的一种***结构的示意图;
图9为本发明实施例提供的另一种***结构的示意图;
图10为本发明实施例提供的另一种处理数据的方法流程示意图;
图11为本发明实施例提供的另一种处理数据的方法流程示意图;
图12为本发明实施例提供的另一种处理数据的方法流程示意图;
图13为本发明实施例提供的一种处理数据的装置的结构示意图;
图14为本发明实施例提供的另一种处理数据的装置的结构示意图;
图15为本发明实施例提供的另一种处理数据的装置的结构示意图。
具体实施方式
本申请提供的技术方案适用于如图3所示的架构中,图3所示的***包括:服务器和与该服务器连接的一个或多个客户端,其中,图3中是以服务器连接3个客户端为例进行说明的。其中,任意一个客户端均可以向服务器发送各种操作(即操作指令),以使服务器执行该各种操作,其中,该各种操作可以包括但不限于:更新操作(UPDATE)、删除操作(DELETE)、查询操作(GET)、写操作(PUT)等。
服务器可以包括:处理器、缓存和NVM。其中,缓存是介于CPU和NVM之间的高速存储器,主要用于提升服务器的读写性能。NVM的最大特点是断电时,内容仍能保持。处理器,可以是服务器中的各种控制器的集成,示例的,服务器中的控制器可以包括但不限于:中央处理器(central processing unit,CPU),缓存控制器等。其中,CPU是服务器的控制中心;缓存控制器用于对缓存中的数据进行管理,示例的,可以用于向缓存中写入数据,并将缓存中存储的数据写入NVM等。
本文中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。本文中的术语“多个”是指两个或两个以上。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本文中字符“/”,表示前后关联对象是一种“或”的关系。
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行示例性描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
需要说明的是,本发明实施例提供的技术方案适用于支持KV存储***的服务器中,本发明实施例提供的处理数据的方法的执行主体可以是服务器,具体可以是服务器中的处理器。
如图4所示,为本发明实施例提供的一种处理数据的方法流程示意图,该处理数据的方法具体为更新数据的方法。该方法可以包括:
S101:服务器接收更新操作,该更新操作包括第一Key和与第一Key对应的目标Value。
具体的,服务器接收与该服务器连接的任意一个客户端发送的更新操作。本发明实施例对客户端向服务器发送更新操作的触发条件不进行限定,具体实现时,可以参考现有技术。
NVM中包含一个或多个数据区,每个数据区中可以存储一个或多个Key-Value对;本发明实施例对在NVM中存储Key-Value对的具体实现方式不进行限定。第一Key可以是NVM中存储的任意一个Key。在该实施例中,将执行S101时,NVM中存储的第一Key对应的Value称为第一Key对应的源Value。
S102:服务器将第一Key和第一Key对应的目标Value写入NVM的空闲存储空间。
其中,NVM中的存储空间可以分为已用存储空间和空闲存储空间;其中,已用存储空间是指已存储有数据的存储空间;空闲存储空间是指没有存储数据的存储空间。
具体实现时,为了提升服务器的读写性能,可选的,S102可以包括:服务器将第一Key和第一Key对应的目标Value写入缓存中,然后,将缓存中的第一Key和第一Key对应的目标Value写入NVM的空闲存储空间。
示例的,服务器使用持久化命令将缓存中的第一Key和第一Key对应的目标Value写入NVM的空闲存储空间。该持久化命令可以包括CLWB、PCOMMIT和SFENCE指令等。当然,具体实现时,不限于此。需要说明的是,“将缓存中的第一Key和第一Key对应的目标Value写入NVM的空闲存储空间”,可以理解为:服务器将第一Key和第一Key对应的目标Value持久化的过程。
S103:服务器将NVM中存储的第一Key对应的源索引项更新为第一Key对应的目标索引项;第一Key对应的源索引项包括源Value所在的Key-Value对(即第一Key-源Value对)在NVM中的位置信息,目标索引项包括目标Value所在的Key-Value对(即第一Key-目标Value对)在NVM中的位置信息。
具体的,服务器根据NVM中的第一Key和第一Key对应的目标Value的位置信息,生成第一Key对应的目标索引项;然后,利用写操作,将第一Key对应的目标索引项写入NVM中的第一Key对应的源索引项所在的存储空间。可选的,利用写操作,将第一Key对应的目标索引项写入NVM中的第一Key对应的源索引项所在的存储空间,可以包括:利用写操作,将第一Key对应的目标索引项写入缓存中的第一Key对应的源索引项所在的存储空间;然后,使用持久化指令将缓存中的第一Key对应的目标索引项写入NVM中的第一Key对应的源索引项所在的存储空间。
其中,索引项用于使服务器在执行更新操作、删除操作或查询操作等时,快速查询到该索引项所指向的Key-Value对。索引项的初始值为0。若索引项为0,则表示该索引项为空或该索引项无效;该情况下,该索引项可以指向一个Key-Value对,也可以不指向任何一个Key-Value对;若该索引项指向一个Key-Value对,则该Key-Value对为无效数据(即无效的Key-Value对)。若索引项不为0,则表示该索引项不为空或该索引项有效;该情况下,该索引项指向一个Key-Value对,且该Key-Value对为有效数据(即有效的Key-Value对)。可选的,索引项所占的存储空间为2n比特,其中,n为大于或等于1的整数。
Key-Value在NVM中的位置信息,具体可以是Key-Value在NVM中的一个数据区内的位置信息。本发明实施例对Key-Value在NVM中的位置信息的具体实现方式不进行限定,例如,Key-Value在NVM中的位置信息可以是根据Key以及该Key对应的Value在NVM中的实际地址与所在段的段起始地址之间的距离(即偏移量)决定的。
索引项构成的集合称为索引结构,索引结构具体可以是哈希索引(HashingIndex)结构等。具体实现时,KV存储***中的索引结构和数据(即Key-Value对)分开存储。如图5所示,是一种哈希索引结构与数据之间的映射关系。其中,哈希索引结构中的每个小方格表示一个索引项,阴影小方格表示索引项不为0,标记有0的小方格表示索引项为0。数据区中的每个阴影小方格表示一个有效的Key-Value对,不同Key-Value对所占的存储空间的大小不同;空白小方格表示空闲存储空间;每个标记有无效(invalid)的小方格表示无效的Key-Value对。
可以理解地,在执行S103之后,第一Key对应的源索引项被更新为目标索引项,也就是说,不存在第一Key对应的源索引项,因此,该源索引项指向的NVM中的第一Key-源Value对为无效数据。
需要说明的是,现有技术提供的技术方案中,服务器在更新数据的过程中,使用Key对应的目标Value覆盖该Key对应的源Value,因此,在执行更新操作前后,该Key对应的源Value和该Key对应的目标Value在NVM中存储的位置是相同的。本发明实施例提供的技术方案中,服务器在更新数据的过程中,将更新操作所携带的Key(即上述第一Key)和该Key对应的目标Value存储在NVM的空闲存储空间中,可以理解地,服务器在执行更新操作前后,该Key对应的源Value和该Key对应的目标Value在NVM中存储的位置是不同的。基于此,可以将现有技术中提供的更新数据的方法称为“本地数据更新”方法,本发明实施例中提供的更新数据的方法称为“异地数据更新”方法。另外,本发明实施例中采用了Key-Value和索引项分别更新的方法。
本发明实施例提供的更新数据的方法中,服务器采用异地数据更新方法执行更新操作,并且,在将第一Key和第一Key对应的目标Value写入NVM之后,才将第一Key对应的源索引项更新为目标索引项。这样,若服务器在将第一Key和第一Key对应的目标Value写入NVM的过程中***发生宕机,则由于此时还未将第一Key对应的源索引项更新为目标索引项,因此,第一Key对应的源索引项有效,该源索引项指向的Value是第一Key对应的源Value;若服务器在将第一Key和第一Key对应的目标Value写入NVM的过程中***没有发生宕机,则第一Key对应的源索引项已被更新为目标索引项,因此,第一Key对应的源索引项无效,第一Key对应的目标索引项有效,该目标索引项指向的Value是第一Key对应的目标Value。因此,本发明实施例提供的更新数据的方法保证了更新操作的写原子性,具体保证了更新操作的写Key-Value对的写原子性。另外,与现有技术相比,本发明实施例提供的更新数据的方法中,服务器不需要在NVM中写入源Value以及***标识,也不需要记录数据区中存储的Key-Value对的个数等,因此,减少了服务器向NVM中写入数据的次数,从而降低了***的消耗,延长了NVM的使用寿命。
可选的,索引项可以包括Key和KV-index,如图6所示。其中,KV-index表示该索引项指向的Key-Value在NVM中的位置信息,Key为该Key-Value对中的Key。
可选的,在S101之后S103之前,该方法还可以包括:服务器在索引结构中查找第一Key对应的源索引项。本发明实施例对服务器在索引结构中查找第一Key对应的源索引项的具体实现方式不进行限定,其可以是现有技术中的任何一种方式。具体的,如图4a所示,可以采用如下S102a实现:
S102a:服务器根据哈希算法在索引结构中查找第一Key对应源索引项。该情况下,索引结构可以称为哈希索引结构。
基于图6所示的索引项,S102a可以包括:服务器根据哈希算法从索引结构中读取索引项;若该索引项为0,则向客户端返回错误响应,以向客户端指示NVM中没有存储第一Key和第一Key对应的源Value;若索引项不为0,则确定该索引项中记录的Key与第一Key是否相等,若是,则将该索引项作为第一Key对应源索引项;若否,则根据哈希冲突算法,从索引结构中读取下一个索引项,重复上述过程,直至向客户端返回错误响应,或将所读取的索引项作为第一Key对应源索引项为止。需要说明的是,S102a可以在S101之后且S103之前的任意一个步骤中执行,其中,图4a中是以S102a在S102之后执行为例进行说明的。
可选的,由于具体实现时,Key所占的存储空间可能较大,这样,在向NVM中写入索引项的过程中,不能保证写原子性,基于此,可以将图6所示的索引项中的Key替换为:该Key生成的具有原子写指令粒度的值。其中,具有原子写指令粒度的值,可以理解为:该值所占的存储空间的大小满足写原子性。示例的,服务器可以通过对Key进行哈希运算或signature(签名)运算等,得到具有原子写指令粒度的值。以服务器对Key进行signature运算得到具有原子写指令粒度的Key-signature为例,索引项的结构可以如图7所示。在图7中,索引项包括Key-signature和KV-index。
基于图7,如图4b所示,S102a可以包括以下步骤A~D:
A:服务器将第一Key生成第二Key,其中,第二Key具有原子写指令粒度。
其中,第二Key具有原子写指令粒度,可以理解为:第二Key所占的存储空间的大小满足写原子性。示例的,第二Key所占的存储空间的大小可以是2n比特(B),n是大于或等于1的整数。可选的,第二Key所占的存储空间为4B、8B或16B。基于图7所示的索引项,步骤A具体可以包括:服务器对第一Key进行signature运算,得到第二Key。
B:服务器根据哈希算法从索引结构中查找第二Key对应的索引项。
具体的:服务器根据哈希算法在索引结构读取索引项,判断若该索引项是否为0;若该索引项为0,则向客户端返回错误响应,以向客户端指示NVM中没有存储第二Key对应的索引项。若该索引项不为0,则判断第二Key与该索引项中的Key是否相同,若是,则将该索引项作为第二Key对应的索引项;若否,则根据哈希冲突算法,从索引结构中读取下一个索引项,判断若该索引项是否为0,……直至向客户端返回错误响应,或将该索引项作为第二Key对应的索引项。
C:服务器根据该索引项,获取NVM中的与该索引项对应的Key。
由于将不同的Key生成具有原子写指令粒度值可能相同,也可能不同,因此步骤C中得到的Key与第一Key可能相同,也可能不同。
D:若该索引项对应的Key与第一Key相同,则服务器将该索引项作为第一Key对应的源索引项。
可选的,在步骤C之后,该方法还可以包括:若该索引项对应的Key与第一Key不同,则根据哈希冲突处理算法从索引结构中查找第二Key对应的下一个索引项,若与该索引项存在映射关系的Key与第一Key相同,则服务器将该索引项作为第一Key对应的源索引项;若与该索引项存在映射关系的Key与第一Key不同,则根据哈希冲突处理算法从索引结构中查找第二Key对应的下一个索引项,……直至根据哈希冲突处理算法从索引结构中查找第二Key对应的索引项为空,则向客户端返回错误响应或将所读取的索引项作为第一Key对应的源索引项。
具体实现时,在S102之前,该方法还可以包括:S101a:服务器为第一Key和第一Key对应的目标Value分配NVM的空闲存储空间。
其中,本发明实施例对分配空闲存储空间的具体实现方式不进行限定。示例的,服务器可以根据数据区的空间管理策略,为第一Key和第一Key对应的目标Value分配NVM的空闲存储空间。其中,数据区的空间管理策略可以包括但不限于Log结构技术,分层适应技术等。
如图8所示,为基于Log结构技术的***结构示意图,其中,图8是基于图5和图7进行绘制的。在该***结构中,服务器通过Log指针(即log_tail)标记已用存储空间的尾部,用以区分已用存储空间和空闲存储空间。无效空间(即所存储的数据无效的空间)使用空闲链表(free-list)组织。异地数据更新具体为追加写。该情况下,S101a可以包括:服务器为第一Key和第一Key对应的目标Value分配NVM中的、且从Log指针所指向的位置开始的空闲存储空间。
需要说明的是,实际实现时,采用Log结构技术时,在执行S404之后,该方法还可以包括:更新Log指针。另外,采用Log结构技术时,需要进行垃圾回收(即整理无效空间,使得无效空间可以使用),示例的,可以在空闲存储空间小于或等于预设阈值,且宕机恢复时,由后台进程进行垃圾回收。
如图9所示,为基于分层适应技术的***结构示意图,其中,图9是基于图5和图7进行绘制的。在该***结构中,无效空间(即所存储的数据无效的空间)使用多个不同大小的空闲链表(free-list)组织,图9中是以***中包含3个空闲链表,即空闲链表1、2、3为例进行说明的。异地数据更新具体为从空闲链表中分配空间并写。该情况下,S101a可以包括:服务器确定第一Key和第一Key对应的目标Value所占的存储空间,然后,为第一Key和第一Key对应的目标Value分配一空闲链表所对应的空闲存储空间;其中,该空闲链表对应的空闲存储空间大于或等于该存储空间,具体的,该空闲链表对应的空闲存储空间是大于或等于该存储空间的最小的存储空间。示例的,在图6中,可以为第一Key和第一Key对应的目标Value分配空闲链表2。
可选的,在S103之后,该方法还可以包括:服务器将第一Key对应的源Value标记为无效数据。具体的,服务器将第一Key和第一Key对应的源Value(即第一Key-源Value对)所占的存储空间添加到空闲链表。该可选的实现方式,通过对无效数据进行标记,能够使服务器对这些无效数据所占的存储空间进行再利用,例如,服务器可以在接收到写操作之后,向这些存储空间中写入数据等,从而提高存储空间的利用率。
如图10所示,为本发明实施例提供的另一种处理数据的方法流程示意图,该处理数据的方法具体为删除数据的方法。该实施例中相关内容的解释可以参考上文。图10所示的方法可以包括以下步骤S201-S203:
S201:服务器接收删除操作,该删除操作包括第一Key。具体的,服务器接收与该服务器连接的任意一个客户端发送的删除操作。
S202:服务器根据哈希算法,从索引结构中查询第一Key对应的目标索引项。该步骤的具体实现方式可参考S102a的具体实现方式。
S203:服务器将第一Key对应的目标索引项标记为无效索引项。
具体的,服务器将目标索引项置0。示例的,服务器使用写操作(例如原子写操作),将目标索引项置0。在执行S203之后,目标索引项对应的第一Key-目标Value对为无效数据。具体实现时,该方法还可以包括:服务器将第一Key对应的源Value标记为无效数据。具体的,服务器将第一Key-源Value对所占的存储空间添加到空闲链表。
需要说明的是,该实施例是以服务器在执行完S101-S103所示的更新操作之后,执行删除操作为例进行说明的。
另外需要说明的是,基于图2所示的更新数据的方法的构思,现有技术中提供的删除数据的方法可以包括:服务器在接收到携带Key的删除操作,且查找到NVM中的该Key对应的源Value之后,在该源Value所在的数据区内写入***标识(-)、Key-源Value,并更新所记录的该数据区中的Key-Value对的个数。示例的,假设NVM的一个数据区内存储有1个Key-Value对,且该Key-Value对中的Key为8,Value包括x1和x2,那么该数据区中存储的数据为+8x1x2;假设删除操作中携带的Key为8,则服务器在该数据区内写入-8x1x2,并将所记录的该数据区中的Key-Value对的个数更新为2。
与现有技术中提供的删除数据的方法相比,该实施例提供的删除数据的方法中,服务器不需要在NVM中写入源Value以及***标识,也不需要记录数据区中存储的Key-Value对的个数等,因此减少了服务器向NVM中写入数据的次数,从而降低了***的消耗,延长了NVM的使用寿命。
如图11所示,为本发明实施例提供的另一种处理数据的方法流程示意图,该处理数据的方法具体为查询数据的方法。该实施例中相关内容的解释可以参考上文。图11所示的方法可以包括以下步骤S301-S303:
S301:服务器接收查询操作,该查询操作包括第一Key。具体的,服务器接收与该服务器连接的任意一个客户端发送的查询操作。
S302:服务器根据哈希算法在索引结构中查找第一Key对应的源索引项。该步骤的具体实现方式可参考S102a的具体实现方式。
S303:服务器根据第一Key对应的源索引项,在已用存储空间内读取第一Key对应的目标Value。
具体实现时,在S303之后,该方法还可以包括:服务器将查询到的目标Value发送给客户端。
需要说明的是,该实施例是以服务器在执行完S101-S103所示的更新操作之后,执行查询操作为例进行说明的。可以理解地,实际实现时,服务器也可以先执行查询操作再执行更新操作。
如图12所示,为本发明实施例提供的另一种处理数据的方法流程示意图,该处理数据的方法具体为写数据的方法。图12所示的方法可以包括以下步骤S401-S403:
S401:服务器接收写操作,其中,该写操作包括第三Key和第三Key对应的Value。
具体的,服务器接收与该服务器连接的任意一个客户端发送的写操作。第三Key可以是NVM中存储的除第一Key之外的任一个Key。
S402:服务器将第三Key和第三Key对应的Value写入NVM的空闲存储空间。该步骤的具体实现方式可以参考S102的具体实现方式。
可选的,S402可以包括:服务器将第三Key和第三Key对应的Value写入缓存,然后将缓存中的第三Key和第三Key对应的Value写入NVM的空闲存储空间。其具体实现方式可以参考S102。
具体实现时,在S402之前,该方法还可以包括:服务器为第三Key和第三Key对应的Value分配NVM中的存储空间。该步骤的具体实现方式可以参考S101a。
S403:服务器在索引结构中添加第三Key对应的索引项。
具体的:服务器根据哈希算法,在索引结构中找到为0的索引项,并将该索引项更新为第三Key对应的索引项。具体的更新索引项的方法可以参考上文。
与现有技术中提供的写数据的方法相比,该实施例提供的写数据的方法中,服务器不需要在NVM中写入***标识,也不需要记录数据区中存储的Key-Value对的个数,因此,减少了服务器向NVM中写入数据的次数,从而降低了***的消耗,延长了NVM的使用寿命。
上述主要从服务器的角度对本发明实施例提供的方案进行了介绍。可以理解的是,为了实现上述各个功能,服务器包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本发明实施例可以根据上述方法示例对服务器进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用各个功能划分的各个功能模块的情况下,图13示出了一种处理数据的装置130的结构示意图。该装置130应用于支持KV存储***的服务器中,服务器包括NVM。该装置130可以是服务器中的一个功能模块,也可以是该服务器。示例的,该装置130可以包括:接收单元1301、写入单元1302和更新单元1303。可选的,该装置130还可以包括:查找单元1304、标记单元1305、获取单元1306和添加单元1307。这各功能模块中的每个功能模块所具有的功能可以根据上文所提供的各方法实施例中的各步骤推断出来,或者可以参考上文发明内容部分所提供的内容,此处不再赘述。
在采用集成的模块的情况下,上述写入单元1302、更新单元1303、查找单元1304、标记单元1305、获取单元1306和添加单元1307均可以集成为一个装置130中的一个处理模块;接收单元1301可以和发送单元集成为通信模块。另外,该装置130中还可以包括存储模块。
如图14所示,为本发明实施例提供的一种处理数据的装置140的结构示意图。该装置140可以是应用于支持KV存储***的服务器中,服务器包括NVM。该装置140可以是服务器中的一个功能模块,也可以是该服务器。示例的,该装置可以包括:处理模块1401和通信模块1402。其中,处理模块1401用于对装置140的工作进行控制管理,例如,处理模块1401用于支持装置140执行图4中的S102~S103、图4a和图4b中的S102a、图10中的S202~S203、图11中的S302~S303、图12中的S402~S403等,和/或用于本文所描述的技术的其它过程。通信模块1402用于支持装置140与其他网络实体的通信,例如与客户端的通信等。可选的,装置140还可以包括:存储模块1403,用于存储装置140执行上文所提供的任一处理数据的方法所对应的程序代码和数据。
其中,处理模块1401可以是处理器或控制器。通信模块1402可以是收发器、收发电路或通信接口等。存储模块1403可以是存储器。当处理模块1401为处理器,通信模块1402为收发器,存储模块1403为存储器时,本发明实施例所涉及的装置140可以为图15所示的装置150。
如图15所示,为本发明实施例提供的一种处理数据的装置150的结构示意图。该装置150可以是应用于支持KV存储***的服务器中,服务器包括NVM。该装置150可以是服务器中的一个功能模块,也可以是该服务器。示例的,该装置150可以包括:处理器1501、存储器1502、***总线1503和通信接口1504。其中:存储器1502用于存储计算机执行指令,处理器1501与存储器1502通过***总线连接,当装置150运行时,处理器1501执行存储器1502存储的计算机执行指令,以使装置150执行本发明实施例提供的任意一种处理数据的方法。具体的处理数据的方法可参考下文及附图中的相关描述,此处不再赘述。
本发明实施例还提供一种存储介质,该存储介质可以包括存储器1502。
处理器1501可以是中央处理器(central processing unit,CPU),通用处理器,数字信号处理器(digital signal processor,DSP),专用集成电路(application-specificintegrated circuit,ASIC),现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等
存储器1502可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器1502也可以包括NVM,例如相变存储器(phasechange memory),磁存储器(magnetic memory),阻变存储器(resistive memory),忆阻器(memoristor),只读存储器(read-only memory,ROM),快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器1502还可以包括上述种类的存储器的组合。
***总线1503可以包括数据总线、电源总线、控制总线和信号状态总线等。本实施例中为了清楚说明,在图15中将各种总线都示意为***总线1503。
通信接口1504具体可以是装置150上的收发器。该收发器可以为无线收发器。例如,无线收发器可以是装置150的天线等。处理器1501通过通信接口1504与其他设备,例如与客户端之间进行数据的收发。
在具体实现过程中,上文中提供的任意一种处理数据的方法流程中的各步骤均可以通过硬件形式的处理器1501执行存储器1502中存储的软件形式的计算机执行指令实现。为避免重复,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的***、装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种处理数据的方法,其特征在于,应用于支持键值KV存储***的服务器中,所述服务器包括非易失性存储器NVM;所述方法包括:
接收更新操作,所述更新操作包括第一关键字Key和与所述第一Key对应的目标值Value;
将所述第一Key和所述目标Value写入所述NVM的空闲存储空间;
将所述第一Key生成第二Key,其中,所述第二Key具有原子写指令粒度;根据哈希算法从索引结构中查找所述第二Key对应的索引项;根据所述第二Key对应的索引项,获取所述NVM中的所述索引项对应的Key;若所述索引项对应的Key与所述第一Key相同,则将所述索引项作为所述第一Key对应的源索引项;
将所述NVM中存储的所述第一Key对应的源索引项更新为目标索引项,所述源索引项包括源Value所在的Key-Value对在所述NVM中的位置信息,所述目标索引项包括所述目标Value所在的Key-Value对在所述NVM中的位置信息。
2.根据权利要求1所述的方法,其特征在于,在所述将所述NVM中存储的所述第一Key对应的源索引项更新为目标索引项之后,所述方法还包括:
将所述源Value标记为无效数据。
3.根据权利要求1所述的方法,其特征在于,在所述将所述第一Key对应的源索引项更新为目标索引项之后,所述方法还包括:
接收删除操作,所述删除操作包括所述第一Key;
根据哈希算法从索引结构中查询所述第一Key对应的所述目标索引项;
将所述目标索引项标记为无效索引项。
4.根据权利要求1至3任一项所述的方法,其特征在于,在所述将所述第一Key对应的源索引项更新为目标索引项之后,所述方法还包括:
接收查询操作,所述查询操作包括所述第一Key;
根据哈希算法从索引结构中查询所述第一Key对应的所述目标索引项;
根据所述目标索引项获取所述第一Key对应的所述目标Value。
5.根据权利要求1至3任一项所述的方法,其特征在于,所述方法还包括:
接收写操作,所述写操作包括第三Key和所述第三Key对应的Value;
将所述第三Key和所述第三Key对应的Value写入所述NVM的空闲存储空间;
在索引结构中添加所述第三Key对应的索引项。
6.一种处理数据的装置,其特征在于,应用于支持键值KV存储***的服务器中,所述服务器包括非易失性存储器NVM;所述装置包括:
接收单元,用于接收更新操作,所述更新操作包括第一关键字Key和与所述第一Key对应的目标值Value;
写入单元,用于将所述第一Key和所述目标Value写入所述NVM的空闲存储空间;
查找单元,用于将所述第一Key生成第二Key,其中,所述第二Key具有原子写指令粒度;根据哈希算法从索引结构中查找所述第二Key对应的索引项;根据所述第二Key对应的索引项,获取所述NVM中的所述索引项对应的Key;若所述索引项对应的Key与所述第一Key相同,则将所述索引项作为所述第一Key对应的源索引项;
更新单元,用于将所述NVM中存储的所述第一Key对应的源索引项更新为目标索引项;所述源索引项包括源Value所在的Key-Value对在所述NVM中的位置信息,所述目标索引项包括所述目标Value所在的Key-Value对在所述NVM中的位置信息。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
标记单元,用于将所述源Value标记为无效数据。
8.根据权利要求6所述的装置,其特征在于,
所述接收单元还用于,接收删除操作,所述删除操作包括所述第一Key;
所述装置还包括:
查找单元,用于根据哈希算法从索引结构中查询所述第一Key对应的所述目标索引项;
标记单元,用于将所述目标索引项标记为无效索引项。
9.根据权利要求6至8任一项所述的装置,其特征在于,
所述接收单元还用于,接收查询操作,所述查询操作包括所述第一Key;
所述装置还包括:
查找单元,用于根据哈希算法从索引结构中查询所述第一Key对应的所述目标索引项;
获取单元,用于根据所述目标索引项获取所述第一Key对应的所述目标Value。
10.根据权利要求6至8任一项所述的装置,其特征在于,
所述接收单元还用于,接收写操作,所述写操作包括第三Key和所述第三Key对应的Value;
所述写入单元还用于,将所述第三Key和所述第三Key对应的Value写入所述NVM的空闲存储空间;
所述装置还包括:添加单元,用于在索引结构中添加所述第三Key对应的索引项。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610702578.0A CN107765992B (zh) | 2016-08-22 | 2016-08-22 | 一种处理数据的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610702578.0A CN107765992B (zh) | 2016-08-22 | 2016-08-22 | 一种处理数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107765992A CN107765992A (zh) | 2018-03-06 |
CN107765992B true CN107765992B (zh) | 2021-01-15 |
Family
ID=61264025
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610702578.0A Active CN107765992B (zh) | 2016-08-22 | 2016-08-22 | 一种处理数据的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107765992B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109522739B (zh) * | 2018-10-09 | 2020-11-20 | 北京医拍智能科技有限公司 | 一种基于区块链哈希算法的抗攻击处理方法及装置 |
WO2020168516A1 (en) * | 2019-02-21 | 2020-08-27 | Alibaba Group Holding Limited | Method and system for facilitating fast atomic write operations in shingled magnetic recording hard disk drives |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101247337A (zh) * | 2008-02-18 | 2008-08-20 | 华为技术有限公司 | 一种报文转发的方法和设备 |
CN102567457A (zh) * | 2010-11-02 | 2012-07-11 | 微软公司 | 对象模型到键值数据模型的映射 |
CN103246659A (zh) * | 2012-02-06 | 2013-08-14 | 阿里巴巴集团控股有限公司 | 键值数据查询的方法和装置 |
CN103502970A (zh) * | 2011-12-21 | 2014-01-08 | 华为技术有限公司 | 一种键值对的操作方法及装置 |
CN103678577A (zh) * | 2013-12-10 | 2014-03-26 | 新浪网技术(中国)有限公司 | 一种数据更新方法及装置 |
CN105634958A (zh) * | 2015-12-24 | 2016-06-01 | 东软集团股份有限公司 | 基于多核***的报文转发方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8965921B2 (en) * | 2012-06-06 | 2015-02-24 | Rackspace Us, Inc. | Data management and indexing across a distributed database |
US9037556B2 (en) * | 2012-12-03 | 2015-05-19 | Vmware, Inc. | Distributed, transactional key-value store |
-
2016
- 2016-08-22 CN CN201610702578.0A patent/CN107765992B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101247337A (zh) * | 2008-02-18 | 2008-08-20 | 华为技术有限公司 | 一种报文转发的方法和设备 |
CN102567457A (zh) * | 2010-11-02 | 2012-07-11 | 微软公司 | 对象模型到键值数据模型的映射 |
CN103502970A (zh) * | 2011-12-21 | 2014-01-08 | 华为技术有限公司 | 一种键值对的操作方法及装置 |
CN103246659A (zh) * | 2012-02-06 | 2013-08-14 | 阿里巴巴集团控股有限公司 | 键值数据查询的方法和装置 |
CN103678577A (zh) * | 2013-12-10 | 2014-03-26 | 新浪网技术(中国)有限公司 | 一种数据更新方法及装置 |
CN105634958A (zh) * | 2015-12-24 | 2016-06-01 | 东软集团股份有限公司 | 基于多核***的报文转发方法和装置 |
Non-Patent Citations (1)
Title |
---|
《基于低冲突帮助机制的快速无等待哈希表算法》;李鹏飞 等;《计算机工程》;20151130;第41卷(第11期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN107765992A (zh) | 2018-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230315342A1 (en) | Memory system and control method | |
US9971799B2 (en) | Storage device for storing directory entries, directory entry lookup apparatus and method, and storage medium storing directory entry lookup program | |
KR102002830B1 (ko) | 세그먼트 클리닝 장치 및 방법 | |
US20180357234A1 (en) | Memory efficient persistent key-value store for non-volatile memories | |
JP6344675B2 (ja) | ファイル管理方法、分散記憶システムおよび管理ノード | |
US11874815B2 (en) | Key-value storage device and method of operating the same | |
EP3153987B1 (en) | Duplicate data deletion method and device | |
US11314689B2 (en) | Method, apparatus, and computer program product for indexing a file | |
US9002844B2 (en) | Generating method, generating system, and recording medium | |
KR20200122994A (ko) | 키 값 첨부 | |
CN105917303B (zh) | 一种控制器、识别数据块稳定性的方法和存储*** | |
KR20140044558A (ko) | 세그먼트 그룹을 고려하는 세그먼트 클리닝 장치 및 방법 | |
KR20140042430A (ko) | 컴퓨팅 시스템 및 그 데이터 관리 방법 | |
CN114253908A (zh) | 键值存储***的数据管理方法及其装置 | |
US20170160940A1 (en) | Data processing method and apparatus of solid state disk | |
US10289345B1 (en) | Contention and metadata write amplification reduction in log structured data storage mapping | |
US10210067B1 (en) | Space accounting in presence of data storage pre-mapper | |
CN107765992B (zh) | 一种处理数据的方法和装置 | |
CN110780814B (zh) | 一种存储数据整理方法与装置 | |
JP2014071904A (ja) | コンピュータシステム及びコンピュータシステムのデータ管理方法 | |
US10416901B1 (en) | Storage element cloning in presence of data storage pre-mapper with multiple simultaneous instances of volume address using virtual copies | |
CN110618883A (zh) | 一种用于共享内存链表的方法、装置、设备及存储介质 | |
CN106294189B (zh) | 内存碎片整理方法及装置 | |
US20150121033A1 (en) | Information processing apparatus and data transfer control method | |
US20230305749A1 (en) | Nonvolatile storage device, host, and method of controlling nonvolatile storage device |
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 |