KV存储系统中的数据读取方法、数据查询方法、装置及设备制造方法及图纸

技术编号:20074898 阅读:36 留言:0更新日期:2019-01-15 00:35
本发明专利技术实施例提供一种键值KV存储系统中的数据读取方法、数据查询方法、装置及设备,该方法包括:将第一写操作的多个写记录的标识记录到所述KV存储系统的预设文件;将所述第一写操作的多个写记录写入所述KV存储系统的写操作日志文件;将所述第一写操作的第一写记录写入所述KV存储系统的内存中的可写内存表,所述第一写记录为所述多个写记录中的任意一个写记录。提高了数据读取的可靠性。

Data Reading Method, Data Query Method, Device and Equipment in KV Storage System

The embodiment of the present invention provides a data reading method, a data query method, a device and a device in a key value KV storage system. The method includes: recording the identification of multiple write records of the first write operation to the preset file of the KV storage system; writing multiple write records of the first write operation to the write operation log file of the KV storage system; and writing the first write operation to the write operation log file of the KV storage system. The first write record is written to a writable memory table in the memory of the KV storage system, and the first write record is any one of the multiple write records. The reliability of data reading is improved.

【技术实现步骤摘要】
KV存储系统中的数据读取方法、数据查询方法、装置及设备
本专利技术涉及存储
,尤其涉及一种KV存储系统中的数据读取方法、数据查询方法、装置及设备。
技术介绍
在键值(KeyValue,KV)存储系统中,数据以KV的形式进行存储。在向KV存储系统中写入数据时,批量(batch)写操作包括至少两个写记录,该批量写操作需要执行:1、生成快照snapshot版本号,将写操作的每一个写记录和快照版本号记录追加至写操作日志文件(Write-AheadLog,WAL)。2、将写操作的写记录和snapshot版本号记录插入到的可写内存表(Memtable)中,并将KV存储系统的最大快照版本号更新为该批量写操作的快照版本号。当可写内存表占用的内存达到一个上限值后,KV存储系统会将可写内存表冻结成为不可写内存表(ImmutableMemtable),并同时生成一个新的可写内存表和写操作操作日志。基于上述数据写入方法,在进行数据查询操作时,小于最大快照版本号的快照版本号对应的写记录均可以被查询到。然而,在多个写操作并行执行的过程中,在快照版本号较小的写操作正在进行数据写入时,快照版本号较大的写操作可能已经完成,并将KV存储系统的最大快照版本号更新为该较大的快照版本号,使得可以查询到快照版本号较小的、且正在执行写入的写操作的部分写记录,使得数据读取错误,导致数据读取的可靠性较差。
技术实现思路
第一方面,本专利技术实施例提供一种键值KV存储系统中的数据写入方法,在执行第一写操作时,将第一写操作的多个写记录的标识记录到所述KV存储系统的预设文件;将所述第一写操作的多个写记录写入所述KV存储系统的写操作日志文件;将所述第一写操作的第一写记录写入所述KV存储系统的内存中的可写内存表,所述第一写记录为所述多个写记录中的任意一个写记录。在上述过程中,在将第一写操作的多个写记录写入到可写内存表之前,先将第一写操作的多个写记录的标识记录到KV存储系统的预设文件,并将第一写操作的多个写记录写入到KV存储系统的写操作日志文件,然后,将第一写操作的各个写记录依次写入到KV存储系统的内存中的可写内存表中,在确定将第一写操作的所有写记录均写入之可写内存表之后,可以删除预设文件中的第一写操作的多个写记录的标识。相应的,在KV存储系统执行查询操作时,若在可写内存表中查询到一个写记录,先判断预设文件中是否存在该记录的标识,若是,则说明该写记录所属的写操作为正在向可写内存表中写入的写操作,则不将该记录作为查询结果返回,若否,则说明该写记录所属的写操作为KV存储系统已经执行写入完成的写操作,则可以将该写记录操作作为查询结果返回。这样,可以避免查询到正在执行写入的写操作的部分写记录,以避免读取到错误的数据,进而提高数据读取的可靠性。本专利技术实施例同时可以保证多线程并行执行写操作的原子性。在一种可能的实施方式中,在所述第一写操作的多个写记录均写入所述可写内存表之后,删除所述预设文件中的所述第一写操作的多个写记录的标识。在另一种可能的实施方式中,所述预设文件为哈希链表;所述第一写操作的第一写记录的标识包括所述第一写记录的键key和所述第一写操作的快照版本号。在另一种可能的实施方式中,将所述第一记录的标识记录到所述KV存储系统的预设文件,包括:根据所述第一写记录的key确定所述第一写记录对应的哈希节点;在所述第一写记录对应的哈希节点所对应的存储空间中,记录所述第一写记录的标识。在另一种可能的实施方式中,所述根据所述第一写记录的key确定所述第一写记录对应的哈希节点,包括:将所述第一写记录的key与预设的最大哈希值的余数确定为第一哈希值;将所述第一哈希值对应的哈希节点确定为所述第一写记录对应的哈希节点。提供将预设文件设置为哈希链表,在哈希链表中存储写记录的标识时,将写记录的标识记录到哈希链表中对应存储节点所对应的存储空间中。这样,当需要在哈希链表中查找写记录的标识时,可以先确定对应的哈希节点,并在哈希节点对应的存储空间确定查找写记录的标识,这样,可以实现数据的快速查找。在另一种可能的实施方式中,所述方法还包括:将第二写操作的多个写记录标识记录到所述预设文件;其中,所述第二写操作与所述第一写操作为并行执行的写操作;将所述第二写操作的多条记录写入所述写操作日志文件;将所述第二写操作的多条记录写入到所述可写内存表;删除所述预设文件中的所述第二写操作的多个写记录标识。第二方面,本专利技术实施例提供一种键值KV存储系统中的数据查询方法,在数据查询过程中,在所述键值KV存储系统的内存的可写内存表中查询到第一写记录,判断所述KV存储系统的预设文件中是否包括所述第一写记录的标识;所述预设文件中包括第一写操作的多个写记录的标识,所述第一写记录为所述多个写记录中一个;当所述预设文件中包含所述第一写记录的标识,则不执行返回包含所述第一写记录的查询响应。在上述过程中,在KV存储系统执行查询操作时,若在可写内存表中查询到一个写记录,先判断预设文件中是否存在该记录的标识,若是,则说明该写记录所属的写操作为正在向memTable中写入的写操作,则不将该记录作为查询结果返回,若否,则说明该写记录所属的写操作为KV存储系统已经执行写入完成的写操作,则可以将该写记录操作作为查询结果返回。这样,可以避免查询到正在执行写入的写操作的部分写记录,以避免读取到错误的数据,进而提高数据读取的可靠性。本专利技术实施例同时可以保证多线程并行执行写操作的原子性。在一种可能的实施方式中,所述预设文件为哈希链表;所述第一写记录的标识包括所述第一写记录的键key和所述第一写操作的快照版本号。在另一种可能的实施方式中,所述方法还包括:在所述KV存储系统的所述可写内存表中查询到第二写记录;判断所述预设文件中是否包括所述第二写记录的标识;当所述预设文件中不包含所述第二写记录的标识,返回包含所述第二写记录的查询响应。第三方面,本专利技术实施例提供一种键值KV存储系统中的数据写入装置,包括记录模块和写入模块,分别用于实现本专利技术实施例第一方面各实现方式。第四方面,本专利技术实施例提供一种键值KV存储系统中的数据查询装置,包括查询模块、判断模块和返回模块,分别用于实现本专利技术实施例第二方面各实现方式。第五方面,本专利技术实施例提供一种KV存储系统中的数据写入设备,包括:存储器和处理器;所述处理器执行所述存储器中的计算机程序用于执行本专利技术实施例第一方面或其任一实现方式所述的KV存储系统中的数据写入方法。第六方面,本专利技术实施例提供一种键值KV存储系统中的数据查询设备,包括:存储器和处理器;所述处理器执行所述存储器中的计算机程序用于执行本专利技术实施例第二方面或其任一实现方式所述的KV存储系统中的数据查询方法。第七方面,本专利技术实施例一种存储介质,所述存储介质用于存储计算机程序,所述计算机程序用于实现第一方面或其任一实现方式提供的KV存储系统中的数据写入方法。第八方面,本专利技术实施例一种存储介质,所述存储介质用于存储计算机程序,所述计算机程序用于实现第二方面或其任一实现方式提供的KV存储系统中的数据查询方法。本专利技术实施例提供的KV存储系统中的数据读取方法、数据查询方法、装置及设备,在将第一写操作的多个写记录写入到可写内存表之前,先将第一写操作的多个写记录的标识记录到K本文档来自技高网...

【技术保护点】
1.一种键值KV存储系统中的数据写入方法,其特征在于,包括:将第一写操作的多个写记录的标识记录到所述KV存储系统的预设文件;将所述第一写操作的多个写记录写入所述KV存储系统的写操作日志文件;将所述第一写操作的第一写记录写入所述KV存储系统的内存中的可写内存表,所述第一写记录为所述多个写记录中的任意一个写记录。

【技术特征摘要】
1.一种键值KV存储系统中的数据写入方法,其特征在于,包括:将第一写操作的多个写记录的标识记录到所述KV存储系统的预设文件;将所述第一写操作的多个写记录写入所述KV存储系统的写操作日志文件;将所述第一写操作的第一写记录写入所述KV存储系统的内存中的可写内存表,所述第一写记录为所述多个写记录中的任意一个写记录。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述第一写操作的多个写记录均写入所述可写内存表之后,删除所述预设文件中的所述第一写操作的多个写记录的标识。3.根据权利要求1或2所述的方法,其特征在于,所述预设文件为哈希链表;所述第一写操作的第一写记录的标识包括所述第一写记录的键key和所述第一写操作的快照版本号。4.根据权利要求3所述的方法,其特征在于,将所述第一记录的标识记录到所述KV存储系统的预设文件,包括:根据所述第一写记录的key确定所述第一写记录对应的哈希节点;在所述第一写记录对应的哈希节点所对应的存储空间中,记录所述第一写记录的标识。5.根据权利要求4所述的方法,其特征在于,所述根据所述第一写记录的key确定所述第一写记录对应的哈希节点,包括:将所述第一写记录的key与预设的最大哈希值的余数确定为第一哈希值;将所述第一哈希值对应的哈希节点确定为所述第一写记录对应的哈希节点。6.根据权利要求1至5任一所述的方法,其特征在于,所述方法还包括:将第二写操作的多个写记录标识记录到所述预设文件;其中,所述第二写操作与所述第一写操作为并行执行的写操作;将所述第二写操作的多条记录写入所述写操作日志文件;将所述第二写操作的多条记录写入到所述可写内存表;删除所述预设文件中的所述第二写操作的多个写记录标识。7.一种键值KV存储系统中的数据查询方法,其特征在于,包括:在所述键值KV存储系统的内存的可写内存表中查询到第一写记录;判断所述KV存储系统的预设文件中是否包括所述第一写记录的标识;所述预设文件中包括第一写操作的多个写记录的标识,所述第一写记录为所述多个写记录中一个;当所述预设文件中包含所述第一写记录的标识,则不执行返回包含所述第一写记录的查询响应。8.根据权利要求7所述的方法,其特征在于,所述预设文件为哈希链表;所述第一写记录的标识包括所述第一写记录的键key和所述第一写操作的快照版本号。9.根据权利要求7或8所述的方法,其特征在于,所述方法还包括:在所述KV存储系统的所述可写内存表中查询到第二写记录;判断所述预设文件中是否包括所述第二写记录的标识;当所述预设文件中不包含所述第二写记录的标识,返回包含所述第二写记录的查询响应。10.一种键值KV存储系统中的数据写入装置,其特征在于,包括记录模块和写入模块,其中,所述记录模块,用于将第一写操作的多个写记录的标识记录到所述KV存储系统的预设文件;所述写入模块,用于将所述第一写操作的多个写记录写入所述KV存储系统的写操作日志文件,将所述第一写操作的第一写记录写入所述KV存储系统的内存中的可写内存表,所述第一写记录为所述多个写记录中的任意一个写记录。11.根据权利要求10所述的装置,其特征在于,所述装置还包括删除...

【专利技术属性】
技术研发人员:谢晓芹崔林威
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1