CN111356996B - 用于版本验证的系统和计算机实现的方法 - Google Patents
用于版本验证的系统和计算机实现的方法 Download PDFInfo
- Publication number
- CN111356996B CN111356996B CN201980005824.9A CN201980005824A CN111356996B CN 111356996 B CN111356996 B CN 111356996B CN 201980005824 A CN201980005824 A CN 201980005824A CN 111356996 B CN111356996 B CN 111356996B
- Authority
- CN
- China
- Prior art keywords
- versioned
- versioning
- version
- response
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24573—Query processing with adaptation to user needs using data annotations, e.g. user-defined metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/289—Object oriented databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
Abstract
本发明公开了示例性分布式存储系统、复制管理器及方法为异构数据存储库之间的数据传输提供版本化验证。第一对象数据存储库包括版本化数据对象,该版本化数据对象具有对应于该版本化数据对象的多个顺序版本。将版本化写入请求消息发送到第二对象数据存储库并且接收响应。从该响应消息中确定该第二对象数据存储库的版本化启用状态,并且如果该版本化启用状态无效,则基于删除请求而删除该第二对象数据存储库中的任何残余对象版本。
Description
技术领域
本公开总体涉及数据存储装置,且在更具体的示例中,涉及用于异构数据存储库之间的数据传输的版本控制。
背景技术
通常,分布式存储系统用于以具有预定水平的冗余的分布式且容错方式来存储诸如对象或文件的大量(例如,太字节、拍字节、艾字节等)数据。
一些现有的对象存储系统存储对象标识符相对文件系统所参考的数据对象。这通常可允许对象存储系统以灵活的方式超过文件系统的存储容量的最大极限,使得例如可根据应用程序、系统和/或企业需求来添加或移除存储容量,同时减少因系统增长而导致的性能劣化。因此,通常针对大型存储系统选择对象存储系统。
这些大型存储系统可包括处于不同位置并且具有不同使用期限及配置的多种存储系统。因此,并非大型存储系统内的所有对象数据存储库都可被配置为以相同方式来管理数据对象及其相关元数据。相同存储系统内的此类迥异配置可被称为异构数据存储库。在对象存储系统内或对象存储系统之间,各个存储桶也可进行不同的配置,并且被描述为异构的。
大型存储系统通常将所存储的数据分布在诸如例如固态驱动器的多个存储元件上,或者分布在诸如包括多个此类存储元件的存储节点的多个部件上。然而,随着此类分布式存储系统中的存储元件的数量增加,这些存储元件中的一个或多个的失效概率增加,控制器、网络和接口部件的失效或中断的概率也增加。为了应对这些问题,分布式存储系统通常在数据、存储节点、控制器、接口、客户端和网络级处使用一定水平的冗余。在一些情况下,冗余可包括诸如使用一个或多个复制代理以在对象数据存储库之间移动数据对象以供镜像、负载平衡和/或灾难恢复。
异构数据存储库之间的版本控制可能存在挑战。例如,当版本化对象被传输到尚未启用版本化的对象数据存储库或存储桶时,版本信息可能丢失。而且,因为许多复制代理使用并行和/或异步复制路径,所以可以在不同时间传输相同版本化对象的版本。在动态存储环境中,可以在对象版本传输期间改变目标数据存储库的配置。如果在传输期间禁用或暂停版本化,则这可能导致不完整的版本化数据对象被存储在目标对象存储库中。
此外,数据对象可能较大,并且使用大量的计算和网络资源来在存储系统之间进行传输。发起可能包括多部分数据对象传输的大型数据对象传输,可能因为目标对象存储库尚未启用版本化而最终无效,可能导致资源浪费,这将增加系统开销和延迟。
随着大型存储系统扩展并在存储系统内创建更多异构对象数据存储库,可能需要可靠且有效的实施方式来管理版本控制。至少存在针对异构数据存储库之间的数据传输的版本化验证的需求。
发明内容
描述了针对版本化验证的各个方面,具体地,描述了针对异构数据存储库之间的数据传输的版本化验证。
一个一般方面包括一种系统,该系统包括第一对象数据存储库,该第一对象数据存储库被配置为包括多个第一版本化数据对象。该多个第一版本化数据对象的版本化数据对象包括对应于该版本化数据对象的多个顺序版本。第二对象数据存储库被配置为包括版本化启用状态。复制管理器包括至少一个处理器,其中该复制管理器被配置为:将版本化数据对象从第一对象数据存储库传输到第二对象数据存储库;针对所述版本化数据对象,向所述第二对象数据存储库发送版本写入请求消息;从所述第二对象数据存储库接收响应消息;从该响应消息中确定版本化启用状态是否无效;以及响应于确定版本化启用状态无效而发送对版本化数据对象的删除请求。
实施方式可包括下列特征中的一者或多者。复制管理器可被进一步配置为响应于确定版本化启用状态无效而将对版本化数据对象的版本写入请求添加到重试队列。复制管理器可被进一步配置为响应于确定版本化启用状态无效而生成通知事件,该通知事件被配置为请求在第二对象数据存储库上启用版本化。第二对象数据存储库可被配置为响应于版本写入请求消息而在版本化启用状态无效时将版本化数据对象的残余版本存储在第二对象数据存储库中,并且响应于删除请求而删除版本化数据对象的残余版本。版本写入请求消息可以是多部分写入请求,该多部分写入请求包括第一对象数据存储库和第二对象数据存储库之间的多个写入事务以传输版本化数据对象。复制管理器可被进一步配置为在发起对多部分写入请求的版本写入请求消息之前,向第二对象数据存储库发送测试消息。可响应于确定版本化启用状态有效而发起版本写入请求消息。测试消息可以是包括大小为0的主机数据的测试版本写入请求消息。复制管理器可被进一步配置为响应于确定版本化启用状态无效而多次重试测试消息。复制管理器还可包括具有无效版本化启用状态的目标对象数据存储桶的版本化无效列表,并且可被进一步配置为响应于确定版本化启用状态无效而添加第二对象数据存储库中的目标对象数据存储桶的版本化无效条目。复制管理器可被进一步配置为:针对版本写入请求消息,在版本化无效列表中搜索目标对象数据存储桶;响应于找到所述目标对象数据存储桶的所述版本化无效条目,向所述目标对象数据存储桶发送测试版本写入请求消息;以及响应于接收到指示版本化启用状态有效的测试响应消息,移除该目标对象数据存储桶的版本化无效条目;以及发起版本写入请求消息。
一个一般方面包括一种计算机实现的方法,该方法包括:将对版本化数据对象的版本写入请求消息从第一对象数据存储库发送到第二对象数据存储库;从所述第二对象数据存储库接收响应消息;从该响应消息中确定版本化启用状态是否无效;以及响应于确定版本化启用状态无效而发送对版本化数据对象的删除请求。版本化数据对象包括对应于该版本化数据对象的多个顺序版本,并且第二对象数据存储库包括版本化启用状态。
实施方式可包括下列特征中的一者或多者。计算机实现的方法还可包括:响应于确定版本化启用状态无效而将对版本化数据对象的版本写入请求添加到重试队列。计算机实现的方法还可包括:响应于确定版本化启用状态无效而生成通知事件,该通知事件被配置为请求在第二对象数据存储库上启用版本化。计算机实现的方法还可包括:响应于版本写入请求消息而在版本化启用状态无效时将版本化数据对象的残余版本存储在第二对象数据存储库中,并且响应于删除请求而删除版本化数据对象的残余版本。计算机实现的方法还可包括:向第二对象数据存储库发送测试消息,并且从该第二对象数据存储库接收测试响应消息,其中响应于从测试响应消息中确定版本化启用状态有效而发送版本写入请求消息。计算机实现的方法还可包括:响应于确定版本化启用状态无效而多次重试测试消息。计算机实现的方法还可包括:响应于确定版本化启用状态无效而将第二对象数据存储库中的目标对象数据存储桶的版本化无效条目添加到版本化无效列表。计算机实现的方法还可包括:针对版本写入请求消息,在版本化无效列表中搜索目标对象数据存储桶;响应于找到所述目标对象数据存储桶的所述版本化无效条目,向所述目标对象数据存储桶发送测试消息;以及响应于接收到指示版本化启用状态有效的测试响应消息,移除该目标对象数据存储桶的版本化无效条目,并且发起版本写入请求消息。
一个一般方面包括一种系统,该系统包括第一对象数据存储库,该第一对象数据存储库包括多个第一版本化数据对象。版本化数据对象包括对应于该版本化数据对象的多个顺序版本。第二对象数据存储库包括版本化启用状态。提供用于将对版本化数据对象的版本写入请求消息从第一对象数据存储库发送到第二对象数据存储库的装置;提供用于响应于来自第二对象数据存储库的响应消息而确定版本化启用状态是否无效的装置。提供用于响应于确定版本化启用状态无效而发送对版本化数据对象的删除请求的装置。
实施方式可包括下列特征中的一者或多者。系统还可包括:用于向第二对象数据存储库发送测试消息的装置,以及用于从第二对象数据存储库接收测试响应消息的装置,其中响应于从测试响应消息中确定版本化启用状态有效而发送版本写入请求消息。
各种实施方案有利地应用分布式存储网络和/或系统的教导内容来提高此类计算机系统的功能。各种实施方案包括克服或至少减少上述先前存储网络和/或系统中的问题的操作,并因此比其他计算网络更为可靠和/或有效。也就是说,本文所公开的各种实施方案包括硬件和/或软件,该硬件和/或软件具有诸如通过在数据存储库之间传输版本化数据对象时使用版本化验证以及自动移除残余对象等提高异构数据存储库之间的数据传输的版本控制的功能。因此,本文所公开的实施方案为存储网络和/或存储系统提供了各种改进。
应当理解,本公开中使用的语言主要是出于可读性和指导目的而选择的,并不限制本文公开的主题的范围。
附图说明
图1示意性地示出了分布式存储系统的示例。
图2示意性地示出了图1的分布式存储系统可在其中操作的示例性客户端架构。
图3示意性地示出了图1的分布式存储系统的存储节点的示例。
图4示意性地示出了图1的分布式存储系统的控制器节点或访问节点的示例。
图5示意性地示出了用于图1的分布式存储系统的对象存储系统的一些示例性元件。
图6示意性地示出了在具有无效版本化启用状态的示例性异构数据存储库之间传输的数据对象。
图7示出了用于验证版本化启用状态的示例性方法。
图8示出了用于对图7的示例性方法作出响应的示例性方法。
图9示出了使用测试消息来验证版本化启用状态的示例性方法。
具体实施方式
如上所述,在版本化启用异构存储桶之间的异构对象存储系统中可能发生乱序版本化对象写入摄取。
对象存储系统具有数据对象的概念。数据对象可被包含在存储桶中,并且每个存储桶可与特定的对象存储系统或对象数据存储库相关联。特定的对象存储系统可包括多个配置参数,包括对版本化的支持。在一些系统中,各个存储桶可包括不同的配置参数,包括启用和禁用对象存储系统内的版本控制,该对象存储系统以其他方式被配置用于版本化。
在许多对象存储系统中,使用针对单个部分对象的PUT函数来写入数据对象,或者使用诸如INIT、多个PARTPUT和COMPLETE函数的多部分写入过程来写入数据对象。写入未启用版本化或版本化暂停的系统或存储桶的数据对象可能创建具有被设置为空的版本值和创建时间戳的数据对象。具有已定义对象名称(例如“object1”)的数据对象的诸如GET的后续读取函数可返回数据对象(“object1”)。如果对象稍后写入有相同的对象名称(“object1”),则原始对象可能被覆写。对象名称(“object1”)的后续GET操作可能返回所覆写的对象,并且原始对象可能丢失。
然而,在版本化启用系统或存储桶中,对象的较早版本可不被覆写。新写入现有数据对象(“object1”)可创建该对象的新版本。对象名称不改变,但附加版本标识符可与新写入相关联。例如,当对象是被初始写入时,其可接收版本标识符(例如:“1111”)。针对对象名称(“object1”)的后续GET操作返回具有最近版本标识符(“1111”)的对象(“object1”)。在版本化启用的情况下,随后每次写入具有相同对象名称的对象时,创建具有相同对象名称(“object1”)但具有新创建时间戳和新版本标识符(例如,“2222”、“3333”等)的新对象。在给定存储系统或存储桶中具有相同对象名称和不同版本标识符的该组数据对象可统称为包括多个数据对象版本的版本化数据对象。对于不指定版本并且旨在检索对象的最新版本的GET操作而言,版本排序可能是重要的。
数据对象创建时间和版本化取决于不同对象存储系统中的特定实施方式,从而得到异构版本化配置。版本化在不同对象存储系统之间可能是不同的,这些不同对象存储系统实施可能不被其他对象存储系统识别的完全不同的版本化方案。例如,版本化标识符可以是另一系统未知的格式或位置。在这种情况下,来自另一系统的旨在包括版本请求的GET函数可能不符合必要的操作语法,并且可能返回错误、空对象或默认版本,诸如根据本地创建时间戳或版本化方案的最近版本。
具体地,对非版本化启用存储桶或数据存储库的版本化写入可导致仅单个、非版本化数据对象被传输并存储在目标数据存储库中。因此,在不向系统管理员生成任何种类的系统错误或通知的情况下,可能丢失所有其他对象版本和相关联的元数据。即使进行了版本化启用状态的初始检查,它也可能不是具有实际版本化写入的原子操作,并且状态可能在初始检查和完成版本化数据对象传输之间修改。
虽然作为版本化写入操作的一部分验证目标存储桶的版本化启用状态可能是有利的,但在接收到版本化启用状态无效的通知之前,可能仍然存在传输不必要数据(使用贵重的计算和网络资源)的风险。这对于使用多部分数据传输的大型数据对象而言可能是特别浪费的,其中在多部分序列的最后操作完成之前,可能都没有确认版本化状态。可在版本化启用数据写入请求中实现附加保障措施来限制大量、不必要的数据传输。
图1示出了示例性分布式存储系统1的实施方案。在一些实施方案中,分布式存储系统1可被实现为分布式对象存储系统,该分布式对象存储系统联接到一个或多个客户端10.1-10.n以用于通过一个或多个访问节点20.1-10.n来访问数据对象。分布式存储系统1和客户端10之间的连接可例如被实现为合适的数据通信网络。客户端10可托管使用分布式存储系统1中存储的数据的一个或多个应用程序或与之进行交互。此类应用程序可以例如是在客户端计算设备上运行的专用软件应用程序,该客户端计算设备诸如个人计算机、膝上型电脑、无线电话、个人数字助理或能够与分布式存储系统1直接交互的任何其他类型的通信设备。然而,根据另选的实施方案,应用程序可以例如包括合适的文件系统,该文件系统使通用软件应用程序能够与分布式存储系统1、用于分布式存储系统1的应用编程接口(API)库等进行交互。在一些实施方案中,访问节点20可包括用于根据文件系统协议来从客户端10接收文件数据请求的文件接口系统,并且使用诸如对象存储协议的不同存储协议来访问存储节点30.1-30.40中的数据。
如图1中进一步所示,分布式存储系统1包括多个访问节点20和多个存储节点30,访问节点和存储节点可以例如通过诸如局域网(LAN)、广域网(WAN)、诸如公共交换电话网络(PSTN)的电话网络、内联网、互联网、或任何其他合适的通信网络或通信网络的组合的常规数据通信网络的合适方式联接以用于传输数据。访问节点20、存储节点30和包括客户端10的计算设备可通过合适的有线、无线、光学等网络连接或此类网络连接的任何合适的组合连接到数据通信网络。虽然图1的实施方案仅示出了三个访问节点20和四十个存储节点30,但根据另选的实施方案,分布式存储系统1可包括任何其他合适数量的存储节点30,以及例如联接到这些存储节点30的两个、三个或更多个访问节点20。
这些访问节点20和存储节点30可被构建为通用计算机。另选地,它们可在物理上适于在大型数据中心中的布置,其中将它们布置在包括标准尺寸的模块化机架40.1-40.n中。示例性访问节点20和存储节点30的尺寸可被设计为占用此类机架40的单个单元,通常称为1U。此类示例性存储节点可使用低功率处理器,并且可配备有十或十二个高容量串行高级技术附件(SATA)磁盘驱动器,并且可通过冗余以太网网络接口连接到网络。示例性访问节点20可包括高性能服务器,并且通过多个高带宽以太网网络接口向客户端10提供网络接入。可通过多种网络协议在客户端10与此类访问节点20之间传输数据,所述网络协议包括超文本传输协议(HTTP)/代表性状态传输(REST)对象接口、诸如Microsoft.Net、Python或C等语言特定接口。另外,此类访问节点可包括附加的高带宽以太网端口以与存储节点30进行交互。在一些实施方案中,符合亚马逊简单存储服务(S3)对象存储服务的HTTP/REST协议可通过REST应用协议接口(API)启用数据传输。此类访问节点20可作为具有一个或多个集成和/或独立接口系统的控制器节点的高度可用群集进行操作,并且提供例如对存储节点30的共享访问、元数据高速缓存、元数据保护等。
如图1所示,若干存储节点30可例如因为它们被容纳在单个机架40中而被分组在一起。例如,存储节点30.1-30.4和30.7-30.40各自分别被分组到机架40.1和40.n。访问节点20可位于与访问节点所连接的存储节点相同或不同的机架中。机架可具有多个访问节点,例如机架40.1、作为机架40.n的单个访问节点,或者不具有访问节点(未示出)并且依赖于另一机架中的访问节点或具有内置访问节点和/或控制器节点能力的存储节点或客户端。这些机架不需要位于相同的位置,它们通常在地理上分散在不同的数据中心上,诸如例如机架40.1-40.3可位于欧洲的数据中心,40.4-40.7可位于美国的数据中心,并且40.8-40.10可位于中国的数据中心。
图2是使用客户端架构的示例性存储网络50的框图。在一些实施方案中,分布式存储系统1可具体体现在此类存储网络50中。如图所示,存储网络50可包括多个客户端设备60,该多个客户端设备能够经由有线和/或无线网络70(例如,任意数量和/或配置的公共和/或专用计算机网络(例如,互联网、内联网、云网络等))与存储网络50联接或与其通信,在其他示例中,可包括一个客户端设备60.1,或者包括两个或更多个客户端设备60(例如,不限于三个客户端设备60.1-60.3)。
客户端设备60可以是能够利用网络70访问存储系统80的任何计算硬件和/或软件(例如,厚客户端、薄客户端或其混合)。作为其相应操作的一部分,每个客户端设备60依赖于向存储系统80发送输入/输出(I/O)请求以写入数据、读取数据和/或修改数据。具体地,每个客户端设备60可将对读取、写入、存储、通信、传播和/或传送指令、数据、计算机程序、软件、代码、例程等的I/O请求传输到存储系统80。客户端设备60(一个或多个)和存储系统80可包括客户端服务器模型的至少一部分。一般来讲,存储系统80可由客户端设备60(一个或多个)访问,并且/或者与存储系统80的通信可由客户端设备60(一个或多个)利用一种或多种进程间联网技术通过网络套接字(未示出)发起。在一些实施方案中,客户端设备60可访问一个或多个应用程序以使用或管理诸如图1中的分布式存储系统1的分布式存储系统。
图3示出了存储节点30中的一个的实施方案的示意图。存储节点30.1可包括总线310、处理器320、本地存储器330、一个或多个可选输入单元340、一个或多个可选输出单元350、通信接口360、存储元件接口370以及两个或更多个存储元件300.1-300.10。总线310可包括一个或多个导体,该一个或多个导体允许在存储节点30.1的部件之间进行通信。处理器320可包括任何类型的解释和执行指令的常规处理器或微处理器。本地存储器330可包括随机存取存储器(RAM)或存储供处理器320执行的信息和指令的另一类型的动态存储设备和/或只读存储器(ROM)或存储供处理器320使用的静态信息和指令的另一类型的静态存储设备。输入单元340可包括诸如键盘、鼠标、笔、语音识别和/或生物识别机构等允许操作者向存储节点30.1输入信息的一个或多个常规机构。输出单元350可包括诸如显示器、打印机、扬声器等向操作者输出信息的一个或多个常规机构。通信接口360可包括使存储节点30.1能够与其他设备和/或系统通信的任何收发器状机构,例如用于与其他存储节点30或访问节点20通信的机构,诸如例如两个1Gb以太网接口。
存储元件接口370可包括用于将总线310连接到一个或多个存储元件300的存储接口,并且控制从/向这些存储元件300读取数据和写入数据,该存储接口诸如例如SATA接口或小型计算机系统接口(SCSI),该一个或多个存储元件诸如一个或多个本地磁盘,例如3太字节(TB)SATA磁盘驱动器。在如图2所示的一个示例性实施方案中,此类存储节点30.1可包括十个或十二个3TB SATA磁盘驱动器作为存储元件300.1-300.10,并且以这种方式,存储节点30.1将向分布式存储系统1提供30TB或36TB的存储容量。根据图1的示例性实施方案,并且如果存储节点30.2-30.40与存储节点30.1相同,并且每个存储节点包括36TB的存储容量,则分布式存储系统1将具有1440TB的总存储容量。
如图1和图3所示,分布式存储系统1包括多个存储元件300。如下文还将详细描述的,因为将数据存储在这些存储元件300上,使得对于分布式存储系统的功能而言,各个存储元件300本身都不是关键的或者各个存储元件300本身的特定部分是关键的,所以存储元件300也可被称为冗余存储元件300。存储节点30中的每一个可包括共享这些存储元件300。
如图1所示,存储节点30.1包括十个存储元件300.1-300.10。其他存储节点30可包括类似数量的存储元件300,然而,这不是必需的。存储节点30.2可例如包括六个存储元件300.11-300.16,并且存储节点30.3可例如包括四个存储元件300.17-300.20。如还将在下文详细说明的,分布式存储系统1可作为分布式对象存储系统进行操作以存储和检索数据对象,该数据对象包括数据(例如,64兆字节(MB)的二进制数据)和用于寻址该数据对象的数据对象标识符,例如,通用唯一标识符,诸如全局唯一标识符(GUID)。分布式存储系统1的实施方案可作为分布式对象存储系统进行操作。以数据对象的形式存储由应用程序提供存储的数据(也称为对象存储)可具有优于诸如基于块存储或基于文件存储的其他存储方案的特定优点。
存储元件300或其一部分可以是冗余的并且彼此独立地操作。这表示如果一个特定存储元件300功能失效,则分布式存储系统1中的另一存储元件300可容易地提供该功能。然而,如下文还将更详细地说明,存储元件300能够提供冗余性而不必同步工作,例如在许多公知的独立磁盘冗余阵列(RAID)配置中的情况,其有时甚至需要盘主轴旋转来同步。此外,存储元件300的独立和冗余操作可允许在特定分布式存储系统1中使用适当混合类型的存储元件300。可以使用例如具有不同存储容量的存储元件300、不同制造商的存储元件300、诸如例如常规硬盘和固态存储元件的使用不同硬件技术的存储元件300、使用诸如例如SATA的不同修订、并行高级技术附件(PATA)的不同存储接口的存储元件300等。因为这允许添加或移除存储元件300,而不向其设计强加与已在该分布式对象存储系统中使用的其他存储元件300相关的特定要求,所以这样可产生与分布式存储系统1的可扩展性和灵活性相关的优点。
图4示出了访问节点20的实施方案的示意图。访问节点20可包括控制器节点功能和/或文件系统接口功能,以供客户端系统使用文件系统协议访问存储在存储节点30中的数据对象中的数据。访问节点20可包括总线210、处理器220、本地存储器230、一个或多个可选输入单元240、一个或多个可选输出单元250。在一些实施方案中,访问节点20可包括对象存储管理功能,包括对象存储接口功能、版本控制管理和/或复制引擎。
总线210可包括一个或多个导体,该一个或多个导体允许在访问节点20的部件之间进行通信。处理器220可包括任何类型的解释和执行指令的常规处理器或微处理器。本地存储器230可包括随机存取存储器(RAM)或存储供处理器220执行的信息和指令的另一类型的动态存储设备和/或只读存储器(ROM)或存储供处理器320使用的静态信息和指令的另一类型的静态存储设备和/或诸如硬盘或固态存储元件的任何合适的存储元件。任选的输入单元240可包括诸如键盘、鼠标、笔、语音识别和/或生物识别机构等允许操作者向访问节点20输入信息的一个或多个常规机构。任选的输出单元250可包括诸如显示器、打印机、扬声器等向操作者输出信息的一个或多个常规机构。通信接口260可包括使访问节点20能够与其他设备和/或系统通信的任何收发器状机构,例如用于与其他存储节点30或访问节点20通信的机构,诸如例如两个10Gb以太网接口。
根据另选的实施方案,访问节点20可具有与存储节点30相同的设计,或者根据又一个另选的实施方案,分布式对象存储系统的存储节点30中的一个可执行访问节点20和存储节点30两者的功能。根据另外的实施方案,如下文更详细描述的访问节点20的部件可以任何合适的方式分布在多个访问节点20和/或存储节点30之间。根据另外的实施方案,客户端10可运行访问节点20。根据另外的实施方案,访问节点20可在控制器节点和/或接口节点之间具有或不具有冗余的情况下具体体现在单独的控制器节点和接口节点中。
图5示意性地示出了具有版本控制管理、复制管理和支持功能的访问节点或控制器节点的所选择的模块。对象存储系统500可被配置为具有类似于控制器节点和/或存储节点的架构和/或硬件的节点。对象存储系统500可结合与图1至图4所示的那些类似的元件和配置。例如,对象存储系统500可被配置在具有对象存储管理功能的访问节点20中。
对象存储系统500可包括总线510,该总线将至少一个通信单元512、至少一个处理器514和至少一个存储器516互连。总线510可包括一个或多个导体,该一个或多个导体允许在访问系统500的部件之间进行通信。通信单元512可包括任何收发器状机构,该机构使访问系统500能够与其他设备和/或系统通信。例如,通信单元512可包括有线或无线机构,该机构用于与文件系统客户端、其他访问系统和/或一个或多个对象存储系统或诸如存储节点或控制器节点的部件通信。处理器514可包括任何类型的解释和执行指令的处理器或微处理器。存储器516可包括随机存取存储器(RAM)或存储供处理器514执行的信息和指令的另一类型的动态存储设备和/或只读存储器(ROM)或存储供处理器514使用的静态信息和指令的另一类型的静态存储设备和/或诸如硬盘或固态存储元件的任何合适的存储元件。
对象存储系统500可包括或可访问一个或多个数据库和/或专用数据存储库,诸如元数据存储库550和对象存储库560。数据库可包括一个或多个数据结构,该数据结构用于存储、检索、索引、搜索、过滤等结构化和/或非结构化数据元素。在一些实施方案中,元数据存储库550可被构造为由与对象存储库560中存储的数据对象相关的元数据键值条目索引的参考数据条目和/或数据字段。对象存储库560可包括数据对象,该数据对象由对象数据(诸如主机数据)、一定量的元数据(被存储为元数据标签)和GUID构成。元数据存储库550、对象存储库560和/或其他数据库或数据结构可在诸如存储节点的单独的计算系统中利用单独的通信、处理器、存储器和其他计算资源进行保持和管理,并且由访问系统500通过数据访问协议进行访问。元数据存储库550和对象存储库560可跨多个对象存储系统500共享。
对象存储系统500可包括多个模块或子系统,这些模块或子系统被存储和/或实例化在存储器516中以供处理器514运行。例如,存储器516可包括存储接口520,该存储接口被配置为接收、处理和响应来自客户端系统或分布式存储系统1中的其他节点的对象数据请求。存储器516可包括版本控制管理器530,该版本控制管理器用于在对象存储库560中创建和管理对象版本。存储器516可包括复制管理器540,该复制管理器用于处理存储节点或存储系统之间的数据复制,诸如将数据对象传输或复制到可能异构的其他对象存储库。在一些实施方案中,版本控制管理器530和/或复制管理器540可集成到存储接口520中和/或通过API或其他接口作为单独的库或后台进程(例如,守护进程)来管理。
存储接口520可包括接口协议或一组函数和参数,用于存储、读取和以其他方式管理对相关联的分布式存储系统以及用于将文件数据映射到持久性存储数据元素的对应元数据数据源的数据请求。例如,存储接口520可包括用于根据对象存储系统的协议来读取、写入、修改或以其他方式操纵数据对象及其相应的客户端或主机数据和元数据的功能。
在一些实施方案中,存储接口520可包括多个硬件模块和/或软件模块,该硬件模块和/或软件模块被配置为使用处理器514和存储器516来处理或管理存储接口520的限定操作。例如,存储接口520可包括客户端请求处理程序522、元数据管理器524、存储管理器526和客户端响应处理程序528。对于任何给定客户端请求,存储接口520可通过客户端请求处理程序522接收客户端请求,并且基于该请求的内容确定一个或多个操作。这些操作可包括由元数据管理器524处理的元数据操作和/或由存储管理器526处理的对象数据操作。这些操作的结果可由客户端响应处理程序528处理、格式化并且返回。
存储接口520可包括一个或多个对象存储配置,该对象存储配置定义用于验证、管理和处理对象数据请求的存储协议。例如,对象存储配置通常可限定用于任何给定对象或存储桶的版本控制的可用性,以及指定对象存储系统如何创建和管理版本化信息。对象存储配置还可限定收集并存储哪些元数据,以及元数据是否存储在诸如元数据存储库550的元数据数据库中、存储在数据对象中存储的对象元数据标签中、和/或它们的组合中。
客户端请求处理程序522可包括用于从一个或多个客户端接收对象数据请求的接口和/或基于通信事件的条件。例如,客户端系统可通过网络连接发送对象数据请求并寻址到对象存储系统500或其端口或部件。客户端请求处理程序522可接收这些请求,并且根据适当的通信协议和对象存储协议来对它们进行解析。例如,客户端请求处理程序522可从构成对象数据请求的所接收的一条或多条消息中识别事务标识符、客户端标识符、对象标识符(对象名称或GUID)、数据操作以及用于数据操作的附加参数(如果有的话)。
元数据管理器524可包括用于创建、修改、删除、访问和/或以其他方式管理诸如元数据存储库550中存储的对象元数据554的对象元数据的接口、功能和/或参数。例如,当将新的对象写入对象存储库560时,可在元数据存储库550中创建至少一个新的元数据条目以表示描述新创建的对象或与之相关的参数。元数据管理器524可生成并保持对象数据索引552,该对象数据索引使元数据管理器524能够在元数据存储库550内定位对象元数据。例如,元数据存储库550可被组织为键值存储库,并且对象数据索引552可包括与利用包括每个对象的对象标识符或GUID的键值进行索引的那些对象相关的数据对象和/或操作的键值。在一些实施方案中,元数据管理器524还可利用对象数据564来管理对象存储库560中存储的对象元数据。元数据管理器524可与存储管理器526结合工作,以创建、修改、删除、访问或以其他方式管理被存储为对象存储库560内的对象标签566的对象元数据。
存储管理器526可包括用于读取、写入和删除对象存储库560中的对象数据元素的接口、功能和/或参数。例如,对象PUT命令可被配置为将对象标识符562、对象数据564和/或对象标签566写入对象存储库560。对象GET命令可被配置为从对象存储库560读取数据。对象DELETE命令可被配置为从对象存储库560删除数据,或者至少标记待删除的数据对象直到未来垃圾收集或类似操作实际删除该数据,或者将物理存储位置重新分配给另一目的。
其他对象存储命令可由包括针对版本控制限定的特殊函数的存储管理器526处理。由存储管理器526处理的对象存储命令可包括用于访问特殊函数的参数和/或与数据对象中的主机或客户端数据一起存储的元数据资源。存储管理器526可与元数据管理器524和版本控制管理器530结合工作,以用于管理对象元数据,包括版本化信息。存储管理器526可与复制管理器540结合工作以将数据从对象存储库560复制或迁移到另一数据存储库。例如,存储管理器526可读取对象存储库560以供由复制管理器540管理的一个或多个复制引擎传输。
客户端响应处理程序528可包括接口和/或通信逻辑,用于向与所接收的对象数据请求相关的一个或多个客户端发送诸如结果、状态或错误消息的响应消息。例如,客户端响应处理程序528可等待元数据管理器524和/或存储管理器526处理以完成或生成错误,然后针对所接收的每个对象数据请求向客户端系统(一个或多个)提供适当的结果或错误消息。
在一些实施方案中,元数据存储库550可分布在诸如多个访问系统的多个系统上。元数据存储库550和/或其部分可以是共享数据存储库,其中数据存储库被划分成存储在不同计算系统中的区段。存储接口520可包括用于定位和访问共享数据库的相关部分的函数。
版本控制管理器530可由存储接口520调用,以管理对对象存储库560的一个或多个数据对象、存储桶或全部的版本控制。例如,如果版本化被启用,则每当写入相同的对象名称时,可创建新的对象版本。类似地,从读取操作中返回的对象版本可由作为读取操作的参数包括的版本标识符确定和/或可默认为最新版本。版本控制管理器530可提供用于管理对跨异构数据存储库的版本控制的持久性版本字段的使用的接口、函数和参数。在一些实施方案中,版本控制管理器530可被包括在存储接口520内,诸如被包括在由客户端请求处理程序522、元数据管理器524、存储管理器526和/或客户端响应处理程序528使用的库函数内。
在一些实施方案中,版本控制管理器530可包括用于运行特定操作的一个或多个硬件和/或软件模块或数据结构。例如,版本控制管理器530可包括版本化启用器532、持久性版本字段534、版本字段写入器/读取器536和响应处理程序538。
版本化启用器532可包括一个或多个参数、数据结构和/或用于操纵那些参数或数据结构的相关方法。版本化启用器532可被配置为管理对象存储库560和/或其中包含的特定存储桶或数据对象的版本化启用状态532.1。在一些实施方案中,每个存储桶可包括版本化启用字段,以确定是否针对该存储桶启用版本化。例如,如果针对目标数据对象、存储桶或对象存储库启用版本化,则版本化启用字段可以是第一值,并且如果针对目标数据对象、存储桶或对象存储库不启用版本化,则可以是第二值。在一些实施方案中,版本化启用字段可包括更多值以传达版本化是否可用(支持但未启用)、版本化是否不支持、或版本化是否暂停(先前启用,但由于存储桶或对象级别的中断、冲突或配置选择而无效)。
在一些情况下,如果版本化数据对象可以其顺序的对象版本和相关版本化元数据写入对象存储库560,则版本化启用状态532.1可被称为对于特定写入事务有效。对于版本化启用字段可存在多个值,这些值被转换为特定写入事务的有效版本化启用状态。类似地,如果版本化数据对象不能以其顺序的对象版本和相关版本化元数据写入对象存储库560,则版本化启用状态532.1可被称为对于特定写入事务无效。对于版本化启用字段可存在多个值,这些值被转换为特定写入事务的无效版本化启用状态。
版本化启用器532还可包括一个或多个可配置参数,该可配置参数定义版本控制管理器530如何处理版本化。例如,对象存储系统可支持用于跨对象存储系统的默认本地版本控制配置和持久性版本控制配置两者。在一些实施方案中,版本化启用器532可包括参数,该参数用于确定版本字段是否存储在元数据数据库中,诸如存储在元数据存储库550中的对象元数据554中,或者是否与对象数据一起存储,诸如存储在对象存储库560中的对象标签566中。
持久性版本字段534可包括一个或多个参数、数据结构和/或用于配置和生成对象版本的持久性版本字段的相关方法。例如,持久性版本字段配置可包括存储桶名称534.1、存储桶标识符534.2、版本标识符534.3和创建时间戳534.3。在一些实施方案中,持久性版本字段534可各自包括对应于子字段并且根据限定的语法存储和呈现的一系列值。例如,示例性持久版本字段可以是“bucket1.1234.1111.05/12/2018-01:00:00”。在一些实施方案中,持久性版本字段534可在对象最初由第一对象存储系统创建时发起,并且在对象版本迁移或复制时与对象版本一起传输。因此,可从对象元数据确定包括创建时间戳的原始版本信息,而不管对象的该版本在哪里结束或其可能已通过多少异构对象存储库传输(或何时或以何种顺序传输)。
版本字段写入器/读取器536可包括用于提供待写入元数据和从元数据读取的持久性版本字段556、568的函数、方法或操作。例如,对于正在创建并存储到对象存储库560的任何给定对象版本,版本字段写入器可使用持久性版本字段534作为模板,以针对写入操作向持久性版本字段556、568填充对应的值,诸如存储桶名称、存储桶标识符、版本标识符和与写入操作相关的创建时间戳值。对于版本化数据对象或其对象版本的任何给定读取操作,版本字段读取器可从所关注的每个对象版本的元数据中识别持久性版本字段,并且使用持久性版本字段534作为模板来提取和返回字段的对应值。在一些实施方案中,版本字段写入器/读取器536可由存储接口520和/或复制管理器540调用。
版本字段写入器/读取器536的特殊实例可包括删除标记写入器。例如,当识别到对版本化数据对象的删除事件,诸如处理由存储接口520接收的对版本化数据对象的删除命令时,删除标记写入器可生成没有主机数据(或大小为0的主机数据)的数据对象版本以及将对象版本识别为删除标记的持久性版本字段。该删除标记对象版本可具有相同的对象名称(如任何其他对象版本),并且如同针对版本化数据对象的任何其他对象版本一样进行管理和传输。在一些实施方案中,删除标记可包括添加到持久性版本字段以将对象版本识别为删除标记的删除标记标识符,诸如标志、标签或类似值。
写入响应处理程序538可包括用于提供对从其他对象存储系统接收的版本写入请求的响应的函数、方法或操作。例如,当存储接口520接收到版本写入请求以将版本化数据对象从另一对象存储库写入对象存储库560中时,版本写入请求可被配置为接收对写入请求的关于版本化状态的响应。写入响应处理程序538可读取版本化启用状态532.1,并且确定版本写入请求是否以有效版本化启用状态532.1完成。在一些实施方案中,由写入响应处理程序538确定的有效/无效状态值可附加到由存储接口520生成的写入完成状态消息中。
复制管理器540可包括用于管理将包括版本化数据对象的数据对象传输到其他对象存储库或对象存储系统的函数、方法或操作。例如,复制管理器540可管理一个或多个复制引擎,该复制引擎将数据对象从对象存储库560移动到可能远离该对象存储库560的目标对象存储库。复制管理器540可被配置为在异构数据存储库之间传输数据对象。在一些实施方案中,复制管理器540传输每个版本化数据对象,包括对象标识符562、对象数据564和相关联的对象标签566,该对象标签可包括持久性版本字段568。在一些实施方案中,复制管理器540还可使用对象数据索引552来识别相关联的对象元数据554以从诸如元数据存储库550的对应元数据存储库中传输与数据对象相关联的元数据,该相关联的对象元数据可包括持久性版本字段568。
在一些实施方案中,复制管理器540可被配置用于异步数据传输。例如,调度器可基于诸如对象大小、可用性等除对象在对象存储库560内排序的顺序之外的标准来选择待传输的对象。在一些实施方案中,多个复制引擎可并行操作,并且在相似的时间并且使用可导致不同传输率的资源和路径来传输相同版本化数据对象的对象版本。因此,版本化数据对象的对象版本可在目标系统处以与其在对象存储库560中存储顺序不同的顺序或甚至与其发送顺序不同的顺序摄取。复制管理器540还可支持多部分数据对象传输,该多部分数据对象传输包括多个写入事务以完成单个对象复制。例如,多部分写入过程可包括诸如INIT、多个PARTPUT以及COMPLETE函数的一系列命令或消息。
在一些实施方案中,复制管理器540可包括用于执行特定操作的一个或多个硬件和/或软件模块或数据结构。例如,复制管理器540可包括版本写入请求542、版本化无效列表544、版本响应处理程序546和重试队列548。
版本写入请求542可包括用于特殊写入操作以向另一对象存储库提供对版本化数据对象的已验证写入的命令、接口协议和/或一组函数和参数。例如,当复制管理器负责将版本化数据对象复制到具有未知版本化配置的异构数据存储库时,版本写入请求542可使版本化数据对象能够传输和写入,同时验证在确认向存储接口520或另一系统资源或客户端的传输完成之前有效版本化配置在目标数据存储库上是可操作的。在一些实施方案中,版本写入请求542可作为等待响应消息的PUT或多部分PUT命令进行操作,该响应消息包括用于确定版本化状态对于PUT请求是否有效的版本化相关信息。版本写入请求542可结合版本响应处理程序546操作以接收和验证版本化状态。
在一些实施方案中,版本写入请求542可被配置为使用测试对象542.1来验证目标对象存储库的版本化状态。例如,版本写入请求542可利用测试对象542.1而非对象版本或对象部分(对于多部分PUT)向目标对象存储库生成测试版本写入请求或PUT请求。在一些实施方案中,测试对象542.1可包括针对没有主机数据有效载荷和相对于正被复制的版本化数据对象而言对象数据大小较小的测试对象的一个或多个对象版本。可在发起对被选择用于复制的版本化数据对象的版本写入请求之前执行对测试对象542.1的测试请求。在一些实施方案中,可响应于目标对象存储库或存储桶具有版本化无效列表544中的条目和/或响应于从对相同目标的先前请求的响应中确定无效版本化启用状态而发起测试请求。在成功写入目标数据存储库的测试对象542.1之后仍然可以是来自版本响应处理程序546的删除请求,以类似于从失效的版本化写入请求中移除残余数据对象的方式从目标数据存储库中移除测试对象。
版本化无效列表544可包括由复制管理器540保持以提高初始版本写入请求的效率并在迭代测试消息和重试周期期间监测版本化状态的数据结构。例如,版本化无效列表544可包括可搜索数据结构,该可搜索数据结构具有用于已返回无效版本化启用状态的目标对象存储库的条目。在一些实施方案中,存储桶标识符可被组织在数据表中,并且用于索引一个或多个目标对象存储库中的存储桶的存储桶无效状态。版本化无效列表544可包括在数据结构中搜索所关注的存储桶标识符的函数或方法。
版本响应处理程序546可包括用于接收和解析来自目标对象存储库的响应以验证版本化数据对象的写入的命令、接口协议和/或一组函数和参数。例如,版本响应处理程序546可接收版本写入响应消息,该版本写入响应消息包括指示目标对象存储库在版本写入请求时的版本化启用状态的参数。在一些实施方案中,版本写入响应消息可包括版本化启用状态的值。在一些实施方案中,版本响应处理程序546可包括用于解析版本写入响应消息的参数以确定版本化启用状态有效或无效的逻辑。
有效的版本化启用状态可触发操作完成或类似的成功消息和/或启用复制管理器540内的后续操作的继续处理,诸如针对测试对象542.1的成功的版本化写入发送删除请求546.1。无效版本化启用状态可触发删除请求546.1以移除写入目标对象存储库但未完成版本写入请求的(一个或多个)任何残余对象版本。无效的版本化启用状态可触发通知事件546.2返回到发起服务或客户端。在一些实施方案中,通知事件546.2可指示无效的版本化启用状态和/或请求对目标对象存储库的版本化配置改变。
重试队列548可包括保持待审版本写入请求的列表的数据结构,该待审版本写入请求可通过迭代重试进程重试。例如,可在使用或不使用测试消息来等待版本化启用状态中的改变的情况下,针对固定重试次数、重试时段或重试尝试的其他限制来启用迭代重试进程。在一些实施方案中,重试队列548可保持在诸如操作表的数据结构中,该数据结构具有用于每个待审版本写入请求的条目和用于确定优先级、尝试次数和与管理重试尝试相关的其他版本写入请求数据的一个或多个参数。
在一些实施方案中,版本写入请求542、版本化无效列表544、版本响应处理程序546和/或重试队列548可提供一个或多个原子函数,用于执行有效的版本化数据对象复制(或者,对于不能如上所述完成的复制,返回适当错误)。原子函数可由或通过存储接口520调用或请求,然后保持操作状态直到返回结果或响应,而无需与发起服务进行进一步交互。例如,版本写入请求542可发送PUT请求,版本响应处理程序546可接收版本写入响应并确定是否需要处理删除请求,并且复制管理器540可仅在已成功执行删除请求之后返回结果、完成或错误消息。类似地,如果版本写入请求542被配置为使用重试队列548来使用测试请求或迭代尝试,则这些操作可类似地由复制管理器执行,直到在没有来自发起服务或客户端的进一步输入的情况下实现对版本写入请求的解析。
存储器516可包括用于处理对象数据请求的附加逻辑和其他资源(未示出),诸如用于生成、排队和以其他方式管理对象数据请求的模块。存储接口520对对象数据请求的处理可包括产生对分布式存储系统的至少一个数据请求的任何数量的中间步骤。
图6示出了在对象存储系统630.1和630.2中的示例性异构数据存储库600之间传输的版本化数据对象634。在一些实施方案中,异构数据存储库600可根据参照图1至图5所述的系统和元件进行配置。在所示的示例中,对于对象存储系统630.1和630.2之间的传输,版本化状态638.1是有效的,而版本化状态638.2是无效的。版本化数据对象634.1在对象存储系统630.1中的存储桶632.1中示出,其中对象版本未受损。存储桶632.1中的对象634.1可以是原始对象存储库,其中对象634.1和对应的对象版本1111、2222、3333以先后顺序初始创建。元数据标签636.1.1、636.1.2和636.1.3可包括持久性版本字段,该持久性版本字段包含原始版本数据,包括版本标识符和对应于数据对象的顺序版本的创建时间戳。
通过从对象存储系统630.1到对象存储系统630.2的尝试版本写入请求640,对象版本被传输到对象存储系统630.2。因为版本化启用状态638.2无效,诸如对于存储桶632.2,版本化被禁用或不可用,因此对于对象634.2,仅版本3333被成功存储。这导致版本3333为对象634.2的残余数据对象,如果该版本保持在存储桶632.2中,则可能产生错误。响应642可包括版本化启用状态638.2或可从中确定版本化启用状态638.2的其他参数。因此,当对象存储系统630.1接收并处理响应642时,其可识别在写入版本化数据对象634.2时的错误。
对象存储系统630.1可识别无效的版本写入尝试。作为响应,对象存储系统630.1可立即和自动地发出删除消息644以删除版本3333和对象634.2。在完成已失败的复制尝试并向发起服务或客户端提供适当的通知之前,可等待成功完成删除操作和来自对象存储系统630.2的响应646。在结束状态下,可从对象存储系统630.2中移除对象634.2和版本3333,并且可在已更新版本化状态638.2而不与残余数据对象634.2产生冲突之后进行另一尝试。
如图7所示,对象存储系统500可根据用于验证版本化启用状态的示例性方法来操作,即根据图7的框710-780所示的方法700来操作。
在框710处,可向包括目标对象存储库的目标对象存储系统发送版本写入请求消息。例如,复制管理器可针对版本化数据对象生成版本写入请求并发送该版本写入请求。在一些实施方案中,版本写入请求消息可包括针对对象版本中的每一个和/或涉及多个写入事务的多部分对象写入的部分的一系列版本写入请求消息。然后复制管理器可等待响应。
在框720处,发送版本写入请求的对象存储系统可接收响应消息。例如,对象存储系统可接收响应于作为版本写入请求消息发送的PUT请求的响应消息。
在框730处,可从响应消息中确定目标对象存储库的版本化启用状态。例如,响应消息可包括用于版本化启用状态的标志或其他参数值。在一些实施方案中,复制管理器可提取和解析响应消息中的一个或多个参数以确定版本化启用状态。在框735处,可确定版本化启用状态是否有效?如果有效,则方法700可前进至框740。如果无效,则方法700可前进至框750。
在框740处,对于版本写入请求,已确定有效的版本化启用状态,例如,如针对框730所述。在框745处,可响应于有效的版本化启用状态而生成成功通知。例如,可向发起系统服务或客户端发送成功通知,指示已利用版本化成功复制了版本化数据对象。
在框750处,对于版本写入请求,已确定无效的版本化启用状态,例如如针对框730所述。在框760处,向目标对象存储库发送对版本化数据对象的删除请求。例如,可向目标对象存储库发送删除一个或多个任何残余对象版本的删除请求。在框770处,可任选地将版本写入请求添加到重试队列以再次尝试。在框780处,可生成版本化无效的通知事件。例如,可向发起系统服务或客户端发送包括版本化未启用的错误代码的失败通知。在一些实施方案中,版本化无效的通知事件可生成对目标对象存储系统或相关的存储管理系统的消息,以实现在目标对象存储库上的版本化。例如,对象存储系统可被配置为请求目标对象存储系统上的版本化启用器改变目标对象数据存储桶的版本化启用状态。
如图8所示,对象存储系统500可根据用于对版本写入请求作出响应的示例性方法来操作,即根据图8的框810-870所示的方法800来操作。在一些实施方案中,方法800可响应于如由目标对象存储系统执行的图7的示例性方法700。在所示的示例中,对于目标对象存储库,未启用版本化,并且版本化启用状态无效。
在框810处,接收对版本化数据对象的版本写入请求。例如,原始对象存储系统可发送对版本化数据对象的具有一个或多个对象版本的版本写入请求。
在框820处,由于版本化启用状态无效,所以可能在不进行版本化的情况下处理写入请求。例如,对于版本化数据对象,所接收的对象版本中的每一个可能覆写先前的对象版本。
在框830处,利用对象名称来存储版本化数据对象的残余版本。例如,在每个先前的对象版本已被覆写之后,仅最后的版本可保持为残余版本,并且其将使用对象名称存储在对象存储库上,而不考虑请求或对象本身提供的任何版本化信息。
在框840处,在完成版本写入请求时发送响应消息。例如,完成了写入请求可生成完成消息,该完成消息包括将完成消息与原始请求消息匹配的参数。在一些实施方案中,该响应消息可包括与版本化启用状态相关的指示符。在一些实施方案中,该响应消息可包括描述在没有版本化信息的情况下存储的残余数据对象的参数,可从这些参数中确定无效的版本化启用状态。
在框850处,可接收对残余对象的删除请求。例如,响应于确定无效的版本化启用状态,原始对象存储系统可发送对一个或多个残余版本的删除请求。
在框860处,响应于该删除请求而删除残余版本。例如,目标对象存储系统可处理删除请求以删除残余版本。
在框870处,由目标对象存储系统发送响应消息以确认完成了删除操作。例如,完成了删除请求可生成完成消息,该完成消息包括将完成消息与原始请求消息匹配的参数。
如图9所示,对象存储系统500可根据用于使用测试消息来验证版本化启用状态的示例性方法来操作,即根据图9的框910-990所示的方法900来操作。
在框910处,接收对版本化数据对象的复制请求。例如,客户端或系统服务可发起对原始数据存储系统中的一个或多个数据对象、存储桶或对象存储库的复制操作。
在框920处,针对目标对象存储库搜索版本化无效列表。例如,复制请求可包括复制请求的目标存储桶,并且存储桶标识符可用作用于搜索由原始存储系统保持的版本化无效列表的索引。在框925处,可确定目标存储桶是否在版本化无效列表中。如果在,则方法900可前进至框930。如果不在,则方法900可前进至框980。
在框930处,可将测试请求发送到目标对象存储库。例如,可向以目标存储桶为目标的目标对象存储系统发送作为对版本化测试对象的版本写入请求的测试请求。在一些实施方案中,可作为测试消息发送版本状态请求消息。
在框940处,可从目标对象存储系统接收对测试请求的测试响应消息。例如,对测试对象的版本写入请求可生成响应消息,从该响应消息可确定有效的版本化启用状态。另选地,对版本状态请求的响应消息可包括版本化启用状态信息,可从该版本化启用状态信息来确定有效或无效状态。在框945处,可确定版本化启用状态是否有效。如果有效,则方法900可前进至框950。如果无效,则方法900可前进至框960。
在框950处,可响应于有效版本测试而从无效列表中移除目标对象存储库。例如,当从响应消息中确定有效的版本化启用状态时,原始对象存储系统可从版本化无效列表中移除目标存储桶的条目。方法900可前进至框970以发起重试。
在框960处,可响应于无效版本化而更新版本化无效列表。例如,如果目标存储桶的条目已存在,则可利用最近的尝试信息或其他相关数据来更新该条目。如果目标存储桶的条目不存在,则可创建该目标存储桶的新条目。
在框970处,可发起重试迭代。例如,无论测试迭代已通过或未通过有效版本化,还是对正被复制的版本化数据对象的版本写入请求尚未通过有效版本化,都可发起重试。在一些实施方案中,该重试可包括确定重试是否返回到框920的一组限制条件。
在框980处,发起对待复制的版本化数据对象的版本写入请求。例如,可如上文针对方法700所述处理版本写入请求。在框985处,可确定版本化启用状态是否有效。如果有效,则方法900可前进至框990。如果无效,则方法900可前进至框960。在框990处,可如上文关于方法700所述来完成对版本化数据对象的版本写入请求。
尽管在本技术的前述详细描述中已经呈现了至少一个示例性实施方案,但应当理解,可存在大量变化。还应当理解,一个或多个示例性实施方案是示例,并且不旨在以任何方式限制技术的范围、适用性或配置。相反,前面的详细描述将为本领域技术人员提供用于实现本技术的示例性实施方案的便利指导方针,应当理解,在不脱离如所附权利要求及其合法等同物所阐述的技术范围的情况下,可以对示例性实施方案中描述的元件的功能和/或布置进行各种修改。
如本领域普通技术人员将理解的,本技术的各个方面可以体现为系统、方法、或计算机程序产品。因此,本技术的一些方面可以采取完全为硬件的实施方案、完全为软件的实施方案(包括固件、驻留软件、微代码等)、或硬件和软件方面的组合的形式,这些方面通常都可以在本文中称为电路、模块、系统和/或网络。此外,本技术的各个方面可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,包括在其上体现的计算机可读程序代码。
可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或物理计算机可读存储介质。例如,物理计算机可读存储介质可以是但不限于电子、磁性、光学、晶体、聚合物、电磁、红外或半导体系统、装置或设备等,或前述的任何合适组合。物理计算机可读存储介质的非限制性示例可包括但不限于包括一个或多个电线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪速存储器、光纤、紧凑式光盘只读存储器(CD-ROM)、光学处理器、磁处理器等,或前述的任何合适的组合。在本文档的上下文中,计算机可读存储介质可以是可包含或存储用于供指令执行系统、装置、和/或设备使用或与其结合的程序或数据的任何有形介质。
计算机可读介质上体现的计算机代码可以使用任何适当的介质来传输,包括但不限于无线、有线、光纤电缆、射频(RF)等,或者前述的任何合适组合。用于执行本技术的各方面的操作的计算机代码可以用任何静态语言编写,诸如C编程语言或其他类似的编程语言。计算机代码可以完全在用户的计算设备上执行,部分在用户的计算设备上执行,作为独立的软件包,部分在用户的计算设备上并且部分在远程计算设备上执行,或者完全在远程计算设备或服务器上执行。在后一种情况下,远程计算设备可以通过任何类型的网络或通信系统连接到用户的计算设备,包括但不限于,局域网(LAN)或广域网(WAN)、统合式网络,或者该连接可以对外部计算机(例如,通过使用互联网服务提供商的互联网)建立。
以上可以参考方法、装置、系统和计算机程序产品的流程图图示和/或框图来描述本技术的各方面。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可以由计算机程序指令实现。可以将这些计算机程序指令提供给通用计算机、专用计算机、或其他可编程数据处理装置的处理设备(处理器)以生产机器,使得可经由处理设备或其他可编程数据处理装置执行的指令创建用于实现在流程图中和/或框图的一个或多个框中指定的操作/动作的装置。
一些计算机程序指令还可以存储在计算机可读介质中,该计算机可读介质可以指示计算机、其他可编程数据处理装置或一个或多个其他设备以特定方式操作,使得该指令存储在计算机可读介质中以产生包括实现在流程图中和/或框图的一个或多个框中指定的操作/动作的指令的制品。一些计算机程序指令也可以被加载到计算设备、其他可编程数据处理装置、或一个或多个其他设备上,以致使在计算设备、其他可编程装置、或一个或多个其他设备上执行一系列操作步骤以产生计算机实现的过程,使得由计算机或其他可编程装置执行的指令提供用于实现在流程图中和/或框图的一个或多个框中指定的一个或多个操作/一个或多个动作的一个或多个过程。
以上附图中的流程图和/或框图可以示出根据本技术的各方面的装置、系统、方法和/或计算机程序产品的可能具体实施的架构、功能和/或操作。在这方面,流程图或框图中的框可以表示代码的模块、片段或部分,其可以包括用于实现一个或多个指定逻辑功能的一个或多个可执行指令。还应当指出,在一些另选的方面中,框中示出的一些功能可以不按图中所示的顺序发生。例如,事实上,连续示出的两个框可基本上同时执行,或者这些框有时可以采用相反的顺序执行,这取决于所涉及的操作。还应当注意,框图和/或流程图图示的框或框图和/或流程图图示中的框的组合可以由可执行一个或多个指定操作或动作的基于专用硬件的系统,或专用硬件和计算机指令的组合来实现。
虽然已经详细说明和讨论了本技术的一个或多个方面,但本领域普通技术人员将理解,在不脱离如所附权利要求中阐述的本技术的范围的情况下,可以对各个方面进行修改和/或调整。
Claims (20)
1.一种用于版本验证的系统,包括:
第一对象数据存储库,所述第一对象数据存储库被配置为包括多个版本化数据对象,其中每个版本化数据对象包括对应于所述版本化数据对象的多个顺序版本;
第二对象数据存储库,所述第二对象数据存储库被配置为包括版本化启用状态;和
复制管理器,所述复制管理器包括至少一个处理器,其中所述复制管理器被配置为:
将版本化数据对象从所述第一对象数据存储库传输至所述第二对象数据存储库;
针对所述版本化数据对象,向所述第二对象数据存储库发送版本写入请求;
在完成所述版本写入请求时,从所述第二对象数据存储库接收响应消息;
从所述响应消息中确定所述版本化启用状态是否无效;以及
响应于确定所述版本化启用状态无效,向所述第二对象数据存储库发送对所述版本化数据对象的删除请求。
2.根据权利要求1所述的系统,其中所述复制管理器被进一步配置为响应于确定所述版本化启用状态无效而将对所述版本化数据对象的版本写入请求添加到重试队列。
3.根据权利要求1所述的系统,其中所述复制管理器被进一步配置为响应于确定所述版本化启用状态无效而生成通知事件,所述通知事件被配置为请求在所述第二对象数据存储库上启用版本化。
4.根据权利要求1所述的系统,其中所述第二对象数据存储库被配置为:
响应于所述版本写入请求,响应于所述版本化启用状态无效,将所述版本化数据对象的残余版本存储在所述第二对象数据存储库中;以及
响应于所述删除请求,删除所述版本化数据对象的所述残余版本。
5.根据权利要求1所述的系统,其中所述版本写入请求是多部分写入请求,所述多部分写入请求包括所述第一对象数据存储库和所述第二对象数据存储库之间的多个写入事务以传输所述版本化数据对象。
6.根据权利要求5所述的系统,其中:
所述复制管理器被进一步配置为在发起对所述多部分写入请求的版本写入请求消息之前,向所述第二对象数据存储库发送测试消息;以及
响应于确定所述版本化启用状态有效而执行发起所述版本写入请求消息。
7.根据权利要求6所述的系统,其中所述测试消息为包括大小为0的主机数据的测试版本写入请求消息。
8.根据权利要求6所述的系统,其中所述复制管理器被进一步配置为响应于确定所述版本化启用状态无效而多次重试发送所述测试消息。
9.根据权利要求1所述的系统,其中:
所述复制管理器被进一步配置为包括具有无效版本化启用状态的目标对象数据存储桶的版本化无效列表;并且
所述复制管理器被进一步配置为响应于确定所述版本化启用状态无效,添加所述第二对象数据存储库中的目标对象数据存储桶的版本化无效条目。
10.根据权利要求9所述的系统,其中所述复制管理器被进一步配置为:
针对所述版本写入请求,在所述版本化无效列表中搜索所述目标对象数据存储桶;
响应于找到所述目标对象数据存储桶的所述版本化无效条目,向所述目标对象数据存储桶发送测试版本写入请求消息;并且
响应于接收到指示所述版本化启用状态有效的测试响应消息:
移除所述目标对象数据存储桶的所述版本化无效条目;以及
发起发送所述版本写入请求。
11.一种用于版本验证的计算机实现的方法,包括:
将对版本化数据对象的版本写入请求从第一对象数据存储库发送到第二对象数据存储库,其中:
所述版本化数据对象包括对应于所述版本化数据对象的多个顺序版本;并且
所述第二对象数据存储库包括版本化启用状态;
在完成所述版本写入请求时,从所述第二对象数据存储库接收响应消息;
从所述响应消息中确定所述版本化启用状态是否无效;以及
响应于确定所述版本化启用状态无效,向所述第二对象数据存储库发送对所述版本化数据对象的删除请求。
12.根据权利要求11所述的计算机实现的方法,还包括:
响应于确定所述版本化启用状态无效而将对所述版本化数据对象的版本写入请求添加到重试队列。
13.根据权利要求11所述的计算机实现的方法,还包括:
响应于确定所述版本化启用状态无效而生成通知事件,所述通知事件被配置为请求在所述第二对象数据存储库上启用版本化。
14.根据权利要求11所述的计算机实现的方法,还包括:
响应于所述版本写入请求,响应于所述版本化启用状态无效,将所述版本化数据对象的残余版本存储在所述第二对象数据存储库中;以及
响应于所述删除请求,删除所述版本化数据对象的所述残余版本。
15.根据权利要求11所述的计算机实现的方法,还包括:
向所述第二对象数据存储库发送测试消息;以及
从所述第二对象数据存储库接收测试响应消息,其中响应于从所述测试响应消息中确定所述版本化启用状态有效,执行发送所述版本写入请求。
16.根据权利要求15所述的计算机实现的方法,还包括:
响应于确定所述版本化启用状态无效而多次重试发送所述测试消息。
17.根据权利要求11所述的计算机实现的方法,还包括:
响应于确定所述版本化启用状态无效而将所述第二对象数据存储库中的目标对象数据存储桶的版本化无效条目添加到版本化无效列表。
18.根据权利要求17所述的计算机实现的方法,还包括:
针对所述版本写入请求,在所述版本化无效列表中搜索所述目标对象数据存储桶;
响应于找到所述目标对象数据存储桶的所述版本化无效条目,向所述目标对象数据存储桶发送测试消息;并且
响应于接收到指示所述版本化启用状态有效的测试响应消息:
移除所述目标对象数据存储桶的所述版本化无效条目;以及
发起发送所述版本写入请求。
19.一种用于版本验证的系统,包括:
第一对象数据存储库,所述第一对象数据存储库被配置为包括多个版本化数据对象,其中每个版本化数据对象包括对应于所述版本化数据对象的多个顺序版本;
第二对象数据存储库,其中所述第二对象数据存储库被配置为包括版本化启用状态;
用于将对版本化数据对象的版本写入请求从所述第一对象数据存储库发送到所述第二对象数据存储库的装置;
用于响应于在完成所述版本写入请求时来自所述第二对象数据存储库的响应消息而确定所述版本化启用状态是否无效的装置;和
用于响应于确定所述版本化启用状态无效而向所述第二对象数据存储库发送对所述版本化数据对象的删除请求的装置。
20.根据权利要求19所述的系统,还包括:
用于向所述第二对象数据存储库发送测试消息的装置;和
用于从所述第二对象数据存储库接收测试响应消息的装置,其中响应于从所述测试响应消息中确定所述版本化启用状态有效,执行发送所述版本写入请求。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN201811020720 | 2018-06-02 | ||
IN201811020720 | 2018-06-02 | ||
PCT/US2019/023751 WO2019231527A1 (en) | 2018-06-02 | 2019-03-22 | Versioning validation for data transfer between heterogeneous data stores |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111356996A CN111356996A (zh) | 2020-06-30 |
CN111356996B true CN111356996B (zh) | 2023-07-21 |
Family
ID=68692653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980005824.9A Active CN111356996B (zh) | 2018-06-02 | 2019-03-22 | 用于版本验证的系统和计算机实现的方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11321291B2 (zh) |
CN (1) | CN111356996B (zh) |
DE (1) | DE112019000143T5 (zh) |
WO (2) | WO2019231526A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10764354B1 (en) * | 2019-03-01 | 2020-09-01 | Red Hat, Inc. | Transmitting data over a network in representational state transfer (REST) applications |
US11122120B2 (en) * | 2019-05-28 | 2021-09-14 | International Business Machines Corporation | Object notification wherein compare and swap is performed |
US11082494B2 (en) * | 2019-12-05 | 2021-08-03 | Western Digital Technologies, Inc. | Cross storage protocol access response for object data stores |
CN113742050B (zh) * | 2020-05-27 | 2023-03-03 | 华为技术有限公司 | 操作数据对象的方法、装置、计算设备和存储介质 |
US11593017B1 (en) | 2020-08-26 | 2023-02-28 | Pure Storage, Inc. | Protection of objects in an object store from deletion or overwriting |
CN112463886A (zh) * | 2020-11-30 | 2021-03-09 | 浙江大华技术股份有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
US11245744B1 (en) * | 2021-01-19 | 2022-02-08 | Slack Technologies, Llc | Asynchronous distributed modular function calling |
CN112860811B (zh) * | 2021-02-05 | 2023-07-18 | 北京百度网讯科技有限公司 | 数据血缘关系的确定方法、装置、电子设备和存储介质 |
CN114116746A (zh) * | 2021-11-24 | 2022-03-01 | 北京字节跳动网络技术有限公司 | 多系统数据存储方法、装置、介质及电子设备 |
US20240111735A1 (en) * | 2022-09-30 | 2024-04-04 | Snowflake Inc. | Data dictionary metadata for marketplace listings |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6615223B1 (en) * | 2000-02-29 | 2003-09-02 | Oracle International Corporation | Method and system for data replication |
CN102364464A (zh) * | 2010-09-17 | 2012-02-29 | 微软公司 | 对象实例版本化 |
US8533170B1 (en) * | 2010-09-21 | 2013-09-10 | Amazon Technologies, Inc. | System and method for determining the latest version of a stored data object |
CN107835983A (zh) * | 2015-04-16 | 2018-03-23 | 诺宝公司 | 使用一致的数据库快照在分布式数据库中进行备份和还原 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5649200A (en) | 1993-01-08 | 1997-07-15 | Atria Software, Inc. | Dynamic rule-based version control system |
US5813009A (en) * | 1995-07-28 | 1998-09-22 | Univirtual Corp. | Computer based records management system method |
US5729744A (en) * | 1996-06-10 | 1998-03-17 | International Business Machine Corp. | Method and system of enhanced versioning control of objects in a data processing system using change control information which includes reasons for changes |
US6732162B1 (en) * | 1999-11-15 | 2004-05-04 | Internet Pictures Corporation | Method of providing preprocessed images for a plurality of internet web sites |
US20030145199A1 (en) * | 2002-01-31 | 2003-07-31 | Miller Layne B. | Data pool with validity detection |
US7386529B2 (en) | 2002-12-19 | 2008-06-10 | Mathon Systems, Inc. | System and method for managing content with event driven actions to facilitate workflow and other features |
US20070208790A1 (en) | 2006-03-06 | 2007-09-06 | Reuter James M | Distributed data-storage system |
US20080005077A1 (en) | 2006-06-29 | 2008-01-03 | Eggebraaten Thomas J | Encoded version columns optimized for current version access |
US8731994B2 (en) | 2006-10-06 | 2014-05-20 | Accenture Global Services Limited | Technology event detection, analysis, and reporting system |
US8566362B2 (en) | 2009-01-23 | 2013-10-22 | Nasuni Corporation | Method and system for versioned file system using structured data representations |
US8566290B2 (en) * | 2009-10-30 | 2013-10-22 | Hitachi Data Systems Corporation | Fixed content storage within a partitioned content platform using namespaces, with versioning |
US8504758B1 (en) | 2010-09-21 | 2013-08-06 | Amazon Technologies, Inc. | System and method for logical deletion of stored data objects |
JP5656563B2 (ja) * | 2010-11-02 | 2015-01-21 | キヤノン株式会社 | 文書管理システム、文書管理システムの制御方法、プログラム |
US8650156B1 (en) | 2010-12-23 | 2014-02-11 | Amazon Technologies, Inc. | System and method for fetching the latest versions of stored data objects |
US9053117B2 (en) | 2012-04-11 | 2015-06-09 | 4Clicks Solutions, LLC | Storing application data with a unique ID |
US10102204B2 (en) * | 2012-11-20 | 2018-10-16 | International Business Machines Corporation | Maintaining access control lists in non-identity-preserving replicated data repositories |
US9098522B2 (en) | 2012-11-29 | 2015-08-04 | Sap Se | Version garbage collection using snapshot lists |
US9838375B2 (en) | 2013-02-28 | 2017-12-05 | Microsoft Technology Licensing, Llc | RESTlike API that supports a resilient and scalable distributed application |
CN105337923B (zh) * | 2014-05-26 | 2019-07-12 | 腾讯科技(北京)有限公司 | 数据分发方法和系统及数据发送装置和数据接收装置 |
GB2527296A (en) | 2014-06-16 | 2015-12-23 | Ibm | A method for restoring data in a HSM system |
US10176238B2 (en) | 2014-09-26 | 2019-01-08 | Oracle International Corporation | Integrating object-based data integration tool with a version control system in centralized and decentralized environments |
US10229128B2 (en) * | 2014-11-19 | 2019-03-12 | Rubrik, Inc. | Method and apparatus for the generation, organization, storage and retrieval of time stamped blocks of data |
US10725708B2 (en) * | 2015-07-31 | 2020-07-28 | International Business Machines Corporation | Replication of versions of an object from a source storage to a target storage |
WO2017023709A1 (en) * | 2015-08-06 | 2017-02-09 | Nexenta Systems, Inc. | Object storage system with local transaction logs, a distributed namespace, and optimized support for user directories |
US10298656B2 (en) | 2016-06-08 | 2019-05-21 | Western Digital Technologies, Inc. | Extending representational state transfer application program interface (REST API) functionality |
US10097344B2 (en) | 2016-07-15 | 2018-10-09 | Mastercard International Incorporated | Method and system for partitioned blockchains and enhanced privacy for permissioned blockchains |
-
2019
- 2019-03-22 WO PCT/US2019/023745 patent/WO2019231526A1/en active Application Filing
- 2019-03-22 WO PCT/US2019/023751 patent/WO2019231527A1/en active Application Filing
- 2019-03-22 CN CN201980005824.9A patent/CN111356996B/zh active Active
- 2019-03-22 US US16/361,467 patent/US11321291B2/en active Active
- 2019-03-22 DE DE112019000143.4T patent/DE112019000143T5/de active Pending
- 2019-03-22 US US16/361,493 patent/US11403269B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6615223B1 (en) * | 2000-02-29 | 2003-09-02 | Oracle International Corporation | Method and system for data replication |
CN102364464A (zh) * | 2010-09-17 | 2012-02-29 | 微软公司 | 对象实例版本化 |
US8533170B1 (en) * | 2010-09-21 | 2013-09-10 | Amazon Technologies, Inc. | System and method for determining the latest version of a stored data object |
CN107835983A (zh) * | 2015-04-16 | 2018-03-23 | 诺宝公司 | 使用一致的数据库快照在分布式数据库中进行备份和还原 |
Also Published As
Publication number | Publication date |
---|---|
CN111356996A (zh) | 2020-06-30 |
US11321291B2 (en) | 2022-05-03 |
WO2019231527A1 (en) | 2019-12-05 |
US20190370236A1 (en) | 2019-12-05 |
US11403269B2 (en) | 2022-08-02 |
US20190370237A1 (en) | 2019-12-05 |
DE112019000143T5 (de) | 2020-09-03 |
WO2019231526A1 (en) | 2019-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111356996B (zh) | 用于版本验证的系统和计算机实现的方法 | |
US10795817B2 (en) | Cache coherence for file system interfaces | |
US11221785B2 (en) | Managing replication state for deleted objects | |
US9582213B2 (en) | Object store architecture for distributed data processing system | |
US11093446B2 (en) | Duplicate request checking for file system interfaces | |
KR20150070134A (ko) | 가상 데이터베이스를 생성하기 위한 소스 데이터베이스의 지정 시간 복사의 검색 | |
US11409711B2 (en) | Barriers for dependent operations among sharded data stores | |
US11567899B2 (en) | Managing dependent delete operations among data stores | |
US20210165768A1 (en) | Replication Barriers for Dependent Data Transfers between Data Stores | |
US10031682B1 (en) | Methods for improved data store migrations and devices thereof | |
US10872036B1 (en) | Methods for facilitating efficient storage operations using host-managed solid-state disks and devices thereof | |
US11082494B2 (en) | Cross storage protocol access response for object data stores | |
US11343308B2 (en) | Reduction of adjacent rack traffic in multi-rack distributed object storage systems | |
US11625192B2 (en) | Peer storage compute sharing using memory buffer | |
US11079960B2 (en) | Object storage system with priority meta object replication | |
US11442894B2 (en) | Methods for scalable file backup catalogs and devices thereof | |
US11093465B2 (en) | Object storage system with versioned meta objects | |
US20210026780A1 (en) | Methods for using extended physical region page lists to improve performance for solid-state drives and devices thereof | |
US20200412798A1 (en) | Connection Load Distribution in Distributed Object Storage Systems | |
US11169728B2 (en) | Replication configuration for multiple heterogeneous data stores | |
US11074002B2 (en) | Object storage system with meta object replication | |
US11748310B2 (en) | Dependency aware improvements to support parallel replay or parallel replication of operations which are directed to a common node |
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 |