CN103973810A - 基于互联网协议ip盘的数据处理方法和装置 - Google Patents

基于互联网协议ip盘的数据处理方法和装置 Download PDF

Info

Publication number
CN103973810A
CN103973810A CN201410219411.XA CN201410219411A CN103973810A CN 103973810 A CN103973810 A CN 103973810A CN 201410219411 A CN201410219411 A CN 201410219411A CN 103973810 A CN103973810 A CN 103973810A
Authority
CN
China
Prior art keywords
key assignments
value
index region
node
address
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
Application number
CN201410219411.XA
Other languages
English (en)
Other versions
CN103973810B (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 CN201410219411.XA priority Critical patent/CN103973810B/zh
Publication of CN103973810A publication Critical patent/CN103973810A/zh
Application granted granted Critical
Publication of CN103973810B publication Critical patent/CN103973810B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明提供一种基于互联网协议IP盘的数据处理方法和装置。该方法包括:接收第一数据写请求,所述第一数据写请求携带第一值和第一键值;将所述第一键值存储在i个索引区域的根节点中,根据所述第一键值中携带的存储地址存储所述第一值;对所述第一键值进行哈希运算获得第一哈希值;在索引表中记录所述第一哈希值,并且在所述索引表中记录所述第一哈希值的位置记录所述i个索引区域的根节点的地址;其中,i为整数,并且i不小于2。本发明实施例在多个索引区域存储键值,当某一个索引区域出现故障时,可以通过索引区域读取键值,从而读取该键值对应的数据,有效地提升了数据存储的可靠性。

Description

基于互联网协议IP盘的数据处理方法和装置
技术领域
本发明实施例涉及通信技术,尤其涉及一种基于互联网协议IP盘的数据处理方法和装置。
背景技术
随着信息时代的发展,对数据存储设备的性能要求越来越高。现有互联网协议(Internet Protocol,简称IP)硬盘使用键-值(Key-Value)分布式存储接口进行数据访问,数据在IP硬盘中也以Key-Value的结构进行存储,其中,Key是主键,通常是一个字符串,Value中包含要存储的数据。
目前,在IP硬盘中,Key-Value结构的数据存储常用的一种方式是以哈希数据库(Hash database)的方式存储Key-Value结构的数据。其主要方法是:将Key通过Hash算法计算获取一个哈希值(hash code),以将该哈希值作为Key的索引值。由于不同的Key值通过hash算法后可能得到相同的哈希值,因此可将哈希值相同的多个Key存储在同一个存储区,通过存储在索引表中哈希值来查找Key。具体的,图1为现有技术中查找Key以获取对应的Value中的数据的原理示意图,如图1所示,索引表101中包括多个索引区102,每个索引区102中存储一个哈希值和物理地址,其中,每个索引区102中存储的哈希值各不相同,且可以通过物理地址获取索引区102对应的存储区103,该存储区103中存储了相同哈希值下的对应的不同的Key,其可以用节点(Node)表示。在存储区103中,节点1为节点2和节点5的父节点,节点2为节点1的左侧叶子节点,节点5为节点1的右侧叶子节点,同样,节点2为节点3和节点4的父节点,节点3和节点4分别为节点2的左侧叶子节点和右侧叶子节点。
当接收到携带有Key的get请求消息时,先计算得到该Key的哈希值,在索引表101中找到该哈希值对应的索引区102,在该索引区102中,获取对应的存储区103的物理地址,从该物理地址对应的存储区103的节点1开始比较,比较get请求消息中的Key和节点1中的Key,若get请求消息中的Key和节点1中的Key相等,则获取节点1中该Key对应的Value的物理位置(Value’Offset),以根据该物理位置读取Value中的数据。若get请求消息中的Key大于节点1中的Key,则和节点1的左侧叶子节点节点2中的Key进行比较,其比较方式与上述相类似。若get请求消息中的Key小于节点1中的Key,则和节点1的右侧叶子节点节点5中的Key进行比较,其比较方式与上述相类似。以此类推,直至找到节点中的Key和get请求消息中的Key相等为止。
但是,现有技术中,若某个Key对应的节点位置所在的硬盘出现故障,则该节点以及其子树节点都无法读取。
发明内容
本发明实施例提供一种基于互联网协议IP盘的数据处理方法和装置,以克服现有技术中某个关键值对应的节点位置所在的硬盘出现故障,则该节点以及其子树节点都无法读取的技术问题。
本发明实施例第一方面提供一种基于互联网协议IP盘的数据处理方法,包括:
接收第一数据写请求,所述第一数据写请求携带第一值和第一键值;其中,所述第一值中包含待写入数据,所述第一键值携带所述第一值的存储地址;
将所述第一键值存储在i个索引区域的根节点中,根据所述第一键值中携带的存储地址存储所述第一值;
对所述第一键值进行哈希运算获得第一哈希值;
在索引表中记录所述第一哈希值,并且在所述索引表中记录所述第一哈希值的位置记录所述i个索引区域的根节点的地址;其中,i为整数,并且i不小于2。
在第一方面的第一种可能实现方式中,所述方法还包括,接收第二数据写请求,所述第二数据写请求携带第二值和第二键值;其中,所述第二值中包含待写入数据,所述第二键值携带所述第二值的存储地址,并且所述第二键值与所述第一键值不同;
根据所述第二键值中的存储地址存储所述第二值;
计算所述第二键值的哈希值得到所述第一哈希值;
将所述第二键值存储在所述第一哈希值对应的所述i个索引区域的每一个根节点的叶子节点中。
结合第一方面的第一种可能实现方式,在第一方面的第二种可能实现方式中,还包括:
接收第一数据读请求,所述第一数据读请求携带所述第一键值;
计算所述第一键值获得所述第一哈希值,根据所述第一哈希值在所述索引表中查找所述根节点的地址;
根据所述根节点的地址访问所述第一键值,获得所述第一键值中携带的所述第一值的存储地址;
根据所述第一值的存储地址读取所述第一值。
结合第一方面的第二种可能实现方式,在第一方面的第三种可能实现方式中,所述根据所述根节点的地址访问所述第一键值,获得所述第一键值中携带的所述第一值的存储地址,具体包括:
根据第一索引区域中的根节点的地址访问所述第一键值,当根据所述第一索引区域中的根节点的地址访问所述第一键值失败时,则从(i-1)个索引区域中的根节点地址中选择下一个地址访问所述第一键值,直到根据所述(i-1)个索引区域中的根节点地址中一个访问所述第一键值成功时,获得所述第一键值中携带的所述第一值的存储地址;其中,所述第一索引区域中的根节点为所述i个索引区域的根节点中的任意一个。
结合第一方面的第一种可能实现方式,在第一方面的第四种可能实现方式中,所述方法还包括:接收第三数据读请求,所述第三数据读请求携带第三键值,所述第三键值为所述第一键值或所述第二键值;
计算所述第三键值获得所述第一哈希值;
根据所述第一哈希值查询所述索引表,以获得所述第三键值在所述i个索引区域中所述根节点的地址以访问所述i个索引区域中所述第三键值所对应的节点;
当第m个索引区域中的所述第三键值对应的节点访问失败,访问从第n个索引区域中的所述第三键值对应的节点,获得所述第三键值中存储的第三值的存储地址,根据所述第三值的存储地址读取所述第三值;
复制所述第n个索引区域中的所述第三键值对应的节点及其叶子节点至所述第m个索引区域中以作为所述第m个索引区域中所述第三键值对应的节点及其叶子节点。
本发明实施例第二方面提供一种基于互联网协议IP盘的数据处理装置,包括:
接收模块,用于接收第一数据写请求,所述第一数据写请求携带第一值和第一键值;其中,所述第一值中包含待写入数据,所述第一键值携带所述第一值的存储地址;
存储模块,用于将所述第一键值存储在i个索引区域的根节点中,根据所述第一键值中携带的存储地址存储所述第一值;
运算模块,用于对所述第一键值进行哈希运算获得第一哈希值;
记录模块,用于在索引表中记录所述第一哈希值,并且在所述索引表中记录所述第一哈希值的位置记录所述i个索引区域的根节点的地址;其中,i为整数,并且i不小于2。
在第二方面的第一种可能实现方式中,所述接收模块,还用于接收第二数据写请求,所述第二数据写请求携带第二值和第二键值;其中,所述第二值中包含待写入数据,所述第二键值携带所述第二值的存储地址,并且所述第二键值与所述第一键值不同;
所述存储模块,还用于根据所述第二键值中的存储地址存储所述第二值;
所述运算模块,还用于计算所述第二键值的哈希值得到所述第一哈希值;
所述存储模块,还用于将所述第二键值存储在所述第一哈希值对应的所述i个索引区域的每一个根节点的叶子节点中。
结合第二方面的第一种可能实现方式,在第二方面的第二种可能实现方式中,所述接收模块,还用于接收第一数据读请求,所述第一数据读请求携带所述第一键值;
所述装置还包括:
查询模块,用于计算所述第一键值获得所述第一哈希值,根据所述第一哈希值在所述索引表中查找所述根节点的地址;
访问模块,用于根据所述根节点的地址访问所述第一键值,获得所述第一键值中携带的所述第一值的存储地址;
读取模块,用于根据所述第一值的存储地址读取所述第一值。
结合第二方面的第二种可能实现方式,在第二方面的第三种可能实现方式中,所述访问模块具体用于:
根据第一索引区域中的根节点的地址访问所述第一键值,当根据所述第一索引区域中的根节点的地址访问所述第一键值失败时,则从(i-1)个索引区域中的根节点地址中选择下一个地址访问所述第一键值,直到根据所述(i-1)个索引区域中的根节点地址中一个访问所述第一键值成功时,获得所述第一键值中携带的所述第一值的存储地址;其中,所述第一索引区域中的根节点为所述i个索引区域的根节点中的任意一个。
结合第二方面的第一种可能实现方式,在第二方面的第四种可能实现方式中,所述接收模块,还用于接收第三数据读请求,所述第三数据读请求携带第三键值,所述第三键值为所述第一键值或所述第二键值;
所述运算模块,还用于计算所述第三键值获得所述第一哈希值;
所述查询模块,还用于根据所述第一哈希值查询所述索引表,以获得所述第三键值在所述i个索引区域中所述根节点的地址以访问所述i个索引区域中所述第三键值所对应的节点;
所述访问模块,还用于当第m个索引区域中的所述第三键值对应的节点访问失败,访问从第n个索引区域中的所述第三键值对应的节点,获得所述第三键值中存储的第三值的存储地址;
所述读取模块,还用于根据所述第三值的存储地址读取所述第三值;
所述装置还包括:
复制模块,用于复制所述第n个索引区域中的所述第三键值对应的节点及其叶子节点至所述第m个索引区域中以作为所述第m个索引区域中所述第三键值对应的节点及其叶子节点。
本实施例提供的基于互联网协议IP盘的数据处理方法,通过接收携带第一值和第一键值的第一数据写请求,将第一键值存储在i个索引区域的根节点中,并根据第一键值中携带的存储地址将第一值存储在IP硬盘对应的位置,对第一键值进行哈希运算获得第一哈希值,在索引表中记录第一哈希值,并且在索引表中记录该第一哈希值的位置记录i个索引区域的根节点的地址。由于在多个索引区域存储键值,当某一个索引区域出现故障时,可以通过索引区域读取键值,从而读取该键值对应的数据,因此有效地提升了数据存储的可靠性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中查找Key以获取对应的Value中的数据的原理示意图;
图2为本发明一实施例提供的基于互联网协议IP盘的数据处理方法流程图;
图3为本发明实施例中节点的结构示意图;
图4为本发明另一实施例提供的基于互联网协议IP盘的数据处理方法流程图;
图5为本发明实施例中将Key存储在i个索引区域中的原理示意图;
图6为本发明又一实施例提供的基于互联网协议IP盘的数据处理方法流程图;
图7为本发明再一实施例提供的基于互联网协议IP盘的数据处理方法流程图;
图8为本发明一实施例提供的基于互联网协议IP盘的数据处理装置结构示意图;
图9为本发明另一实施例提供的基于互联网协议IP盘的数据处理装置结构示意图;
图10为本发明又一实施例提供的基于互联网协议IP盘的数据处理装置结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图2为本发明一实施例提供的基于互联网协议IP盘的数据处理方法流程图。如图2所示,本实施例的数据处理的方法包括如下步骤。
步骤101、接收第一数据写请求,该第一数据写请求携带第一值(Value)和第一键值(Key);其中,第一值中包含待写入数据,第一键值携带第一值的存储地址。
在本实施例中,当其它设备(PC、处理器、存储器等)需要对IP硬盘进行写数据操作时,通过IP协议向IP硬盘发送第一数据写请求,该第一数据写请求中包括第一值和第一键值。第一值中包含待写入IP硬盘中的数据,第一键值携带第一值的存储地址。
步骤102、将第一键值存储在i个索引区域的根节点中,根据第一键值中携带的存储地址存储第一值。
在本实施例中,将第一键值中存储在i个索引区域对应的根节点中,其中,i为整数,并且i不小于2,即将第一键值备份存储在多个索引区域对应的根节点中。根据第一键值中携带的存储地址,将第一值存储在IP硬盘中该存储地址对应的位置。
本实施例中需要说明的是,每个索引区域中不仅只有一个根节点,还包括根节点的叶子节点。图3为本发明实施例中节点的结构示意图。如图3所示,每个节点包括:键值(Key)、第一值的存储地址(Value’Offset)、该节点的左侧叶子节点的偏移位置(Left’Offset)和该节点的右侧叶子节点的偏移位置(Rigth’Offset)。本实施例中将第一键值存储在多个索引区域中。
步骤103、对第一键值进行哈希运算获得第一哈希值。
在本实施例中,对该第一键值进行哈希运算获得的第一哈希值在索引表中不存在哈希冲突,即在索引表中没有该第一哈希值。
步骤104、在索引表中记录第一哈希值,并且在索引表中记录该第一哈希值的位置记录i个索引区域的根节点的地址。
本实施例中,将第一哈希值存储在索引表中,并获取i个索引区域中的每个根节点地址,将根节点的地址对应存储在在索引表中存储第一哈希值的位置,即第一哈希值对应i个索引区域的根节点的地址。
本实施例提供的基于互联网协议IP盘的数据处理方法,通过接收携带第一值和第一键值的第一数据写请求,将第一键值存储在i个索引区域的根节点中,并根据第一键值中携带的存储地址将第一值存储在IP硬盘对应的位置,对第一键值进行哈希运算获得第一哈希值,在索引表中记录第一哈希值,并且在索引表中记录该第一哈希值的位置记录i个索引区域的根节点的地址。相较于现有技术,由于在多个索引区域的根节点中存储第一键值,防止单个第一键值所在索引区域故障导致无法读取数据的问题,有效地提升了数据存储的可靠性,而且,仅将占用空间小的第一键值存储在多个存储区中,相对于第一键值对应的第一值,占用空间少。
基于上述实施例,图4为本发明另一实施例提供的基于互联网协议IP盘的数据处理方法流程图。在上述实施例的基础上,如图4所示,本实施例的数据处理的方法还包括如下步骤。
步骤105、接收第二数据写请求,该第二数据写请求携带第二值和第二键值;其中,第二值中包含待写入数据,第二键值携带第二值的存储地址,并且第二键值与第一键值不同。
在本实施例中,通过IP协议向IP硬盘发送一个第二数据写请求,该第二数据写请求中包括第二值和第二键值。第二值中包含了待写入IP硬盘中的数据,第二键值携带第二值的存储地址,并且第二键值与第一键值不同。
步骤106、根据第二键值中的存储地址存储第二值。
在本实施例中,当IP硬盘接收到第二数据写请求后,根据第二键值中携带的存储地址将第二值存储到IP硬盘对应的位置。
步骤107、计算第二键值的哈希值得到第一哈希值。
在本实施例中,通过哈希算法计算第二键值的哈希值,该哈希值在索引表中存在哈希冲突,即该第二键值的哈希值和第一键值的哈希值相同,都为第一哈希值。
步骤108、将第二键值存储在第一哈希值对应的i个索引区域的每一个根节点的叶子节点中。
在本实施例中,以i=2为例具体说明该技术方案:图5为本发明实施例中将Key存储在i个索引区域中的原理示意图,如图5所示,在第一索引区域中,节点1为根节点,Key1存储在节点1中。第二键值中包含Key2和第二值对应的存储地址,比较Key2和Key1的大小,如果Key2大于Key1,则将第二键值存储到节点1的左侧叶子节点2中,并将节点2的偏移位置存储到节点1中;如果Key2小于Key1,则将第二键值存储在节点1的右侧叶子节点5中,并将节点5的偏移位置存储到节点1中。类似的,按照上述方法将第二键值存储到第二索引区域中。在后续接收到第二数据写请求之后,按照上述方法将第二键值存储到这两个索引区域中对应的叶子节点中。
本实施例提供的基于互联网协议IP盘的数据处理方法,通过接收包含第二值和第二键值的第二数据写请求,根据第二键值中的存储地址将第二值存储在IP硬盘中对应的位置,计算第二键值的哈希值得到第一哈希值,将第二键值存储在第一哈希值对应的i个索引区域的每一个根节点的叶子节点中。在多个索引区域的根节点中的叶子节点中存储第二键值,对第二键值进行备份存储,有效地提升了数据存储的可靠性,将第二键值存储在多个索引区域中,相对于第二键值对应的第二值,占用空间少。
基于上述实施例,图6为本发明又一实施例提供的基于互联网协议IP盘的数据处理方法流程图。如图6所示,本实施例的数据处理的方法包括如下步骤。
步骤201、接收第一数据读请求,该第一数据读请求携带第一键值。
在本实施例中,通过IP协议向IP硬盘发送一个第一数据读请求,该第一数据读请求中携带第一键值(Key)。
步骤202、计算第一键值获得第一哈希值,根据第一哈希值在索引表中查找根节点的地址。
在本实施例中,通过哈希算法计算第一键值的哈希值,即第一哈希值,在索引表中查找该第一哈希值,并在存储第一哈希值的位置获取多个索引区域中的任意一个索引区域对应的根节点的地址。
步骤203、根据根节点的地址访问第一键值,获得第一键值中携带的第一值的存储地址。
在本实施例中,获取到任意一个索引区域的根节点的地址后,访问该根节点,获取根节点中第一键值所携带的待读取的数据的存储地址,即第一值的存储地址。
步骤204、根据第一值的存储地址读取第一值。
本实施例中,在根节点中获取到第一值的存储地址后,根据该存储地址读取第一值。
优选地,本实施例中步骤203的具体包括如下方式:根据第一索引区域中的根节点的地址访问第一键值,当根据第一索引区域中的根节点的地址访问第一键值失败时,则从(i-1)个索引区域中的根节点地址中选择下一个地址访问第一键值,直到根据(i-1)个索引区域中的根节点地址中一个访问第一键值成功时,获得第一键值中存储的第一值的存储地址。其中,第一索引区域中的根节点为i个索引区域的根节点中的任意一个,即获取索引区域的根节点时不受索引区域序号的限制,可随机获取i个索引区域中的任意一个索引区域的根节点。
具体的,以i=6为例详细说明该技术方案,随机获取任意一个索引区域的根节点的地址,如获取到的是第3索引区域的根节点的地址,访问第3索引区域根节点中的第一键值时,发现无法查找到该根节点或者无法获取该根节点的第一键值,则访问失败,返回到索引表中,在索引表中存储第一哈希值的位置获取除了第3索引区域以外的其它5个索引区域中的任意一个索引区域的根节点的地址,如第2索引区的根节点,再访问该根节点的第一键值,依照此方法,直至在某一个索引区域中的根节点中成功访问第一键值,获取第一键值中携带的第一值的存储地址为止。
可选地,本实施例的步骤201~步骤204为上述图2所述实施例中步骤104或上述图4所述实施例中步骤108之后执行。
本实施例提供的基于互联网协议IP盘的数据处理方法,接收第一数据读请求,该第一数据读请求携带第一键值,计算第一键值获得第一哈希值,根据第一哈希值在索引表中查找根节点的地址,根据根节点的地址访问第一键值,获得第一键值中携带的第一值的存储地址,根据第一值的存储地址读取第一值,若在其中某一索引区域的根节点中访问第一键值失败,则获取其它索引区域的根节点的地址访问第一键值。由于在多个索引区域的根节点中存储第一键值,可以从多个索引区域中访问第一键值,并通过第一键值携带的存储地址读取第一值,当某一索引区域的根节点出现故障时,可从其他索引区域的根节点中访问第一键值,从而有效地提升了数据存储和读取的可靠性。
图7为本发明再一实施例提供的基于互联网协议IP盘的数据处理方法流程图。如图7所示,本实施例的数据处理的方法包括如下步骤。
步骤301、接收第一数据写请求,该第一数据写请求携带第一值和第一键值;其中,第一值中包含待写入数据,第一键值携带第一值的存储地址。
步骤302、将第一键值存储在i个索引区域的根节点中,根据第一键值中携带的存储地址存储第一值。
步骤303、对第一键值进行哈希运算获得第一哈希值。
步骤304、在索引表中记录第一哈希值,并且在索引表中记录该第一哈希值的位置记录i个索引区域的根节点的地址。
步骤305、接收第二数据写请求,该第二数据写请求携带第二值和第二键值;其中,第二值中包含待写入数据,第二键值携带第二值的存储地址,并且第二键值与第一键值不同。
步骤306、根据第二键值中的存储地址存储第二值。
步骤307、计算第二键值的哈希值得到第一哈希值。
步骤308、将第二键值存储在第一哈希值对应的i个索引区域的每一个根节点的叶子节点中。
本实施例中,步骤301~步骤308和图1、图2所述实施例中的步骤101~步骤108相同,此处不再赘述。
步骤309、接收第三数据读请求,该第三数据读请求携带第三键值,第三键值为第一键值或第二键值。
本实施例中,第三数据读请求携带第三键值,第三键值包括第一键值或者第二键值。
步骤310、计算第三键值获得第一哈希值。
本实施例中,计算第三键值中第一键值对应的哈希值,或者,计算第三键值中第二键值对应的哈希值,第一键值的哈希值和第二键值的哈希值均为第一哈希值。
步骤311、根据第一哈希值查询索引表,以获得第三键值在i个索引区域中根节点的地址以访问i个索引区域中第三键值所对应的节点。
本实施例中,当第三键值为第一键值时,则获取任意一个索引区域的根节点的地址,访问该根节点中的第一键值。
当所述第三键值为第二键值时,则获取任意一个索引区域的根节点的地址,从该根节点开始访问,具体访问过程如下:如图5所示,以第二索引区域为例,从其中的根节点即节点1开始,即先读取节点1中的Key,然后判断节点1中的Key是否与第二键值中的Key相等,若节点1中的Key与第二键值中的Key相等,则该节点即为第三键值对应的节点;若第二键值中的Key大于节点1中的Key,则获取节点1的Left’Offset,找到节点1的左侧叶子节点即节点2,和节点2中的Key比较,其比较方法和上述方法相同;若第二键值中的Key小于节点1中的Key,则获取节点1中的Right’Offset,找到节点1的右侧叶子节点即节点5,和节点5中的Key进行比较,比较方法和上述方法相同。以此类推,直到在第二索引区域中找到与第二键值中的Key相等的节点为止。
步骤312、当第m个索引区域中的第三键值对应的节点访问失败,访问从第n个索引区域中的第三键值对应的节点,获得第三键值中存储的第三值的地址,根据第三值的地址读取第三值。
本实施例中,以m=2,n=5为例说明该技术方案,当在第二个索引区中访问第三键值对应的节点时,发现该节点无法获取或者无法获取该节点中的存储的Key,则访问失败,返回到索引表中,查找到该第三键值对应的第一哈希值的存储位置,随机获取除第二个索引区域以外的任意一个索引区域,如第五个索引区域,则在第五索引区域中从根节点开始,访问第三键值对应的节点,找到该节点后,获取存储在该节点中的第三值的地址,根据第三值的地址读取第三值。
其中,访问第三键值对应的节点的方法与步骤311相同,此处不再赘述。
步骤313、复制第n个索引区域中的第三键值对应的节点及其叶子节点至第m个索引区域中以作为第m个索引区域中第三键值对应的节点及其叶子节点。
本实施例中,和步骤312相对应,以m=2,n=5为例说明该技术方案,复制第五个索引区域中第三键值对应的节点中的Key和Value’Offset构成一个新的节点,同样将该节点的子树的各节点(或称叶子节点)的Key和Value’Offset复制构成该新节点的子树的各个节点,然后将新的节点和其子树的各个节点构成一个新的二叉树,并为该新的二叉树中的每个节点分配一个新的偏移位置,在相应的父节点中更新Left’Offset和Rigth’Offset,再用该新的二叉树替换第二索引区域中的第三键值对应的节点和其子树节点所构建的二叉树。
本实施例提供的基于互联网协议IP盘的数据处理方法,通过接收到的第一数据写请求和第二数据写请求,将第一键值存储在i个索引区域的根节点中,第二键值存储在i个索引区域的根节点的叶子节点中,当接收携带第三键值的第三数据读请求时,计算第三键值获得第一哈希值,根据第一哈希值查询索引表,获取第三键值在i个索引区域中根节点的地址,访问第三键值对应的根节点,当第m个索引区域中的第三键值对应的节点访问失败,访问从第n个索引区域中的第三键值对应的节点,获得第三键值中存储的第三值的地址,根据第三值的地址读取第三值,并且,复制第n个索引区域中的第三键值对应的节点及其叶子节点至第m个索引区域中以作为第m个索引区域中第三键值对应的节点及其叶子节点。由于在多个索引区域存储第一键值和第二键值,当某一个索引区域的节点出现故障时,可以通过其他索引区域获取与第一键值或者第二键值,从而根据键值获取待读取的数据,因此有效地提升了数据存储的可靠性。并且,第一键值和第二键值存储在多个存储区中,相对于键值对应的值,占用空间少。
图8为本发明一实施例提供的基于互联网协议IP盘的数据处理装置结构示意图。如图8所示,该装置包括接收模块11、存储模块12、运算模块13和记录模块14。接收模块11用于接收第一数据写请求,第一数据写请求携带第一值和第一键值;其中,第一值中包含待写入数据,第一键值携带第一值的存储地址。存储模块12用于将第一键值存储在i个索引区域的根节点中,根据第一键值中携带的存储地址存储第一值。运算模块13用于对第一键值进行哈希运算获得第一哈希值。记录模块14用于在索引表中记录第一哈希值,并且在索引表中记录第一哈希值的位置记录i个索引区域的根节点的地址;其中,i为整数,并且i不小于2。
本实施例中的数据的处理装置可以执行图2所示方法实施例的技术方案,其实现原理和有益效果均相同,此处不再赘述。
进一步的,在本发明的另一个实施例中,在上述图8所实施例的基础上,本实施例接收模块11还用于接收第二数据写请求,第二数据写请求携带第二值和第二键值;其中,第二值中包含待写入数据,第二键值携带第二值的存储地址,并且第二键值与第一键值不同。存储模块12还用于根据第二键值中的存储地址存储第二值。运算模块13还用于计算第二键值的哈希值得到第一哈希值。存储模块14还用于将第二键值存储在第一哈希值对应的i个索引区域的每一个根节点的叶子节点中。
本实施例中的装置可以执行图4所示方法实施例的技术方案,其实现原理和有益效果均相同,此处不再赘述。
图9为本发明另一实施例提供的基于互联网协议IP盘的数据处理装置结构示意图。在上述图8所实施例的基础上,如图9所示,该装置还包括查询模块21、访问模块22和读取模块23。其中,接收模块11还用于接收第一数据读请求,第一数据读请求携带第一键值。查询模块21用于计算第一键值获得第一哈希值,根据第一哈希值在索引表中查找根节点的地址。访问模块22用于根据根节点的地址访问第一键值,获得第一键值中携带的第一值的存储地址。读取模块23用于根据第一值的存储地址读取第一值。
优选地,在上述图9所述实施例的基础上,访问模块22具体用于:根据第一索引区域中的根节点的地址访问第一键值,当根据第一索引区域中的根节点的地址访问第一键值失败时,则从(i-1)个索引区域中的根节点地址中选择下一个地址访问第一键值,直到根据(i-1)个索引区域中的根节点地址中一个访问第一键值成功时,获得第一键值中携带的第一值的存储地址;其中,第一索引区域中的根节点为i个索引区域的根节点中的任意一个。
本实施例提供的基于互联网协议IP盘的数据处理装置,通过接收模块11接收携带第一键值的第一数据读请求,查询模块21计算第一键值获得第一哈希值,根据第一哈希值在索引表中查找根节点的地址,访问模块22对第一键值进行访问,获得第一值得存储地址,通过读取模块23根据第一值的存储地址读取第一值,其中,当根据第一索引区域中的根节点的地址访问第一键值失败时,则从(i-1)个索引区域中的根节点地址中选择下一个地址访问第一键值,直到根据(i-1)个索引区域中的根节点地址中一个访问第一键值成功时,获得第一键值中携带的第一值的存储地址。相较于现有技术,由于在IP硬盘内部多个索引区域的根节点中存储第一键值,可以从多个索引区域中访问第一键值,并通过第一键值携带的存储地址读取第一值,当某一索引区域的根节点出现故障时,可从其他索引区域的根节点中访问第一键值,从而有效地提升了数据存储和读取的可靠性。
图10为本发明又一实施例提供的基于互联网协议IP盘的数据处理装置结构示意图。在图9所述实施例的基础上,如图10所示,该装置还包括复制模块24。
本实施例中,接收模块11还用于接收第三数据读请求,第三数据读请求携带第三键值,第三键值为第一键值或第二键值。运算模块13还用于计算第三键值获得第一哈希值。查询模块21还用于根据第一哈希值查询索引表,以获得第三键值在i个索引区域中根节点的地址以访问i个索引区域中第三键值所对应的节点。访问模块22还用于当第m个索引区域中的第三键值对应的节点访问失败,访问从第n个索引区域中的第三键值对应的节点,获得第三键值中存储的第三值的存储地址。读取模块23还用于根据第三值的存储地址读取第三值。复制模块24用于复制第n个索引区域中的第三键值对应的节点及其叶子节点至第m个索引区域中以作为第m个索引区域中第三键值对应的节点及其叶子节点。
本实施例中的数据的处理装置可以执行图7所示方法实施例的技术方案,其实现原理和有益效果均相同,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种基于互联网协议IP盘的数据处理方法,其特征在于,所述方法包括:
接收第一数据写请求,所述第一数据写请求携带第一值和第一键值;其中,所述第一值中包含待写入数据,所述第一键值携带所述第一值的存储地址;
将所述第一键值存储在i个索引区域的根节点中,根据所述第一键值中携带的存储地址存储所述第一值;
对所述第一键值进行哈希运算获得第一哈希值;
在索引表中记录所述第一哈希值,并且在所述索引表中记录所述第一哈希值的位置记录所述i个索引区域的根节点的地址;其中,i为整数,并且i不小于2。
2.根据权利要求1所述的方法,其特征在于,还包括,接收第二数据写请求,所述第二数据写请求携带第二值和第二键值;其中,所述第二值中包含待写入数据,所述第二键值携带所述第二值的存储地址,并且所述第二键值与所述第一键值不同;
根据所述第二键值中的存储地址存储所述第二值;
计算所述第二键值的哈希值得到所述第一哈希值;
将所述第二键值存储在所述第一哈希值对应的所述i个索引区域的每一个根节点的叶子节点中。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
接收第一数据读请求,所述第一数据读请求携带所述第一键值;
计算所述第一键值获得所述第一哈希值,根据所述第一哈希值在所述索引表中查找所述根节点的地址;
根据所述根节点的地址访问所述第一键值,获得所述第一键值中携带的所述第一值的存储地址;
根据所述第一值的存储地址读取所述第一值。
4.根据权利要求3所述的方法,其特征在于,所述根据所述根节点的地址访问所述第一键值,获得所述第一键值中携带的所述第一值的存储地址,具体包括:
根据第一索引区域中的根节点的地址访问所述第一键值,当根据所述第一索引区域中的根节点的地址访问所述第一键值失败时,则从(i-1)个索引区域中的根节点地址中选择下一个地址访问所述第一键值,直到根据所述(i-1)个索引区域中的根节点地址中一个访问所述第一键值成功时,获得所述第一键值中携带的所述第一值的存储地址;其中,所述第一索引区域中的根节点为所述i个索引区域的根节点中的任意一个。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:接收第三数据读请求,所述第三数据读请求携带第三键值,所述第三键值为所述第一键值或所述第二键值;
计算所述第三键值获得所述第一哈希值;
根据所述第一哈希值查询所述索引表,以获得所述第三键值在所述i个索引区域中所述根节点的地址以访问所述i个索引区域中所述第三键值所对应的节点;
当第m个索引区域中的所述第三键值对应的节点访问失败,访问从第n个索引区域中的所述第三键值对应的节点,获得所述第三键值中存储的第三值的存储地址,根据所述第三值的存储地址读取所述第三值;
复制所述第n个索引区域中的所述第三键值对应的节点及其叶子节点至所述第m个索引区域中以作为所述第m个索引区域中所述第三键值对应的节点及其叶子节点。
6.一种基于互联网协议IP盘的数据处理装置,其特征在于,包括:
接收模块,用于接收第一数据写请求,所述第一数据写请求携带第一值和第一键值;其中,所述第一值中包含待写入数据,所述第一键值携带所述第一值的存储地址;
存储模块,用于将所述第一键值存储在i个索引区域的根节点中,根据所述第一键值中携带的存储地址存储所述第一值;
运算模块,用于对所述第一键值进行哈希运算获得第一哈希值;
记录模块,用于在索引表中记录所述第一哈希值,并且在所述索引表中记录所述第一哈希值的位置记录所述i个索引区域的根节点的地址;其中,i为整数,并且i不小于2。
7.根据权利要求6所述的装置,其特征在于,
所述接收模块,还用于接收第二数据写请求,所述第二数据写请求携带第二值和第二键值;其中,所述第二值中包含待写入数据,所述第二键值携带所述第二值的存储地址,并且所述第二键值与所述第一键值不同;
所述存储模块,还用于根据所述第二键值中的存储地址存储所述第二值;
所述运算模块,还用于计算所述第二键值的哈希值得到所述第一哈希值;
所述存储模块,还用于将所述第二键值存储在所述第一哈希值对应的所述i个索引区域的每一个根节点的叶子节点中。
8.根据权利要求6或7所述的装置,其特征在于,
所述接收模块,还用于接收第一数据读请求,所述第一数据读请求携带所述第一键值;
所述装置还包括:
查询模块,用于计算所述第一键值获得所述第一哈希值,根据所述第一哈希值在所述索引表中查找所述根节点的地址;
访问模块,用于根据所述根节点的地址访问所述第一键值,获得所述第一键值中携带的所述第一值的存储地址;
读取模块,用于根据所述第一值的存储地址读取所述第一值。
9.根据权利要求8所述的装置,其特征在于,所述访问模块具体用于:
根据第一索引区域中的根节点的地址访问所述第一键值,当根据所述第一索引区域中的根节点的地址访问所述第一键值失败时,则从(i-1)个索引区域中的根节点地址中选择下一个地址访问所述第一键值,直到根据所述(i-1)个索引区域中的根节点地址中一个访问所述第一键值成功时,获得所述第一键值中携带的所述第一值的存储地址;其中,所述第一索引区域中的根节点为所述i个索引区域的根节点中的任意一个。
10.根据权利要求7所述的装置,其特征在于,
所述接收模块,还用于接收第三数据读请求,所述第三数据读请求携带第三键值,所述第三键值为所述第一键值或所述第二键值;
所述运算模块,还用于计算所述第三键值获得所述第一哈希值;
所述查询模块,还用于根据所述第一哈希值查询所述索引表,以获得所述第三键值在所述i个索引区域中所述根节点的地址以访问所述i个索引区域中所述第三键值所对应的节点;
所述访问模块,还用于当第m个索引区域中的所述第三键值对应的节点访问失败,访问从第n个索引区域中的所述第三键值对应的节点,获得所述第三键值中存储的第三值的存储地址;
所述读取模块,还用于根据所述第三值的存储地址读取所述第三值;
所述装置还包括:
复制模块,用于复制所述第n个索引区域中的所述第三键值对应的节点及其叶子节点至所述第m个索引区域中以作为所述第m个索引区域中所述第三键值对应的节点及其叶子节点。
CN201410219411.XA 2014-05-22 2014-05-22 基于互联网协议ip盘的数据处理方法和装置 Active CN103973810B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410219411.XA CN103973810B (zh) 2014-05-22 2014-05-22 基于互联网协议ip盘的数据处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410219411.XA CN103973810B (zh) 2014-05-22 2014-05-22 基于互联网协议ip盘的数据处理方法和装置

Publications (2)

Publication Number Publication Date
CN103973810A true CN103973810A (zh) 2014-08-06
CN103973810B CN103973810B (zh) 2018-01-16

Family

ID=51242843

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410219411.XA Active CN103973810B (zh) 2014-05-22 2014-05-22 基于互联网协议ip盘的数据处理方法和装置

Country Status (1)

Country Link
CN (1) CN103973810B (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461378A (zh) * 2014-10-30 2015-03-25 华为技术有限公司 将数据对象写入ip硬盘的方法、装置及系统
CN105468300A (zh) * 2015-11-20 2016-04-06 华为技术有限公司 Ip硬盘的管理方法和装置
WO2016050139A1 (zh) * 2014-09-29 2016-04-07 华为技术有限公司 数据写入方法及装置
CN105631023A (zh) * 2015-12-30 2016-06-01 华为技术有限公司 分布式锁服务的方法和装置
WO2016082560A1 (zh) * 2014-11-26 2016-06-02 华为技术有限公司 一种检测键的方法和服务器
CN106202548A (zh) * 2016-07-25 2016-12-07 网易(杭州)网络有限公司 数据存储方法、查找方法及装置
CN106339270A (zh) * 2016-08-26 2017-01-18 华为技术有限公司 数据校验方法及装置
WO2017113960A1 (zh) * 2015-12-28 2017-07-06 华为技术有限公司 一种数据处理方法以及NVMe存储器
CN107122139A (zh) * 2017-04-28 2017-09-01 深圳天珑无线科技有限公司 数据写入方法及装置、数据读取方法及装置
CN109656480A (zh) * 2018-12-12 2019-04-19 广东浪潮大数据研究有限公司 一种ssd缓存池的管理方法、系统以及装置
WO2019119764A1 (zh) * 2017-12-21 2019-06-27 北京忆恒创源科技有限公司 Kv存储设备的地址转换方法与系统
CN111241108A (zh) * 2020-01-16 2020-06-05 北京百度网讯科技有限公司 基于键值对kv系统的索引方法、装置、电子设备和介质
CN111752480A (zh) * 2016-03-24 2020-10-09 华为技术有限公司 一种数据写方法、数据读方法及相关设备、系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040143582A1 (en) * 2003-01-17 2004-07-22 Jonathan Vu System and method for structuring data in a computer system
CN101150489A (zh) * 2007-10-19 2008-03-26 四川长虹电器股份有限公司 基于分布式哈希表的资源共享方法
CN101505473A (zh) * 2008-02-05 2009-08-12 华为技术有限公司 电信网络用户数据存储管理的方法及装置
CN101753596A (zh) * 2008-12-18 2010-06-23 华为技术有限公司 一种p2p中控制资源发布的方法、系统和设备
CN102004797A (zh) * 2010-12-24 2011-04-06 深圳市同洲电子股份有限公司 一种数据处理方法、装置和系统
CN102739622A (zh) * 2011-04-15 2012-10-17 北京兴宇中科科技开发股份有限公司 一种可扩展的数据存储系统
CN103067525A (zh) * 2013-01-18 2013-04-24 广东工业大学 一种基于特征码的云存储数据备份方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040143582A1 (en) * 2003-01-17 2004-07-22 Jonathan Vu System and method for structuring data in a computer system
CN101150489A (zh) * 2007-10-19 2008-03-26 四川长虹电器股份有限公司 基于分布式哈希表的资源共享方法
CN101505473A (zh) * 2008-02-05 2009-08-12 华为技术有限公司 电信网络用户数据存储管理的方法及装置
CN101753596A (zh) * 2008-12-18 2010-06-23 华为技术有限公司 一种p2p中控制资源发布的方法、系统和设备
CN102004797A (zh) * 2010-12-24 2011-04-06 深圳市同洲电子股份有限公司 一种数据处理方法、装置和系统
CN102739622A (zh) * 2011-04-15 2012-10-17 北京兴宇中科科技开发股份有限公司 一种可扩展的数据存储系统
CN103067525A (zh) * 2013-01-18 2013-04-24 广东工业大学 一种基于特征码的云存储数据备份方法

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016050139A1 (zh) * 2014-09-29 2016-04-07 华为技术有限公司 数据写入方法及装置
WO2016065927A1 (zh) * 2014-10-30 2016-05-06 华为技术有限公司 将数据对象写入ip硬盘的方法、装置及系统
CN104461378B (zh) * 2014-10-30 2017-09-26 华为技术有限公司 将数据对象写入ip硬盘的方法、装置及系统
CN104461378A (zh) * 2014-10-30 2015-03-25 华为技术有限公司 将数据对象写入ip硬盘的方法、装置及系统
CN104461817B (zh) * 2014-11-26 2017-08-11 华为技术有限公司 一种检测键的方法和服务器
WO2016082560A1 (zh) * 2014-11-26 2016-06-02 华为技术有限公司 一种检测键的方法和服务器
CN105468300A (zh) * 2015-11-20 2016-04-06 华为技术有限公司 Ip硬盘的管理方法和装置
CN105468300B (zh) * 2015-11-20 2018-08-14 华为技术有限公司 Ip硬盘的管理方法和装置
WO2017113960A1 (zh) * 2015-12-28 2017-07-06 华为技术有限公司 一种数据处理方法以及NVMe存储器
US10705974B2 (en) 2015-12-28 2020-07-07 Huawei Technologies Co., Ltd. Data processing method and NVME storage device
US11467975B2 (en) 2015-12-28 2022-10-11 Huawei Technologies Co., Ltd. Data processing method and NVMe storage device
CN105631023A (zh) * 2015-12-30 2016-06-01 华为技术有限公司 分布式锁服务的方法和装置
CN105631023B (zh) * 2015-12-30 2019-03-26 华为技术有限公司 分布式锁服务的方法和装置
CN111752480A (zh) * 2016-03-24 2020-10-09 华为技术有限公司 一种数据写方法、数据读方法及相关设备、系统
CN106202548A (zh) * 2016-07-25 2016-12-07 网易(杭州)网络有限公司 数据存储方法、查找方法及装置
CN106202548B (zh) * 2016-07-25 2018-09-04 网易(杭州)网络有限公司 数据存储方法、查找方法及装置
CN106339270A (zh) * 2016-08-26 2017-01-18 华为技术有限公司 数据校验方法及装置
CN107122139A (zh) * 2017-04-28 2017-09-01 深圳天珑无线科技有限公司 数据写入方法及装置、数据读取方法及装置
WO2019119764A1 (zh) * 2017-12-21 2019-06-27 北京忆恒创源科技有限公司 Kv存储设备的地址转换方法与系统
US11449270B2 (en) 2017-12-21 2022-09-20 Beijing Memblaze Technology Co., Ltd Address translation method and system for KV storage device
CN109656480A (zh) * 2018-12-12 2019-04-19 广东浪潮大数据研究有限公司 一种ssd缓存池的管理方法、系统以及装置
CN111241108A (zh) * 2020-01-16 2020-06-05 北京百度网讯科技有限公司 基于键值对kv系统的索引方法、装置、电子设备和介质
CN111241108B (zh) * 2020-01-16 2023-12-26 北京百度网讯科技有限公司 基于键值对kv系统的索引方法、装置、电子设备和介质

Also Published As

Publication number Publication date
CN103973810B (zh) 2018-01-16

Similar Documents

Publication Publication Date Title
CN103973810A (zh) 基于互联网协议ip盘的数据处理方法和装置
US10296239B1 (en) Object-based commands with quality of service identifiers
US8762353B2 (en) Elimination of duplicate objects in storage clusters
CN107391758B (zh) 数据库切换方法、装置及设备
CN103136243B (zh) 基于云存储的文件系统去重方法及装置
EP2863310B1 (en) Data processing method and apparatus, and shared storage device
CN104794123A (zh) 一种为半结构化数据构建NoSQL数据库索引的方法及装置
US20170149883A1 (en) Data replication in a data storage system having a disjointed network
CN106874348B (zh) 文件存储和索引方法、装置及读取文件的方法
US20140189423A1 (en) Two level addressing in storage clusters
US10516732B2 (en) Disconnected ingest in a distributed storage system
CN105205082A (zh) 用于处理hdfs中的文件存储的方法和系统
US11176110B2 (en) Data updating method and device for a distributed database system
CN110888837B (zh) 对象存储小文件归并方法及装置
CN104020961A (zh) 分布式数据存储方法、装置及系统
CN107580032B (zh) 数据处理方法、装置及设备
CN111083179A (zh) 物联网云平台、基于物联网云平台的设备交互方法及装置
CN104965835A (zh) 一种分布式文件系统的文件读写方法及装置
CN102073733A (zh) 哈希表管理方法及装置
US9684668B1 (en) Systems and methods for performing lookups on distributed deduplicated data systems
US8732365B2 (en) Input/output system and methods to couple a storage device to the same server after movement in an input/output system
CN114281242B (zh) 存储器负载均衡的方法、装置和设备
US10452492B2 (en) Method, apparatus, and computer program stored in computer readable medium for recovering block in database system
CN111143366B (zh) 一种针对海量大对象数据的高效能存储方法
KR102274656B1 (ko) 블록체인 네트워크에서 데이터를 관리하기 위한 기법

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