CN107885612B - 数据处理方法和系统及装置 - Google Patents
数据处理方法和系统及装置 Download PDFInfo
- Publication number
- CN107885612B CN107885612B CN201610875562.XA CN201610875562A CN107885612B CN 107885612 B CN107885612 B CN 107885612B CN 201610875562 A CN201610875562 A CN 201610875562A CN 107885612 B CN107885612 B CN 107885612B
- Authority
- CN
- China
- Prior art keywords
- data
- target
- data object
- storage
- data block
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
- G06F11/1016—Error in accessing a memory location, i.e. addressing error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种处理数据的方法,其包括:对预定大小的数据块进行编码,生成与所述数据块对应的纠错数据块,其中,所述数据块包括数据对象,其中所述数据对象包括,关键字,值,以及元数据;生成数据块索引以及数据对象索引,所述数据块索引用于索引所述数据块及与所述数据块对应的纠错数据块,所述数据对象索引用于在所述数据块中索引所述数据对象,其中,每个数据对象索引用于索引唯一一个数据对象。
Description
技术领域
本发明涉及计算领域,并且更具体地,涉及一种数据处理方法和系统及装置。
背景技术
随着内存价格的下降,分布式内存存储系统广泛应用于分布式运算系统中,用于存储热数据,其中键值(key-Value,KV)对存储是使用最为广范的数据存储方式,当前主流的商用的产品有Memcached,Redis,RAMCloud等,在Twitter、Facebook以Amazon的数据存储系统中有商业化应用。
分布式内存存储系统的主流容错方法主要是全备份方案,其方式是将一份数据整体复制到不同的设备上,当部分设备失效时,可以使用备份在其他未失效的设备上的备份数据来恢复失效设备中的数据。这种实现方案简单可靠,但存在较大的数据冗余,至少需要两份以上的备份。而且为保证数据一致性,修改数据时的效率不高。
另外一种容错方案是纠删码编码(Erasure Coding,EC)容错方案,使用纠删码技术,对数据编码,得到纠删码(Parity),纠删码的长度一般会小于原数据,通过将原数据和纠删码分布到不同的多个设备上,当部分设备失效时,可以通过部分的原数据和部分的纠删码恢复完整的数据,这样整体的数据冗余率就小于2,实现节省内存的目的。
当前主流的使用纠删码的技术有LH*RS、Atlas、Cocytus等,这些技术采用的是对键值对(KV)的值进行纠删码编码,对键值对的其他数据仍然采用全备份方案。具体来说,通常某一个第一目标数据(Object)的KV数据结构中的包含三部分,Key,Value,以及Metadata,其中,Key为所述第一目标数据唯一的标示符,通过Key可以唯一的确定对应的第一目标数据;Value则是所述第一目标数据的实际内容;而,Metadata内保存着第一目标数据的一些属性信息,比如Key的大小,Value的大小,创建/修改所述第一目标数据的时间戳等信息。采用目前主流的纠删码技术对一个第一目标数据进行备份时,第一目标数据的Metadata和Key这两部分使用全备份方案,将Value采用EC方案。例如,若需要存储备份三个数据对象,使用M1、M2、M3及Data1、Data2、Data3表示,其中M是指数据对象的Metadata和Key,Data指数据对象的Value,将Data1、Data2、Data3使用EC编码,得到纠错码Parity1和Parity2,然后将Data1、Data、Data3、Parity1、Parity2这5份数据分布到5个设备上,然后将M1、M2、M3全复制三份,部署到5个设备上。
这种方案也可以称之为部分编码存储方案。部分编码存储方案在存储大数据对象的场景下,也就是Metadata和Key的数据长度要远小于Value的数据长度这种场景下具有较高的存储效率。但是,这种方案在处理小数据对象时效率低下,因为小数据对象中,Metadata和Key与Value的数据长度的大小差异不大,甚至Metadata和Key的数据长度大于Value的数据长度。从Facebook公布的资料,存储在内存存储中的数据对象中的绝大多数都是小数据对象,甚至有40%以上都小于11bit,说明绝大多数数据都是小数据,而这种部分编码存储方案并不能发挥EC编码的优势,而使得数据存储冗余较大,存储成本增加。
发明内容
本申请提供一种数据处理方法和系统及装置,可以降低数据对象存储的数据冗余,降低存储成本。
第一方面,本申请提供了一种处理数据的方法,其包括:对预定大小的数据块进行编码,生成与所述数据块对应的纠错数据块,其中,所述数据块包括数据对象,其中所述数据对象包括,关键字,值,以及元数据;
生成数据块索引以及数据对象索引,所述数据块索引用于索引所述数据块及与所述数据块对应的纠错数据块,所述数据对象索引用于在所述数据块中索引所述数据对象,其中,每个数据对象索引用于索引唯一一个数据对象。
该方法中将多个数据对象集合在一个数据块中进行集中的编码,能够有效的发挥编码备份数据的优点,即,具有较低的数据冗余,避免了对每个数据对象单独采用编码备份带来的效率低下,系统冗余高的弊端。
根据本发明第一方面的第一种实施方式,在对预定大小的数据块进行编码,生成与所述数据块对应的纠错数据块之前,所述方法需要先将所述多个数据对象存储在所述预定大小的数据块中,所述预定大小的数据块位于在第一存储设备中;所述预定大小的数据块具体可以是所述第一存储设备中一段未被占用的存储地址;所述的预定的大小指的是能够发挥编码备份的优点,又能保证存储在所述数据块内的数据对象的读取速度以及存储可靠性的最佳数据大小,比如4K。在对预定大小的数据块进行编码,生成与所述数据块对应的纠错数据块之后,所述方法还包括:将所述的纠错数据存储在第二存储设备中,所述第一存储设备与第二存储设备位于分布式存储系统中的不同位置。
本方法中将数据块和对应的纠错数据块存储在分布式存储系统中的不同的存储位置,如第一存储设备和第二存储设备中,从而能够保证在所述部分第一存储设备故障时能够根据第二存储设备及部分工作的第一存储设备中的数据来恢复故障的存储设备中的数据,从而该分布式存储系统能够具有满足基本要求的容灾能力,即可靠性。所述的第一存储设备可以理解为用于存储所述数据块的常规的数据服务器,所述第二存储设备可以理解为存储所述数据块的纠错数据块的校验服务器,当K个数据服务器以及M个校验服务器中的不多于M个服务器(M个数据服务器,M个校验服务器,或者M个混合有数据服务器及校验服务器的服务器)故障时,剩余的K个服务器可以通过编码算法将故障服务器中的数据进行恢复。所述的编码方法可以是EC编码或者是XOR编码或者其他能够实现数据编码备份的编码方法。
结合本发明第一方面的第一种实施方式的另一种实施方式,所述的数据块索引包括:
所述的数据块索引包括:条带列表ID,条带ID,以及位置信息,所述的条带列表ID用于唯一确定所述分布式存储系统中多个存储设备分组中的一个存储设备分组,其中所述的存储设备分组包括多个第一设备及多个第二设备;所述条带ID用于确定在所述条带列表ID所指示的存储设备分组中存储所述数据块以及与所述数据块对应的纠错数据块的操作序号;所述位置信息用于确定所述数据块在所述条带列表ID所确定的存储设备分组中哪一个第一存储设备中,以及所述纠错数据块在所述条带列表ID所确定的存储设备分组中哪一个第二存储设备中。
为了能够实现在某个存储设备故障时对该存储设备进行恢复,本发明采用条带列表ID,条带ID,以及位置信息的三级索引方式来索引数据块,当客户端需要访问某个数据块时,便可以根据该索引并结合数据对象索引的关键字来重构正确的数据块,同时在故障期间的所有请求,都可以根据条带ID所确定的其他的存储设备来代为处理,并在故障存储设备回复后,将数据统一迁移至所述恢复后的存储设备中,有效的保证了运用该数据管理方法的分布式存储设备的可靠性。所述的数据块索引和所述的数据对象索引在第一存储设备及第二存储设备中各存储一套,在所述第一存储设备中生成数据块索引以及数据对象索引;以及在所述第二存储设备中生成所述数据块索引以及所述数据对象索引,从而不需要进行冗余备份,当设备故障恢复之后,可以在本地重建索引即可。
结合本发明第一方面的任意一种实施方式的另一种实施方式中,在将所述多个数据对象存储在所述预定大小的数据块中之前,所述方法还包括:选择一个第一存储设备,以及一个或者多个第二存储设备;将所述多个数据对象分别发送给所述第一存储设备,以及第二存储设备。
本发明的数据存储方法允许在客户端在发送业务请求之前,例如存储数据的业务请求之前,来指定第一存储设备和第二存储设备,所说的第一存储设备和第二存储设备可以预先选定的,即第二存储设备是所述第一存储设备的专用的备份节点,即校验服务器,如此,可以简化在数据存储备份过程中的寻址操作,为了方便查找所述第一存储设备及所述的第二存储设备,将所述第一存储设备及第二存储设备包含在同一个条带内,使其具有相同的条带标识,即,条带ID。此外,在选择所述第二存储设备时,还可以参考分布式存储系统中的多个备选存储设备的负载情况,将负载最小的一个或者多个备选存储设备作为所述的一个或者多个第二存储设备,如此能够均衡整个分布式存储系统中的各个节点的工作负载,提高设备的利用率,从而提升整体的数据处理效率。
结合本发明第一方面的第三实施方式的另一种实施方式中,所述第一存储设备将所述数据对象存储在所述数据块内,当所述数据块内的数据对象的大小接近或者等于所述数据块的存储限值时,停止向所述数据块写入新数据对象,并将所述数据块内的所存储的所有的数据对象的Key值发送给所述第二存储设备;
所述第二存储设备接收所述所述第一存储设备发送的所述数据块内的所有数据对象的Key值,并根据所述数据对象的Key值在所述第二存储设备内重建所述数据块,对重建的所述数据块进行所述的编码。
该方法保证每个数据块中的内容都不大于预设的存储限值,从而保证该数据管理方法中的最小的数据单元的大小,保证系统吞吐量的同时,能够充分的发挥编码备份的有点。
结合本发明第一方面的任意一种实施方式的第五种实施方式中,当所述数据块内包含多个数据对象时,所述方法还包括:判断待存储的数据对象是否小于阈值,并将小于阈值的所述待存储的数据对象作为可存储在所述数据块内的数据对象进行所述的存储以及编码。
为有效的发挥本发明数据管理方法的有点,避开对较大的数据对象存储至数据块内时的数据分割等操作,采用阈值过滤的方式,将小数据对象存储在所述的数据块中,从而保证本方法能够有效的解决小数据对象在存储备份中的效率不高以及数据冗余大的弊端。此外,在一段连续的时间内,数据对象的大小往往具有一定的相似性,因此,本方法还可以对所述阈值进行动态的调整,从而能够使该方法的适用范围更广泛,更能够适应互联网的数据特性。
结合本发明第一方面的任意一种实施方式的另一种实施方式中,所述方法还包括:所述第一存储设备将所述数据对象存储在所述数据块内,包括,当所述数据对象的尺寸大于所述数据块的存储空间的尺寸时,或者当所述数据对象的尺寸大于所述数据块中剩余的存储空间的尺寸时,将所述数据对象进行分割,将分割后的尺寸小于所述数据块的存储空间的尺寸或者小于所述数据块中剩余的存储空间的尺寸的分割数据对象存储在所述数据块内,并将数据块分割信息存储在所述被分割的数据对象的元数据中用于重新组合所述被分割的数据对象。
在对数据对象进行存储的过程中,如果数据对象过大或者数据对象的尺寸大于数据块的存储空间的尺寸时,本发明可以允许对数据块分割后进行存储,如此可以提高本方法的适用性并降低方法的复杂度。
第二方面,提供一种数据管理方法,所述方法包括:为待存储数据对象,选择一个存储节点,以及多个备份节点,所述存储节点和所述多个备份节点具有相同的条带列表ID;将所述待存储数据对象发送给所述存储节点及所述多个备份节点,所述数据对象包括元数据,关键字以及值;
在所述存储节点内,所述待存储数据对象被存储在固定大小且未封盖的数据块中,所述待存储数据对象的数据索引信息被增加至数据索引中,所述数据索引包含所述数据块中所有的数据对象的数据索引信息,并生成数据块索引;在备份节点内,所述待存储数据对象被存储在临时缓冲区内;当所述待存储数据对象被存储在所述数据块内之后,若所述数据块内存储的所有数据对象的总数据尺寸接近所述数据块的存储限值时,所述所述数据块被封盖,所述被封盖的数据块内存储的所有数据对象的关键字列表被发送至所述备份节点,并为所述存储节点以及所述备份节点生成相同的条带ID;
当所述备份节点接收所述关键字列表,根据所述关键字列表中的关键字从所述临时缓冲区中检索出与所述关键字对应的数据对象,根据所述数据对象重建与所述关键字列表对应的数据块,并对所述重建的数据块进行编码获得备份数据块,且,更新存储在所述备份节点且对应于所述被封盖的数据块的所述数据对象索引以及所述数据块索引。
该方法中将多个数据对象集合在一个数据块中进行集中的编码,能够有效的发挥编码备份数据的优点,即,具有较低的数据冗余,避免了对每个数据对象单独采用编码备份带来的效率低下,系统冗余高的弊端。需要说明的是,该方法中,所述的存储节点以及所述备份节点通常设置正在一个分布式存储系统的不同位置处,以提供所需要的容灾能力,即某个存储节点故障时能够通过备份节点恢复出存储节点中的内容。此外,该方法中在进行数据存储中的方法可以与本发明第一方面所提供方法结合,比如本发明第一方面提供的关于存储设备的选择,数据对象的筛选,以及数据对象的分割等方法。例如,该方法可以包括本发明第一方面中的方案,(一)当所述数据块内包含多个数据对象时,所述方法还包括:判断待存储的数据对象是否小于阈值,并将小于阈值的所述待存储的数据对象作为可存储在所述数据块内的数据对象进行所述的存储以及编码;(二)以预定的时间间隔根据所述待存储的数据对象的平均大小,动态调整所述阈值;(三)所述分布式存储系统包括多个备选存储设备,根据所述多个备选存储设备的负载情况,将负载最小的一个或者多个备选存储设备作为所述的一个或者多个第二存储设备;以及(四)当所述数据对象的尺寸大于所述数据块的存储空间的尺寸时,或者当所述数据对象的尺寸大于所述数据块中剩余的存储空间的尺寸时,将所述数据对象进行分割,将分割后的尺寸小于所述数据块的存储空间的尺寸或者小于所述数据块中剩余的存储空间的尺寸的分割数据对象存储在所述数据块内,并将数据块分割信息存储在所述被分割的数据对象的元数据中用于重新组合所述被分割的数据对象。
结合第二方面,在第二方面的一种实现方式中,根据第一目标数据对象的关键字,查找所述第一目标数据对象以及所述第一目标数据对象所在的第一目标数据块,以及所述第一目标数据块所在的第一目标存储节点;将所述第一目标数据对象的更新值发送给所述第一目标存储节点;根据所述更新值对所述第一目标存储节内的所述第一目标数据对象的值进行更新,并将所述第一目标数据对象的更新值与所述第一目标数据对象的原始值之间的差值发送给与所述第一目标存储节点具有相同的条带ID的所有第一目标备份节点;若所述第一目标数据块未封盖,则根据所述关键字索引到存储在所述第一目标备份节点的缓冲区中的所述第一目标数据对象,并将所述差值与所述第一目标数据对象的原始值相加得到所述第一目标数据对象的更新值;若所述第一目标数据块已封盖,根据所述差值,更新所述多个第一目标备份节点内对应于所述第一目标数据块的第一目标备份数据块。
该方法中提供了一种数据更新的方法,通过上述的方法能够使得目标数据对象以及对应目标备份数据块能够以最经济的方法实现数据的同步。
结合第二方面以上述的实施方式,在第二方面的另一种实现方式中,所述方法还包括:根据所述第一目标数据对象的关键字查找所述第一目标数据对象以及所述第一目标数据对象所在的第一目标数据块,以及所述第一目标数据块所在的第一目标存储节点;发送删除所述第一目标数据对象的删除请求至所述第一目标存储节点;若所述第一目标数据块未封盖,删除第一目标存储节点内的所述第一目标数据对象,并发删除指令至所述第一目标备份节点删除存储在所述第一目标备份节点的缓冲区中的所述第一目标数据对象;
若所述第一目标数据块已封盖,将所述第一目标存储节点内的所述第一目标数据对象的值设置为特殊值,同时将该特殊值与所述第一目标数据对象的原始值之间的差值发送给所述多个第一目标备份节点,使所述多个第一目标备份节点内的所述第一目标备份数据块根据所述差值进行更新,所述第一目标备份数据块与所述第一目标数据块相对应。
本方法提供一种可以降低系统负担的数据删除方法,即,不即可对数据块内存储的目标数据对象进行删除,而是将目标数据对象的值设置为特殊值,比如0,可以在系统闲时再将该目标数据对象删除。
结合第二方面或上述基于第二方面的任意实施方式,在第二方面的另一种实现方式中,所述方法还包括:为第二目标数据对象,选择一个第二目标存储节点以及多个第二目标备份节点,所述第二目标存储节点和所述多个第二目标备份节点具有相同的条带列表ID;发送所述第二目标数据对象至所述第二目标存储节点,当所述第二目标存储节点为故障存储节点时,所述第二目标数据对象被发送至协调管理器中,以使所述协调管理器获取与所述第二目标数据对象对应条带列表ID,并在具有与所述条带列表ID相同的条带列表ID的正常存储节点中确定一个作为第一临时存储节点,并指示将所述第二目标数据对象发送并存储至所述第一临时存储节点;将所述第二目标数据对象存储在所述第一临时存储节点内;当所述第二目标存储节点的故障排除后,将存储在所述第一临时存储节点内的所述第二目标数据对象迁移至排除故障后所述第二目标存储节点。
本方法保证该数据管理方法在某个指定的第二目标存储节点故障时,通过协调管理器指定一个第一临时存储节点来接管故障的第二目标存储节点,并在第二目标存储节点从故障中恢复时,将第一临时存储节点内存储的指向第二目标存储节点的第二目标数据对象迁移至所述第二目标存储节点,第二目标存储节点则按照正常的存储方法对第二目标数据对象进行存储。
结合第二方面或上述基于第二方面的任意实施方式,在第二方面的另一种实现方式中,所述方法还包括:发送请求所述第二目标数据对象的数据获取请求至所述第二目标存储节点,当所述第二目标存储节点为故障存储节点时,所述数据获取请求被发送至所述协调管理器中,以使所述协调管理器根据所述数据获取请求获取与所述第二目标数据对象对应条带列表ID,并在具有与所述条带列表ID相同的条带列表ID的正常存储节点中确定一个作为第二临时存储节点,并指示将所述数据获取请求发送至所述第二临时存储节点,使所述第二临时存储节点根据所述数据获取请求返回对应第二目标数据对象。
本方法中可以保证该数据管理方法即便是在某个第二目标存储节点发生故障的情况下,仍然能够允许客户端访问存储在故障的第二目标存储节点内的数据对象,其具体的方法如上述,通过第二临时存储节点来接管第二目标存储节点而实现对故障节点的访问,提供了系统的可靠性。
结合第二方面或上述基于第二方面的任意实施方式,在第二方面的另一种实现方式中,所述使第二临时存储节点根据所述数据获取请求返回对应的第二目标数据对象,包括:
若所述第二目标数据对象所在的第二数据块未被封盖,使所述第二临时存储节点发送数据请求至与所述第二目标存储节点对应的所述第二目标备份节点,使所述第二目标备份节点根据所述数据请求从其缓冲区中获取对应的第二目标数据对象,并将所述第二目标数据对象返回给所述第二临时存储节点并由所述第二临时存储节点返回所述被请求的第二目标数据对象;
若所述数据请求所请求的第二目标数据对象为所述第二目标存储节点的故障后新增或修改的,则从所述第二临时存储节点中获取并返回相应的第二目标数据对象;
否则,使所述第二临时存储节点根据所述第二目标数据对象对应条带ID从具有相同的条带ID的第二目标备份节点中获取与所述第二目标数据对象对应的第二备份数据块,并根据所述第二备份数据块恢复包含所述第二目标数据对象的第二目标数据块并从所述第二目标数据块中获取所述第二目标数据对象并返回所述第二目标数据对象。
本方法中,在某个数据存储节点,例如第二目标存储节点故障时,由于故障发生的时间点和持续时间不确定,因此本方法提供了在多种不同的情况下如何访问故障节点中的数据的办法,提高了系统的灵活性和实用性。
结合第二方面或上述基于第二方面的任意实施方式,在第二方面的另一种实现方式中,所述方法还包括,发送修改第三目标数据对象的数据修改请求至第三目标存储节点,当所述第三目标存储节点为故障存储节点时,所述数据修改请求被发送至协调管理器中,使所述协调管理器获取与所述第三目标数据对象对应条带列表ID,并在具有与所述条带列表ID相同的条带列表ID的正常存储节点中确定一个作为第三临时存储节点,并指示将所述数据修改请求发送至所述第三临时存储节点,以使所述第三临时存储节点根据所述数据修改请求修改所述第三目标数据对象。
本方法可以在第三目标存储节点故障时,通过第三临时存储节点来处理对第三目标数据对象的修改,并保持第三目标备份节点内的数据与修改后的第三目标数据对象之间的一致性,并在第三目标存储节点恢复之后,将修改请求重新发送给所述第三目标存储节点,来使得第三目标备份节点内的数据与第三目标存储节点中的第三目标数据的一致性。
结合第二方面或上述基于第二方面的任意实施方式,在第二方面的另一种实现方式中,所述使所述第三临时存储节点根据所述数据修改请求修改所述第三目标数据对象包括:存储所述数据修改请求在所述第三临时存储节点内,并使所述第三临时存储节点根据所述第三目标数据对象对应条带ID从具有相同的条带ID的第三目标备份节点中获取与所述第三目标数据对象对应的第三备份数据块,根据所述第三备份数据块恢复包含所述第三目标数据对象的第三目标数据块,将所述数据修改请求中所携带的更新值与所述第三目标数据对象的原始值之间的差值发送给所述第三目标备份节点,以使所述第三目标备份节点根据所述差值,更新所述第三备份数据块;
当所述第三目标存储节点的故障排除后,存储在所述第三临时存储节点内数据修改请求被迁移至所述第三目标存储节点内,以使所述第三目标存储节点根据所述数据修改请求对第三目标存储节点内的所述第三目标数据对象进行修改。
第四方面,提供一种数据管理装置,所述数据管理装置包括用于执行第一方面的方法的单元或者模块。
第五方面,提供一种数据管理系统,所述数据管理系统包括用于执行第二方面的方法的各种功能主体,例如客户端,存储节点,备份节点,协调管理器等。
第六方面,提供一种数据管理装置,所述数据管理装置包括用于执行第二方面的方法的单元或者模块。
本发明第七方面提供一种数据结构,其特包括:
多个固定大小的数据块,存储在第一存储装置中,所述每个数据块中包括有多个数据对象,其中每个所述的数据对象包括,关键字,值,以及元数据;
多个纠错数据块,存储在第二存储装置中,所述纠错数据块通过编码所述多个固定大小的数据块得到,其中,所述第一存储设备与第二存储设备位于分布式存储系统中的不同位置;
数据块索引,所述数据块索引用于索引所述数据块及与所述数据块对应的纠错数据块;以及,
数据对象索引,所述数据对象索引用于在所述数据块中索引所述数据对象,其中每个数据对象索引用于索引唯一一个数据对象。
本发明提供的数据结构中,多个数据对象集合在一个数据块中,针对该数据块构建对应的纠错数据块,数据块以及纠错数据块分别分布在分布式存储系统的不同的存储位置,即第一存储设备及第二存储设备中,同时通过数据块索引关联所述的数据块及纠错数据块,数据块所在的第一存储设备故障时能够根据该数据结构恢复原数据块中的内容,同时能够充分的发挥编码备份的优点,具有较低的数据冗余,避免了对每个数据对象单独采用编码备份带来的效率低下,系统冗余高的弊端。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是分布式存储系统的示意性架构图。
图2是本发明一个实施例的数据管理方法的示意性流程图。
图3是本发明一个实施例的数据管理方法所生成的数据架构图。
图4是本发明另一个实施例的数据管理方法的示意性流程图。
图5是本发明另一个实施例的数据管理方法的示意性流程图。
图6是本发明另一个实施例的数据管理方法的示意性流程图。
图7A至7H是本发明另一个实施例的数据管理方法的示意性流程图。
图8是本发明一个实施例的数据管理装置的示意性框图。
图9是本发明另一个实施例的数据管理装置的示意性框图。
图10是本发明另一个实施例的数据管理装置的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面介绍分布式存储系统的构成。图1是分布式存储系统100的示意性架构图。参照图1,所述的分布式存储系统100包括如下的关键实体:客户端110,存储节点130,协调管理器150,以及备份节点170,这些关键实体之间通过网络连接,例如,通过长期的传输控制协议(Transmission Control Protocol,TCP)保持各个关实体之间信息传输通道的正常运作。
客户端110为分布式存储系统100提供的上层服务的接入点,由通信网络连接至存储系统100的各个关键实体。客户端110作为服务请求的发起者,可向存储节点130发起业务请求,业务请求可以包括,请求数据、写入数据、修改数据、更新数据、删除数据等。客户端110可以是手持设备,消费性电子设备,通用计算机,专用计算机,分布式计算机,服务器等设备,可以理解,为能够实现客户端的110的基本功能,客户端110则应该具有,处理器,存储器,I/O端口以及连接这些部件的数据总线。
存储节点130用于存储数据对象(data object)。存储节点130可以由网络服务器统一分配,即所述存储节点130宿住于通过网络连接的一个或者多个服务器内,并且由服务器统一管理,因此,也可以称之为,数据服务器(Data server)。所述存储节点130还可连接用于存储一些不常用的数据的磁盘132。
协调管理器150用于管理整个分布式存储系统100,比如,使用心跳机制侦测存储节点130和/或者备份节点170是否失效,并在部分节点失效时,负责恢复失效节点中存储的数据对象。
备份节点170用于备份存储于存储节点130中的数据对象,也称之为备份服务器或者校验服务器(Parity server)。需要注意的是,所述备份节点170以及存储节点130是相对的概念,二者可以根据不同的需求互换角色。备份节点170可以分布在不同的地理位置、或者网络拓扑中,其具体的形态可以是网络节点(node),分布式服务器的内存等可以即时存储数据的任何设备。
需要说明的是,上述的分布式存储系统100所包含各个关键实体均具备数据处理能力,因此,各个关键实体均具有例如,CPU,缓存(存储器),I/O接口,数据总线等部件。此外,上述的各个关键实体的数量可是一个或者多个,各个关键实体的数量可以相同也可以不同,例如,在某些系统环境下,备份节点170的数量要多于存储节点130的数量,而在有些环境中,备份节点170的数量可以等于存储节点的数量甚至少于存储节点130的数量。
以下将详述本发明基于以上的分布式存储系统100提出的数据管理方法200,该数据管理方法200以存储节点130和备份节点170为主要的执行主体来说明如何将数据长度较小的数据对象进行存储。
本发明数据管理方法200如图2所示,包括:
S210,将待存储的数据对象存储在预定大小(size/volume/capcity)的数据块中,所述数据对象包括关键字(key),值(value)以及元数据(meta dada),所述数据块存储在第一存储设备中;
在针对当前的数据对象大小都较小的应用场景,本发明通过预先设定预定大小(size/volume/capcity)的数据块来存储这些较小的数据对象。其中所述的预定大小的数据块(Data Chunk),可以形象的理解为一个数据容器,这个数据容器具有预定的容积,即固定的大小,例如4KB。待存储的数据对象为具有KV(Key-value)结构,即,键值结构,该数据结构包括三个部分,关键字(Key),值(Value),以及,元数据(Metadata),其中,Key为所述数据对象唯一的标识符,通过Key可以唯一的确定对应的数据对象,以便于在对存储的数据对象进行读取、修改、更新、删除时通过该Key来定位第一目标数据对象;Value则是所述数据对象的实际内容;Metadata内保存着数据对象的属性信息,比如Key的大小,Value的大小,创建/修改所述数据对象的时间戳等信息。通过将多个小的数据对象存储在预定大小的数据块中,当数据块中所存储的数据对象的大小接近或者等于该数据块的大小限值时,则,将这个数据块封盖起来,即,不再向该数据块内写入新的数据。
多数情况下,待存储的数据对象的大小是小于所述数据块的大小,对应地,存储有数据对象的数据块为一个具有预定大小且包含有多个数据对象的数据块。而在有些情况下,待存储的数据对象的大小大于所述数据块的大小,或者待存储的数据对象的大小大于所述数据块中剩余可以用的存储空间的大小时,可以将所述的待存储的数据对象进行分割得到小尺寸的数据对象。例如,将数据对象A分割为尺寸接近于所述数据大小的多个小尺寸数据对象a1、a2…aN,A=a1+a2+…aN,N为自然数,其中,数据对象a1、a2…aN的尺寸可以是相同的,即具有统一尺寸,可以是不同的,即每个或者部分数据对象具有不同的尺寸,而经过分割得到的小数据对象a1、a2…aN中至少有一个数据对象aM(1<=M<=N)的尺寸小于所述数据块的大小或者小于所述数据块中剩余可以用的存储空间的大小,将分割得到的小尺寸的数据对象aM存储在所述的数据块中,并将分割信息存储在所述小数据对象aM的元数据(metadata)中。而小尺寸数据对象a1、a2…aN中除aM之外剩余的数据对象将被存储在新的固定大小的数据块中,所述的新的固定大小的数据块优选的位于不同存储节点130中。在读取数据对象A时,根据数据对象A的Key索引到存储在不同存储节点130中的数据对象a1、a2…aN,并根据元数据中分割信息对数据对象a1、a2…aN重新组合得到原始的数据对象。所述的固定大小的数据块可以为多个,该多个数据块优选的位于多个不同存储节点130中。此外,所述的数据块也可以是同一个存储节点130内的不同的存储分区中,其中每个数据块具有预定的大小,优选地,所述多个数据块具有固定的相同的大小。
所述预定大小的数据块是一个虚拟的数据容器,该虚拟的数据容器可以看成是在存储设备中一段存储空间,该存储设备为了便于理解,可以称之为第一存储设备,该第一存储设备具体可以对应于分布式存储系统100中的存储节点130,而将待存储的数据对象存储在该分布式存储系统100中的实现过程可以是,客户端110发起数据存储请求,在该数据存储请求中携带了存储节点130的具体位置信息,根据该位置信息,在数据存储请求中所携带的待存储数据对象被发送给存储节点130,即,第一存储设备进行存储,该存储节点130将所述的待存储数据对象存储在未封盖的数据块中,若数据块在接收该待存储数据对象之后无剩余存储空间,或者剩余存储空间小于预定阈值,存储节点130将对该数据块进行封盖,封盖后的数据块将不再接受新的数据对象,此时,存储节点130可以在返回存储成功的消息给客户端110内增加数据块已经封盖的消息,而客户端110在发布新的存储请求时,可以选择不同的存储节点130进行存储操作。
S220,对所述数据块进行编码,生成纠错数据块;
当存储所述数据块内的数据对象的总的大小接近所述数据块的大小限值,将不再向该数据块内存储数据对象,即对数据块进行封盖,具体可以是通过关闭对数据对象的写操作属性。然后,对所述的数据块进行数据冗余编码,比如XOR编码或EC编码。以EC编码来举例说明如何进行冗余编码,EC编码过程可以理解为,将一个包括K个对象的信息变换为K+M对象,在K+M个对象中任意不多于M个对象受损时,可以通过剩余的K个对象对受损的M个对象进行恢复。比较常用的EC编码方法有里德所罗门编码(Reed-solomon codes,RS-code),该RS-code通过如下的公式在有限域内根据原数据,即,数据块,来计算纠错数据(paritiy)。
其中,D1至DK代表数据块,P1-PM代表纠错数据块,矩阵称为范德蒙矩阵。本发明可以通过上述的RS-Code生成纠错数据块。该纠错数据块和数据块可在最大可接受的受损范围内,即,受损的数据块的数目不大于M个时,对受损的数据块进行恢复。
对数据块进行编码的主要目的是对数据块进行冗余备份,以便在第一存储设备故障时,对第一存储设备中的数据进行恢复。本步骤中执行所述的编码动作的执行主体可以是分布式存储系统100中的存储节点130,也可以备份节点170,通常是由备份节点170来实现,其示例性的实现过程可以是,客户端110在将待存储数据对象发送给存储节点130同时,将待存储数据对象发送给备份节点170,备份节点将所述的待存储数据对象暂存在其缓存内,当存储该数据对象的数据块封盖后,存储节点130,将该封盖的数据块内的数据对象的关键字列表,发送给备份节点170,备份节点170在接收到该关键字列表之后,根据关键字列表以及暂存在其缓存内的数据对象,在备份节点170内重建所述的数据块,并对该数据块进行编码,形成纠错数据块,生成了纠错数据块之后,备份节点170将丢弃其缓存的与所述关键字列表对应的数据对象。需要说明的是,该编码过程也可以是在存储节点130实现,即,存储节点130在对存储待存储数据对象的数据块进行封盖之后,复制该封盖的数据块,并对复制的封盖的数据块进行编码操作,得到纠错数据块。
S230,将所述的纠错数据块,存储在第二存储设备中,并形成数据块索引以及数据对象索引,并在第一存储设备及第二存储设备中分别存储一份所述的数据块索引以及数据对象索引,所述数据块索引用于索引所述数据块及与所述数据块对应的纠错数据块,所述数据对象索引用于在所述数据块中索引所述数据对象,其中每个数据对象索引用于索引唯一一个数据对象,所述的第二存储设备不同于所述第一存储设备。
在生成所述的纠错数据块之后,所述的纠错数据块将被部署到与第一存储设备不同的第二存储设备中,所述的不同的第一存储设备及第二存储设备可以是分布式存储设备两个不同的存储节点,例如,分布式存储系统100中的存储节点130以及备份节点170,所述的不同可以理解为在空间地理位置关系上不位于同一地址处,或者拓扑关系中不位于同一节点处,满足这种“不同”的基本要求是,在一定的可靠性需求下,存储节点130和备份节点170同时故障的概率低于预设的阈值,以确保在最大可容忍数目个存储设备故障时仍然可以通过正常的节点恢复出故障节点内的数据块/数据对象。通常,所述的第一存储设备以及第二存储设备会预先设定,即将多个第一存储设备和多个第二存储设备根据预设的要求进行划分,生成多个分组,每个分组称之为一个条带列表(Stripe list),每个条带列表中都包含多个第一存储设备,可以记做K个第一存储设备,以及多个第二存储设备,可以记为M个第二存储设备。在客户端110请求存储对待存储数据对象时,可以通过在其请求中携带所述的条带列表(Stripe list)来制定在某个条带列表内的第一存储设备和第二存储设备来进行数据对象的存取。其中,所述的第一存储设备和第二存储设备并仅仅是为了说明方便根据各自在一次数据块的存储和备份过程中所承担的工作不同而给的命名,而实现过程中,一个条带列表内的第一存储设备第二存储设备并没有严格的界限,第一存储设备在处理不同的数据对象时可以转换为第二存储设备,第二存储设备也可以转换为第一存储设备。在对一个数据块进行存储和备份中,当数据块无剩余存储空间或者剩余存储空间小于预设值而封盖时,第一存储设备为该封盖的数据块生成一个序号,这个序号称之为条带ID,条带ID用以指示当前的数据块是第几个利用所述条带列表所指示的第一存储设备及第二存储设备进行数据块的存储及备份的。因为同一个条带列表内的存储设备会对多个不同的数据块进行存储和备份,而在对每个不同的数据块进行存储和备份过程中,所述条带列表内的存储设备所承担的工作不相同,即,某些存储设备作为备份服务器对数据进行备份,而有些作为数据服务器对数据进行存储,条带ID则用来指示具体某一次数据块进行存储及和备份的序号,该条带ID的简单的构造方式是,将该条带ID的初始值设置为0,当第一个数据块封盖之后,数据服务器则将该第一个数据块的条带ID设置为0,并将条带ID加1,当第二个数据块封盖之后,数据服务器则将该第二数据块的条带ID设置为1,依次类推,备份服务器则对具有相同条带ID的数据块进行备份,即,进行EC编码。
在另外一种可能的实施方式中,所述条带列表所指示的多个存储设备并不一定要全部都参与到一次对数据块的存储和备份中,而是根据存储请求总所指定的某些第一设备以及某些第二设备作为存储及备份所述数据对象的节点,即作为所述的存储节点130以及备份节点170来分别存储所述的数据块和纠错数据块,此时,所述被指定的第一设备及第二设备构成了一个条带(Stripe)。所述不同的第一存储设备以及第二存储设备,也可以是由执行该数据管理方法的设备如分布式存储系统中的协调管理器150根据预设的条件在可用的设备中随机选择获取的。
当存储有所述待存储的数据对象的数据块封盖之后,以及对应的纠错数据块生成之后,在上述的第一存储设备以及第二存储设备中分别生成数据块索引以及数据对象索引。仍然以上述的分布式存储系统100为例,存储节点130在将待存储数据对象存储在数据块内,便生成与已存储的数据对象对应的数据对象索引,当该数据块封盖之后,存储节点130将生成数据块索引,所述数据块索引用于索引所述数据块及与所述数据块对应的纠错数据块,所述数据对象索引用于在所述数据块中索引所述数据对象。其中,所述的数据块索引,数据对象索引,数据块,以及纠错数据块构成了本发明数据管理方法的数据模型的基本结构。该数据模型如图图3所示,包含索引部分310,数据部分320,纠错部分330。
其中,索引部分310部分包括有数据块索引312以及数据对象索引314。数据对象索引314为各个数据对象的Key,每个数据对象索引用于索引唯一一个数据对象。数据块索引312用于将第一存储设备中的的数据块与第二存储设备中的纠错数据块关联起来,用于在第一存储设备故障时从能够通过该数据块索引312从第二存储设备中将第一存储设备中的第一目标数据块恢复出来。所述的数据块索引312中包括多个数据块ID(Chunk ID),每个数据块ID包括有,条带列表ID(Stripe list ID),条带ID(Stripe ID),以及数据块位置(Chunk Position)。
其中,所述的条带列表可以是在存储所述的数据块以及纠错数据块之前预先设置的指示第一存储设备或者叫做数据存储设备(对应于前述的存储节点130)以及第二存储设备或者叫纠错存储设备(对应于前述的备份节点170)的标识,即,K个第一存储设备,K=>1,以及M个第二存储设备,M=>1。条带ID用以指示当前的数据块是第几个利用所述条带列表所指示的第一存储设备及第二存储设备进行数据块的存储及备份的,同一个条带内的第一存储设备及第二存储设备具有一相同的条带ID。
或者,条带ID用于在由所述条带列表ID所确定的条带列表中索引第一目标条带,其中第一目标条带指用于存储数据块的第一存储设备以及用于存储与所述数据块对应的纠错数据块的第二存储设备的集合,同一个条带内的第一存储设备及第二存储设备具有一相同的条带ID。
所述数据块位置,指的是数据块或者纠错数据块在所述条带ID中的具体位置,即,所述数据块或者纠错数据块在具有相同的条带ID所包含的哪个第一存储设备或者第二存储设备内。在所述第一存储设备及第二存储设备上都生成并维护有数据块索引312以及数据对象索引314。所述数据对象索引314为全局索引,在存储数据块的存储设备正常的情况下,所述的数据对象索引314可以用于索引第一目标数据对象。当存储数据块的第一存储设备故障时,需要在客户端维护数据块索引312和数据索引对象314之间的映射关系,通常这种映射关系可以通过哈希的方式来实现,以便于在某个存储设备故障后,能够根据未故障的存储设备所维护的数据块索引312与数据对象索引314之间的映射关系来确定某个数据对象所对应的数据块索引,并根据数据块索引确定同一个条带内的其他存储设备内存储的纠错数据块进行故障存储设备内的数据的恢复。
以上的数据结构可以适用于任何领域的数据管理,其基本的数据结构可以概括为:
多个固定大小的数据块,存储在第一存储装置中,所述每个数据块中包括有多个数据对象,其中每个所述的数据对象包括,关键字,值,以及元数据;
多个纠错数据块,存储在第二存储装置中,所述纠错数据块通过编码所述多个固定大小的数据块得到,其中,所述第一存储设备与第二存储设备位于分布式存储系统中的不同位置;
数据块索引,所述数据块索引用于索引所述数据块及与所述数据块对应的纠错数据块;以及,
数据对象索引,所述数据对象索引用于索引所述数据块中的额所述数据对象,其中每个数据对象索引用于索引唯一一个数据对象。
根据本发明数据管理方法构成上述结构的数据模型后,当对K个数据块进行EC编码之后,得到M个纠错数据块,K+M个数据块将会布局到K+M个设备中,在K+M个设备中的任意不多于M个设备出现故障时,可以利用剩余的设备恢复故障的设备。而K个数据块是具有预定的大小的数据块,可以存储多个小数据对象,将多个小数据对象集中采用EC编码进行编码,从而能够充分的利用EC码的优势,降低冗余度,极大的提升存储效率,降低存储成本。同时也提高数据处理效率,提升可用性。
本发明还提供一种数据管理方法400,如图4所示,包括:
S410,对预定大小的数据块进行编码,生成与所述数据块对应的纠错数据块,其中,所述数据块包括数据对象,其中所述的数据对象包括,meta dada,key,以及value;
该步骤中对数据块的编码方法与数据管理方法200中所采用的编码方法相同,具体的实现细节请参照数据管理方法200中的相应部分,但是该步骤在备份节点170内完成,因此,无需考虑在存储节点130内对构建所述数据块的操作。需要说明的是所述的数据块包含多个数据对象的意思可以理解为所述数据块由多个数据对象构成,在这种情况下所述数据块可以不需要有边界指示,而是直接由一系列连续存储的数据对象构成,首个数据对象的起始存储位置和最后一个数据对象的截止存储位置即构成了所述数据对象的边界。
S420,生成数据块索引以及数据对象索引,所述数据块索引用于索引所述数据块及与所述数据块对应的纠错数据块,所述数据对象索引用于在所述数据块中索引所述数据对象,其中,每个数据对象索引用于索引唯一一个数据对象。
该步骤中对数据块的编码方法与数据管理方法200中所采用的编码方法相同,具体的实现细节请参照数据管理方法200中的相应部分,但是该步骤在备份节点170内完成,因此,无需考虑在存储节点130构建所述数据块关联索引以及数据对象索引的操作。
根据本发明数据管理方法构中将多个数据对象集成为一个预定大小的数据块后进行编码备份操作,从而能够有效的发挥编码备份操作的优势,降低冗余度,极大的提升存储效率,降低存储成本。同时也提高数据处理效率,提升可用性。
结合图5,本发明还提供一种数据管理方法500,其包括:
S510,判断待存储的数据对象的大小是否小于或等于阈值;
S520,当所述待存储的数据对象的大小小于阈值时,将所述待存储的数据对象存储在预定大小(size/volume/capcity)的数据块中,所述数据对象包括,meta dada,key,以及value,所述数据块存储在第一存储设备中;
S530,对所述数据块进行编码,生成纠错数据块;
S540,将所述的纠错数据块,存储在第二存储设备中,并形成数据块索引以及数据对象索引,并在所述第一存储设备及第二存储设备中分别存储一份所述的数据块索引以及与所述数据对象索引,所述数据块索引用于索引所述数据块及与所述数据块对应的纠错数据块,所述数据对象索引用于在所述数据块中索引所述数据对象,其中每个数据对象索引用于索引唯一一个数据对象,所述的第二存储设备不同于所述第一存储设备。
本发明的主要目的在于针对当前的数据对象大小都较小的应用场景下,如何高效利用编码技术,将这些数据对象存储起来,并提供有效的容错/纠错能力。因此,判断待存储的数据对象的大小是否小于阈值对过滤一些可以大的数据对象,能更好的实现本发明的目的。如在背景技术中所介绍的,目前根据统计有40%的数据时小数据,同时也意识到,还有60%的数据属于大数据,因此,对大与预设阈值的待存储的数据采用其适合的编码/存储方法,而对小数据,即大小小于阈值的小数据,采用本实施例的方法,能够有效的提升整体的数据存储效率,以及数据处理的速度。本实施例中的数据管理方法500中的步骤S520至S540与数据管理方法200中的S210至S230相同,具体详情请参阅本文中关于S210至S230的介绍,其中S210至S230中的可能实施方式及特性与S520至S540相同,因此本实施例具备前述实施例中数据管理方法200所具备的所有功能及相应的有益效果,除此之外,本方案能够进一步的提升数据存储时的效率。所述的阈值可以预先设定,例如15K,50K,或者100K等;此外,所述的阈值也可以根据一段时间内所检测到的存储的数据对象的平均大小值来动态的设定,例如,在1个小时内,待存储的数据对象的平均大小为10.8K,则可以将所述的阈值设定为11K。此外,本实施例中还可以包括采用与编码所述数据块相同的编码方式来编码大小大于所述阈值的待存储数据对象,并生成相应的纠错数据对象,以及索引,对于大于阈值的待存储数据对象还可以采用其他的已知的存储方式进行存储,比如全复制的方式,而不限于本发明的方法。
结合图6,本发明还提供一种数据管理方法600,其包括:
S610,将所述待存储的数据对象存储在预定大小(size/volume/capcity)的数据块中,所述数据对象包括,meta dada,key,以及value,所述数据块存储在第一存储设备中;
S620,根据候选存储设备的负载情况从所述的候选的存储设备中选择一个第二存储设备用于备份所述的数据块;
S630,编码所述的数据块生成纠错数据块,将所述纠错数据块存储在所述第二存储设备中作为所述数据块的备份数据,并形成数据块索引以及数据对象索引,并在第一存储设备及第二存储设备中分别存储一份所述的数据块索引以及数据对象索引,所述数据块索引用于索引所述数据块及与所述数据块对应的纠错数据块,所述数据对象索引用于在所述数据块中索引所述数据对象,其中每个数据对象索引用于索引唯一一个数据对象。
本实施例提供的数据管理方法与前述的数据管理方法200、300、400、500的主要不同点在于,所述用于存储所述纠错数据块的第二存储设备是根据设备负载情况选择的。在进行数据存储的过程中,尤其在纠错数据块的存储过程中的写操作的工作量,是存储数据块时的写操作的工作量的几倍。为了平衡整个存储系统中的存储设备(存储节点130以及备份节点170)的负载,本发明可以根据存储设备的负载的情况动态的调整存储设备,即,通过算法迭代的调整用于存储数据块以及纠错数据块的条带列表,即在本发明数据管理方法200及300中所介绍的通过条带列表ID所表示的多组不同的存储设备的组合。本方案中仅在选取第二存储设备时考虑当前的存储设备的负载的情况,但是,可以理解的是,在选取第一存储设备时也同样可以考虑当前设备的负载状况而选择相应的合适的存储设备以均衡负载。
具体实现方式可以是,将存储设备中负载最小的M个具有最小工作负荷的存储设备作为第二存储设备(对应于备份节点170)用于存储纠错数据块,在剩余的存储设备中选择K个工作负荷最小的作为第一存储设备(对应于存储节点130)用于存储数据块,M+K个存储设备则构成中条带列表中的第i个条带列表,以此规则循环迭代下去直到构建满足预设要求的条带列表。可以理解,在本方案中,M+K个存储设备对于第i条带自身来说,这M+K个存储设备是不同的,即,M+K个设备对于第i条带来说是不存在复用的。然后对于,第i+n个条带来说,M+K个设备中的L个设备有可能被复用,L个设备中即可能是第i个条带中所包含的M个备份节点中的某几个备份节点,也可能是第i个条带中所包含的K个存储节点中的某几个存储节点,也可能是几个第i个条带中所包含的备份节点以及存储节点的组合;在构建第i+n个条带的时候,所有的候选的存储设备根据各自负载进行重新的排序,若已经被第i个条带所包含的存储设备根据其所角色,即,是存储节点还是备份节点,进行工作负载的加权计算后重新纳入到候选的存储设备集合中供选择来构建所述的第i+n个条带,在第i个条带中作为存储节点的存储设备分别加权1个单位的工作负载,在第i个条带中作为备份节点的存储设备分别加权K个单位的工作负责,K是每个条带中的存储节点的数量,其中,存储设备的初始工作负载可以设置为零,所述的初始工作负载指的是尚未被任意条带所涵盖的存储设备的工作负载。
该方法不仅具备前述的数据管理方法200至400中所具备的功能和有益效果之外,还可以根据设备的负载情况动态的构建存储数据块以及纠错数据块的存储设备,从而均衡负载,提高数据存储时的存储效率。
以下结合分布式存储系统100为例详细介绍,根据本发明的数据管理方法200、300、400、500以及600,如何实现数据存储过程中四种基本的操作,即SET操作,GET操作,UPDATE操作以及DELETE操作。
Set操作:
Set操作是指新插入一个数据对象到存储系统100中,该操作基本包括如下的:
a)客户端110,首先选择一个存储节点130,以及多个备份节点170;
所述存储节点和备份节点属于同一个条带(stripe)内,即,所述备份节点130是和存储节点170相关联的节点,其具有相同的stripe ID;接着,所述客户端110向所述的存储节点130以及备份节点170分别发送SET请求,存储节点以及备份节点170均会返回一个应答消息,根据该应答消息,客户端110可以知道各个节点是否故障,同时也可以知道所选择的存储节点中所存储的数据块是否还有足够的空间来存储新的数据对象,如果所选择的存储节点130中的数据块还可以继续存储新的数据对象,则执行下面的步骤:
b)客户端110将待存储的数据对象并行(同时)发送给所选择的存储节点130以及多个备份节点170;
c)存储节点130将所接到的数据对象存储在未封盖的数据块(Data Chunk)中,同时备份节点170将所述新的数据对象存储在临时缓冲区内;
d)存储节点130将在其存储的数据对象索引中增加对应于该新的数据对象的数据对象索引;
e)当所述存储节点130内的数据块所存储的数据对象(包括历史已经存储的以及新增加的数据对象)的接近数据块的存储限值时,存储节点130将封盖所述的数据块,并将该封盖的数据块内所存储的所有的数据对象的关键字(Key)列表发送给与该存储节点130相关的备份节点170,即同一个条带内的备份节点170;
f)备份节点170接收到来在于存储节点130所发送的关键字列表后,根据关键字列表中的关键字从临时缓冲区中检索出对应的数据对象,重建一个与存储节点130内与该关键字列表对应的数据块,并根据该重建的数据块计算出对应备份数据块,根据所述备份数据块更新该备份节点170内对应于所述存储节点中的封盖的数据块的备份数据块,并清除缓冲区内的相关缓冲数据;同更新该备份节点170内的数据对象索引;
Get操作:
Get操作是指根据数据对象的Key值查询该Key值所对应的Value值。
客户端110根据数据对象的Key根据,参照本发明方法中的数据模型中的索引部分310,查找到对应的存储该Key对应的数据对象的存储节点;然后根据所述存储节点上所存储的数据对象索引来查询到Key所对应的Value的值,并将该值返回给客户端110。
UPDATE操作:
Update操作是指根据数据对象的Key值更新Value值,主要可以包括以下步骤:
a)客户端110根据数据对象的Key,参照本发明方法中的数据模型中的索引部分310,查找到存储该Key对应的数据对象的存储节点130,将待更新的value值发送给该存储节点130;
b)存储节点130将与该Key对应的value值进行更新,并将该更新发送给与存储该数据对象的数据块对应的所有的纠错数据块的存储装置,即,备份节点;
c)若更新的数据对象所在的数据块未封盖,则备份节点只需要更新其缓冲区中相应的数据对象的value即可;
d)若更新的数据对象所在的数据块已封盖,则备份节点需要根据更新后的数据对象的值,计算出新的纠错数据块,将用新的纠错数据块替代原有的与所述数据块对应的旧的纠错数据块。
e)更新完成后,存储节点返回修改成功的确认信息至所述的客户端。
DELETE操作:
Delete操作指的是从存储节点中删除某个数据对象,其主要包括如下步骤:
a)客户端110根据数据对象的Key根据,参照本发明方法中的数据模型中的索引部分310,查找到存储该Key对应的数据对象的存储节点130,并将删除请求发送给该存储节点;
b)若该待删除的数据对象所在的数据块未封盖,存储节点130删除所述数据块中的数据对象,并发送给parity server删除缓冲区中的相应的对象;
c)若该待删除的数据对象所在的数据块已封盖,存储节点130将该数据对象的值设置为特殊值,例如,零,作为已删除的标识,同时将该特殊值按照上述的Update操作类似的方式发送给相应的备份节点170,备份节点按照与update操作类似的方式更新对应的纠错数据块,当存储节点130闲时再真正清除这些具有特殊值的数据对象。
d)备份节点170更新完成后,存储节点130返回删除成功的确认信息。
以下介绍采用本发明的数据管理方法的分布式存储系统100中的某个节点,如存储节点130出现故障后,该分部式存储系统如何保证正常处理业务请求并及时从故障中恢复。
首先,参照图7简单说明下,分布式存储系统100故障期间的几种状态,这里说的故障期间指的是客户端110请求的第一目标节点出现故障时,从故障发生一直到故障排除并且所述故障的第一目标节点恢复正常工作的时间段。分布式系统100的故障期间涉及四种状态,正常状态(Normal state);中间状态(Intermediate state);降级状态(Degradestate)以及,协管正常状态(Coordinator normal state),其具体的定义如下:
Normal state:正常状态。
Intermediate state:侦测到系统中的节点(存储节点130、备份节点170)已故障,且出现的数据不一致还未解决;其中数据的不一致主要是因为在,当系统中的节点出现故障时,可能会出现数据不一致的问题,问题出现的原因是当被请求的存储节点更新了数据信息,会将更新的数据信息发送给相应的备份节点对备份的数据信息进行更新,但是,存储节点在将更新的数据信息发送至相应的备份节点之后便发生了故障,在发生故障前,所述存储节点可能已经接收到了部分备份节点完成备份数据信息更新的确认消息,但是还有部分备份节点的数据信息更新确认消息并没有被接收到,因此,对系统而言,并不知道是不是与该故障的存储节点对应的所有的备份节点都完成了数据信息的更新,因此,便可能出现对应于同一个存储节点的多个备份节点中的数据不一致的情况。
Degrade state:数据不一致的问题已解决,业务请求还仍然被coordinator接管。
Coordinator normal state:故障的服务器已恢复,正在将恢复期间的数据变更刷新到已恢复的服务器,在迁移期间,所有的请求仍然由coordinator接管。
当某个节点,例如,存储节点130或者备份节点170(为简洁起见,后文中统一简称节点),出现故障后,协调管理器150将采用可靠性机制,如atomic broadcast等技术,通知各个客户端110该分布式存储系统100中的节点,即,存储节点130和/或备份节点170,出现了故障。当所述故障的节点当前正处在intermediate state时,该分布式存储系统100需要具备能够解决各个节点间的数据不一致的能力。本发明中解决各个节点间数据不一致的一种示例性的方法是,客户端110对其所发起的业务请求在本地进行备份,即,将其发送的业务请求临时的存储在其缓存中,如果收到了该请求的确认信息,即,各个存储节点和备份节点中的数据信息一致后,客户端110接收到的来自于各个节点的确认消息,客户端则110从其缓存中删除该已经收到对应的确认消息的业务请求。若客户端110的某个业务请求没有收到确认消息,即,各个节点间的数据信息不一致情况尚未消除的情况下,客户端110会继续发送同一个业务请求,直到收到确认信息,即,各个节点间的数据信息达到一致。此外,客户端110同时也需要缓存业务请求的数据对象的Key和各个节点的对应关系,该对应关系由各个节点在返回针对业务请求的确认消息时,将其附带在确认消息的尾部;所述的Key和节点的对应关系主要包括两个哈希映射图(hash map),一个哈希映射图是数据对象的key和Stripe list,另一个哈希映射图是数据对象的Key和所述Key所在的数据对象在Stripeelist中的位置。利用这两个哈希映射图,可以实现根据key查询到对应的节点,即存储节点130以及备份节点170,也可以称之为数据服务器(data server)和纠错服务器(parityserver)或者第一存储位置和第二存储位置。这两个哈希映射图会在客户端110收到业务请求的确认信息时刷新,也会在故障节点恢复/或者新的节点替代故障节点后刷新。客户端110存储所述的数据对象的Key和节点的对应关系的主要目的在于,当某个被请求的节点故障时,所述的客户端可以将其存储的最新的数据对象的Key与节点的对应关系发送给协调管理器150,协调管理器150可以根据该数据对象的Key与节点的对应关系来重建故障节点的中数据对象的Key与节点的对应关系,以在重建故障节点的数据时,所述协调管理器150依然能够根据重建的故障节点的中数据对象的Key与节点的对应关系来处理来自各个客户端的业务请求。
在上述数据不一致的问题解决之后,协调管理器150在包含所述故障节点的同一个Stripe中指定一个正常的节点来暂时替代故障节点,这个替代节点称之为重定向节点(redirected site),该重定向节点将替代故障节点处理来自于客户端的新的业务请求。通常,所称的节点的具体形态是服务器,因此,重定向节点,也可以叫做重定向服务器,即,redirected server。在故障节点被重定向节点替代后,该分布式存储系统则进入了degraded state。
在故障节点尚未被修复或者该故障尚未被排除前,即在系统处于degraded state状态时,各个客户端110发送给该故障节点的请求都会被协调管理器150转发给重定向节点,该重定向节点在故障恢复期间暂时处理所有的针对故障节点的请求,并缓存所有的数据修改记录。
当故障的节点的故障排除之后,重定向节点将其缓存的修改记录至迁移至已经恢复的故障节点。需要说明的是,在故障节点恢复之后,但是数据迁移完成之前,所有来自于客户端的业务请求依然由重定向的节点处理。当重定向节点将所有的重建数据迁移完成之后,系统恢复到Normal state,协调管理器150将不再接管业务请求,客户端110可以正常发送业务请求至该分布式系统100中的各个节点。
若上述的故障节点的故障为永久性的故障,即,在一段时间内无法恢复正常工作,协调管理器150在重定向节点替代故障节点期间,利用故障节点所在的同一个Stripe中的其他正常工作的节点上的数据将故障节点内数据恢复到一个新的节点上,所述故障节点中的数据被恢复到一个的新节点上之后,即,在新节点上重建故障节点中的数据完成之后,重定向节点将其缓存的数据修改记录发送至所述新的节点,所述新的节点根据重定向节点发送的数据修改记录对恢复后/重建后的数据进行更新,从而使得更新后的重建数据信息和故障节点所在的同一个Stripe内的其他的节点上的数据信息保持一致,所述的协调管理器150将新的节点信息发送给各个客户端,客户端重新更新缓存内Key与节点的对应关系,同时更新各个节点所维护的索引信息,将新的节点信息加入故障节点所在的Stripe内,即,给所述新的节点一个与故障节点相同的Stripe ID,之后,协调管理器150将不再接管业务请求,系统恢复到正常状态。
下面,介绍下在Degrade state阶段,该应用本发明数据管理方法的分布式存储系统100,如何处理来自客户端110的业务请求,在Degraded state,来自客户端110的业务请求也分为四个基本的操作来介绍,即,Degraded Set,Degraded GET,Degraded Update,以及Degraded Delete。
Degraded Set操作:
Degraded Set操作是在分布式存储系统100中被请求的节点故障的状态下,插入一个数据对象到存储系统100的存储节点内的数据块中,该操作基本包括如下的:
当客户端110确定处理set请求的节点处在故障状态时,就向coordinator发送业务请求;客户端110可以是通过协调管理器150的广播确定处理SET请求的节点处于故障状态,或者是经过有限次的Set请求之后无应答,从而推定处理SET请求的节点处于故障状态。
协调管理器150在该故障节点所在的Stripe中指定另外一个正常工作的节点作为重定向节点,也可以称之为临时存储节点,并将该重定向节点的信息发给客户端110;
客户端110,接收重向节点的信息,并发送set请求给重定向节点;
重定向节点缓存住该set请求,并返回确认信息;
客户端110缓存重定向节点信息,随后发送给故障节点的信息都发送给重定向节点;
当故障节点恢复后,重定向节点将缓存中的Set请求迁移到恢复后的节点上;恢复的节点则依照如本文前述中的正常状态下Set操作的方式处理Set请求。
Degraded GET操作:
Degraded Get操作是指在分布式存储系统100中被请求的节点故障的状态下,根据数据对象的Key值查询该Key值所对应数据对象的Value值。
当客户端110确定处理Get请求的节点处在故障状态时,就向coordinator发送业务请求;客户端110可以是通过协调管理器150的广播确定处理Get请求的节点处于故障状态,或者是经过有限次的Get请求之后无应答,从而推定处理Get请求的节点处于故障状态。
协调管理器150在该故障节点所在的Stripe中指定另外一个正常工作的节点作为重定向节点,并将该重定向节点的信息发给客户端110;
客户端110,接收重向节点的信息,并发送Get请求给重定向节点;
若该Get请求所请求的数据对象所在的数据块(data chunk)未被封盖,从可以直接从所述故障节点所在的Stripe中所包含的备份节点的缓冲区中直接返回所请求的数据。根据本发明前述所介绍的数据管理方法中,若被请求的数据块未被封盖,则该被请求的数据会暂存在备份节点的缓冲区中,因此,在处理Get请求是,可以利用该特性,直接从备份节点中获取被请求的数据;
若该Get请求所请求的数据对象为故障节点的故障后新增或修改后,则从重定向节点的缓冲区中直接获取相应的数据即可,根据前述的Degraded Set操作可知,在系统处于Degraded state状态下,重定向节点替代故障节点,所有Set请求所携带的数据对象都会缓存在重定向节点的缓存中,因此,如果Get请求所请求的数据时在系统处于degradestate状态时由Degrade Set请求新增加,则该Get请求可以直接从重定向节点的缓存中根据Key获取对相应的数据对象。
除了以上的两种情况,重定向节点使用同一个Stripe中的节点的数据恢复该Get请求的数据对象所在的数据块,并返回与该Get请求对应的数据对象。在此过程中,为避免多次恢复整个数据块内数据对象,重定向节点会缓存已恢复过的数据块。
客户端接收到重定向节点返回的确认信息后,刷新缓冲区,即删除缓存区缓存的Degraded Get请求。
Degraded UPDATE和Degraded DELETE操作:
Degraded Update操作是指在分布式存储系统100中被请求的节点故障的状态下,根据数据对象的Key值更新Value值:
Degraded Delete操作是指是在分布式存储系统100中被请求的节点故障的状态下,从存储节点中删除某个数据对象。
Degraded Update操作和Degraded DELETE操作是类似的,主要有以下步骤:
当客户端110确定处理Update/Delete请求的节点处在故障状态时,就向coordinator发送业务请求;客户端110可以是通过协调管理器150的广播确定处理Update/Delete请求的节点处于故障状态,或者是经过有限次的Update/Delete请求之后无应答,从而推定处理Update/Delete请求的节点处于故障状态。
协调管理器150在该故障节点所在的Stripe中指定另外一个正常工作的节点作为重定向节点,并将该重定向节点的信息发给客户端110;
客户端110,接收重向节点的信息,并发送Update/Delete请求给重定向节点;
重定向节点根据同一个Sripe中的其他节点中数据恢复故障节点中的数据块,并根据Update/Delete请求修改数据块中的数据对象,并同步的修改备份节点中的数据;
客户端接收到重定向节点发送的Update/Delete请求完成确认信息后,刷新缓冲区;
当故障节点恢复后,重定向节点将缓存中的Update/Delete请求迁移到恢复后的节点上。恢复的节点则依照如本文前述中的正常状态下Update/Delete操作的方式处理Update/Delete请求。
采用本发明数据管理方法的分布式存储系统100通过上述的操作方式能够实现对数据块内的数据对象的各种业务请求,并在节点出现故障时在不影响正常的业务请求的情况下对故障节点的数据进行恢复,从而有效说明了采用本发明的数据管理方法在分布式存储系统100内以固定大小的数据块的方式存储小的数据对象的可行性和可靠性。
基于上述的具体实现方式,结合图7A至图7H,以示例的方式,本发明可以通过如下方法将该数据管理方法适用到更加广泛的应用场景中,因此,结合图7A,本发明实施例进一步提供一种数据管理方法700,该数据管理方法包括:
S7-10为待存储数据对象,选择一个存储节点,以及多个备份节点,所述存储节点和所述多个备份节点具有相同的条带列表ID;
S7-20将所述待存储数据对象发送给所述存储节点及所述多个备份节点,所述数据对象包括元数据,关键字以及值;
S7-30在所述存储节点内,所述待存储数据对象被存储在固定大小且未封盖的数据块中,所述待存储数据对象的数据索引信息被增加至数据索引中,所述数据索引包含所述数据块中所有的数据对象的数据索引信息,并生成数据块索引;
S7-40在备份节点内,所述待存储数据对象被存储在临时缓冲区内;
S7-50当所述待存储数据对象被存储在所述数据块内之后,若所述数据块内存储的所有数据对象的总数据尺寸接近所述数据块的存储限值时,所述所述数据块被封盖,所述被封盖的数据块内存储的所有数据对象的关键字列表被发送至所述备份节点,并为所述存储节点以及所述备份节点生成相同的条带ID;
S7-60当所述备份节点接收所述关键字列表,根据所述关键字列表中的关键字从所述临时缓冲区中检索出与所述关键字对应的数据对象,根据所述数据对象重建与所述关键字列表对应的数据块,并对所述重建的数据块进行编码获得备份数据块;
S7-70更新存储在所述备份节点且对应于所述被封盖的数据块的所述数据对象索引以及所述数据块索引。
该方法中将多个数据对象集合在一个数据块中进行集中的编码,能够有效的发挥编码备份数据的优点,即,具有较低的数据冗余,避免了对每个数据对象单独采用编码备份带来的效率低下,系统冗余高的弊端。需要说明的是,该方法中,所述的存储节点以及所述备份节点通常设置正在一个分布式存储系统的不同位置处,以提供所需要的容灾能力,即某个存储节点故障时能够通过备份节点恢复出存储节点中的内容。此外,该方法中在进行数据存储中的方法可以包括如下的方法中的一种或者多种:(一)当所述数据块内包含多个数据对象时,所述方法还包括:判断待存储的数据对象是否小于阈值,并将小于阈值的所述待存储的数据对象作为可存储在所述数据块内的数据对象进行所述的存储以及编码;(二)以预定的时间间隔根据所述待存储的数据对象的平均大小,动态调整所述阈值;(三)所述分布式存储系统包括多个备选存储设备,根据所述多个备选存储设备的负载情况,将负载最小的一个或者多个备选存储设备作为所述的一个或者多个第二存储设备;以及(四)当所述数据对象的尺寸大于所述数据块的存储空间的尺寸时,或者当所述数据对象的尺寸大于所述数据块中剩余的存储空间的尺寸时,将所述数据对象进行分割,将分割后的尺寸小于所述数据块的存储空间的尺寸或者小于所述数据块中剩余的存储空间的尺寸的分割数据对象存储在所述数据块内,并将数据块分割信息存储在所述被分割的数据对象的元数据中用于重新组合所述被分割的数据对象。
结合图7B,本发明数据管理方法700还可以进一步包括:
S7-80根据第一目标数据对象的关键字,查找所述第一目标数据对象以及所述第一目标数据对象所在的第一目标数据块,以及所述第一目标数据块所在的第一目标存储节点;
S7-90将所述第一目标数据对象的更新值发送给所述第一目标存储节点;根据所述更新值对所述第一目标存储节内的所述第一目标数据对象的值进行更新,并将所述第一目标数据对象的更新值与所述第一目标数据对象的原始值之间的差值发送给与所述第一目标存储节点具有相同的条带ID的所有第一目标备份节点;
S7-100若所述第一目标数据块未封盖,则根据所述关键字索引到存储在所述第一目标备份节点的缓冲区中的所述第一目标数据对象,并将所述差值与所述第一目标数据对象的原始值相加得到所述第一目标数据对象的更新值;
S7-110若所述第一目标数据块已封盖,根据所述差值,更新所述多个第一目标备份节点内对应于所述第一目标数据块的第一目标备份数据块。
该方法允许对存储在固定的数据块中的数据对象进行灵活的修改和更新和修改。需要说明的是,该方法S7-80至S7-110并不需要依赖于方法S7-10至S7-70,即方法S7-80至S7-110可以脱离法S7-10至S7-70作为一种独立的数据对象修改方法而实现,而这种独立数据对象修改方法所适用的数据结构可以是本发明图3中所揭示的数据结构。
结合图7C,本发明数据管理方法700还可以进一步包括:
S7-120根据所述第一目标数据对象的关键字查找所述第一目标数据对象以及所述第一目标数据对象所在的第一目标数据块,以及所述第一目标数据块所在的第一目标存储节点;
S7-130发送删除所述第一目标数据对象的删除请求至所述第一目标存储节点;
S7-140若所述第一目标数据块未封盖,删除第一目标存储节点内的所述第一目标数据对象,并发删除指令至所述第一目标备份节点删除存储在所述第一目标备份节点的缓冲区中的所述第一目标数据对象;
S7-150若所述第一目标数据块已封盖,将所述第一目标存储节点内的所述第一目标数据对象的值设置为特殊值,同时将该特殊值与所述第一目标数据对象的原始值之间的差值发送给所述多个第一目标备份节点,使所述多个第一目标备份节点内的所述第一目标备份数据块根据所述差值进行更新,所述第一目标备份数据块与所述第一目标数据块相对应。
本方法提供一种可以降低系统负担的数据删除方法,即,不即可对数据块内存储的目标数据对象进行删除,而是将目标数据对象的值设置为特殊值,比如0,可以在系统闲时再将该目标数据对象删除。需要说明的是,该方法S7-120至S7-150并不需要要依赖于方法S7-10至S7-110,即方法S7-120至S7-150可以脱离法S7-10至S7-110作为一种独立的数据对象删除方法而实现,而这种独立数据对象修改方法所适用的数据结构可以是本发明图3中所揭示的数据结构。
结合图7D,本发明数据管理方法700还可以进一步包括:
S7-160为第二目标数据对象,选择一个第二目标存储节点以及多个第二目标备份节点,所述第二目标存储节点和所述多个第二目标备份节点具有相同的条带列表ID;
S7-170发送所述第二目标数据对象至所述第二目标存储节点,当所述第二目标存储节点为故障存储节点时,所述第二目标数据对象被发送至协调管理器中,以使所述协调管理器获取与所述第二目标数据对象对应条带列表ID,并在具有与所述条带列表ID相同的条带列表ID的正常存储节点中确定一个作为第一临时存储节点,并指示将所述第二目标数据对象发送并存储至所述第一临时存储节点;
S7-180将所述第二目标数据对象存储在所述第一临时存储节点内;
S7-190当所述第二目标存储节点的故障排除后,将存储在所述第一临时存储节点内的所述第二目标数据对象迁移至排除故障后所述第二目标存储节点。
本方法保证该数据管理方法在某个指定的第二目标存储节点故障时,通过协调管理器指定一个第一临时存储节点来接管故障的第二目标存储节点,并在第二目标存储节点从故障中恢复时,将第一临时存储节点内存储的指向第二目标存储节点的第二目标数据对象迁移至所述第二目标存储节点,第二目标存储节点则按照正常的存储方法对第二目标数据对象进行存储。需要说明的是,该方法S7-170至S7-190并不需要要依赖于方法S7-10至S7-160,即方法S7-170至S7-190可以脱离法S7-10至S7-160作为一种独立的在存储节点故障阶段的数据设置方法而实现,而这种独立的故障阶段的数据设置方法所适用的数据结构可以是本发明图3中所揭示的数据结构。本发明数据管理方法700还可以进一步包括:
S7-200发送请求所述第二目标数据对象的数据获取请求至所述第二目标存储节点,当所述第二目标存储节点为故障存储节点时,所述数据获取请求被发送至所述协调管理器中,以使所述协调管理器根据所述数据获取请求获取与所述第二目标数据对象对应条带列表ID,并在具有与所述条带列表ID相同的条带列表ID的正常存储节点中确定一个作为第二临时存储节点,并指示将所述数据获取请求发送至所述第二临时存储节点,使所述第二临时存储节点根据所述数据获取请求返回对应第二目标数据对象。
本方法中可以保证该数据管理方法即便是在某个第二目标存储节点发生故障的情况下,仍然能够允许客户端访问存储在故障的第二目标存储节点内的数据对象,其具体的方法如上述,通过第二临时存储节点来接管第二目标存储节点而实现对故障节点的访问。需要说明的是,该方法S7-200并不需要要依赖于方法S7-10至S7-190,即方法S7-210可以脱离法S7-10至S7-190作为一种独立的在存储节点故障阶段的数据请求方法而实现,而这种独立的故障阶段的数据请求方法所适用的数据结构可以是本发明图3中所揭示的数据结构。
本发明数据管理方法700中的步骤S7-200中的步骤使所述第二临时存储节点根据所述数据获取请求返回对应第二目标数据对象,还可以进一步包括:
S7-200-1若所述第二目标数据对象所在的第二数据块未被封盖,使所述第二临时存储节点发送数据请求至与所述第二目标存储节点对应的所述第二目标备份节点,使所述第二目标备份节点根据所述数据请求从其缓冲区中获取对应的第二目标数据对象,并将所述第二目标数据对象返回给所述第二临时存储节点并由所述第二临时存储节点返回所述被请求的第二目标数据对象;
S7-200-2若所述数据请求所请求的第二目标数据对象为所述第二目标存储节点的故障后新增或修改的,则从所述第二临时存储节点中获取并返回相应的第二目标数据对象;
S7-200-3否则,使所述第二临时存储节点根据所述第二目标数据对象对应条带ID从具有相同的条带ID的第二目标备份节点中获取与所述第二目标数据对象对应的第二备份数据块,并根据所述第二备份数据块恢复包含所述第二目标数据对象的第二目标数据块并从所述第二目标数据块中获取所述第二目标数据对象并返回所述第二目标数据对象。
本方法中,在某个数据存储节点,例如第二目标存储节点故障时,由于故障发生的时间点和持续时间不确定,因此本方法提供了在多种不同的情况下如何访问故障节点中的数据的办法,提高了系统的灵活性和实用性。
本发明数据管理方法700还可以进一步包括:
S7-210发送修改第三目标数据对象的数据修改请求至第三目标存储节点,当所述第三目标存储节点为故障存储节点时,所述数据修改请求被发送至协调管理器中,使所述协调管理器获取与所述第三目标数据对象对应条带列表ID,并在具有与所述条带列表ID相同的条带列表ID的正常存储节点中确定一个作为第三临时存储节点,并指示将所述数据修改请求发送至所述第三临时存储节点,以使所述第三临时存储节点根据所述数据修改请求修改所述第三目标数据对象。
本方法中可以保证该数据管理方法即便是在某个第三目标存储节点发生故障的情况下,仍然能够允许客户端访问存储在故障的第三目标存储节点内的数据对象,其具体的方法如上述,通过第三临时存储节点来接管第三目标存储节点而实现对故障节点内的数据修改。需要说明的是,该方法S7-210并不需要要依赖于方法S7-10至S7-200,即方法S7-210可以脱离法S7-10至S7-200作为一种独立的在存储节点故障阶段的数据修改方法而实现,而这种独立的故障阶段的数据修改方法所适用的数据结构可以是本发明图3中所揭示的数据结构。
本发明数据管理方法700中的步骤S7-210中的使所述第三临时存储节点根据所述数据修改请求修改所述第三目标数据对象包括还可以进一步包括:
S7-210-1存储所述数据修改请求在所述第三临时存储节点内,并使所述第三临时存储节点根据所述第三目标数据对象对应条带ID从具有相同的条带ID的第三目标备份节点中获取与所述第三目标数据对象对应的第三备份数据块,根据所述第三备份数据块恢复包含所述第三目标数据对象的第三目标数据块,将所述数据修改请求中所携带的更新值与所述第三目标数据对象的原始值之间的差值发送给所述第三目标备份节点,以使所述第三目标备份节点根据所述差值,更新所述第三备份数据块;
S7-210-2当所述第三目标存储节点的故障排除后,存储在所述第三临时存储节点内数据修改请求被迁移至所述第三目标存储节点内,以使所述第三目标存储节点根据所述数据修改请求对第三目标存储节点内的所述第三目标数据对象进行修改。
本方法可以在第三目标存储节点故障时,通过第三临时存储节点来处理对第三目标数据对象的修改,并保持第三目标备份节点内的数据与修改后的第三目标数据对象之间的一致性,并在第三目标存储节点恢复之后,将修改请求重新发送给所述第三目标存储节点,来使得第三目标备份节点内的数据与第三目标存储节点中的第三目标数据的一致性。
本发明上述实施例所提供的各种数据管理方法可以通过装置来实现,装置可以理解为是根据功能划分的用以实现某个方法步骤的功能单元,该功能单元可以是单独实现上述方法中的一个步骤或者几个步骤,所述功能单元从硬件实现上看可以是一个具体电路,或者电路的一步分,或者是系统中的不同部件各自贡献自己的一部分能力和形成的一个多部件功能单元以实现上述的方法。以下结合图8至图10,通过实施例的方式示例性的说明书实现以上方法的装置或者系统的可能的实现方式。
图8为本发明实施例的数据管理装置的示意性框图。一种数据管理装置800,包括:
编码单元810,用于对预定大小的数据块进行编码,生成与所述数据块对应的纠错数据块,其中,所述数据块包括数据对象,其中所述数据对象包括,关键字,值,以及元数据;
索引生成单元820,用于生成数据块索引以及数据对象索引,所述数据块索引用于索引所述数据块及与所述数据块对应的纠错数据块,所述数据对象索引用于在所述数据块中索引所述数据对象,其中,每个数据对象索引用于索引唯一一个数据对象。
该数据处理装置中可将多个数据对象集合在一个数据块中进行集中的编码,能够有效的发挥编码备份数据的优点,即,具有较低的数据冗余,避免了对每个数据对象单独采用编码备份带来的效率低下,系统冗余高的弊端。
可选地,作为一个实施例,所述数据管理装置800,还包括:
数据存储单元830,用于将所述数据对象存储在所述预定大小的数据块中,其中,所述预定大小的数据块位于第一存储设备中;以及,
数据备份单元840,将所述的纠错数据存储在第二存储设备中,所述第一存储设备与第二存储设备位于分布式存储系统中的不同位置。
该数据处理装置可将数据块和对应的纠错数据块存储在分布式存储系统中的不同的存储位置,如第一存储设备和第二存储设备中,从而能够保证在所述部分第一存储设备故障时能够根据第二存储设备及部分工作的第一存储设备中的数据来恢复故障的存储设备中的数据,从而该分布式存储系统能够具有满足基本要求的容灾能力,即可靠性。所述的第一存储设备可以理解为用于存储所述数据块的常规的数据服务器,所述第二存储设备可以理解为存储所述数据块的纠错数据块的校验服务器,当K个数据服务器以及M个校验服务器中的不多于M个服务器(M个数据服务器,M个校验服务器,或者M个混合有数据服务器及校验服务器的服务器)故障时,剩余的K个服务器可以通过编码算法将故障服务器中的数据进行恢复。所述的编码方法可以是EC编码或者是XOR编码或者其他能够实现数据编码备份的编码方法。
可选地,作为一个实施例,所述数据管理装置800中,所述的数据块索引包括:条带列表ID,条带ID,以及位置信息,所述的条带列表ID用于唯一确定所述分布式存储系统中多个存储设备分组中的一个存储设备分组,其中所述的存储设备分组包括多个第一设备及多个第二设备;所述条带ID用于确定在所述条带列表ID所指示的存储设备分组中存储所述数据块以及与所述数据块对应的纠错数据块的操作序号;所述位置信息用于确定所述数据块在所述条带列表ID所确定的存储设备分组中哪一个第一存储设备中,以及所述纠错数据块在所述条带列表ID所确定的存储设备分组中哪一个第二存储设备中。
为了能够实现在某个存储设备故障时对该存储设备进行恢复,本发明采用条带列表ID,条带ID,以及位置信息的三级索引方式来索引数据块,当客户端需要访问某个数据块时,便可以根据该索引并结合数据对象索引的关键字来重构正确的数据块,同时在故障期间的所有请求,都可以根据条带ID所确定的其他的存储设备来代为处理,并在故障存储设备回复后,将数据统一迁移至所述恢复后的存储设备中,有效的保证了运用该数据管理方法的分布式存储设备的可靠性。
可选地,作为一个实施例,所述数据管理装置800,所述索引生成单元820,用于,在所述第一存储设备中生成数据块索引以及数据对象索引,以及在所述第二存储设备中生成所述数据块索引以及所述数据对象索引。
可选地,作为一个实施例,所述数据管理装置800,还包括,
存储设备选择单元850,用于,选择一个第一存储设备,以及一个或者多个第二存储设备,以及,将所述数据对象分别发送给所述第一存储设备,以及所述第二存储设备。
可选地,作为一个实施例,在所述所述数据管理装置800中,
所述数据存储单元830,用于将所述数据对象存储在所述数据块内,当所述数据块内的数据对象的大小接近或者等于所述数据块的存储限值时,停止向所述数据块写入新数据对象,并将所述数据块内的所存储的所有的数据对象的Key值发送给所述编码单元;
所述编码单元810,用于,接收所述所述数据存储单元发送的所述数据块内的所有数据对象的Key值,并根据所述数据对象的Key值在所述第二存储设备内重建所述数据块,并对重建的所述数据块进行所述的编码。
可选地,作为一个实施例,所述所述数据管理装置800还包括:数据筛选单元860,用于判断待存储的数据对象是否小于阈值,并将小于阈值的所述待存储的数据对象作为可存储在所述数据块内的数据对象进行所述的存储以及编码。
可选地,作为一个实施例,在所述所述数据管理装置800中:所述数据筛选单元860,还用于以预定的时间间隔根据所述待存储的数据对象的平均大小,动态调整所述阈值。
可选地,作为一个实施例,在所述所述数据管理装置800中:所述分布式存储系统包括多个备选存储设备,所述存储设备选择单元850:根据所述多个备选存储设备的负载情况,将负载最小的一个或者多个备选存储设备作为所述的一个或者多个第二存储设备。
可选地,作为一个实施例,在所述所述数据管理装置800中:所述数据存储单元830,用于,当所述数据对象的尺寸大于所述数据块的存储空间的尺寸时,或者当所述数据对象的尺寸大于所述数据块中剩余的存储空间的尺寸时,将所述数据对象进行分割,将分割后的尺寸小于所述数据块的存储空间的尺寸或者小于所述数据块中剩余的存储空间的尺寸的分割数据对象存储在所述数据块内,并将数据块分割信息存储在所述被分割的数据对象的元数据中用于重新组合所述被分割的数据对象。
图9是本发明数据管理系统的示意性框图,该数据管理系统900包括:
客户端910,还用于,为待存储数据对象选择一个存储节点920,以及多个备份节点930,所述存储节点和所述多个备份节点具有相同的条带列表ID,并将所述待存储数据对象发送给所述存储节点及所述多个备份节点,所述数据对象包括元数据,关键字以及值;
所述存储节点920,用于将所述待存储数据对象存储在固定大小且未封盖的数据块中,并将所述待存储数据对象的数据索引信息增加至数据索引中,所述数据索引包含所述数据块中所有数据对象的数据索引信息,并生成数据块索引;
所述备份节点930,用于将所述待存储数据对象存储在临时缓冲区内;
所述存储节点920,还用于,当所述待存储数据对象被存储在所述数据块内之后,若所述数据块内存储的所有数据对象的总数据尺寸接近所述数据块的存储限值时,封盖所述数据块,并将被封盖的所述数据块内存储的所有数据对象的关键字列表发送至所述备份节点,并为所述存储节点以及所述备份节点生成相同的条带ID;
所述备份节点930,还用于,接收所述存储节点所发送的关键字列表,根据所述关键字列表中的关键字从所述临时缓冲区中检索出与所述关键字对应的数据对象,根据所述数据对象重建与所述关键字列表对应的数据块,并对所述重建的数据块进行编码获得备份数据块,且更新存储在所述备份节点且对应于所述被封盖的数据块的所述数据对象索引以及所述数据块索引。
该数据处理管理装置允许将小的数据对象存储在固定大小的数据块中,从而能够发挥编码备份的优势,降低数据冗余度,节省资源。
可选地,作为一个实施例,所述客户端910,还用于,根据第一目标数据对象的关键字,查找所述第一目标数据对象以及所述第一目标数据对象所在的第一目标数据块,以及所述第一目标数据块所在的第一目标存储节点920a,将所述第一目标数据对象的更新值发送给所述第一目标存储节点920a;
所述第一目标存储节点920a,用于对所述第一目标数据对象的值进行更新,并将所述第一目标数据对象的更新值与所述第一目标数据对象的原始值之间的差值发送给与所述第一目标存储节点具有相同的条带ID的所有第一目标备份节点930a;
若所述第一目标数据块未封盖,则所述多个第一目标备份节点920a用于根据所述关键字索引到存储在缓冲区中的所述第一目标数据对象,并将所述差值与所述第一目标数据对象的原始值相加得到所述第一目标数据对象的更新值;
若所述第一目标数据块已封盖,所述多个第一目标备份节点930a用于根据所述差值,更新对应于所述第一目标数据块的第一目标备份数据块。
可选地,作为一个实施例,所述客户端910,还用于,根据所述第一目标数据对象的关键字查找所述第一目标数据对象以及所述第一目标数据对象所在的第一目标数据块,以及所述第一目标数据块所在的第一目标存储节点920a,并发送删除所述第一目标数据对象的删除请求至所述第一目标存储节点920a;
若所述第一目标数据块未封盖,所述第一目标存储节点920a,用于删除所述第一目标数据对象,并发删除指令至所述第一目标备份节点930a,所述第一目标备份节点920a,用于根据所述删除指令,删除存储在缓冲区中的所述第一目标数据对象;
若所述第一目标数据块已封盖,所述第一目标存储节点920a,用于将所述第一目标数据对象的值设置为特殊值,同时将该特殊值与所述第一目标数据对象的原始值之间的差值发送给所述多个第一目标备份节点930a,所述多个第一目标备份节点930a用于根据所述差值,更新所述第一目标备份数据块。
可选地,作为一个实施例,所述客户端910,还用于,所述客户端,还用于,为第二目标数据对象,选择一个第二目标存储节点920b以及多个第二目标备份节点930b,所述第二目标存储节点920b和所述多个第二目标备份节点具有相同的条带列表ID,并发送所述第二目标数据对象至所述第二目标存储节点920b,当所述第二目标存储节点为故障存储节点时,将所述第二目标数据对象发送至所述协调管理器940中;
所述协调管理器用940于,获取与所述第二目标数据对象对应条带列表ID,并在具有与所述条带列表ID相同的条带列表ID的正常存储节点中确定一个作为第一临时存储节点950a,并指示所述客户端将所述第二目标数据对象发送并存储至所述第一临时存储节点950a;
所述第一临时存储节点950a用于存储所述第二目标数据对象,并在所述第二目标存储节点的故障排除后,将所述第二目标数据对象迁移至排除故障后的所述第二目标存储节点920b。
可选地,作为一个实施例,所述客户端910,还用于,还用于,发送请求所述第二目标数据对象的数据获取请求至所述第二目标存储节点920b,当所述第二目标存储节点920b为故障存储节点时,发送所述数据获取请求至所述协调管理器940中;
所述协调管理器用940于,获取与所述第二目标数据对象对应条带列表ID,并在具有与所述条带列表ID相同的条带列表ID的正常存储节点中确定一个作为第二临时存储节点950b,并指示所述客户端将所述数据获取请求发送至所述第二临时存储节950b点;
所述第二临时存储节点950b用于,根据所述数据获取请求返回对应第二目标数据对象。
可选地,作为一个实施例,所述第二临时存储节点950b,还用于:
若所述第二目标数据对象所在的第二数据块未被封盖,发送数据请求至与所述第二目标存储节点对应的所述第二目标备份节点930b,所述第二目标备份节点用于,根据所述数据请求从缓冲区中获取对应的第二目标数据对象,并将所述第二目标数据对象返回给所述第二临时存储节点,所述第二临时存储节点返回所述被请求的第二目标数据对象至所述客户端910;
若所述数据请求所请求的第二目标数据对象为所述第二目标存储节点的故障后新增或修改的,将相应的第二目标数据对象返回给所述客户端;
否则,根据所述第二目标数据对象对应条带ID从具有相同的条带ID的第二目标备份节点中获取与所述第二目标数据对象对应的第二备份数据块,并根据所述第二备份数据块恢复包含所述第二目标数据对象的第二目标数据块并从所述第二目标数据块中获取所述第二目标数据对象并返回所述第二目标数据对象至所述客户端。
可选地,作为一个实施例,所述客户端910,还用于,发送修改第三目标数据对象的数据修改请求至第三目标存储节点920c,当所述第三目标存储节点为故障存储节点时,将数据修改请求发送至所述协调管理器940中;
所述协调管理器940用于,获取与所述第三目标数据对象对应条带列表ID,并在具有与所述条带列表ID相同的条带列表ID的正常存储节点中确定一个作为第三临时存储节点950c,并指示所述客户端将所述数据修改请求发送至所述第三临时存储节点950c;
所述第三临时存储节点950c用于,根据所述数据修改请求修改所述第三目标数据对象。
可选地,作为一个实施例,所述第三临时存储节点950c,还用于,存储所述数据修改请求,并根据所述第三目标数据对象对应条带ID从具有相同的条带ID的第三目标备份节点930c中获取与所述第三目标数据对象对应的第三备份数据块,且根据所述第三备份数据块恢复包含所述第三目标数据对象的第三目标数据块,将所述数据修改请求中所携带的更新值与所述第三目标数据对象的原始值之间的差值发送给所述第三目标备份节点930c;
所述第三目标备份节点930c用于,根据所述差值,更新所述第三备份数据块;
当所述第三目标存储节点的故障排除后,所述第三临时存储节点950c用于,将存储的所述数据修改请求迁移至所述第三目标存储节点920c内;
所述第三目标存储节点根据所述数据修改请求对存储于第三目标存储节点内的所述第三目标数据对象进行修改。
图10是本发明实施例的一种数据管理装置的示意性框图。该数据管理装置1000包括:
存储设备选择单元1010,用于,为待存储数据对象,选择一个存储节点,以及多个备份节点,所述存储节点和所述多个备份节点具有相同的条带列表ID,并将所述待存储数据对象发送给所述数据存储单元,以数据备份单元,所述数据对象包括元数据,关键字以及值;
数据存储单元1020,用于,将所述待存储数据对象存储在所述存储节点内固定大小且未封盖的数据块中,并将所述待存储数据对象的数据索引信息增加至数据索引中,所述数据索引包含所述数据块中所有的数据对象的数据索引信息,且生成数据块索引;以及
数据备份单元1030,用于,将所述待存储数据对象存储在所述备份节点内的临时缓冲区内;
当所述待存储数据对象被存储在所述数据块内之后,若所述数据块内存储的所有数据对象的总数据尺寸接近所述数据块的存储限值时,所述数据存储单元封盖所述数据块,并将被封盖的所述数据块内存存储的所有数据对象的关键字列表发送至所述数据备份单元,且为所述存储节点以及所述备份节点生成相同的条带ID;
所述数据备份单元,根据所述关键字列表中的关键字从所述存储节点的临时缓冲区中检索出与所述关键字对应的数据对象,根据所述数据对象重建与所述关键字列表对应的数据块,并对所述重建的数据块进行编码获得备份数据块,且,更新存储在所述备份节点且对应于所述被封盖的数据块的所述数据对象索引以及所述数据块索引。
该数据处理装置中可将多个数据对象集合在一个数据块中进行集中的编码,能够有效的发挥编码备份数据的优点,即,具有较低的数据冗余,避免了对每个数据对象单独采用编码备份带来的效率低下,系统冗余高的弊端。
可选地,作为一个实施例,在所述数据处理装置1000中,
所述存储设备选择单元1010,还用于,根据第一目标数据对象的关键字,查找所述第一目标数据对象以及所述第一目标数据对象所在的第一目标数据块,以及所述第一目标数据块所在的第一目标存储节点,并将所述第一目标数据对象的更新值发送给所述数据存储单元1020;
所述数据存储单元1020,根据所述更新值对所述第一目标存储节内的所述第一目标数据对象的值进行更新,并将所述第一目标数据对象的更新值与所述第一目标数据对象的原始值之间的差值发送给所述数据备份单元;
所述数据备份单元1030,将与所述第一目标存储节点具有相同的条带ID的所有第一目标备份节点内的与所述第一目标数据对象对应的第一目标备份数据进行更新,其中,若所述第一目标数据块未封盖,所述备份数据单元根据所述关键字索引到存储在所述第一目标备份节点的缓冲区中的所述第一目标数据对象作为所述第一目标备份数据,并将所述差值与所述第一目标备份数据的原始值相加得到所述第一目标数据对象的更新值;若所述第一目标数据块已封盖,所述备份数据单元根据所述差值,更新所述多个第一目标备份节点内的第一目标备份数据块,所述第一目标备份数据块与所述第一目标数据块相对应。
可选地,作为一个实施例,在所述数据处理装置1000中,
所述存储设备选择单元1010,还用于,根据所述第一目标数据对象的关键字查找所述第一目标数据对象以及所述第一目标数据对象所在的第一目标数据块,以及所述第一目标数据块所在的第一目标存储节点,并发送删除所述第一目标数据对象的删除请求至所述所述数据存储单元;
若所述第一目标数据块未封盖,所述数据存储单元1020,用于,删除所述第一目标存储节点内的所述第一目标数据对象,并发删除指令至所述数据备份单元,所述数据备份单元根据所述删除指令删除存储在所述第一目标备份节点的缓冲区中的所述第一目标数据对象;
若所述第一目标数据块已封盖,所述数据存储单元1020,用于,将所述第一目标存储节点内的所述第一目标数据对象的值设置为特殊值,同时将该特殊值与所述第一目标数据对象的原始值之间的差值发送给所述数据备份单元,所述数据备份单元根据所述差值更新所述多个第一目标备份节点内的第一目标备份数据块,所述第一目标备份数据块与所述第一目标数据块相对应。
可选地,作为一个实施例,在所述数据处理装置1000中,所述存储设备选择单元1010,还用于,为第二目标数据对象,选择一个第二目标存储节点以及多个第二目标备份节点,所述第二目标存储节点和所述多个第二目标备份节点具有相同的条带列表ID,发送所述第二目标数据对象至所述第二目标存储节点,当所述第二目标存储节点为故障存储节点时,所述第二目标数据对象被发送至协调管理单元1040中;
所述协调管理单元1040,用于获取与所述第二目标数据对象对应条带列表ID,并在具有与所述条带列表ID相同的条带列表ID的正常存储节点中确定一个作为第一临时存储节点,并指示所述存储设备选择单元将所述第二目标数据对象发送至所述数据存储单元;
所述数据存储单元1020,用于将所述第二目标数据对象存储在所述第一临时存储节点内;
当所述第二目标存储节点的故障排除后,所述数据存储单元1020用于将存储在所述第一临时存储节点内的所述第二目标数据对象迁移至排除故障后所述第二目标存储节点。
可选地,作为一个实施例,在所述数据处理装置1000中,所述存储设备选择单元1010,还用于,发送请求所述第二目标数据对象的数据获取请求至所述数据存储单元;
所述数据存储单元1020确定存储所述第二目标数据对象的所述第二目标存储节点为故障存储节点时,指示所述存储设备选择单元将所述数据获取请求发送至所述协调管理器单元;
所述协调管理单元1040,用于根据所述数据获取请求获取与所述第二目标数据对象对应的条带列表ID,并在具有与所述条带列表ID相同的条带列表ID的正常存储节点中确定一个作为第二临时存储节点;
所述数据存储单元1010根据所述数据获取请求从所述第二临时存储节点中获取所述第二目标数据对象,并将所述第二目标数据对象返回至所述存储设备选择单元。
可选地,作为一个实施例,在所述数据处理装置1000中,若所述第二目标数据对象所在的第二数据块未被封盖,所述数据存储单元1020用于,将所述数据请求发送至与数据备份单元;
所述数据备份单元1030,用于,根据所述数据请求从与所述第二目标存储节点对应的多个所述第二目标备份节点的缓冲区中获取对应的第二目标数据对象,并将所述第二目标数据对象返回给数据存储单元1020,所述数据存储单元1020返回所述被请求的第二目标数据对象至所述存储设备选择单元1010;
若所述数据请求所请求的第二目标数据对象为所述第二目标存储节点的故障后新增或修改的,所述数据存储单元1020,用于从所述第二临时存储节点中获取并返回相应的第二目标数据对象值所述存储设备选择单元;
否则,所述数据存储单元1020根据所述第二目标数据对象对应条带ID从具有相同的条带ID的第二目标备份节点中获取与所述第二目标数据对象对应的第二备份数据块,并根据所述第二备份数据块恢复包含所述第二目标数据对象的第二目标数据块并从所述第二目标数据块中获取所述第二目标数据对象并返回所述第二目标数据对象至所述存储设备选择单元1010。
可选地,作为一个实施例,在所述数据处理装置1000中,所述存储设备选择单元1010,还用于发送修改第三目标数据对象的数据修改请求至所述数据存储单元;
所述数据存储单元1020确定存储所述第三目标数据对象的第三目标存储节点为故障存储节点时,指示所述存储设备选择单元将所述数据修改请求发送至协调管理单元;
所述协调管理单元1040,用于根据所述数据获取请求获取与所述第三目标数据对象对应的条带列表ID,并在具有与所述条带列表ID相同的条带列表ID的正常存储节点中确定一个作为第三临时存储节点;
所述数据存储单元1020,根据所述数据修改请求修改存储在所述第三临时存储节点内的所述第三目标数据对象。
可选地,作为一个实施例,在所述数据处理装置1000中,所述数据存储单元1020,还用于,将所述数据修改请求存储在所述第三临时存储节点内,并根据所述第三目标数据对象对应条带ID从具有相同的条带ID的第三目标备份节点中获取与所述第三目标数据对象对应的第三备份数据块,根据所述第三备份数据块恢复包含所述第三目标数据对象的第三目标数据块,将所述数据修改请求中所携带的更新值与所述第三目标数据对象的原始值之间的差值发送给所述的数据备份单元1030;
所述数据备份单元1030,根据所述差值,更新所述第三备份数据块;
当所述第三目标存储节点的故障排除后,所述数据存储单元1020将根据存储在所述第三临时存储节点内数据修改请求修改存储在所述第三目标存储节点内的所述第三目标数据对象。在一个或多个实例中,所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件实施,则功能可作为一个或多个指令或代码而存储于计算机可读媒体上或经由计算机可读媒体而发送,且通过基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体(其对应于例如数据存储媒体等有形媒体)或通信媒体,通信媒体包含(例如)根据通信协议促进计算机程序从一处传送到另一处的任何媒体。以此方式,计算机可读媒体大体上可对应于(1)非瞬时的有形计算机可读存储媒体,或(2)例如信号或载波等通信媒体。数据存储媒体可为可由一个或多个计算机或一个或多个处理器存取以检索指令、代码及/或数据结构以用于实施本发明中所描述的技术的任何可用媒体。计算机程序产品可包含计算机可读媒体。
通过实例而非限制,某些计算机可读存储媒体可包括RAM、ROM、
EEPROM、CD-ROM或其它光盘存储器、磁盘存储器或其它磁性存储装置、快闪存储器,或可用以存储呈指令或数据结构的形式的所要程序代码且可由计算机存取的任何其它媒体。而且,任何连接可适当地称为计算机可读媒体。举例来说,如果使用同轴电缆、光缆、双绞线、数字用户线(DSL)或无线技术(例如,红外线、无线电及微波)而从网站、服务器或其它远程源发送指令,则同轴电缆、光缆、双绞线、DSL或无线技术(例如,红外线、无线电及微波)包含于媒体的定义中。然而,应理解,计算机可读存储媒体及数据存储媒体不包含连接、载波、信号或其它瞬时媒体,而是有关非瞬时有形存储媒体。如本文中所使用,磁盘及光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字影音光盘(DVD)、软性磁盘及蓝光光盘,其中磁盘通常以磁性方式复制数据,而光盘通过激光以光学方式复制数据。以上各物的组合还应包含于计算机可读媒体的范围内。
可由例如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路等一个或多个处理器来执行指令。因此,如本文中所使用的术语“处理器”可指代前述结构或适于实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,可将本文中所描述的功能性提供于经配置以用于编码及解码的专用硬件及/或软件模块内,或并入于组合式编解码器中。而且,所述技术可完全实施于一个或多个电路或逻辑元件中。
本发明的技术可以广泛地由多种装置或设备来实施,所述装置或设备包含无线手持机、集成电路(IC)或IC集合(例如,芯片组)。在本发明中描述各种组件、模块或单元以强调经配置以执行所揭示技术的装置的功能方面,但未必要求通过不同硬件单元来实现。确切地说,如上文所描述,各种单元可组合于编解码器硬件单元中,或通过交互操作性硬件单元(包含如上文所描述的一个或多个处理器)的集合结合合适软件及/或固件来提供。
应理解,说明书通篇中提到的“一个实施方式”或“一实施方式”意味着与实施方式有关的特定特征、结构或特性包括在本发明的至少一个实施方式中。因此,在整个说明书各处出现的“在一个实施方式中”或“在一实施方式中”未必一定指相同的实施方式。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施方式中。
在本发明的各种实施方式中,应理解,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施方式的实施过程构成任何限定。
另外,本文中术语“系统”和“网络”在本文中常可互换使用。应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
在本申请所提供的实施方式中,应理解,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
本领域普通技术人员可以意识到,结合本文中所公开的实施方式描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (44)
1.一种数据管理方法,其特征在于,包括:
对预定大小的数据块进行编码,生成与所述数据块对应的纠错数据块,其中,所述数据块包括数据对象,其中所述数据对象包括关键字,值,以及元数据,所述数据对象的大小小于阈值;
生成数据块索引以及数据对象索引,所述数据块索引用于索引所述数据块及与所述数据块对应的纠错数据块,所述数据对象索引用于在所述数据块中索引所述数据对象,其中,每个数据对象索引用于索引唯一一个数据对象。
2.根据权利要求1的数据管理方法,其特征在于:在所述对预定大小的数据块进行编码,生成与所述数据块对应的纠错数据块,之前,所述方法还包括:
将所述数据对象存储在所述预定大小的数据块中,其中,所述预定大小的数据块位于第一存储设备中;
在所述对预定大小的数据块进行编码,生成与所述数据块对应的纠错数据块,之后,所述方法还包括:
将所述的纠错数据存储在第二存储设备中,所述第一存储设备与第二存储设备位于分布式存储系统中的不同位置。
3.根据权利要求2所述的数据管理方法,其特征在于:所述的数据块索引包括:条带列表ID,条带ID,以及位置信息,所述的条带列表ID用于唯一确定所述分布式存储系统中多个存储设备分组中的一个存储设备分组,其中所述的存储设备分组包括多个第一设备及多个第二设备;所述条带ID用于确定在所述条带列表ID所指示的存储设备分组中存储所述数据块以及与所述数据块对应的纠错数据块的操作序号;所述位置信息用于确定所述数据块在所述条带列表ID所确定的存储设备分组中哪一个第一存储设备中,以及所述纠错数据块在所述条带列表ID所确定的存储设备分组中哪一个第二存储设备中。
4.根据权利要求3所述的数据管理方法,其特征在于:所述生成数据块索引以及数据对象索引,具体包括:
在所述第一存储设备中生成数据块索引以及数据对象索引;以及
在所述第二存储设备中生成所述数据块索引以及所述数据对象索引。
5.根据权利要求2至4任意一项所述的数据管理方法,其特征在于:在将所述数据对象存储在所述预定大小的数据块中,其中,所述预定大小的数据块位于第一存储设备中,之前,所述方法还包括:
选择一个第一存储设备,以及一个或者多个第二存储设备;
将所述数据对象分别发送给所述第一存储设备,以及所述第二存储设备。
6.根据权利要求5所述的数据管理方法,其特征在于:所述第一存储设备将所述数据对象存储在所述数据块内,当所述数据块内的数据对象的大小接近或者等于所述数据块的存储限值时,停止向所述数据块写入新数据对象,并将所述数据块内的所存储的所有的数据对象的Key值发送给所述第二存储设备;
所述第二存储设备接收所述第一存储设备发送的所述数据块内的所有数据对象的Key值,并根据所述数据对象的Key值在所述第二存储设备内重建所述数据块,对重建的所述数据块进行所述的编码。
7.根据权利要求5所述的数据管理方法,其特征在于:当所述数据块内包含多个数据对象时,所述方法还包括:判断待存储的数据对象是否小于所述阈值,并将小于所述阈值的所述待存储的数据对象作为可存储在所述数据块内的数据对象进行所述的存储以及编码。
8.根据权利要求7所述的数据管理方法,其特征在于:所述方法还包括,以预定的时间间隔根据所述待存储的数据对象的平均大小,动态调整所述阈值。
9.根据权利要求5所述的数据管理方法,其特征在于:所述分布式存储系统包括多个备选存储设备,对应的所述方法还包括:根据所述多个备选存储设备的负载情况,将负载最小的一个或者多个备选存储设备作为所述的一个或者多个第二存储设备。
10.根据权利要求6所述的数据管理方法,其特征在于:所述第一存储设备将所述数据对象存储在所述数据块内,包括,当所述数据对象的尺寸大于所述数据块的存储空间的尺寸时,或者当所述数据对象的尺寸大于所述数据块中剩余的存储空间的尺寸时,将所述数据对象进行分割,将分割后的尺寸小于所述数据块的存储空间的尺寸或者小于所述数据块中剩余的存储空间的尺寸的分割数据对象存储在所述数据块内,并将数据块分割信息存储在被分割的数据对象的元数据中用于重新组合所述被分割的数据对象。
11.一种数据管理方法,其特征在于包括:
为待存储数据对象,选择一个存储节点,以及多个备份节点,所述存储节点和所述多个备份节点具有相同的条带列表ID;
将所述待存储数据对象发送给所述存储节点及所述多个备份节点,所述数据对象包括元数据,关键字以及值;
在所述存储节点内,所述待存储数据对象被存储在固定大小且未封盖的数据块中,所述待存储数据对象的数据索引信息被增加至数据索引中,所述数据索引包含所述数据块中所有的数据对象的数据索引信息,并生成数据块索引;
在备份节点内,所述待存储数据对象被存储在临时缓冲区内;
当所述待存储数据对象被存储在所述数据块内之后,若所述数据块内存储的所有数据对象的总数据尺寸接近所述数据块的存储限值时,所述数据块被封盖,所述被封盖的数据块内存储的所有数据对象的关键字列表被发送至所述备份节点,并为所述存储节点以及所述备份节点生成相同的条带ID;
当所述备份节点接收所述关键字列表,根据所述关键字列表中的关键字从所述临时缓冲区中检索出与所述关键字对应的数据对象,根据所述数据对象重建与所述关键字列表对应的数据块,并对所述重建的数据块进行编码获得备份数据块,且,更新存储在所述备份节点且对应于所述被封盖的数据块的所述数据对象索引以及所述数据块索引。
12.如权利要求11所述的数据管理方法,其特征在于,还包括:
根据第一目标数据对象的关键字,查找所述第一目标数据对象以及所述第一目标数据对象所在的第一目标数据块,以及所述第一目标数据块所在的第一目标存储节点;
将所述第一目标数据对象的更新值发送给所述第一目标存储节点;
根据所述更新值对所述第一目标存储节内的所述第一目标数据对象的值进行更新,并将所述第一目标数据对象的更新值与所述第一目标数据对象的原始值之间的差值发送给与所述第一目标存储节点具有相同的条带ID的所有第一目标备份节点;
若所述第一目标数据块未封盖,则根据所述关键字索引到存储在所述第一目标备份节点的缓冲区中的所述第一目标数据对象,并将所述差值与所述第一目标数据对象的原始值相加得到所述第一目标数据对象的更新值;
若所述第一目标数据块已封盖,根据所述差值,更新所述多个第一目标备份节点内对应于所述第一目标数据块的第一目标备份数据块。
13.如权利要求11所述的数据管理方法,其特征在于,还包括:
根据第一目标数据对象的关键字查找所述第一目标数据对象以及所述第一目标数据对象所在的第一目标数据块,以及所述第一目标数据块所在的第一目标存储节点;
发送删除所述第一目标数据对象的删除请求至所述第一目标存储节点;
若所述第一目标数据块未封盖,删除第一目标存储节点内的所述第一目标数据对象,并发删除指令至所述第一目标备份节点删除存储在所述第一目标备份节点的缓冲区中的所述第一目标数据对象;
若所述第一目标数据块已封盖,将所述第一目标存储节点内的所述第一目标数据对象的值设置为特殊值,同时将该特殊值与所述第一目标数据对象的原始值之间的差值发送给所述多个第一目标备份节点,使所述多个第一目标备份节点内的所述第一目标备份数据块根据所述差值进行更新,所述第一目标备份数据块与所述第一目标数据块相对应。
14.如权利要求11至13的任意一种数据管理方法,其特征在于,还包括:
为第二目标数据对象,选择一个第二目标存储节点以及多个第二目标备份节点,所述第二目标存储节点和所述多个第二目标备份节点具有相同的条带列表ID;
发送所述第二目标数据对象至所述第二目标存储节点,当所述第二目标存储节点为故障存储节点时,所述第二目标数据对象被发送至协调管理器中,以使所述协调管理器获取与所述第二目标数据对象对应条带列表ID,并在具有与所述条带列表ID相同的条带列表ID的正常存储节点中确定一个作为第一临时存储节点,并指示将所述第二目标数据对象发送并存储至所述第一临时存储节点;
将所述第二目标数据对象存储在所述第一临时存储节点内;
当所述第二目标存储节点的故障排除后,将存储在所述第一临时存储节点内的所述第二目标数据对象迁移至排除故障后所述第二目标存储节点。
15.如权利要求11至13的任意一种数据管理方法,其特征在于,还包括:
发送请求第二目标数据对象的数据获取请求至所述第二目标存储节点,当所述第二目标存储节点为故障存储节点时,所述数据获取请求被发送至协调管理器中,以使所述协调管理器根据所述数据获取请求获取与所述第二目标数据对象对应条带列表ID,并在具有与所述条带列表ID相同的条带列表ID的正常存储节点中确定一个作为第二临时存储节点,并指示将所述数据获取请求发送至所述第二临时存储节点,使所述第二临时存储节点根据所述数据获取请求返回对应第二目标数据对象。
16.如权利要求15的数据管理方法,其特征在于,所述使第二临时存储节点根据所述数据获取请求返回对应的第二目标数据对象,包括:
若所述第二目标数据对象所在的第二数据块未被封盖,使所述第二临时存储节点发送数据请求至与所述第二目标存储节点对应的所述第二目标备份节点,使所述第二目标备份节点根据所述数据请求从其缓冲区中获取对应的第二目标数据对象,并将所述第二目标数据对象返回给所述第二临时存储节点并由所述第二临时存储节点返回被请求的第二目标数据对象;
若所述数据请求所请求的第二目标数据对象为所述第二目标存储节点的故障后新增或修改的,则从所述第二临时存储节点中获取并返回相应的第二目标数据对象;
否则,使所述第二临时存储节点根据所述第二目标数据对象对应条带ID从具有相同的条带ID的第二目标备份节点中获取与所述第二目标数据对象对应的第二备份数据块,并根据所述第二备份数据块恢复包含所述第二目标数据对象的第二目标数据块并从所述第二目标数据块中获取所述第二目标数据对象并返回所述第二目标数据对象。
17.如权利要求11至13任意一项所述的数据管理方法,其特征在于,所述方法还包括:
发送修改第三目标数据对象的数据修改请求至第三目标存储节点,当所述第三目标存储节点为故障存储节点时,所述数据修改请求被发送至协调管理器中,使所述协调管理器获取与所述第三目标数据对象对应条带列表ID,并在具有与所述条带列表ID相同的条带列表ID的正常存储节点中确定一个作为第三临时存储节点,并指示将所述数据修改请求发送至所述第三临时存储节点,以使所述第三临时存储节点根据所述数据修改请求修改所述第三目标数据对象。
18.如权利要求17的数据管理方法,其特征在于,所述使所述第三临时存储节点根据所述数据修改请求修改所述第三目标数据对象包括:
存储所述数据修改请求在所述第三临时存储节点内,并使所述第三临时存储节点根据所述第三目标数据对象对应条带ID从具有相同的条带ID的第三目标备份节点中获取与所述第三目标数据对象对应的第三备份数据块,根据所述第三备份数据块恢复包含所述第三目标数据对象的第三目标数据块,将所述数据修改请求中所携带的更新值与所述第三目标数据对象的原始值之间的差值发送给所述第三目标备份节点,以使所述第三目标备份节点根据所述差值,更新所述第三备份数据块;
当所述第三目标存储节点的故障排除后,存储在所述第三临时存储节点内数据修改请求被迁移至所述第三目标存储节点内,以使所述第三目标存储节点根据所述数据修改请求对第三目标存储节点内的所述第三目标数据对象进行修改。
19.一种数据管理装置,其特征在于,包括:
编码单元,用于对预定大小的数据块进行编码,生成与所述数据块对应的纠错数据块,其中,所述数据块包括数据对象,其中所述数据对象包括关键字,值,以及元数据,所述数据对象的大小小于阈值;
索引生成单元,用于生成数据块索引以及数据对象索引,所述数据块索引用于索引所述数据块及与所述数据块对应的纠错数据块,所述数据对象索引用于在所述数据块中索引所述数据对象,其中,每个数据对象索引用于索引唯一一个数据对象。
20.根据权利要求19的数据管理装置,其特征在于还包括:
数据存储单元,用于将所述数据对象存储在所述预定大小的数据块中,其中,所述预定大小的数据块位于第一存储设备中;以及,
数据备份单元,将所述的纠错数据存储在第二存储设备中,所述第一存储设备与第二存储设备位于分布式存储系统中的不同位置。
21.根据权利要求20所述的数据管理装置,其特征在于:所述的数据块索引包括:条带列表ID,条带ID,以及位置信息,所述的条带列表ID用于唯一确定所述分布式存储系统中多个存储设备分组中的一个存储设备分组,其中所述的存储设备分组包括多个第一设备及多个第二设备;所述条带ID用于确定在所述条带列表ID所指示的存储设备分组中存储所述数据块以及与所述数据块对应的纠错数据块的操作序号;所述位置信息用于确定所述数据块在所述条带列表ID所确定的存储设备分组中哪一个第一存储设备中,以及所述纠错数据块在所述条带列表ID所确定的存储设备分组中哪一个第二存储设备中。
22.根据权利要求21所述的数据管理装置,其特征在于:所述索引生成单元,用于,在所述第一存储设备中生成数据块索引以及数据对象索引,以及在所述第二存储设备中生成所述数据块索引以及所述数据对象索引。
23.根据权利要求20至22任意一项所述的数据管理装置,其特征在于还包括:
存储设备选择单元,用于,选择一个第一存储设备,以及一个或者多个第二存储设备,以及,将所述数据对象分别发送给所述第一存储设备,以及所述第二存储设备。
24.根据权利要求23所述的数据管理装置,其特征在于:所述数据存储单元将所述数据对象存储在所述数据块内,当所述数据块内的数据对象的大小接近或者等于所述数据块的存储限值时,停止向所述数据块写入新数据对象,并将所述数据块内的所存储的所有的数据对象的Key值发送给所述编码单元;
所述编码单元接收所述数据存储单元发送的所述数据块内的所有数据对象的Key值,并根据所述数据对象的Key值在所述第二存储设备内重建所述数据块,并对重建的所述数据块进行所述的编码。
25.根据权利要求24所述的数据管理装置,其特征在于还包括:数据筛选单元,用于判断待存储的数据对象是否小于所述阈值,并将小于所述阈值的所述待存储的数据对象作为可存储在所述数据块内的数据对象进行所述的存储以及编码。
26.根据权利要求25所述的数据管理装置,其特征在于:所述数据筛选单元,还用于以预定的时间间隔根据所述待存储的数据对象的平均大小,动态调整所述阈值。
27.根据权利要求23所述的数据管理装置,其特征在于:所述分布式存储系统包括多个备选存储设备,所述存储设备选择单元:根据所述多个备选存储设备的负载情况,将负载最小的一个或者多个备选存储设备作为所述的一个或者多个第二存储设备。
28.根据权利要求24所述的数据管理装置,其特征在于:所述数据存储单元,用于,当所述数据对象的尺寸大于所述数据块的存储空间的尺寸时,或者当所述数据对象的尺寸大于所述数据块中剩余的存储空间的尺寸时,将所述数据对象进行分割,将分割后的尺寸小于所述数据块的存储空间的尺寸或者小于所述数据块中剩余的存储空间的尺寸的分割数据对象存储在所述数据块内,并将数据块分割信息存储在被分割的数据对象的元数据中用于重新组合所述被分割的数据对象。
29.一种数据管理系统,其包括在:
客户端,用于,为待存储数据对象选择一个存储节点,以及多个备份节点,所述存储节点和所述多个备份节点具有相同的条带列表ID,并将所述待存储数据对象发送给所述存储节点及所述多个备份节点,所述数据对象包括元数据,关键字以及值;
所述存储节点,用于将所述待存储数据对象存储在固定大小且未封盖的数据块中,并将所述待存储数据对象的数据索引信息增加至数据索引中,所述数据索引包含所述数据块中所有数据对象的数据索引信息,并生成数据块索引;
所述备份节点,用于将所述待存储数据对象存储在临时缓冲区内;
当所述待存储数据对象被存储在所述数据块内之后,若所述数据块内存储的所有数据对象的总数据尺寸接近所述数据块的存储限值时,所述存储节点用于封盖所述数据块,并将被封盖的所述数据块内存储的所有数据对象的关键字列表发送至所述备份节点,并为所述存储节点以及所述备份节点生成相同的条带ID;
所述备份节点,还用于接收所述存储节点所发送的关键字列表,根据所述关键字列表中的关键字从所述临时缓冲区中检索出与所述关键字对应的数据对象,根据所述数据对象重建与所述关键字列表对应的数据块,并对所述重建的数据块进行编码获得备份数据块,且更新存储在所述备份节点且对应于所述被封盖的数据块的所述数据对象索引以及所述数据块索引。
30.如权利要求29所述的数据管理系统,其特征在于,
所述客户端,还用于,根据第一目标数据对象的关键字,查找所述第一目标数据对象以及所述第一目标数据对象所在的第一目标数据块,以及所述第一目标数据块所在的第一目标存储节点,将所述第一目标数据对象的更新值发送给所述第一目标存储节点;
所述第一目标存储节点,用于对所述第一目标数据对象的值进行更新,并将所述第一目标数据对象的更新值与所述第一目标数据对象的原始值之间的差值发送给与所述第一目标存储节点具有相同的条带ID的所有第一目标备份节点;
若所述第一目标数据块未封盖,则所述多个第一目标备份节点用于根据所述关键字索引到存储在缓冲区中的所述第一目标数据对象,并将所述差值与所述第一目标数据对象的原始值相加得到所述第一目标数据对象的更新值;
若所述第一目标数据块已封盖,所述多个第一目标备份节点用于根据所述差值,更新对应于所述第一目标数据块的第一目标备份数据块。
31.如权利要求29所述的数据管理系统,其特征在于,
所述客户端,还用于,根据第一目标数据对象的关键字查找所述第一目标数据对象以及所述第一目标数据对象所在的第一目标数据块,以及所述第一目标数据块所在的第一目标存储节点,并发送删除所述第一目标数据对象的删除请求至所述第一目标存储节点;
若所述第一目标数据块未封盖,所述第一目标存储节点,用于删除所述第一目标数据对象,并发删除指令至所述第一目标备份节点,所述第一目标备份节点,用于根据所述删除指令,删除存储在缓冲区中的所述第一目标数据对象;
若所述第一目标数据块已封盖,所述第一目标存储节点,用于将所述第一目标数据对象的值设置为特殊值,同时将该特殊值与所述第一目标数据对象的原始值之间的差值发送给所述多个第一目标备份节点,所述多个第一目标备份节点用于根据所述差值,更新所述第一目标备份数据块。
32.如权利要求29至31的任意一种数据管理系统,其特征在于,
所述客户端,还用于,为第二目标数据对象,选择一个第二目标存储节点以及多个第二目标备份节点,所述第二目标存储节点和所述多个第二目标备份节点具有相同的条带列表ID,并发送所述第二目标数据对象至所述第二目标存储节点,当所述第二目标存储节点为故障存储节点时,将所述第二目标数据对象发送至协调管理器中;
所述协调管理器用于,获取与所述第二目标数据对象对应条带列表ID,并在具有与所述条带列表ID相同的条带列表ID的正常存储节点中确定一个作为第一临时存储节点,并指示所述客户端将所述第二目标数据对象发送并存储至所述第一临时存储节点;
所述第一临时存储节点用于存储所述第二目标数据对象,并在所述第二目标存储节点的故障排除后,将所述第二目标数据对象迁移至排除故障后的所述第二目标存储节点。
33.如权利要求29至31的任意一种数据管理系统,其特征在于,
所述客户端,还用于,发送请求第二目标数据对象的数据获取请求至所述第二目标存储节点,当所述第二目标存储节点为故障存储节点时,发送所述数据获取请求至协调管理器中;
所述协调管理器用于,获取与所述第二目标数据对象对应条带列表ID,并在具有与所述条带列表ID相同的条带列表ID的正常存储节点中确定一个作为第二临时存储节点,并指示所述客户端将所述数据获取请求发送至所述第二临时存储节点;
所述第二临时存储节点用于,根据所述数据获取请求返回对应第二目标数据对象。
34.如权利要求33的数据管理系统,其特征在于,
若所述第二目标数据对象所在的第二数据块未被封盖,所述第二临时存储节点用于,发送数据请求至与所述第二目标存储节点对应的所述第二目标备份节点,所述第二目标备份节点用于,根据所述数据请求从缓冲区中获取对应的第二目标数据对象,并将所述第二目标数据对象返回给所述第二临时存储节点,所述第二临时存储节点返回被请求的第二目标数据对象至所述客户端;
若所述数据请求所请求的第二目标数据对象为所述第二目标存储节点的故障后新增或修改的,所述第二临时存储节点用于,将相应的第二目标数据对象返回给所述客户端;
否则,所述第二临时存储节点用于,根据所述第二目标数据对象对应条带ID从具有相同的条带ID的第二目标备份节点中获取与所述第二目标数据对象对应的第二备份数据块,并根据所述第二备份数据块恢复包含所述第二目标数据对象的第二目标数据块并从所述第二目标数据块中获取所述第二目标数据对象并返回所述第二目标数据对象至所述客户端。
35.如权利要求29至31任意一项所述的数据管理系统,其特征在于,
所述客户端,还用于,发送修改第三目标数据对象的数据修改请求至第三目标存储节点,当所述第三目标存储节点为故障存储节点时,将数据修改请求发送至协调管理器中;
所述协调管理器用于,获取与所述第三目标数据对象对应条带列表ID,并在具有与所述条带列表ID相同的条带列表ID的正常存储节点中确定一个作为第三临时存储节点,并指示所述客户端将所述数据修改请求发送至所述第三临时存储节点;
所述第三临时存储节点用于,根据所述数据修改请求修改所述第三目标数据对象。
36.如权利要求35的数据管理系统,其特征在于,
所述第三临时存储节点用于,存储所述数据修改请求,并根据所述第三目标数据对象对应条带ID从具有相同的条带ID的第三目标备份节点中获取与所述第三目标数据对象对应的第三备份数据块,且根据所述第三备份数据块恢复包含所述第三目标数据对象的第三目标数据块,将所述数据修改请求中所携带的更新值与所述第三目标数据对象的原始值之间的差值发送给所述第三目标备份节点;
所述第三目标备份节点用于,根据所述差值,更新所述第三备份数据块;
当所述第三目标存储节点的故障排除后,所述第三临时存储节点用于,将存储的所述数据修改请求迁移至所述第三目标存储节点内;
所述第三目标存储节点根据所述数据修改请求对存储于第三目标存储节点内的所述第三目标数据对象进行修改。
37.一种数据管理装置,其特征在于包括:
存储设备选择单元,用于,为待存储数据对象,选择一个存储节点,以及多个备份节点,所述存储节点和所述多个备份节点具有相同的条带列表ID,并将所述待存储数据对象发送给数据存储单元,以数据备份单元,所述数据对象包括元数据,关键字以及值;
所述数据存储单元,用于,将所述待存储数据对象存储在所述存储节点内固定大小且未封盖的数据块中,并将所述待存储数据对象的数据索引信息增加至数据索引中,所述数据索引包含所述数据块中所有的数据对象的数据索引信息,且生成数据块索引;
数据备份单元,用于,将所述待存储数据对象存储在所述备份节点内的临时缓冲区内;
当所述待存储数据对象被存储在所述数据块内之后,若所述数据块内存储的所有数据对象的总数据尺寸接近所述数据块的存储限值时,所述数据存储单元封盖所述数据块,并将被封盖的所述数据块内存存储的所有数据对象的关键字列表发送至所述数据备份单元,且为所述存储节点以及所述备份节点生成相同的条带ID;
所述数据备份单元,根据所述关键字列表中的关键字从所述存储节点的临时缓冲区中检索出与所述关键字对应的数据对象,根据所述数据对象重建与所述关键字列表对应的数据块,并对所述重建的数据块进行编码获得备份数据块,且,更新存储在所述备份节点且对应于所述被封盖的数据块的所述数据对象索引以及所述数据块索引。
38.如权利要求37所述的数据管理装置,其特征在于,
所述存储设备选择单元,还用于,根据第一目标数据对象的关键字,查找所述第一目标数据对象以及所述第一目标数据对象所在的第一目标数据块,以及所述第一目标数据块所在的第一目标存储节点,并将所述第一目标数据对象的更新值发送给所述数据存储单元;
所述数据存储单元,根据所述更新值对所述第一目标存储节内的所述第一目标数据对象的值进行更新,并将所述第一目标数据对象的更新值与所述第一目标数据对象的原始值之间的差值发送给所述数据备份单元;
所述数据备份单元,将与所述第一目标存储节点具有相同的条带ID的所有第一目标备份节点内的与所述第一目标数据对象对应的第一目标备份数据进行更新,其中,若所述第一目标数据块未封盖,所述备份数据单元根据所述关键字索引到存储在所述第一目标备份节点的缓冲区中的所述第一目标数据对象作为所述第一目标备份数据,并将所述差值与所述第一目标备份数据的原始值相加得到所述第一目标数据对象的更新值;若所述第一目标数据块已封盖,所述备份数据单元根据所述差值,更新所述多个第一目标备份节点内的第一目标备份数据块,所述第一目标备份数据块与所述第一目标数据块相对应。
39.如权利要求37所述的数据管理装置,其特征在于,
所述存储设备选择单元,还用于,根据第一目标数据对象的关键字查找所述第一目标数据对象以及所述第一目标数据对象所在的第一目标数据块,以及所述第一目标数据块所在的第一目标存储节点,并发送删除所述第一目标数据对象的删除请求至所述数据存储单元;
若所述第一目标数据块未封盖,所述数据存储单元,用于,删除所述第一目标存储节点内的所述第一目标数据对象,并发删除指令至所述数据备份单元,所述数据备份单元根据所述删除指令删除存储在所述第一目标备份节点的缓冲区中的所述第一目标数据对象;
若所述第一目标数据块已封盖,所述数据存储单元,用于,将所述第一目标存储节点内的所述第一目标数据对象的值设置为特殊值,同时将该特殊值与所述第一目标数据对象的原始值之间的差值发送给所述数据备份单元,所述数据备份单元根据所述差值更新所述多个第一目标备份节点内的第一目标备份数据块,所述第一目标备份数据块与所述第一目标数据块相对应。
40.如权利要求37至39的任意一种数据管理方法,其特征在于,
所述存储设备选择单元,还用于,为第二目标数据对象,选择一个第二目标存储节点以及多个第二目标备份节点,所述第二目标存储节点和所述多个第二目标备份节点具有相同的条带列表ID,发送所述第二目标数据对象至所述第二目标存储节点,当所述第二目标存储节点为故障存储节点时,所述第二目标数据对象被发送至协调管理单元中;
所述协调管理单元,用于获取与所述第二目标数据对象对应条带列表ID,并在具有与所述条带列表ID相同的条带列表ID的正常存储节点中确定一个作为第一临时存储节点,并指示所述存储设备选择单元将所述第二目标数据对象发送至所述数据存储单元;
所述数据存储单元,用于将所述第二目标数据对象存储在所述第一临时存储节点内;
当所述第二目标存储节点的故障排除后,所述数据存储单元用于将存储在所述第一临时存储节点内的所述第二目标数据对象迁移至排除故障后所述第二目标存储节点。
41.如权利要求37至39的任意一种数据管理装置,其特征在于,
所述存储设备选择单元,还用于,发送请求第二目标数据对象的数据获取请求至所述数据存储单元;
所述数据存储单元确定存储所述第二目标数据对象的所述第二目标存储节点为故障存储节点时,指示所述存储设备选择单元将所述数据获取请求发送至协调管理器单元;
所述协调管理单元,用于根据所述数据获取请求获取与所述第二目标数据对象对应的条带列表ID,并在具有与所述条带列表ID相同的条带列表ID的正常存储节点中确定一个作为第二临时存储节点;
所述数据存储单元根据所述数据获取请求从所述第二临时存储节点中获取所述第二目标数据对象,并将所述第二目标数据对象返回至所述存储设备选择单元。
42.如权利要求41的一种数据管理装置,其特征在于,
若所述第二目标数据对象所在的第二数据块未被封盖,所述数据存储单元用于,发送数据请求至数据备份单元;
所述数据备份单元,用于,根据所述数据请求从与所述第二目标存储节点对应的多个所述第二目标备份节点的缓冲区中获取对应的第二目标数据对象,并将所述第二目标数据对象返回给数据存储单元,所述数据存储单元返回被请求的第二目标数据对象至所述存储设备选择单元;
若所述数据请求所请求的第二目标数据对象为所述第二目标存储节点的故障后新增或修改的,所述数据存储单元,用于从所述第二临时存储节点中获取并返回相应的第二目标数据对象值所述存储设备选择单元;
否则,所述数据存储单元根据所述第二目标数据对象对应条带ID从具有相同的条带ID的第二目标备份节点中获取与所述第二目标数据对象对应的第二备份数据块,并根据所述第二备份数据块恢复包含所述第二目标数据对象的第二目标数据块并从所述第二目标数据块中获取所述第二目标数据对象并返回所述第二目标数据对象至所述存储设备选择单元。
43.如权利要求37至39任意一项所述的数据管理装置,其特征在于,
所述存储设备选择单元,还用于发送修改第三目标数据对象的数据修改请求至所述数据存储单元;
所述数据存储单元确定存储所述第三目标数据对象的第三目标存储节点为故障存储节点时,指示所述存储设备选择单元将所述数据修改请求发送至协调管理单元;
所述协调管理单元,用于根据所述数据获取请求获取与所述第三目标数据对象对应的条带列表ID,并在具有与所述条带列表ID相同的条带列表ID的正常存储节点中确定一个作为第三临时存储节点;
所述数据存储单元根据所述数据修改请求修改存储在所述第三临时存储节点内的所述第三目标数据对象。
44.如权利要求43的数据管理装置,其特征在于,所述数据存储单元,用于,将所述数据修改请求存储在所述第三临时存储节点内,并根据所述第三目标数据对象对应条带ID从具有相同的条带ID的第三目标备份节点中获取与所述第三目标数据对象对应的第三备份数据块,根据所述第三备份数据块恢复包含所述第三目标数据对象的第三目标数据块,将所述数据修改请求中所携带的更新值与所述第三目标数据对象的原始值之间的差值发送给所述的数据备份单元;
所述数据备份单元,根据所述差值,更新所述第三备份数据块;
当所述第三目标存储节点的故障排除后,所述数据存储单元将根据存储在所述第三临时存储节点内数据修改请求修改存储在所述第三目标存储节点内的所述第三目标数据对象。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610875562.XA CN107885612B (zh) | 2016-09-30 | 2016-09-30 | 数据处理方法和系统及装置 |
PCT/CN2017/103678 WO2018059441A1 (zh) | 2016-09-30 | 2017-09-27 | 数据处理方法和系统及装置 |
US16/369,102 US11003533B2 (en) | 2016-09-30 | 2019-03-29 | Data processing method, system, and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610875562.XA CN107885612B (zh) | 2016-09-30 | 2016-09-30 | 数据处理方法和系统及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107885612A CN107885612A (zh) | 2018-04-06 |
CN107885612B true CN107885612B (zh) | 2020-02-21 |
Family
ID=61763162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610875562.XA Active CN107885612B (zh) | 2016-09-30 | 2016-09-30 | 数据处理方法和系统及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11003533B2 (zh) |
CN (1) | CN107885612B (zh) |
WO (1) | WO2018059441A1 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10630315B2 (en) | 2017-09-29 | 2020-04-21 | Intel Corporation | Technologies for applying a redundancy encoding scheme to segmented network packets |
US11550756B2 (en) | 2017-10-30 | 2023-01-10 | AtomBeam Technologies Inc. | System and method for error-resilient data reduction |
CN110389857B (zh) * | 2018-04-20 | 2023-04-21 | 伊姆西Ip控股有限责任公司 | 数据备份的方法、设备和非瞬态计算机存储介质 |
CN108737534B (zh) * | 2018-05-11 | 2021-08-24 | 北京奇虎科技有限公司 | 一种基于区块链的数据传输方法、装置、区块链系统 |
CN108776682B (zh) * | 2018-06-01 | 2021-06-22 | 紫光西部数据(南京)有限公司 | 基于对象存储的随机读写对象的方法和系统 |
CN110825552B (zh) * | 2018-08-14 | 2021-04-09 | 华为技术有限公司 | 数据存储方法、数据恢复方法、节点及存储介质 |
CN109327329B (zh) * | 2018-08-31 | 2021-11-09 | 华为技术有限公司 | 数据模型更新方法及装置 |
CN111190765B (zh) * | 2018-11-14 | 2023-01-10 | 深圳市茁壮网络股份有限公司 | 一种数据备份方法及系统 |
CN111367712A (zh) * | 2018-12-26 | 2020-07-03 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN109739828B (zh) * | 2018-12-29 | 2021-06-29 | 咪咕文化科技有限公司 | 一种数据处理方法、设备及计算机可读存储介质 |
CN109887456A (zh) * | 2019-01-17 | 2019-06-14 | 硅谷数模半导体(北京)有限公司 | 数据压缩方法及装置 |
CN110018968B (zh) * | 2019-03-29 | 2021-07-16 | 联想(北京)有限公司 | 一种数据读取方法、电子设备及计算机存储介质 |
CN111966527A (zh) * | 2019-05-20 | 2020-11-20 | 深圳市茁壮网络股份有限公司 | 备份式数据存储的健康管理方法及装置 |
CN113835637B (zh) * | 2020-03-19 | 2024-07-16 | 北京奥星贝斯科技有限公司 | 一种数据的写入方法、装置以及设备 |
US11182249B1 (en) * | 2020-06-24 | 2021-11-23 | International Business Machines Corporation | Block ID encoding in an erasure coded storage system |
CN112019788B (zh) * | 2020-08-27 | 2023-04-11 | 杭州海康威视系统技术有限公司 | 数据存储方法、装置、系统及存储介质 |
US20230044165A1 (en) * | 2021-08-06 | 2023-02-09 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for remote data transfers to memory |
US20230081785A1 (en) * | 2021-09-10 | 2023-03-16 | Huawei Technologies Co., Ltd. | Data sending method and apparatus, data receiving method, apparatus, and system, and medium |
CN114676000A (zh) * | 2022-04-15 | 2022-06-28 | 中兴通讯股份有限公司 | 数据处理方法及其装置、存储介质、计算机程序产品 |
CN115098447B (zh) * | 2022-07-18 | 2024-06-18 | 重庆紫光华山智安科技有限公司 | 文件恢复方法、装置、电子设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102752402A (zh) * | 2012-07-20 | 2012-10-24 | 广东威创视讯科技股份有限公司 | 一种云存储方法及系统 |
CN103984607A (zh) * | 2013-02-08 | 2014-08-13 | 华为技术有限公司 | 分布式存储的方法、装置和系统 |
CN104866430A (zh) * | 2015-04-30 | 2015-08-26 | 上海交通大学 | 结合主从备份和纠删码的内存计算系统高可用优化方法 |
CN105095013A (zh) * | 2015-06-04 | 2015-11-25 | 华为技术有限公司 | 数据存储方法、恢复方法、相关装置以及系统 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6807649B1 (en) | 2000-05-23 | 2004-10-19 | Hewlett-Packard Development Company, L.P. | Encryption keys for multiple drive fault tolerance |
CA2544063C (en) * | 2003-11-13 | 2013-09-10 | Commvault Systems, Inc. | System and method for combining data streams in pilelined storage operations in a storage network |
WO2007138601A2 (en) * | 2006-05-31 | 2007-12-06 | Storwize Ltd. | Method and system for transformation of logical data objects for storage |
US8645333B2 (en) * | 2008-05-29 | 2014-02-04 | International Business Machines Corporation | Method and apparatus to minimize metadata in de-duplication |
US8572036B2 (en) | 2008-12-18 | 2013-10-29 | Datalight, Incorporated | Method and apparatus for fault-tolerant memory management |
US8874523B2 (en) * | 2010-02-09 | 2014-10-28 | Google Inc. | Method and system for providing efficient access to a tape storage system |
US10452836B2 (en) * | 2011-05-09 | 2019-10-22 | Pure Storage, Inc. | Retrieving a hypertext markup language file from a dispersed storage network memory |
US9426517B2 (en) * | 2012-06-08 | 2016-08-23 | Ntt Docomo, Inc. | Method and apparatus for low delay access to key-value based storage systems using FEC techniques |
US9432192B1 (en) * | 2014-03-28 | 2016-08-30 | Emc Corporation | Content aware hierarchical encryption for secure storage systems |
US9767139B1 (en) * | 2014-06-30 | 2017-09-19 | EMC IP Holding Company LLC | End-to-end data integrity in parallel storage systems |
US9417955B2 (en) * | 2014-08-21 | 2016-08-16 | Datrium, Inc. | Data reconstruction in distributed data storage system with key-based addressing |
US10110676B2 (en) * | 2014-08-22 | 2018-10-23 | Nexenta Systems, Inc. | Parallel transparent restructuring of immutable content in a distributed object storage system |
US9923970B2 (en) * | 2014-08-22 | 2018-03-20 | Nexenta Systems, Inc. | Multicast collaborative erasure encoding and distributed parity protection |
US10409769B1 (en) * | 2014-09-29 | 2019-09-10 | EMC IP Holding Company LLC | Data archiving in data storage system environments |
US10216577B2 (en) * | 2016-07-14 | 2019-02-26 | Nexenta Systems, Inc. | Multicast raid: distributed parity protection |
-
2016
- 2016-09-30 CN CN201610875562.XA patent/CN107885612B/zh active Active
-
2017
- 2017-09-27 WO PCT/CN2017/103678 patent/WO2018059441A1/zh active Application Filing
-
2019
- 2019-03-29 US US16/369,102 patent/US11003533B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102752402A (zh) * | 2012-07-20 | 2012-10-24 | 广东威创视讯科技股份有限公司 | 一种云存储方法及系统 |
CN103984607A (zh) * | 2013-02-08 | 2014-08-13 | 华为技术有限公司 | 分布式存储的方法、装置和系统 |
CN104866430A (zh) * | 2015-04-30 | 2015-08-26 | 上海交通大学 | 结合主从备份和纠删码的内存计算系统高可用优化方法 |
CN105095013A (zh) * | 2015-06-04 | 2015-11-25 | 华为技术有限公司 | 数据存储方法、恢复方法、相关装置以及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2018059441A1 (zh) | 2018-04-05 |
US20190220356A1 (en) | 2019-07-18 |
CN107885612A (zh) | 2018-04-06 |
US11003533B2 (en) | 2021-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107885612B (zh) | 数据处理方法和系统及装置 | |
US10073652B2 (en) | Performance optimized storage vaults in a dispersed storage network | |
US10114588B2 (en) | Consolidating encoded data slices in read memory devices in a distributed storage network | |
US10048897B2 (en) | Making consistent reads more efficient in IDA+copy system | |
US10241864B2 (en) | Expanding information dispersal algorithm width without rebuilding through imposter slices | |
US10126974B2 (en) | Redistributing encoded data slices in a dispersed storage network | |
US10229002B2 (en) | Process to migrate named objects to a dispersed or distributed storage network (DSN) | |
CN106547859B (zh) | 一种多租户数据存储系统下的数据文件的存储方法及装置 | |
US11093387B1 (en) | Garbage collection based on transmission object models | |
US10769035B2 (en) | Key-value index recovery by log feed caching | |
US10049120B2 (en) | Consistency based access of data in a dispersed storage network | |
US10969962B2 (en) | Compacting data in a dispersed storage network | |
US10558527B2 (en) | Rebuilding strategy in memory managed multi-site duplication | |
CN104965835A (zh) | 一种分布式文件系统的文件读写方法及装置 | |
KR20120090320A (ko) | 분산 파일 시스템에서 효율적인 자료 복구 방법 | |
US12079083B2 (en) | Rebuilding missing data in a storage network via locally decodable redundancy data | |
US20170140018A1 (en) | Distributed sync list | |
US20220374162A1 (en) | Facilitating Write Requests in a Storage Network | |
US10423490B2 (en) | Read-source requests to support bundled writes in a distributed storage system | |
US20170147219A1 (en) | Utilization of solid-state memory devices in a dispersed storage network | |
US11645333B1 (en) | Garbage collection integrated with physical file verification | |
US12072763B2 (en) | Utilizing memories of different operational speeds in a vast storage network | |
US10942665B2 (en) | Efficient move and copy | |
US20240045777A1 (en) | Processing of Data Access Requests in a Storage Network | |
US10140182B2 (en) | Modifying allocation of storage resources in a dispersed storage network |
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 |