CN104238963B - 一种数据存储方法、存储装置及存储系统 - Google Patents

一种数据存储方法、存储装置及存储系统 Download PDF

Info

Publication number
CN104238963B
CN104238963B CN201410526359.2A CN201410526359A CN104238963B CN 104238963 B CN104238963 B CN 104238963B CN 201410526359 A CN201410526359 A CN 201410526359A CN 104238963 B CN104238963 B CN 104238963B
Authority
CN
China
Prior art keywords
version value
data
major key
version
target data
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
Application number
CN201410526359.2A
Other languages
English (en)
Other versions
CN104238963A (zh
Inventor
张雷
肖垒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201410526359.2A priority Critical patent/CN104238963B/zh
Publication of CN104238963A publication Critical patent/CN104238963A/zh
Priority to PCT/CN2015/083767 priority patent/WO2016050112A1/zh
Application granted granted Critical
Publication of CN104238963B publication Critical patent/CN104238963B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (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

本发明公开了一种数据存储方法、存储装置及存储系统,用于解决IP硬盘难以在一个主键值之下保存多个版本的数据的问题。所述方法应用于存储系统中,所述存储系统包括主机和网络互联协议IP硬盘,所述方法包括:所述IP硬盘接收所述主机发送的写数据请求,所述写数据请求中包含目标数据、所述目标数据对应的主键值及所述目标数据对应的版本值;判断所述主键值是否保存在所述IP硬盘中;如果是,则判断所述主键值对应的版本值集合中是否包含所述版本值;当所述版本值集合中不包含所述版本值时,则将所述目标数据写入所述IP硬盘。

Description

一种数据存储方法、存储装置及存储系统
技术领域
本发明涉及数据存储领域,特别涉及一种数据存储方法、存储装置及存储系统。
背景技术
网络互联协议(Internet Protocol,IP)硬盘为提供IP协议接口的硬盘,由于IP硬盘能够通过IP协议直接与主机进行通信,不仅使得IP硬盘与主机间没有了距离限制,而且能够支持大规模并行访问,大幅提高数据访问的速度。
目前,IP硬盘使用主键-数据(Key-Value)的结构进行数据存储,主机也以Key-Value接口对IP硬盘中的数据进行访问。在Key-Value的结构中,Key是主键,通常是一个字符串,保存在IP硬盘的索引区中,而Value中包含要存储的数据,保存在IP硬盘的数据区中,其中,一个Key中保存有Value在硬盘上的存储空间的位置信息,Key与Value之间是一一对应的。
在对IP硬盘中的数据进行修改操作时,在数据区分配另一空闲的存储空间保存修改后的Value,并将索引区中对应Key中保存的位置信息更改为修改后的Value的存储空间的位置信息,而为修改前的Value所分配的存储空间需要被回收。
因此,现有技术中要对数据进行修改必须将原有的Value删除,难以在一个Key之下保存多个版本的Value,不方便查看一个Key对应的历史版本的数据。
发明内容
本申请实施例提供一种数据存储方法、存储装置及存储系统,用于解决现有技术中IP硬盘难以在一个主键值之下保存多个版本的数据的问题。
第一方面,本申请实施例提供了一种数据存储方法,所述方法应用于存储系统中,所述存储系统包括主机和网络互联协议IP硬盘,所述方法包括:
所述IP硬盘接收所述主机发送的写数据请求,所述写数据请求中包含目标数据、所述目标数据对应的主键值及所述目标数据对应的版本值;
判断所述主键值是否保存在所述IP硬盘中;
如果是,则判断所述主键值对应的版本值集合中是否包含所述版本值;
当所述版本值集合中不包含所述版本值时,则将所述目标数据写入所述IP硬盘。
结合第一方面,在第一方面的第一种可能的实现方式中,将所述目标数据写入所述IP硬盘之后,所述方法还包括:将所述版本值写入所述版本值集合中。
结合第一方面,在第一方面的第二种可能的实现方式中,所述方法还包括:
当所述版本值集合中包含所述版本值时,获得所述版本值对应的位置信息,所述位置信息包括所述版本值对应的旧数据存储在所述IP硬盘中的地址;
将所述目标数据写入所述地址对应的存储空间中。
结合第一方面,在第一方面的第三种可能的实现方式中,所述方法还包括:
当所述版本值集合中包含所述版本值时,在所述IP硬盘中确定空闲的存储空间,将所述目标数据写入所述空闲的存储空间中;
将所述版本值对应的位置信息修改为所述空闲的存储空间的地址。
结合第一方面,在第一方面的第四种可能的实现方式中,所述方法还包括:所述写数据请求中的所述版本值是由所述主机根据在元数据中查询的所述主键值的版本信息获得的。
结合第一方面的第二种可能的实现方式或者第一方面的第三种可能的实现方式,在第一方面的第五种可能的实现方式中,所述方法还包括:所述IP硬盘接收所述主机发送的读数据请求,所述读数据请求中包含所述主键值及所述版本值;
根据所述主键值及所述版本值确定出所述位置信息;
读取所述位置信息对应的存储空间中存储的所述目标数据。
结合第一方面的第二种可能的实现方式或者第一方面的第三种可能的实现方式,在第一方面的第六种可能的实现方式中,所述方法还包括:
所述IP硬盘接收所述主机发送的读数据请求,所述读数据请求包含所述主键值;
确定所述主键值对应的版本值集合中版本最高的版本值是所述版本值;
获得所述版本值对应的位置信息;
读取所述位置信息对应的存储空间中存储的所述目标数据。
结合第一方面的第二种可能的实现方式或者第一方面的第三种可能的实现方式,在第一方面的第七种可能的实现方式中,所述方法还包括:
所述IP硬盘接收所述主机发送的删除数据请求,所述删除数据请求包含所述主键值及所述版本值;
从所述主键值对应的版本值集合中删除所述版本值。
结合第一方面的第七种可能的实现方式,在第一方面的第八种可能的实现方式中,所述方法还包括:
删除所述版本值对应的位置信息对应的存储空间中存储的所述目标数据。
结合第一方面的第七种可能的实现方式,在第一方面的第九种可能的实现方式中,所述方法还包括:
判断所述主键值对应的版本值集合中是否还存在除所述版本值之外的其它版本值;
若不存在,则从所述IP硬盘中删除所述主键值。
第二方面,本申请实施例提供一种存储装置,包括:
存储单元,用于利用非易失性存储介质来存储数据;
接口,用于利用网络互联协议接收写数据请求,所述写数据请求中包含目标数据、所述目标数据对应的主键值及所述目标数据对应的版本值;
控制器,用于判断所述主键值是否保存在所述IP硬盘中;如果是,则判断所述主键值对应的版本值集合中是否包含所述版本值;当所述版本值集合中不包含所述版本值时,将所述目标数据写入所述IP硬盘。
结合第二方面,在第二方面的第一种可能的实现方式中,所述控制器还用于:在将所述目标数据写入所述存储单元之后,将所述版本值写入所述版本值集合中。
结合第二方面,在第二方面的第二种可能的实现方式中,所述控制器还用于:当所述版本值集合中包含所述版本值时,获得所述版本值对应的位置信息,所述位置信息包括所述版本值对应的旧数据存储在所述存储单元中的地址;并将所述目标数据写入所述地址对应的存储空间中。
结合第二方面,在第二方面的第三种可能的实现方式中,所述控制器还用于:当所述版本值集合中包含所述版本值时,在所述存储单元中确定空闲的存储空间,将所述目标数据写入所述空闲的存储空间中;并将所述版本值对应的位置信息修改为所述空闲的存储空间的地址。
结合第二方面的第二种可能的实现方式或者第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述接口还用于:接收读数据请求,所述读数据请求中包含所述主键值及所述版本值;
所述控制器还用于:根据所述主键值及所述版本值确定出所述位置信息;读取所述位置信息对应的存储空间中存储的所述目标数据。
结合第二方面的第二种可能的实现方式或者第二方面的第三种可能的实现方式,在第二方面的第五种可能的实现方式中,所述接口还用于:接收读数据请求,所述读数据请求包含所述主键值;
所述控制器还用于:确定所述主键值对应的版本值集合中版本最高的版本值是所述版本值;获得所述版本值对应的位置信息;读取所述位置信息对应的存储空间中存储的所述目标数据。
结合第二方面的第二种可能的实现方式或者第二方面的第三种可能的实现方式,在第二方面的第六种可能的实现方式中,所述接口还用于:接收删除数据请求,所述删除数据请求包含所述主键值及所述版本值;
所述控制器还用于:从所述主键值对应的版本值集合中删除所述版本值。
结合第二方面的第六种可能的实现方式,在第二方面的第七种可能的实现方式中,所述控制器还用于:删除所述版本值对应的位置信息对应的存储空间中存储的所述目标数据。
结合第二方面的第六种可能的实现方式,在第二方面的第八种可能的实现方式中,所述控制器还用于:判断所述主键值对应的版本值集合中是否还存在除所述版本值之外的其它版本值;若不存在,则从所述IP硬盘中删除所述主键值。
第三方面,本申请实施例提供一种存储系统,包括:
第二方面所述的存储装置;
主机,用于根据用户输入信息生成数据处理请求,并向所述存储装置发送所述数据处理请求,所述数据处理请求包括写数据请求、读数据请求、删除数据请求。
结合第三方面,在第三方面的第一种可能的实现方式中,所述主机具体用于根据所述主机中存储的元数据确定所述数据处理请求中包含的目标数据对应的主键值。
结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述主机还用于根据所述主机中存储的元数据确定所述数据处理请求中包含的目标数据对应的版本值。
结合第三方面,在第三方面的第三种可能的实现方式中,所述主机还用于向所述存储装置发送查询指令,所述查询指令用于使所述存储装置根据保存的元数据确定所述数据处理请求中包含的目标数据对应的版本值。
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本申请实施例中,IP硬盘接收所述主机发送的写数据请求,所述写数据请求中包含目标数据、所述目标数据对应的主键值及所述目标数据对应的版本值;判断所述主键值是否保存在所述IP硬盘中;如果是,则判断所述主键值对应的版本值集合中是否包含所述版本值;当所述版本值集合中不包含所述版本值时,则将所述目标数据写入所述IP硬盘。由此可见,在本发明实施例中,所述主键值可以对应多个版本值,在执行写数据请求时,如果目标数据对应的主键值对应的版本值集合中不包含目标数据对应的版本值,则在保留该主键值原对应版本的数据的情况下,存储所述目标数据,使得该主键值能够对应多个版本的数据,便于查看历史版本的数据以及执行数据回退。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为背景技术中IP硬盘修改数据的示意图;
图2为本申请实施例中IP硬盘中数据存储结构的示意图;
图3为本申请实施例中一种数据存储方法的流程示意图;
图4a为本申请实施例中新建一个版本数据的示意图;
图4b为本申请实施例中更改一个版本的数据的示意图;
图5为本申请实施例中另一种数据存储方法的流程示意图;
图6为本申请实施例中更改一个版本的数据的另一种方法的示意图;
图7为本申请实施例中又一种数据存储方法的流程示意图;
图8为本申请实施例中又一种数据存储方法的流程示意图;
图9为本申请实施例中又一种数据存储方法的流程示意图;
图10为本申请实施例中存储装置的结构示意框图;
图11为本申请实施例中存储系统的示意框图。
具体实施方式
参见图1,现有技术中,如果IP硬盘中保存有Key-Value1的键值对,Value1保存在数据区,Key保存在索引区,Key中保存有Value1的存储空间的位置信息,此时IP硬盘在响应用户读取Key对应数据的读操作时将返回Value1中的数据。而在数据修改后,Key中记录新写入的Value2的存储空间的位置信息,Value1将被删除,后续IP硬盘在响应用户读取Key对应数据的读操作时将返回Value2中的数据。
因此,对于IP硬盘中保存的一个Key-Value键值对,要对数据进行修改必须将原有的Value删除,难以在一个Key之下保存多个版本的Value,不方便查看一个Key对应的历史版本的数据。
为了解决上述技术问题,本申请实施例中,在以Key-Value的结构保存数据时,在主键信息与数据之间增加了版本信息,一个主键值可以对应多个版本值,每一个版本值对应一项数据,进而实现在一个主键值之下保存多个版本的数据,方便进行数据回退及查看历史版本的数据。
下面通过附图以及具体实施例对本申请技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
本申请实施例中,一项数据以主键-版本-数据(Key-Version-Value)的结构存储在IP硬盘中,其中,每个主键值对应一个版本值集合,该版本值集合中的每一个版本值对应一位置信息,该位置信息中包含一项数据保存在IP硬盘中的存储空间的地址,具体的,位置信息中可以包含数据在IP硬盘中的偏移量。因此,根据一个主键值及该主键值对应的版本值集合中的一个版本值,可以唯一确定出IP硬盘中存储的一项数据。
可选的,参见图2,IP硬盘的存储空间可分为索引区和数据区,其中,索引区中保存有元数据,所述元数据包含主键值以及各个版本值之间的对应关系;而数据区用于保存数据。索引区中的一个版本值对应的一项数据在数据区中的存储空间的位置信息。
主键-版本-数据结构中,版本值用于区分对应一个主键值的多个数据,版本值本身可以是数字序列、时间戳或者是包含时间戳的信息、用户标识或者与用户标识相关的信息、以及与数据分布有关的信息,等等。
为了便于理解,首先介绍主机生成需要发送给IP硬盘的写数据请求的过程,具体如下:
主机存储的元数据中包含已保存文件的文件名(或者与文件名等同的用于标识文件的标识)与主键值的对应关系。实际情况中,一个文件需要被划分为多个数据块来进行存储,每个数据块对应有一个主键值,因此,元数据中保存有一个文件的每一个数据块与主键值的对应关系。
用户在存储文件时,向主机输入目标数据,以及目标数据的文件名,主机接收到用户输入的上述信息后,查询主机存储的元数据,根据主机存储的元数据确定目标数据对应的主键值。
可选的,主机存储的元数据中还包含主键值的版本信息,即一个主键值对应的版本值集合中包含有哪些版本值。主机可以根据主机存储的元数据中包含主键值的版本信息确定写数据请求中的版本值。例如,在针对一个主键值新建一个版本的数据时,生成一个不同于主键值的版本值集合中当前存在的版本值的新的版本值。
可选的,由于IP硬盘中存储的元数据中包含该IP硬盘保存的主键值对应的版本信息,因此,主机可以向IP硬盘请求IP硬盘存储的元数据,并根据IP硬盘的元数据确定写数据请求中的版本值。
实际情况中,用户可能会要求使用当前输入的目标数据覆盖之前的某一版本的数据,主机可以根据用户输入的被覆盖版本的信息与主机或IP硬盘存储的元数据确定出被覆盖数据对应的版本值,亦即目标数据对应的版本值。
而如果主机查询元数据之后,如果确定元数据中不包含用户输入的文件名,则表明用户要存储新的文件,主机将分配一个IP硬盘当前不存在的主键值,并针对该主键值新建一个版本值,指示IP硬盘根据分配的主键值和版本值来存储目标数据。
可选的,一个文件划分的多个数据块分别对应不同IP硬盘中的主键值,即数据块被分别存储在不同的IP硬盘中。
参见图3,为本申请实施例提供的一种数据存储方法的流程示意图,该流程可包括:
步骤101:IP硬盘接收主机发送的写数据请求,写数据请求中包含目标数据、目标数据对应的主键值及目标数据对应的版本值;
步骤102:判断该主键值是否保存在IP硬盘中;若是,则转入步骤103;
步骤103:判断该主键值对应的版本值集合中是否存在目标数据对应的版本值;若不存在,则转入步骤104;
步骤104:将目标数据写入IP硬盘。
具体的,步骤101中,IP硬盘接收主机发送的写数据请求,该写数据请求中包含主机采用前述方式确定出的目标数据、目标数据的主键值以及目标数据的版本值。本申请实施例中,IP硬盘可以设置在主机内部,这种情况下,IP硬盘可以通过总线与主机中的包括处理器在内的模块进行通信。另外,IP硬盘也可以设置在主机外部,IP硬盘可以利用IP协议与主机进行通信,接收主机发送的写数据请求。
IP硬盘收到写数据请求之后,IP硬盘中的控制器首先判断目标数据对应的主键值是一个新的主键值,还是当前已经存在的主键值。如果控制器判断出IP硬盘中已经存在了目标数据对应的主键值,则进一步判断该主键值对应的版本值集合中是否已经存在目标数据对应的版本值。如果判断出该版本值集合中不包含目标数据对应的版本值,则表明需要在该主键值之下新建一个版本的数据,在保留该主键值原对应版本的数据的情况下,在IP硬盘中的空闲存储空间中存储所述目标数据,使得该主键值能够对应多个版本的数据,便于查看历史版本的数据以及执行数据回退。
可选的,数据存储方法还包括:
步骤105:将该版本值写入版本值集合中。
具体的,步骤105与步骤104没有严格的先后顺序关系,步骤105可以在步骤104之前执行,可以与步骤104同时执行,也可以在步骤104之后执行。通过将目标数据对应的版本值加入目标数据对应的主键值对应的版本值集合中,而该版本值中包含有目标数据的存储空间的位置信息,使得通过该主键值能够查询到目标数据以及目标数据对应的版本信息,便于对目标数据进行管理。
参见图4a,对上述技术方案举例说明:在存储数据之前,索引区中的Key对应的版本值集合中包含V1、V2,在获取到Put(Key,V3,Value3)的写数据请求时,在判断出Key对应的版本值集合中不包含V3时,在数据区中一空闲存储空间存储Value3,并在Key对应的版本值集合中添加V3,在V3中写入Value3的存储空间的位置信息。
上述技术方案中,IP硬盘以主键-版本-数据结构来存储数据,使得一个主键值之下可以保存多个版本的数据,进而允许以新建版本值的方式来更新数据,而不删除之前的历史版本的数据,便于查看历史版本的数据以及执行数据的回退。
进一步,步骤103执行时,若确定版本值集合中存在目标数据对应的版本值,则转入步骤106,执行如下流程:
步骤106:获得该版本值对应的位置信息,该位置信息包括版本值对应的旧数据存储在IP硬盘中的地址;
步骤107:将目标数据写入获得的地址对应的存储空间中。
具体的,如果控制器判断出索引区中已经存在了目标数据对应的主键值,以及该主键值对应的版本值集合中已经存在目标数据对应的版本值,则表明需要对当前已存在的一个版本对应的数据进行修改,执行步骤106~107,确定出需要被覆盖的在先版本对应的数据的存储空间,在确定出的存储空间处写入目标数据。
例如,参见图4b,在存储数据之前,索引区中的Key对应的版本值集合中包含V1、V2,在获取到Put(Key,V1,Value3)的写数据请求时,在判断出Key对应的版本值集合中已经存在V1时,获取V1中包含的存储空间信息,确定出V1对应的旧数据Value1在数据区中的存储空间,在该存储空间覆盖写入Value3。
上述技术方案中,可以对一个主键值的某一版本的数据进行修改,而不影响该主键值的其他版本的数据,容易对数据进行维护,提高了数据的有效性。
进一步,步骤102执行时,如果确定IP硬盘中不存在目标数据对应的主键值,则转入步骤108,执行如下流程:
步骤108:在IP硬盘的空闲存储空间中保存目标数据;
步骤109:在IP硬盘中写入目标数据对应的主键值,并将目标数据对应的版本值与写入的该主键值进行对应存储,以及在存储的版本值中添加该空闲存储空间的位置信息。
具体的,在目标数据对应的主键值为新的主键值时,IP硬盘将分配一空闲存储空间存储接收的数据,并在IP硬盘中对应的写入接收的主键值和版本值。由于写入的数据为主键值对应的第一个版本的数据,因此,该主键值的版本值集合中只有新写入的版本值,该版本值中包含存储新写入数据的存储空间的位置信息。
另外,步骤109可以与步骤108同时执行,或者先于步骤108执行,或者在步骤108之后执行,本申请实施例不予限定。
参见图5,为本申请实施例提供的另一种数据存储方法的流程示意图,该流程可包括:
步骤201:IP硬盘接收主机发送的写数据请求,写数据请求中包含目标数据、目标数据对应的主键值及目标数据对应的版本值;
步骤202:判断目标数据对应的主键值是否保存在IP硬盘中;
步骤203:在IP硬盘中保存有该主键值时,判断该主键值对应的版本值集合中是否存在目标数据对应的版本值;
步骤204:当该版本值集合中包含目标数据对应的版本值时,在IP硬盘中确定空闲的存储空间,将目标数据写入该空闲的存储空间中;
步骤205:将该版本值对应的位置信息修改为该空闲的存储空间的地址。
具体的,步骤201~204的实施方式可以参考步骤101~104的实施方式。图5对应的数据存储方法与图3对应的数据存储方法的区别在于:在控制器判断出索引区中已经存在了目标数据对应的主键值,以及该主键值对应的版本值集合中已经存在目标数据对应的版本值后,在对某一版本值对应的数据进行更新时,不是直接在该版本值对应的旧数据的存储空间处写入新数据,而是在数据区的空闲位置处写入新数据,然后将该版本值中包含的位置信息更新为新写入数据的存储空间的地址。
例如,参见图6,在存储数据之前,索引区中的Key对应的版本值集合中包含V1、V2,在获取到Put(Key,V2,Value3)的写数据请求时,在判断出Key对应的版本值集合中已经存在V2时,在数据区中一空闲存储空间存储Value3,并将V2中保存的存储空间位置信息更新为Value3的存储空间的位置信息。
上述技术方案中,避免了在原数据的存储空间写入新数据时可能产生的错误,例如数据混淆错误、原数据存储空间的容量小于新数据的大小导致的新数据不完整错误,另外,还能避免原数据存储空间大于新数据大小造成的存储空间浪费。
可选的,步骤205之后,释放该版本值对应的旧数据的存储空间,避免存储空间浪费。
进一步,参见图7,数据存储方法还可以包括如下流程:
步骤301:IP硬盘接收主机发送的读数据请求,读数据请求中包含目标数据对应的主键值及目标数据对应的版本值;
步骤302:根据该主键值及该版本值确定出位置信息;
步骤303:读取该位置信息对应的存储空间中存储的目标数据。
具体的,用户在读取之前写入的数据时需要向主机输入目标数据的文件名以及表明要读取哪个版本的数据的信息,主机查询本地元数据或者同时向IP硬盘请求元数据,确定出目标数据对应的主键值以及版本值。
而IP硬盘保存的元数据保存有:数据对应的主键值、数据对应的版本值、用于存储数据的存储空间的位置信息三者的对应关系。步骤302中,IP硬盘中的处理器根据读数据请求中的主键值、版本值以及IP硬盘中元数据的上述对应关系即可确定出一位置信息,该位置信息即待读取的目标数据在IP硬盘中存储空间的位置信息。步骤303中,根据该位置信息定位出数据,即为目标数据,向主机返回目标数据,实现目标数据的读取。
上述技术方案中,能够在一个主键值对应有多个数据的情况下,准确、便捷地读取用户需要的数据。
进一步,参见图8,数据存储方法还可以包括如下流程:
步骤401:IP硬盘接收主机发送的读数据请求,读数据请求包含目标数据对应的主键值;
步骤402:确定该主键值对应的版本值集合中版本最高的版本值是目标数据对应的版本值;
步骤403:获得版本值对应的位置信息;
步骤404:读取位置信息对应的存储空间中存储的目标数据。
具体的,本方法与图7对应的方法的区别在于:实际情况中,用户可能没有输入要读取那个版本的数据的相关信息,主机发送给IP硬盘的读数据请求中不包含目标数据的版本值,IP硬盘在接收到这一类的读取数据请求时,默认要读取该主键值对应的版本值集合中版本最高的版本值对应的数据,向主机返回该版本最高的版本值对应的数据。
实施过程中,可根据主键-版本-数据结构中版本值自身的属性来确定出版本最高的版本值。例如,在版本值为不断累加的数字序列时,对应数值最大的数字序列即为版本值(比如,在版本值集合中只有1.1和1.2这两个版本值时,可确定版本值1.2为最高版本);而在版本值为时间戳或者包含时间戳的信息时,可以确定出对应最晚时间的版本值为版本最高的版本值。
上述技术方案中,IP硬盘能够在接收到不包含版本信息的读数据请求时返回目标数据的主键值对应的版本最高的版本值对应的数据,便于用户通过快捷便利地读取数据。
进一步,参见图9,数据存储方法还可以包括如下流程:
步骤501:IP硬盘接收主机发送的删除数据请求,删除数据请求包含目标数据对应的主键值及目标数据对应的版本值;
步骤502:从该主键值对应的版本值集合中删除目标数据对应的版本值。
具体的,用户在删除数据时向主机输入目标数据对应的文件名及表明要删除哪个版本的文件的信息。主机查询本地元数据或者同时向IP硬盘请求元数据,确定出目标数据对应的主键值以及版本值。
IP硬盘在接收到删除数据请求后,从目标数据对应的主键值对应的版本值集合中删除目标数据对应的版本值,在删除该版本值之后,与该主键值对应的数据中已经不包含目标数据,进而实现快速、准确地删除主键值对应的一个版本数据。
可选的,步骤501之后,数据存储方法还可以包括如下步骤:
步骤503:删除版本值对应的位置信息对应的存储空间中存储的目标数据。
具体的,还可以删除IP硬盘中与目标数据对应的版本值对应的数据,从物理层面上彻底删除待删除的数据,提高存储空间的效用。其中,步骤503可以与步骤502同时进行,也可以在步骤502之前进行;在保存了目标数据对应的版本值中的位置信息之后,步骤503也可以在步骤502之后进行。
可选的,在步骤502之后,数据存储方法还可以包括如下步骤:
步骤504:判断该主键值对应的版本值集合中是否还存在除目标数据对应的版本值之外的其它版本值;若不存在,则执行步骤505;
步骤505:从IP硬盘中删除该主键值。
具体的,在将版本值删除之后,控制器将判断该主键值对应的版本值集合中是否还存在其他的版本值,如果还存在,则结束进程。如果不存在其他版本值了,表明已经没有数据与该主键值相对应,该主键值已经没有存在的必要,此时可以删除该主键值,提高存储主键值的索引区的存储空间的效用。
本申请实施例中,IP硬盘中存储的元数据可以是以列表或数据库的形式,列表或数据库中保存有主键值、版本值、数据的存储空间的位置信息三者的对应关系。另外,IP硬盘中存储的元数据也可以是IP硬盘索引区中保存的主键值与版本值的形式存在,其中,每一个主键值中包含于主键值对应的每一个版本值的信息(可以是版本值的地址信息、版本名,等等),通过该信息可以获知主键值对应有哪些版本值,而每一个版本值中包含有位置信息,该位置信息用于表征一项数据在IP硬盘中的存储空间的位置。
基于相同的发明构思,本申请实施例提供了一种存储装置,参见图10,存储装置包括总线600,以及连接到总线600的控制器601、存储单元602、接口603。
其中,存储单元602用于利用非易失性存储介质来存储数据;接口603,用于利用网络互联协议接收写数据请求,写数据请求中包含目标数据、目标数据对应的主键值及目标数据对应的版本值。本申请实施例中接口603可以是独立的通信模块,也可以是控制器601提供的通信接口。
而控制器601用于:判断目标数据对应的主键值是否保存在IP硬盘中;如果是,则判断该主键值对应的版本值集合中是否包含目标数据对应的版本值;当版本值集合中不包含版本值时,将目标数据写入IP硬盘。
可选的,控制器601还用于:在将目标数据写入存储单元之后,将目标数据对应的版本值写入版本值集合中。
可选的,控制器601还用于:当版本值集合中包含目标数据对应的版本值时,获得该版本值对应的位置信息,该位置信息包括目标数据对应的版本值对应的旧数据存储在存储单元中的地址;并将目标数据写入地址对应的存储空间中。
可选的,控制器还用于:当版本值集合中包含目标数据对应的版本值时,在存储单元中确定空闲的存储空间,将目标数据写入空闲的存储空间中;并将目标数据对应的版本值对应的位置信息修改为该空闲的存储空间的地址。
可选的,接口603还用于:接收读数据请求,该读数据请求中包含主键值及版本值;
控制器601还用于:根据主键值及版本值确定出位置信息;读取位置信息对应的存储空间中存储的目标数据。
可选的,接口603还用于:接收读数据请求,读数据请求包含主键值;
控制器601还用于:确定主键值对应的版本值集合中版本最高的版本值是版本值;获得版本值对应的位置信息;读取位置信息对应的存储空间中存储的目标数据。
可选的,接口603还用于:接收删除数据请求,删除数据请求包含主键值及版本值;
控制器601还用于:从目标数据对应的主键值对应的版本值集合中删除版本值。
可选的,控制器601还用于:删除版本值对应的位置信息对应的存储空间中存储的目标数据。
可选的,控制器601还用于:判断目标数据对应的主键值对应的版本值集合中是否还存在除该版本值之外的其它版本值;若不存在,则从IP硬盘中删除主键值。
前述实施例中的数据存储方法中的各种数据存储方式和具体实例同样适用于本实施例的存储装置,通过前述实施例中对数据存储方法的详细描述,本领域技术人员可以清楚的知道本实施例中存储装置的实施方法,所以为了说明书的简洁,在此不再详述。
基于相同的发明构思,本申请实施例还提供了一种存储系统,参见图11,该系统包括主机701和存储装置702。
其中,存储装置702为前述包括总线600、控制器601、存储单元602、接口603的存储装置。
而主机701用于:根据用户输入信息生成数据处理请求,并向存储装置702发送数据处理请求,数据处理请求包括写数据请求、读数据请求、删除数据请求。
可选的,主机701具体用于根据主机701中存储的元数据确定数据处理请求中包含的目标数据对应的主键值。
可选的,主机701还用于根据主机701中存储的元数据确定数据处理请求中包含的目标数据对应的版本值。
可选的,主机701还用于向存储装置发送查询指令,查询指令用于使存储装置根据保存的元数据确定数据处理请求中包含的目标数据对应的版本值。
可选的,主机701向存储装置发送的查询指令用于使存储装置返回目标数据对应的主键值对应的版本信息;主机701还用于根据存储装置返回的版本信息确定目标数据对应的版本值。
较佳的,主机701包括:总线及连接到总线的处理器、随机存储器、只读存储器、输入设备、输出设备、收发器。其中,处理器通过总线分别耦接随机存取存储器、只读存储器、输入设备、输出设备以及收发器。当需要运行主机701时,通过固化在只读存储器中的基本输入输出系统引导系统进行启动,引导主机701进入正常运行状态。而在主机701进入正常运行状态后,在随机存取存储器中运行应用程序和操作系统。
输入设备用于获取用户输入信息,例如触摸屏、键盘,等等。输出设备用于向用户输出信息,例如显示器、扬声器,等等。而收发器用于与存储装置702进行通信。
前述实施例中的数据存储方法中的各种数据存储方式和具体实例同样适用于本实施例的存储系统,通过前述实施例中对数据存储方法的详细描述,本领域技术人员可以清楚的知道本实施例中存储系统的实施方法,所以为了说明书的简洁,在此不再详述。
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本申请实施例中,IP硬盘接收所述主机发送的写数据请求,所述写数据请求中包含目标数据、所述目标数据对应的主键值及所述目标数据对应的版本值;判断所述主键值是否保存在所述IP硬盘中;如果是,则判断所述主键值对应的版本值集合中是否包含所述版本值;当所述版本值集合中不包含所述版本值时,则将所述目标数据写入所述IP硬盘。由此可见,在本发明实施例中,所述主键值可以对应多个版本值,在执行写数据请求时,如果目标数据对应的主键值对应的版本值集合中不包含目标数据对应的版本值,则在保留该主键值原对应版本的数据的情况下,存储所述目标数据,使得该主键值能够对应多个版本的数据,便于查看历史版本的数据以及执行数据回退。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (19)

1.一种数据存储方法,其特征在于,所述方法应用于存储系统中,所述存储系统包括主机和网络互联协议IP硬盘,所述方法包括:
所述IP硬盘接收所述主机发送的写数据请求,所述写数据请求中包含目标数据、所述目标数据对应的主键值及所述目标数据对应的版本值;
判断所述主键值是否保存在所述IP硬盘中;
如果是,则判断所述主键值对应的版本值集合中是否包含所述版本值;
当所述版本值集合中不包含所述版本值时,则将所述目标数据写入所述IP硬盘;
当所述版本值集合中包含所述版本值时,获得所述版本值对应的位置信息,所述位置信息包括所述版本值对应的旧数据存储在所述IP硬盘中的地址;
将所述目标数据写入所述地址对应的存储空间中。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述版本值集合中包含所述版本值时,在所述IP硬盘中确定空闲的存储空间,将所述目标数据写入所述空闲的存储空间中;
将所述版本值对应的位置信息修改为所述空闲的存储空间的地址。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述写数据请求中的所述版本值是由所述主机根据在元数据中查询的所述主键值的版本信息获得的。
4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
所述IP硬盘接收所述主机发送的读数据请求,所述读数据请求中包含所述主键值及所述版本值;
根据所述主键值及所述版本值确定出所述位置信息;
读取所述位置信息对应的存储空间中存储的所述目标数据。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
所述IP硬盘接收所述主机发送的读数据请求,所述读数据请求包含所述主键值;
确定所述主键值对应的版本值集合中版本最高的版本值是所述版本值;
获得所述版本值对应的位置信息;
读取所述位置信息对应的存储空间中存储的所述目标数据。
6.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
所述IP硬盘接收所述主机发送的删除数据请求,所述删除数据请求包含所述主键值及所述版本值;
从所述主键值对应的版本值集合中删除所述版本值。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
删除所述版本值对应的位置信息对应的存储空间中存储的所述目标数据。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
判断所述主键值对应的版本值集合中是否还存在除所述版本值之外的其它版本值;
若不存在,则从所述IP硬盘中删除所述主键值。
9.一种存储装置,其特征在于,包括:
存储单元,用于利用非易失性存储介质来存储数据;
接口,用于利用网络互联协议接收写数据请求,所述写数据请求中包含目标数据、所述目标数据对应的主键值及所述目标数据对应的版本值;
控制器,用于判断所述主键值是否保存在IP硬盘中;如果是,则判断所述主键值对应的版本值集合中是否包含所述版本值;当所述版本值集合中不包含所述版本值时,将所述目标数据写入所述IP硬盘;
所述控制器还用于:当所述版本值集合中包含所述版本值时,获得所述版本值对应的位置信息,所述位置信息包括所述版本值对应的旧数据存储在所述存储单元中的地址;并将所述目标数据写入所述地址对应的存储空间中。
10.根据权利要求9所述的装置,其特征在于,所述控制器还用于:当所述版本值集合中包含所述版本值时,在所述存储单元中确定空闲的存储空间,将所述目标数据写入所述空闲的存储空间中;并将所述版本值对应的位置信息修改为所述空闲的存储空间的地址。
11.根据权利要求9或10所述的装置,其特征在于,所述接口还用于:接收读数据请求,所述读数据请求中包含所述主键值及所述版本值;
所述控制器还用于:根据所述主键值及所述版本值确定出所述位置信息;读取所述位置信息对应的存储空间中存储的所述目标数据。
12.根据权利要求9或10所述的装置,其特征在于,所述接口还用于:接收读数据请求,所述读数据请求包含所述主键值;
所述控制器还用于:确定所述主键值对应的版本值集合中版本最高的版本值是所述版本值;获得所述版本值对应的位置信息;读取所述位置信息对应的存储空间中存储的所述目标数据。
13.根据权利要求9或10所述的装置,其特征在于,所述接口还用于:接收删除数据请求,所述删除数据请求包含所述主键值及所述版本值;
所述控制器还用于:从所述主键值对应的版本值集合中删除所述版本值。
14.根据权利要求13所述的装置,其特征在于,所述控制器还用于:删除所述版本值对应的位置信息对应的存储空间中存储的所述目标数据。
15.根据权利要求13所述的装置,其特征在于,所述控制器还用于:判断所述主键值对应的版本值集合中是否还存在除所述版本值之外的其它版本值;若不存在,则从所述IP硬盘中删除所述主键值。
16.一种存储系统,其特征在于,包括:
根据权利要求9-15中任一权利要求所述的存储装置;
主机,用于根据用户输入信息生成数据处理请求,并向所述存储装置发送所述数据处理请求,所述数据处理请求包括写数据请求、读数据请求、删除数据请求。
17.根据权利要求16所述的系统,其特征在于,所述主机具体用于根据所述主机中存储的元数据确定所述数据处理请求中包含的目标数据对应的主键值。
18.根据权利要求17所述的系统,其特征在于,所述主机还用于根据所述主机中存储的元数据确定所述数据处理请求中包含的目标数据对应的版本值。
19.根据权利要求16所述的系统,其特征在于,所述主机还用于向所述存储装置发送查询指令,所述查询指令用于使所述存储装置根据保存的元数据确定所述数据处理请求中包含的目标数据对应的版本值。
CN201410526359.2A 2014-09-30 2014-09-30 一种数据存储方法、存储装置及存储系统 Active CN104238963B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201410526359.2A CN104238963B (zh) 2014-09-30 2014-09-30 一种数据存储方法、存储装置及存储系统
PCT/CN2015/083767 WO2016050112A1 (zh) 2014-09-30 2015-07-10 一种数据存储方法、存储装置及存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410526359.2A CN104238963B (zh) 2014-09-30 2014-09-30 一种数据存储方法、存储装置及存储系统

Publications (2)

Publication Number Publication Date
CN104238963A CN104238963A (zh) 2014-12-24
CN104238963B true CN104238963B (zh) 2017-08-11

Family

ID=52227130

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410526359.2A Active CN104238963B (zh) 2014-09-30 2014-09-30 一种数据存储方法、存储装置及存储系统

Country Status (2)

Country Link
CN (1) CN104238963B (zh)
WO (1) WO2016050112A1 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104238963B (zh) * 2014-09-30 2017-08-11 华为技术有限公司 一种数据存储方法、存储装置及存储系统
CN106681995B (zh) * 2015-11-05 2020-08-18 菜鸟智能物流控股有限公司 数据缓存方法、数据查询方法及装置
CN105354311B (zh) * 2015-11-10 2018-06-19 科大智能电气技术有限公司 一种基于嵌入式设备文件系统的数据键值对存储方法
CN105468300B (zh) * 2015-11-20 2018-08-14 华为技术有限公司 Ip硬盘的管理方法和装置
EP3916536A1 (en) 2015-12-28 2021-12-01 Huawei Technologies Co., Ltd. Data processing method and nvme storage device
CN107180036A (zh) * 2016-03-09 2017-09-19 阿里巴巴集团控股有限公司 一种数据读取方法和装置
CN111752480A (zh) * 2016-03-24 2020-10-09 华为技术有限公司 一种数据写方法、数据读方法及相关设备、系统
KR102406666B1 (ko) 2017-09-20 2022-06-08 삼성전자주식회사 스냅샷 기능을 지원하는 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
CN110147359A (zh) * 2017-12-13 2019-08-20 北京奇虎科技有限公司 一种增量生成方法、装置以及一种数据更新方法、装置
CN109582666A (zh) * 2018-09-29 2019-04-05 阿里巴巴集团控股有限公司 数据主键生成方法、装置、电子设备及存储介质
CN110968750A (zh) * 2018-09-30 2020-04-07 北京国双科技有限公司 一种数据存储方法和系统
CN111182014B (zh) * 2018-11-09 2022-04-26 北京华为数字技术有限公司 一种数据同步方法和装置
CN109684307B (zh) * 2018-12-26 2021-06-22 百度在线网络技术(北京)有限公司 一种数据存储方法、装置、设备及存储介质
CN109710190B (zh) * 2018-12-26 2022-03-08 百度在线网络技术(北京)有限公司 一种数据存储方法、装置、设备及存储介质
CN110096505B (zh) * 2019-03-31 2021-05-11 杭州复杂美科技有限公司 一种数据存储方法和系统、设备及存储介质
US11907565B2 (en) 2020-04-14 2024-02-20 International Business Machines Corporation Storing write data in a storage system
CN113792031B (zh) * 2021-10-11 2024-02-13 小红书科技有限公司 键值对数据的处理方法、系统、设备和介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102693312A (zh) * 2012-05-28 2012-09-26 清华大学 一种键值库数据存储中柔性事务管理方法
CN102833273A (zh) * 2011-06-13 2012-12-19 中兴通讯股份有限公司 临时故障时的数据修复方法及分布式缓存系统
CN103559139A (zh) * 2013-10-23 2014-02-05 华为技术有限公司 一种数据存储方法及装置
CN103902230A (zh) * 2012-12-27 2014-07-02 中国移动通信集团公司 一种数据处理方法、设备和系统
CN103984640A (zh) * 2014-05-14 2014-08-13 华为技术有限公司 实现数据预取方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1304961C (zh) * 2005-03-11 2007-03-14 清华大学 基于元数据服务器的存储虚拟化管理方法
US8078570B2 (en) * 2009-05-01 2011-12-13 International Business Machines Corporation Versioning data warehouses
CN101546601B (zh) * 2009-05-13 2011-06-08 杭州华三通信技术有限公司 固态硬盘及存储系统
US8799228B2 (en) * 2011-06-29 2014-08-05 Nokia Corporation Method and apparatus for providing a list-based interface to key-value stores
CN103714163B (zh) * 2013-12-30 2017-02-15 中国科学院信息工程研究所 一种NoSQL数据库的模式管理方法及系统
CN104238963B (zh) * 2014-09-30 2017-08-11 华为技术有限公司 一种数据存储方法、存储装置及存储系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102833273A (zh) * 2011-06-13 2012-12-19 中兴通讯股份有限公司 临时故障时的数据修复方法及分布式缓存系统
CN102693312A (zh) * 2012-05-28 2012-09-26 清华大学 一种键值库数据存储中柔性事务管理方法
CN103902230A (zh) * 2012-12-27 2014-07-02 中国移动通信集团公司 一种数据处理方法、设备和系统
CN103559139A (zh) * 2013-10-23 2014-02-05 华为技术有限公司 一种数据存储方法及装置
CN103984640A (zh) * 2014-05-14 2014-08-13 华为技术有限公司 实现数据预取方法及装置

Also Published As

Publication number Publication date
WO2016050112A1 (zh) 2016-04-07
CN104238963A (zh) 2014-12-24

Similar Documents

Publication Publication Date Title
CN104238963B (zh) 一种数据存储方法、存储装置及存储系统
CN106548789B (zh) 用于操作叠瓦式磁记录设备的方法和装置
US8112464B2 (en) On-demand access to container file directories
CN103493028B (zh) 虚拟盘存储技术
CN117609183A (zh) 数据库租户迁移的系统和方法
CN102725753B (zh) 优化数据访问的方法及装置、优化数据存储的方法及装置
CN108021337B (zh) 用于流线型访问和迁移的数据打包的存储容器
CN104216662B (zh) 用于跨远程复制关系的卷布置的方法和系统
CN108388604A (zh) 用户权限数据管理装置、方法及计算机可读存储介质
CN103198090A (zh) 用于优化虚拟桌面环境中的存储分配的方法和系统
CN107016047A (zh) 文档查询、文档存储方法及装置
CN109597640B (zh) 一种应用程序的账号管理方法、装置、设备和介质
CN104182701B (zh) 一种阵列控制器、阵列和数据处理方法
CN106469022A (zh) 存储驱动器的存储管理方法和系统
US9792075B1 (en) Systems and methods for synthesizing virtual hard drives
CN103544153A (zh) 一种基于数据库的数据更新方法和系统
CN101960442B (zh) 使用虚拟技术输入/输出数据的方法和设备
CN106970958A (zh) 一种流文件的查询与存储方法和装置
US10372684B2 (en) Metadata peering with improved inodes
CN102804137B (zh) 控制对软件构件状态的访问
CN107122223B (zh) 数据迁移方法及装置
CN117355817A (zh) 区片段驱动器管理
CN109740310A (zh) 用于嵌入式操作系统的内核对象访问方法和装置
CN108304142A (zh) 一种数据管理方法和装置
CN105653539A (zh) 索引分布式存储的实现方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant