CN108021338A - 用于实现两层提交协议的系统和方法 - Google Patents
用于实现两层提交协议的系统和方法 Download PDFInfo
- Publication number
- CN108021338A CN108021338A CN201711054116.3A CN201711054116A CN108021338A CN 108021338 A CN108021338 A CN 108021338A CN 201711054116 A CN201711054116 A CN 201711054116A CN 108021338 A CN108021338 A CN 108021338A
- Authority
- CN
- China
- Prior art keywords
- data
- record
- metadata
- layer
- version
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 74
- 238000003860 storage Methods 0.000 claims abstract description 152
- 230000004044 response Effects 0.000 claims abstract description 43
- 238000012790 confirmation Methods 0.000 claims abstract description 14
- 230000005055 memory storage Effects 0.000 claims abstract description 6
- 230000008569 process Effects 0.000 claims description 37
- 230000008859 change Effects 0.000 claims description 12
- 230000014759 maintenance of location Effects 0.000 claims description 4
- 230000000694 effects Effects 0.000 claims description 3
- 239000010410 layer Substances 0.000 description 175
- 238000004891 communication Methods 0.000 description 22
- 238000012795 verification Methods 0.000 description 18
- 230000015654 memory Effects 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 9
- 239000012634 fragment Substances 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000012550 audit Methods 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 238000011217 control strategy Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000000725 suspension Substances 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000011229 interlayer Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 241000406668 Loxodonta cyclotis Species 0.000 description 1
- 240000002853 Nelumbo nucifera Species 0.000 description 1
- 235000006508 Nelumbo nucifera Nutrition 0.000 description 1
- 235000006510 Nelumbo pentapetala Nutrition 0.000 description 1
- 240000007711 Peperomia pellucida Species 0.000 description 1
- 235000012364 Peperomia pellucida Nutrition 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
Classifications
-
- 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
-
- 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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- 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/2365—Ensuring data consistency and integrity
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Abstract
本发明公开了用于实现两层提交协议的系统和方法。在一个或多个实施例中,存储系统被配置为接收在存储系统内存储对象的请求,该对象包括(a)数据和(b)元数据。响应于该请求,元数据被发送到存储系统的元数据层,元数据层生成具有未决状态的元数据记录已经在元数据层中被创建的第一确认。响应于第一确认,对象数据被发送到存储系统的数据层。然后生成指示具有未决状态的数据记录已被创建的第二确认。响应于第二确认,元数据记录被更新为提交状态。然后将数据层中的数据记录更新为提交状态。
Description
技术领域
本公开涉及将对象存储在存储系统中。特别地,本公开涉及对修改存储系统内的数据的事务进行管理。
背景技术
存储系统根据各种对应的存储体系架构来存储对象。存储体系架构的示例包括对象存储、文件系统、块存储和/或数据库。
存储系统内的每个对象与数据以及元数据相关联。数据(本文也称为“对象数据”)包括例如由终端用户和/或客户端应用使用的信息。例如,用于销售应用的数据可以包括关于客户、产品和销售的信息。作为另一个示例,用于人力资源应用的数据可以包括关于员工、部门和工资的信息。元数据描述数据如何被建立和/或存储。附加地或可替代地,元数据描述关于数据本身的特点。元数据可以被用来操纵和/或管理存储系统中的对象。
在云计算环境中,分布式存储系统常常被用来存储用于终端用户和/或客户端应用的对象数据。通常,分布式存储系统跨多个物理存储位置复制数据对象。分布式存储系统的一个好处是数据冗余性。如果数据对象的一个副本丢失或损坏,那么可以从分布式存储系统内的另一个节点取回数据对象的单独副本。分布式存储系统的另一个好处是可以降低数据对象的访问时间。访问请求可以来源于地理上分散的多个存储客户端。分布式存储系统可以基于位置、负载和/或其它因素将请求路由到存储服务器,以努力使数据访问时间最小化。
分布式存储系统实现方案涉及几个挑战,包括管理数据一致性。已经开发出了各种一致性模型,以保证读取操作和写入操作的结果将是可预测的。最终一致性是可以在云环境的上下文中采用的一致性模型的示例。根据最终一致性模型,存储系统保证如果没有对数据对象进行新的更新,那么数据对象的所有读取将最终返回对象的最后更新版本。利用最终一致性,不同的存储客户端可以在给定的时间点访问处于不同状态的数据对象。例如,由存储系统的一个客户端进行的更新可能不能被另一个客户端立即查看,这是因为在整个系统中复制该改变会花费时间。
与最终一致性相比,强一致性模型保证对数据对象的所有写入都会被所有并行进程以写入被执行的相同次序看到。换句话说,强一致性确保在给定的时间点仅观察到一个一致的状态。如果写入由一个存储客户端提交,那么写入的数据可以由访问存储系统的其它存储客户端立即查看。
由于最终一致性模型的高可用性和可扩展性,相比强一致性模型,云提供商常常更偏向于最终一致性模型。然而,最终一致性模型易于返回部分的数据和/或损坏的数据,因为在给定的时间点可能存在两个一致的状态。许多应用要求强一致性来保证分布式存储环境内的不同节点处于相同状态。随着这些应用被推向云环境,强一致性模型的可用性和可扩展性变得越来越重要。
本节中描述的方法是可以追求的方法,但不一定是先前已经设想或追求的方法。因此,除非另有指示,否则不应当假定本节中描述的任何方法仅仅因为它们被包含在本节中而成为现有技术。
附图说明
在附图的图中以示例方式而不是以限制方式来示出实施例。应当注意的是,本公开中对“一”或“一个”实施例的引用不一定是指相同的实施例,并且它们表示至少一个实施例。在图中:
图1示出了根据一个或多个实施例的具有用于实现两层提交协议的事务管理服务的示例存储系统;
图2示出了根据一个或多个实施例的用于实现两层提交协议的操作的示例集合;
图3示出了根据一个或多个实施例的在存储系统的不同层之间的交互的示例集合;
图4示出了根据一个或多个实施例的用于处理并发事务的操作的示例集合;
图5示出了根据一个或多个实施例的用于审核(audit)数据层的操作的示例集合;
图6示出了根据一个或多个实施例的用于执行读取操作的操作的示例集合;
图7示出可以在其上实现一个或多个实施例的示例性计算机系统。
具体实施方式
在下面的描述中,为了解释的目的,阐述了许多具体细节以提供透彻的理解。可以在没有这些具体细节的情况下实践一个或多个实施例。在一个实施例中描述的特征可以与在不同实施例中描述的特征组合。在一些示例中,众所周知的结构和设备参考框图形式来描述,以便避免不必要地模糊本发明。
1.一般概述
云存储系统可以使用各种一致性模型来管理事务。用于提供强一致性的一种方法是通过分布式锁管理器(DLM)来分配实施(enforce)事务语义的专用服务集合。此上下文中的DLM通过以将对数据对象的访问串行化的方式在资源上授予锁来实施对存储系统内的对象数据进行读取和写入的约束。如果进程尝试修改数据对象,那么该进程从DLM获得写入锁。阻止其它进程写入到同一个数据对象,直到修改该数据对象的进程将写入锁释放回DLM。这种方法的一个缺点是,由于大量潜在的故障点,DLM在云环境内难以扩展。如果一个进程被授予特定资源上的锁并且随后发生故障,那么会发生死锁,这阻碍尝试访问该数据对象的其它进程。在大规模系统中,死锁的潜在原因是显著的,这会减慢数据访问时间,并且以其它方式造成性能恶化。
另一种强一致性模型涉及对对象数据和元数据进行分区。在这种方法中,每个相应的分区被指派专用的事务管理器,该专用的事务管理器服务于要访问相应分区内的数据对象的请求。针对对象的事务总是通过相同的事务管理器进行路由,以控制针对数据对象的事务执行的次序。分区会减少服务器间事务协调流量,因为给定的事务管理器不需要与专用于不同分区的其它事务管理器协调事务提交。然而,每个分区具有单个事务管理器会变成瓶颈,尤其是对于被频繁访问的分区。
本文描述了用于实现在集中式和/或分布式存储系统内维持强一致性的两层提交协议的技术。在一个或多个实施例中,两层提交协议跨数据层和元数据层拆分(split)事务的提交状态。层之间的分离允许在没有DLM的情况下维持强一致性。此外,两层提交协议不要求对象数据的分区受限于单个事务管理器。因此,两层提交协议可以消除或显著减少其它强一致性模型遇到的死锁的起源和/或其它瓶颈。
在一个或多个实施例中,实现两层提交协议的存储系统包括用于确定是提交还是中止事务的逻辑。在此上下文中的“事务”表示或者被完全提交或者被中止的工作单元。如果事务被提交,那么由事务所做的改变将在存储系统中被持久化。如果事务被中止,那么所做的改变(如果有的话)被回滚以将存储系统返回到先前的状态。
在一个或多个实施例中,实现两层提交协议的存储系统被配置为将数据层中的对象数据的提交以及元数据层中的对象元数据的提交执行作为分离的操作。例如,特定客户端可以请求在存储系统内存储对象。作为针对该客户端的事务的一部分,事务管理器可以将与对象相关联的元数据发送到存储系统的元数据层。当元数据记录第一次被创建时,元数据记录被设置为未决(pending)状态。然后,元数据层可以向事务管理器返回指示元数据记录被成功创建的确认。
如果事务管理器接收到源自特定客户端的元数据记录已经在元数据层中被创建的确认,那么在一个或多个实施例中,事务管理器继续将数据有效载荷发送到存储系统的数据层。然后事务管理器可以等待,直到数据层返回指示具有未决状态的数据记录被成功生成的确认。如果事务管理器从数据层接收到确认,那么事务管理器将元数据记录更新为提交状态。一旦提交了元数据记录,事务管理器或另一个进程就将数据层中的数据记录更新为提交状态。
2.存储系统体系架构
图1示出了根据一个或多个实施例的具有用于实现两层提交协议的事务管理服务的示例存储系统100。如图1中所示,系统100包括前端层102、数据层106和元数据层108。在一个或多个实施例中,存储系统100可以包括比图1中所示的部件更多或更少的部件。图1中所示的部件可以在彼此的本地或彼此远离。图1中所示的部件可以在软件和/或硬件中实现。每个部件可以分布在多个应用和/或机器上。多个部件可以组合到一个应用和/或机器中。关于一个部件描述的操作可以替代地由另一个部件执行。
在一个或多个实施例中,数据层106包括被配置为存储与存储系统的对象相关联的对象数据的硬件和/或软件。如图所示,数据层106包括一个或多个数据记录(诸如数据记录112a-c),每个数据记录与对象的对象数据的特定版本对应。每次创建新对象时,都生成用于存储对象的对象数据的新的数据记录。每次对象的对象数据被改变时,都生成用于存储对象的新对象数据的新的数据记录。
在一个或多个实施例中,数据记录(诸如数据记录112a-c)与对象名称(诸如对象名称114)、数据状态标识符(诸如数据状态标识符115a-c)以及数据版本标识符(诸如数据版本标识符116a-c)相关联。与同一对象对应的不同版本的对象数据的数据记录与相同的对象名称相关联但与不同的数据版本标识符相关联。用于同一对象的数据记录包括:(a)对象的对象数据的当前版本,以及(b)对象的对象数据的一个或多个过期版本。如图所示,数据记录112a-c与相同的对象名称114相关联但与不同的数据状态标识符115a-c以及不同的数据版本标识符116a-c相关联。
数据版本标识符是与对象相关联的对象数据的特定版本的标识符。每个新的数据记录与新的数据版本标识符相关联。
数据版本标识符可以以特定格式表示。在实施例中,数据版本标识符是对于与对象相关联的对象数据的每个新版本递增的整数。在另一个实施例中,数据版本标识符是生成数据记录的时间的表示。数据版本标识符包括以下组成部分中的一个或多个:纪元(epoch)、物理时间和/或逻辑时间。
物理时间是从系统的时钟导出的。物理时间指示事件发生的时间。作为示例,物理时间可以指示生成数据记录的时间。
纪元是在其中系统的时钟中没有显著改变和/或调整的时间段。每次时钟改变和/或调整时,纪元都会递增。作为示例,可以为其中根据太平洋夏令时设置系统时钟的时间段指定一个纪元。当系统时钟根据太平洋标准时间设置时,纪元可以递增。作为另一个示例,当前时间可以是2016年11月1日上午10:00。然而,系统的时钟可能被错误地设置为指示当前时间是1916年11月1日上午10:00。管理员可以注意到错误并调整时钟以准确反映当前时间。可以为在管理员调整之前的时间段指定一个纪元。可以为在管理员进行调整之后的时间段指定另一个纪元。
逻辑时间被用来识别在相同物理时间发生的事件的排序。作为示例,数据记录A和数据记录B可以在相同的物理时间“12:00:35”生成。数据记录A可以与逻辑时间“0”相关联。数据记录B可以与逻辑时间“1”相关联。逻辑时间指示数据记录A在数据记录B之前生成。
在一个或多个实施例中,元数据层108包括被配置为存储与存储系统的对象相关联的元数据的硬件和/或软件。如图所示,元数据层108包括一个或多个根元数据记录(诸如根元数据记录120)。附加地或可替代地,元数据层108包括一个或多个特定于版本的元数据记录(诸如特定于版本的元数据记录130a-c)。
在一个或多个实施例中,特定于版本的元数据记录包括与对象的对象数据的特定版本对应的元数据。每次创建新对象时,生成用于存储对象的元数据的新的特定于版本的元数据记录。每次对象的对象数据被改变时,生成用于存储与对象的新对象数据相关联的元数据的新的特定于版本的元数据记录。
每次与对象的对象数据的特定版本对应的元数据被改变时,用新的元数据覆写(overwrite)用于对象数据的特定版本的现有元数据记录。元数据可能由于用户请求和/或系统请求而改变。可以经由用户界面和/或应用编程接口(API)从用户接收用户请求。可以从应用和/或进程接收系统请求。作为示例,与对象相关联的元数据可以包括指示该对象的事务事件记录是否已经被发布的标志。在发布特定的事务事件记录之后,发布者可以请求与该特定的事务事件记录相关联的标志被标记。来自发布者的请求是修改对象的元数据的系统请求的示例。
如上所述,每个数据记录包括对象的对象数据的特定版本。进一步如上所述,每个特定于版本的元数据记录包括与对象的对象数据的特定版本对应的元数据。因此,在数据记录和特定于版本的元数据记录之间存在一对一的映射。特定于版本的元数据记录可以包括对与该特定于版本的元数据记录对应的数据记录的指针和/或引用。如图所示,特定于版本的元数据记录130a与数据记录112a对应。特定于版本的元数据记录130c与数据记录112c对应。
在一个或多个实施例中,特定于版本的元数据记录(诸如特定于版本的元数据记录130a-c)与对象名称(诸如对象名称114)、数据状态标识符(诸如元数据状态标识符132)、数据版本标识符(诸如数据版本标识符116c)、系统版本标识符(诸如系统标识符126b)、元数据状态标识符(诸如元数据状态标识符132)以及元数据版本标识符(诸如元数据版本标识符134)相关联。特定于版本的元数据记录与和该特定于版本的元数据记录对应的数据记录相同的对象名称以及相同的数据版本标识符相关联。如图所示,特定于版本的元数据记录130c和数据记录112c与相同的对象名称114以及相同的数据版本标识符116c相关联。
元数据版本标识符(诸如元数据版本标识符134)可以包括用户元数据版本标识符和/或全局元数据版本标识符。在此上下文中的用户元数据版本标识符是指与对象的对象数据的特定版本对应的元数据的特定版本的标识符。每次元数据响应于用户请求而改变时,更新用户元数据版本标识符。用户元数据版本标识符可以以特定格式表示。作为示例,用户元数据版本标识符可以被表示为整数。新生成的元数据记录可以与用户元数据版本标识符“0”相关联。用户元数据版本标识符可以在每次用户发起对元数据的改变时递增1。
全局元数据版本标识符是与对象的对象数据的特定版本对应的元数据的特定版本的标识符。每次元数据响应于用户请求和/或系统请求而改变时,全局元数据版本标识符被更新。全局元数据版本标识符可以以特定格式表示。作为示例,全局元数据版本标识符可以被表示为整数。作为另一个示例,全局元数据版本标识符可以是生成和/或改变元数据记录的时间的表示。全局元数据版本标识符可以包括:(a)纪元,(b)物理时间,和(c)逻辑时间。
在一个或多个实施例中,特定于版本的元数据记录(诸如特定于版本的元数据记录130a-c)可以嵌入到根元数据记录120内。附加地或可替代地,特定于版本的元数据记录(诸如特定于版本的元数据记录130c)可以与根元数据记录120分开存储。嵌入式的特定于版本的元数据记录和非嵌入式的特定于版本的元数据记录可以包括类似的信息,诸如对象名称、数据版本标识符、用户元数据版本标识符和全局元数据版本标识符。嵌入式的特定于版本的元数据记录和非嵌入式的特定于版本的元数据记录可以根据类似的模式被类似地构造和/或组织信息。单个对象可以与被嵌入到根元数据记录内的一个或多个特定于版本的元数据记录和/或与根元数据记录分开存储的一个或多个特定于版本的元数据记录相关联。
在一个或多个实施例中,根元数据记录120维护对象的对象数据的所有版本共同的元数据。为对象存储单个根元数据记录120,而不管与该对象对应的对象数据有多少版本。
在一个或多个实施例中,根元数据记录120与对象名称114、根版本标识符122以及数据版本标识符列表128相关联。
根版本标识符(诸如根版本标识符122)是与存储在存储系统内的所有根元数据记录对应的标识符。对于与不同对象对应的根元数据记录,根版本标识符是相同的标识符。根版本标识符可以以特定格式表示。作为示例,根版本标识符可以是整数“0”。
数据版本标识符列表(诸如数据版本标识符列表128)包括与对象的对象数据的所有版本对应的数据版本标识符。如图所示,数据记录112a-c包括与和对象名称114相关联的对象对应的对象数据的多个版本。根元数据记录120对应于与对象名称114相关联的对象。根元数据记录120包括数据版本标识符列表128。数据版本标识符列表128包括分别与数据记录112a-c相关联的数据版本标识符116a-c。在其它实施例中,数据版本标识符列表128至少包括与对象的对象数据的当前版本对应的数据版本标识符。
在一个或多个实施例中,元数据层108包括多个条目。这多个条目可以是例如一个或多个表的多个行。在根元数据记录120内嵌入特定于版本的元数据记录是指将根元数据记录120以及嵌入式的特定于版本的元数据记录存储在元数据层108内的同一条目中。与根元数据记录120分开地存储特定于版本的元数据记录是指将根元数据记录120和特定于版本的元数据记录存储在元数据层108内的不同条目中。另外,与根元数据记录120分开存储的每个特定于版本的元数据记录可以存储在元数据层108中的不同条目中。
使用不同的键(诸如键124a-b)来访问元数据层108内的每个条目。作为示例,使用不同的键来访问元数据层内的表的每个行。键是用来识别元数据层108内的特定条目的唯一标识符。根元数据记录120的键124a包括对象名称114和根版本标识符122。键124a被用来访问根元数据记录120和任何嵌入式的特定于版本的元数据记录130a-c。与特定于版本的元数据记录对应的非嵌入式的特定于版本的元数据记录130c的键124b包括对象名称114和数据版本标识符116c。使用不同的键来访问与同一对象对应的每个非嵌入式的特定于版本的元数据记录。
如图所示,例如,使用键124a来访问根元数据记录120。可以使用相同的键124a来访问嵌入式的特定于版本的元数据记录。使用不同的键(键124b)来访问与根元数据记录120分开存储的特定于版本的元数据记录130c。
元数据层108内的每个条目与系统版本标识符(诸如系统版本标识符126a-b)相关联。如图所示,根元数据记录120存储在特定条目中并与系统版本标识符126a相关联。未被嵌入的特定于版本的元数据记录130c被存储在不同条目中并且与不同的系统版本标识符(系统版本标识符126b)相关联。存储系统100使用系统版本标识符来跟踪对元数据层108内相关联条目的更新。每次元数据层108的对应条目被修改时,修改系统版本标识符。
在一个或多个实施例中,元数据层108内的条目被分组成多个碎片(shard)。碎片可以包括例如表的行的特定集合或数据对象的某个其它部分。与同一对象对应的特定于版本的元数据记录以及根元数据记录被存储在相同的碎片中。
在一个或多个实施例中,元数据层108仅支持单个行或单个碎片上的原子事务。影响单个行或单个碎片的行的操作可以在单个原子事务中完成。影响多个碎片的多个行的操作不能在单个原子事务中完成。由特定线程执行的原子事务是不能被部分地完成的事务。如果原子事务完全完成,那么原子事务是成功的,如果原子事务未完成,那么原子事务失败。
在一个或多个实施例中,使用一个或多个数据存储库来实现数据层106和/或元数据层108。数据存储库是用于存储数据的任何类型的存储单元和/或设备(例如,文件系统、数据库、表的汇集或任何其它存储机制)。另外,数据存储库可以包括多个不同的存储单元和/或设备。多个不同的存储单元和/或设备可以是相同类型或位于相同的物理站点处,或者可以不是相同类型或位于相同的物理站点处。另外,数据存储库可以在与前端层102相同的计算系统上实现或可以在该计算系统上执行。可替代地或附加地,数据存储库可以在与前端层102分离的计算系统上实现或执行。数据存储库可以经由直接连接或经由网络在通信上耦合到前端层102。不同层可以使用一种或多种网络通信协议(诸如与互联网协议(IP)套件相关联的通信协议)将消息和数据发送到其它层。附加地或可替代地,不同层可以使用一种或多种通信协议来发送数据,以在相同主机机器上执行的部件之间传递消息,诸如发出函数调用、发出中断以及在队列中发布工作请求。
在一个或多个实施例中,前端层102包括被配置为暴露用于接收请求的用户界面和/或应用编程接口(API)的硬件和/或软件。API可以符合表述性状态转移(REST)体系架构风格。通过API暴露的命令可以包括但不限于:
(a)将对象的对象数据的特定版本存储在存储系统中;
(b)读取存储系统中对象的对象数据的特定版本;以及
(c)从存储系统中删除对象的对象数据的特定版本。
在一个或多个实施例中,前端层102包括事务服务103和提交日志104。事务服务103包括用于处置由客户端136a-i请求的事务的一个或多个进程(或线程)的集合。例如,响应于将对象写入存储系统100的请求,事务服务103可以与元数据层和数据层106交互,以完成写入事务。事务服务103还可以确定是提交还是中止未决的事务。在一个或多个实施例中,事务服务103充当被配置为实现本文进一步详细描述的两层协议的事务管理器。
提交日志104维护所请求的事务的状态的记录。在一个或多个实施例中,事务可以处于三种状态之一:未决状态、提交状态或中止状态。事务服务103更新提交日志104以跟踪客户端请求的状态。例如,响应于客户端请求,事务服务103可以在提交日志104中创建新条目并将状态设置为未决。一旦事务被提交或中止,事务服务103就相应地改变提交日志中的状态。事务服务103然后可以向发出请求的客户端返回确认或通知,以标识事务的最终状态。
在一个或多个实施例中,事务可以从未决状态过渡到中止状态或者提交状态。然而,事务被阻止过渡回到未决状态。也可以阻止事务从提交状态过渡到中止状态或从中止状态过渡到提交状态。这些状态过渡实施事务的原子性,从而防止事务被部分地完成。
在一个或多个实施例中,在一个或多个数字设备上实现前端层102。术语“数字设备”一般而言是指包括处理器的任何硬件设备。数字设备可以指执行应用或虚拟机的物理设备。数字设备的示例包括计算机、平板电脑、膝上型计算机、台式机、上网本、服务器、web服务器、网络策略服务器、代理服务器、通用机器、功能特定的硬件设备、大型机、电视机、内容接收器、机顶盒、打印机、移动手持机、智能电话、个人数字助理(“PDA”)。
客户端136a-i表示存储系统100为其存储数据的进程、应用或用户。例如,客户端136a-i可以包括但不限于数据库服务器、应用服务器、中间件应用或某种其它资源中的一个或多个实例。在云环境中,客户端可以与数据库即服务(DBaaS)、软件即服务(SaaS)、平台即服务(PaaS)或任何其它云资源对应。客户端136a-i可以驻留在存储系统100本地或远离存储系统100。
3.两层提交协议
A.事务提交和中止
在一个或多个实施例中,存储系统100被配置为实施两层提交协议,该两层提交协议确定事务是应当被提交还是被中止。图2示出了根据一个或多个实施例的用于实现两层提交协议的操作的示例集合。在事务开始时,存储系统100从客户端接收将对象写入存储系统100的请求(操作202)。该请求可以与写入存储系统100内已经存在先前版本的对象的新版本的更新对应,或者可以与用于放置在存储系统100内没有先前版本的新对象的操作对应。
响应于接收到该请求,存储系统100在元数据层108中生成元数据记录(操作204)。当元数据记录第一次生成时,元数据记录被指派PENDING(未决)状态。例如,在客户端136a请求写入对象的新版本的情况下,存储系统100可以生成特定于版本的元数据记录130c,并且初始地向元数据状态信息132指派“PENDING”值。当驻留在元数据层中的元数据记录具有PENDING状态时,元数据记录不处于提交状态。
在一个或多个实施例中,存储系统100确定是否在元数据层108内成功生成了元数据记录(操作206)。如果未成功生成元数据记录,那么事务被中止(操作216)。在一个或多个实施例中,存储系统100等待阈值时间量以让元数据记录被成功生成。如果操作在阈值时间内未完成,那么存储系统100可以确定该记录未成功生成。潜在的故障原因可以包括但不限于硬件故障、冲突的事务、断开的连接(诸如丢失的网络或数据库连接)以及元数据层108内的过载资源。
如果元数据记录已被成功生成,那么存储系统100在数据层106中生成数据记录(操作208)。当数据记录第一次生成时,数据记录被指派PENDING状态。例如,一旦特定于版本的元数据记录130已经在元数据层108内被成功生成,存储系统100就可以在数据层106内生成数据记录112c并且初始地向数据状态标识符115c指派“PENDING”值。在一个或多个实施例中,数据记录112c还在数据记录112c内存储对象名称114、数据版本标识符116c以及数据有效载荷(诸如BLOB)。当记录具有PENDING状态时,数据层106内的数据记录不被视为已提交。
在一个或多个实施例中,存储系统100确定是否在数据层106内成功生成了数据记录(操作210)。如果数据记录未成功生成,那么事务被中止(操作216)。在一个或多个实施例中,存储系统100等待阈值时间量以让数据记录被成功生成。如果操作在阈值时间量内未完成,那么存储系统100可以确定该记录未成功生成。潜在的故障原因可以包括但不限于硬件故障、冲突的事务、断开的连接(诸如丢失网络或数据库连接)以及数据层106内的过载资源。
如果在数据层106内成功地生成数据记录,那么存储系统100提交元数据层108内的元数据记录(操作212)。例如,在成功创建数据记录112c时,存储系统100可以将特定于版本的元数据记录130c内的元数据状态标识符132更新为ACTIVE(活动)。具有ACTIVE状态的元数据记录被认为具有提交状态。
在一个或多个实施例中,存储系统100确定元数据记录是否被成功提交(操作214)。例如,如果元数据记录没有在从事务开始的阈值时段内提交,那么存储系统100可以认为事务不成功并且前进到操作216。然而,如果在阈值时间段内提交了元数据记录,那么事务被认为已提交。
如果事务在先前提到的任何点处失败,那么事务被中止(操作216)。在一个或多个实施例中,存储系统100通过将元数据记录的状态更新为“ABORTED(中止)”或更新为指示未决的数据记录无效的某种其它状态来中止事务。在元数据记录被更新之后,存储系统100然后可以清除或删除作为被中止的事务的一部分而生成的对应数据记录。例如,如果特定于版本的元数据记录130c和数据记录112c都被创建为具有PENDING状态,并且事务随后被中止,那么元数据记录130c可以被更新为中止状态。存储系统100随后可以清除数据记录112c和特定于版本的元数据记录130c。在一个或多个实施例中,中止事务将存储系统100回滚到先前的状态。例如,在事务开始之前,存储系统100可能针对特定数据对象在元数据层108内存储了三个特定于版本的元数据记录并在数据层106内存储了三个数据记录。在事务处理期间,存储系统100可以在元数据层108内生成第四特定于版本的元数据记录。如果事务被中止,那么可以清除第四特定于版本的元数据记录,而另外三个特定于版本的元数据记录和数据记录被保留。因此,存储系统100返回到在事务被发起时存在的相同状态。
如果元数据记录被成功提交,那么存储系统100提交数据记录(操作218)。例如,在成功创建数据记录112c时,存储系统100可以将特定于版本的元数据记录130c内的元数据状态标识符132更新为ACTIVE。具有ACTIVE状态的元数据记录被认为在数据层106内被提交。
在一个或多个实施例中,如果已经提交了元数据记录,那么在将数据记录更新为ACTIVE状态之前,事务被视为已提交。例如,一旦操作212完成并且在操作218完成之前,前端层102就可以更新提交日志104,以指示事务被提交。附加地或可替代地,即使数据记录可能还未被更新为ACTIVE状态,前端层102也可以向一个或多个客户端返回事务已提交的确认。因此,元数据层108可以充当关于新对象是否已经提交的权威来源。如下面进一步详细描述的,数据层106中的状态信息对于便于审核以及数据完整性检查是有用的。在其它实施例中,前端层102可以等待操作218完成再在提交日志104内提交事务和/或向客户端发送事务已经提交的通知。
在一个或多个实施例中,客户端被阻止查看具有PENDING状态的数据记录。例如,如果客户端尝试读取具有PENDING的对应元数据记录的对象数据,那么该请求可以被拒绝。如下面进一步描述的,在一些实施例中可以返回数据对象的先前版本。在其它实施例中,可以将数据对象不能被访问的错误或通知返回给客户端。通过阻止访问与PENDING事务相关联的对象数据,部分的数据和损坏的数据对于客户端保持不可见。
B.层间交互
在一个或多个实施例中,两层提交协议包括存储系统的多个层之间的各种交互。这些层可以包括但不限于前端层102、数据层106和元数据层108。图3示出了根据一个或多个实施例的存储系统的不同层之间的交互的示例集合。前端层102负责与存储客户端的接口。存储客户端可以递交写请求(诸如对象PUT(放置)命令),
前端层102接收来自客户端的将对象存储在存储系统100中的请求(操作302)。在一个或多个实施例中,客户端请求包括对象数据(诸如BLOB或任何其它类型的数据有效载荷)以及对象元数据(诸如对象名称和版本)。
在接收到请求时,前端层将对象元数据发送到元数据层108(操作304)。示例元数据可以包括但不限于对象名称、版本、所有者和关于对象的其它信息。在一个或多个实施例中,前端层102可以经一个或多个数据通信网络(诸如存储区域网络(SAN)、局域网(LAN)、广域网(WAN)或互联网)与元数据层108连接。前端层102可以使用一种或多种网络协议(诸如IP套件内的协议)来发送信息。在其它实施例中,前端层102和元数据层108可以驻留在相同的主机机器上。例如,前端层102和元数据层108可以与多层级软件系统中的不同层级对应。前端层102可以使用API、呼叫、层间消息或允许不同层进行通信的任何其它接口来将元数据发送到元数据层108。
响应于从前端层102接收到元数据,元数据层108生成用于对象的元数据记录(操作306)。元数据记录包括由前端层102发送的元数据。元数据记录还可以包括由元数据层108为对象生成的元数据。例如,元数据层108可以生成系统版本标识符、元数据状态标识符和元数据版本标识符。元数据层108初始地生成具有PENDING状态的元数据记录。
元数据层108向前端层102返回指示为对象成功创建了处于PENDING状态的元数据记录的确认(操作308)。
前端层102从元数据层108接收指示为对象成功创建了处于PENDING状态的元数据记录的确认(操作310)。
响应于在操作310处接收的确认,前端层将对象数据发送到数据层106(操作312)。在一个或多个实施例中,对象数据包括数据有效载荷(诸如BLOB)。在一些情况下,对象数据可以包括被发送到元数据层108的元数据中的一部分或全部。例如,对象数据可以包括对象名称、版本信息等。前端层102可以经一种或多种数据通信与数据层106连接,或者可以如前所述地驻留在同一主机机器上。因此,用于在层之间发送数据的协议和接口可以因实现方案而异。
响应于从前端层102接收到对象数据,数据层106为对象生成对象记录(操作314)。对象记录包括由前端层102发送的对象数据。对象记录还可以包括由数据层106为对象生成的其它对象数据。例如,数据层106可以生成数据状态标识符、存储位置信息和版本信息。数据层106初始地生成具有PENDING状态的数据记录。
数据层106向前端层102返回指示为对象成功创建了处于PENDING状态的数据记录的确认(操作316)。
前端层102从数据层106接收指示为对象成功创建了处于PENDING状态的数据记录的确认(操作318)。
响应于在操作318处接收到的确认,前端层102向元数据层108发送提交元数据记录的请求(操作320)。在一个或多个实施例中,该请求包括由数据层106生成的位置信息。例如,该请求可以指定可用来访问被写入到数据层106的对象数据的物理地址、偏移量、卷标识符和/或其它信息。
响应于接收到提交元数据记录的请求,元数据层108将元数据记录的状态从PENDING改变为ACTIVE(操作322)。在一个或多个实施例中,在这个操作期间,元数据层108还可以改变一个或多个其它元数据记录的状态。对于给定的对象,可以存在由存储系统100存储的多个版本。在一个或多个实施例中,只有元数据记录的一个版本被允许处于ACTIVE状态。在这种场景中,每当新的特定于版本的元数据记录被改变为ACTIVE状态时,用于先前提交的版本的元数据记录被改变为INACTIVE(不活动)状态。附加地或可替代地,元数据层108可以将从前端层102接收的位置信息添加到元数据记录。例如,元数据层108可以添加卷ID、偏移量、存储地址和/或将元数据记录映射到驻留在数据层106中的对象数据的存储位置的任何其它位置信息。
一旦元数据记录被提交,数据层106就将数据记录的状态改变为ACTIVE状态(操作324)。更新的方式和时间可以依赖于实现方案而变化。在一个或多个实施例中,通过如下面进一步详细描述的后台进程异步地执行更新。在其它实施例中,前端层102可以响应于接收到元数据记录被提交的确认来递交提交数据记录的请求。
在一个或多个实施例中,在给定的时间点只允许对象的一个版本具有ACTIVE状态。当新对象变为活动时,对象的先前提交的版本被改变为INACTIVE状态。不活动状态可以包括但不限于TOMBSTONED(墓碑)状态、MARKED FOR DELETION(标记为删除)状态和DELETED(删除)状态。在TOMBSTONED状态下,数据对象的不活动版本/先前版本保留在存储系统内。因此,执行对象的写入可以生成对象的新版本并且不覆写先前存在的版本(包括先前存在的数据记录和元数据记录)。更确切地说,先前的记录可以被改变为TOMBSTONED状态。在MARKED FOR DELETION状态下,数据对象的版本被标记为删除,但继续驻留在存储系统100内。删除可以由后台进程或某个触发事件执行。在DELETED状态下,数据对象的版本从存储系统100中移除。取决于特定的实现方案,该版本可以被迁移到存档或者可以从存储装置中被清除。
C.并发事务处理
在一个或多个实施例中,两层提交协议防止在给定的时间点对对象的多于一个的写入事务。如果并发事务尝试写到同一个对象,那么最早发起的事务被中止。积极中止(aggressive abort)提供最后写入胜利(last-write-wins)语义,在这种情况下,对对象的并发写入事务集合中的最后一个写入事务被提交。当对单个对象的并发操作很少时,这种方法是有益的。
图4示出了根据一个或多个实施例的用于处理并发事务的示例操作集合。前端层102接收将对象写入存储系统100的第一请求(操作402)。响应于接收到第一请求,前端层可以根据在以上部分中先前描述的技术来发起第一事务处理。
在第一事务未决的时候,前端层102接收到将该对象的不同版本写入存储系统100的第二请求(操作404)。取决于特定的实现方案,第二请求可以源于与第一请求不同的客户端或同一客户端。例如,DBaaS的两个不同用户可能尝试写到同一个表或某个其它数据库对象。第二请求可以在第一事务未决时的各个时间点出现。例如,可以在创建用于第一事务的元数据记录之前接收该请求。作为另一个示例,可以在创建元数据记录之后但在创建数据记录之前接收该请求。在还有另一个示例中,可以在元数据记录和数据记录二者都被创建之后但是记录仍处于PENDING状态时接收该请求。
响应于接收到第二请求,前端层102确定第一请求是未决还是已提交(操作406)。在一个或多个实施例中,前端层102基于与第一请求相关联的元数据记录来确定请求是否是未决的。如果元数据记录尚未生成或处于PENDING状态,那么前端层102可以将请求归为未决的。如果元数据记录具有ACTIVE状态,那么第一请求的事务已经被提交。
如果第一事务是未决的,那么前端层102中止第一写入事务(操作408)。可以从存储系统100中删除为第一事务生成的元数据记录和/或数据记录。因此,存储系统100回滚到在第一写入事务之前存在的状态。
一旦第一事务被提交或中止,前端层102就继续提交第二事务(操作410)。
以上方法的替代方案是当存在对同一对象的当前未决的写入事务时,中止新的写入事务。这种方法的一个挑战是停滞(stalled)的事务可能导致其它停滞或中止的事务。为了防止这种场景,可以实现确定性模型,以区分实际故障和运行缓慢的事务。如果未决的事务被确定为已失败,那么该未决的事务可以被中止,并且执行新的写入事务。如果未决的事务尚未失败,那么代替地可以中止新的写入事务。
在其它实施例中,冲突的事务可以在提交时而不是在准备阶段期间被解决。这种方法可以被用来提供最先写入胜利(first-write-wins)语义。例如,在存储系统100内生成数据记录的第一个事务可以被提交,而尚未写入该数据记录的事务被中止。
D.数据层审核
事务可能由于各种原因而失败。在一些情况下,失败的事务会导致数据部分地上传到存储系统100。例如,如果服务器在上传中间崩溃,那么只有一部分数据有效载荷可以被存储。在其它情况下,整个数据有效载荷可以被上传,但提交进程可能已失败。在这些场景中,客户端136a-i被阻止查看损坏或部分上传的数据,因为事务未在元数据层108内提交。未来的事务使这些停滞的事务被中止,并且读取操作将跳过未决的事务,如下所述。
也可以通过在数据层106内执行审核来保护存储系统100内的完整性。对于处于PENDING状态的任何数据记录,审核者向服务查询元数据层108中对应的元数据记录的当前状态。然后审核者确定是中止还是提交处于PENDING状态的数据记录。如果对应的元数据记录已提交,那么数据记录也将改变为提交状态。另一方面,如果元数据记录也是PENDING,那么审核者可以清除数据记录。
图5示出了根据一个或多个实施例的用于审核数据层的操作的示例集合。取决于特定的实现方案,可以响应于检测到特定事件(例如,新的客户端请求)或按需地来周期性地、持续地执行审核进程。审核进程可以与先前在上面描述的事务进程异步地执行。
参考图5,在存储系统100内运行的审核进程选择数据层106中的对象记录(操作502)。对象记录可以以任何次序(诸如以按照物理地址位置的顺序次序、以随机次序或以由管理员指定的次序)被处理。
审核进程确定所选择的对象是否具有PENDING状态(操作504)。例如,如果选择了数据记录112c,那么审核进程可以确定指派给数据状态标识符115c的值。如果审核进程确定该记录处于提交状态,那么审核进程可以跳到操作516。
如果所选择的对象记录是PENDING的,那么审核进程查询元数据层中对应的元数据记录的状态(操作506)。在数据记录112c被分析的示例中,审核进程可以查询特定于版本的元数据记录130c的状态。该查询可以包括识别对应的元数据记录的键124b。特定于版本的元数据记录130c的状态可以从元数据状态标识符132确定。特定于版本的元数据可能处于提交状态(诸如ACTIVE状态)或未提交/PENDING状态。
在取得元数据记录之后,审核进程基于查询响应来确定元数据记录是否具有提交状态(操作508)。如果元数据记录未提交,那么进程继续到操作510。否则,进程继续到操作514。
如果元数据记录处于PENDING状态,那么审核进程确定阈值时间量是否已经过去(操作510)。该时间段可以取决于具体实现方案而变化。例如,相对于事务的开始时间,阈值可以以天、小时、分钟等为单位来指定。如果阈值时间尚未过去,那么事务不被中止。阈值可以被用来防止过早中止未决的事务。
如果阈值时间已经过去,那么审核进程中止未决的事务(操作512)。然后可以从存储系统100清除所选择的对象记录和对应的元数据记录。
然而,如果提交了元数据记录,那么审核进程提交所选择的对象记录(操作514)。在该操作处,对象记录的状态被更新以匹配对应元数据记录的状态。例如,如果特定于版本的元数据记录130c具有ACTIVE状态,那么审核进程可以将数据状态标识符115c从PENDING更新为ACTIVE。审核进程也可以将用于该对象的先前提交的数据记录改变为INACTIVE状态。
一旦对象记录被提交或中止,进程就确定是否继续审核存储系统100(操作516)。如先前所指示的,取决于特定的实现方案,审核可以持续地执行、在固定的时间段内执行或对固定的对象记录集合执行。在审核继续的情况下,审核进程返回到操作502并选择不同的对象记录进行审核。否则该进程结束。
E.对象读取
在一个或多个实施例中,在对正被写入的同一对象进行并发读取的情况下,两层提交协议不中止未决的写入事务。相反,读取操作返回最后提交的对象版本。如果一个版本的元数据记录具有PENDING状态,那么读取操作忽略对应版本的数据对象。
图6示出了根据一个或多个实施例的用于执行读取操作的操作的示例集合。前端层102初始地从客户端接收读取存储系统100内的对象的请求(操作602)。
响应于客户端请求,前端层102查询元数据层108,以识别用于该对象的ACTIVE的元数据记录(操作604)。前端层102忽略与未决的并发写入事务相关联的PENDING的元数据记录(如果有的话)。
前端层102使用存储在元数据记录的ACTIVE版本内的位置信息,来从数据层106获取对象的对应版本(操作606)。在一个或多个实施例中,对于从数据层106获取的数据对象的版本,对象记录的版本可能仍然具有PENDING状态。在元数据记录已经提交之后但在审核进程提交对应的对象记录之前执行READ(读取)操作的情况下,可能发生这种场景。如果发生这种情况,那么数据层106可以将对象记录的状态更新为ACTIVE状态。
一旦对象数据被取回,前端层102就将对象数据返回给发出请求的客户端(操作608)。因此,读取操作返回最近提交的对象的数据有效载荷。在元数据层108中尚未提交的未决写入事务被忽略。在最后提交的版本已被删除的情况下,可以然后返回错误消息。
F.对象删除
如先前所指示的,根据一个或多个实施例,前端层102被配置为处理删除对象的请求。响应于接收到删除请求,前端层102将用于对象的元数据记录标记为删除。在这个阶段,对象记录可以由前端层102保持未修改。随后可以由垃圾收集进程删除对象记录,这可以考虑在系统内定义的终身保留(lifetime retention)和版本控制策略(如果有的话)。
在一个或多个实施例中,对象删除考虑终身保留和版本控制策略。终身保留和版本控制策略在物理时间、逻辑时间或版本个数方面定义对象记录在数据层106内被维护多久。作为示例,该策略可以指定存储系统100应当保留数据对象的四个版本。如果对象的第五版本被写入存储系统100,那么可以分别从数据层106和元数据层108删除针对第一版本的对象和元数据记录。作为另一个示例,策略可以指定存储系统100应当将对象保留四个月的时段。垃圾收集进程可以在删除元数据层108内已被标记为删除的对象之前等待四个月。策略中指定的阈值可以因实现方案而异,并且可以由终端用户(诸如系统管理员)配置。
在一个或多个实施例中,删除对象的请求使对该对象的所有未决的事务(如果有的话)被中止。例如,如果在接收到对象删除时特定于版本的元数据记录130c处于PENDING状态,那么元数据记录不被更新为ACTIVE状态。相反,特定于版本的元数据记录被从存储系统100中清除。中止未决的事务防止损坏的数据被写入并且提供存储系统100内的强一致性。
4.硬件概述
根据一个实施例,本文所描述的技术由一个或多个专用计算设备实现。专用计算设备可以是硬连线的以执行所述技术,或者可以包括诸如被永久性地编程以执行所述技术的一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)的数字电子设备,或者可以包括被编程为按照固件、存储器、其它存储装置或其组合中的程序指令执行所述技术的一个或多个通用硬件处理器。这种专用计算设备还可以将定制的硬连线逻辑、ASIC或FPGA与定制的编程组合来实现所述技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或者结合硬连线和/或程序逻辑来实现所述技术的任何其它设备。
例如,图7是示出可以在其上实现一个或多个实施例的计算机系统700的框图。计算机系统700包括总线702或者用于传送信息的其它通信机制,以及与总线702耦合的用于处理信息的硬件处理器704。硬件处理器704可以是例如通用微处理器。
计算机系统700还包括耦合到总线702的用于存储信息和要由处理器704执行的指令的主存储器706,诸如随机存取存储器(RAM)或其它动态存储设备。主存储器706还可以用于在执行要由处理器704执行的指令期间存储临时变量或其它中间信息。当存储在处理器704可访问的非暂态存储介质中时,这种指令使计算机系统700成为为执行指令中所指定的操作而定制的专用机器。
计算机系统700还包括耦合到总线702的只读存储器(ROM)708或者其它静态存储设备,以用于存储用于处理器704的静态信息和指令。提供了存储设备710(诸如磁盘或光盘),并且存储设备710耦合到总线702以用于存储信息和指令。
计算机系统700可以经由总线702耦合到显示器712(诸如阴极射线管(CRT)、液晶显示器(LCD)或发光二极管(LED)),以用于向计算机用户显示信息。可以包括物理的和/或基于触摸屏的字母数字键的输入设备714耦合到总线702,以用于向处理器704传送信息和命令选择。另一种类型的用户输入设备是光标控件716(诸如鼠标、轨迹球或光标方向键),以用于将方向信息和命令选择传送到处理器704以及用于控制显示器712上的光标移动。这种输入设备通常具有两个轴(第一轴(例如,x)和第二轴(例如,y))中的两个自由度,这允许设备指定平面中的位置。
计算机系统700可以使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文所述的技术,这些硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑与计算机系统相结合,使计算机系统700成为或把计算机系统700编程为专用机器。根据一个实施例,本文的技术由计算机系统700响应于处理器704执行包含在主存储器706中的一个或多个指令的一个或多个序列而执行。这种指令可以从另一个存储介质(诸如存储设备710)读取到主存储器706中。包含在主存储器706中的指令序列的执行使处理器704执行本文所述的过程步骤。在替代实施例中,硬连线的电路系统可以代替软件指令或者与其组合使用。
如本文所使用的,术语“存储介质”是指存储使机器以特定方式操作的数据和/或指令的任何非暂态介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备710。易失性介质包括动态存储器,诸如主存储器706。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或者任何其它磁性数据存储介质、CD-ROM、任何其它光学数据存储介质、具有孔图案的任何物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM,任何其它存储芯片或盒带。
存储介质与传输介质不同但是可以与其结合使用。传输介质参与在存储介质之间传递信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线702的线缆。传输介质还可以采取声波或光波的形式,诸如在无线电波通信和红外线数据通信中生成的那些波。
各种形式的介质可以参与把一个或多个指令的一个或多个序列运载到处理器704以供执行。例如,指令可以初始地被承载在远程计算机的磁盘或固态驱动器上。远程计算机可以把指令加载到其动态存储器中并且使用调制解调器经电话线发送指令。位于计算机系统700本地的调制解调器可以接收电话线上的数据并且使用红外线发射器将数据转换成红外线信号。红外线检测器可以接收在红外线信号中承载的数据,并且适当的电路系统可以把数据放到总线702上。总线702把数据运载到主存储器706,处理器704从该主存储器706取回并执行指令。由主存储器706接收到的指令可以可选地在被处理器704执行之前或之后存储在存储设备710上。
计算机系统700还包括耦合到总线702的通信接口718。通信接口718提供耦合到网络链路720的双向数据通信,其中网络链路720连接到本地网络722。例如,通信接口718可以是综合业务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器,或者提供到对应类型的电话线的数据通信连接的调制解调器。作为另一个示例,通信接口718可以是提供到兼容的局域网(LAN)的数据通信连接的LAN卡。也可以实现无线链路。在任何这种实现方案中,通信接口718发送和接收承载表示各种类型信息的数字数据流的电信号、电磁信号或光学信号。
网络链路720通常通过一个或多个网络向其它数据设备提供数据通信。例如,网络链路720可以通过本地网络722提供到主机计算机724或者到由互联网服务提供商(ISP)726运营的数据装备的连接。ISP 726继而通过现在通常称为“互联网”728的全球分组数据通信网络来提供数据通信服务。本地网络722和互联网728二者使用承载数字数据流的电信号、电磁信号或光学信号。通过各种网络的信号以及在网络链路720上并通过通信接口718的信号是传输介质的示例形式,其中这些信号把数字数据运载到计算机系统700或者运载来自计算机系统700的数字数据。
计算机系统700可以通过(一个或多个)网络、网络链路720和通信接口718来发送消息和接收数据(包括程序代码)。在互联网示例中,服务器730可以通过互联网728、ISP726、本地网络722和通信接口718传输对应用程序的请求代码。
接收到的代码可以在其被接收时由处理器704执行,和/或存储在存储设备710或其它非易失性存储装置中以供以后执行。
5.杂项;扩展
实施例针对具有一个或多个设备的系统,其中这一个或多个设备包括硬件处理器并且被配置为执行本文所述和/或在以下任一项权利要求中记载的任何操作。
在实施例中,非暂态计算机可读存储介质包括指令,该指令在由一个或多个硬件处理器执行时,使得本文所述和/或在任一项权利要求中记载的任何操作被执行。
根据一个或多个实施例,可以使用本文所述的特征和功能的任意组合。在前面的说明书中,已经参考许多具体细节描述了实施例,这些细节可以因实现方案而异。相应地,说明书和附图应在示意性而非限制性的意义上来看待。本发明的范围的唯一且排他指示,以及申请人所期望作为本发明的范围的是由从本申请发布的一组权利要求的字面范围以及等同范围,这是以这些权利要求发布的具体形式,包括任何后续校正。
Claims (21)
1.一种包括操作的方法,所述操作包括:
从客户端接收在存储系统内存储对象的请求,所述对象包括(a)数据和(b)与所述数据对应的元数据;
将所述元数据发送到所述存储系统的元数据层;
接收元数据记录已经在用于存储与所述数据对应的所述元数据的所述元数据层中被创建的第一确认,所述元数据记录被创建为具有未决状态;
响应于接收到所述元数据记录的所述第一确认,将所述数据发送到所述存储系统的数据层;
接收数据记录已经在用于存储所述数据的所述数据层中被创建的第二确认,所述数据记录被创建为具有未决状态;
响应于接收到所述数据记录已经在所述数据层中被创建的所述第二确认,将所述元数据记录更新为提交状态;
响应于确定所述元数据层中的所述元数据记录具有提交状态,将所述数据层中的所述数据记录更新为提交状态。
2.如权利要求1所述的方法,其中所述第二确认包括用于所述数据层中的所述数据的位置信息,所述操作还包括响应于接收到所述数据记录已经在所述数据层中被创建的所述第二确认:将用于所述数据的所述位置信息发送到所述元数据层以用于更新所述元数据记录。
3.如权利要求1所述的方法,所述操作还包括响应于将所述元数据记录更新为提交状态,向所述客户端返回所述对象已经被提交的第三确认。
4.如权利要求3所述的方法,其中,在所述第三确认被返回给所述客户端之后,由后台进程执行更新所述数据层中的所述数据记录。
5.如权利要求1所述的方法,所述操作还包括:识别所述数据层中具有未决状态的特定数据记录;响应于识别出所述数据层中具有未决状态的所述特定数据记录,确定所述元数据层中的对应元数据记录的状态;以及响应于确定所述元数据层中的所述对应元数据记录的状态是已提交,将所述数据层中的所述特定数据记录更新为提交状态。
6.如权利要求1所述的方法,所述操作还包括:识别所述数据层中具有未决状态的特定数据记录;响应于识别出所述数据层中具有未决状态的所述特定数据记录,确定所述元数据层中的对应元数据记录的状态;以及响应于确定所述元数据层中的所述对应元数据记录的状态是未决的,确定阈值时间段是否已经过去;响应于确定所述阈值时间段已经过去,将该元数据记录更新为中止状态;以及在将该元数据记录更新为中止状态之后,从所述数据层中清除所述数据记录。
7.如权利要求1所述的方法,其中所述请求是第一请求,所述操作还包括:接收在所述存储系统内存储所述对象的不同版本的第二请求;响应于所述第二请求,生成处于未决状态的第二元数据记录;其中所述第一请求在所述第二请求之后并且在所述第二元数据记录处于未决状态时被接收;响应于接收到所述第一请求:中止用于完成所述第二请求的事务;以及从所述元数据层中删除所述第二元数据记录。
8.如权利要求7所述的方法,所述操作还包括响应于接收到所述第一请求,从所述数据层中删除处于未决状态的数据记录。
9.如权利要求1所述的方法,其中所述元数据记录是用于所述对象的特定于版本的元数据记录;其中所述元数据层包括用于所述对象的先前版本的至少一个附加的特定于版本的元数据记录。
10.如权利要求1所述的方法,所述操作还包括响应于将所述元数据记录更新为提交状态,将用于所述对象的先前活动版本的第二元数据记录的状态更新为不活动状态。
11.如权利要求1所述的方法,所述操作还包括:在所述元数据记录被更新为提交状态之前,接收读取所述对象的第二请求;响应于接收到所述第二请求,确定所述元数据记录处于未决状态;以及响应于确定所述元数据记录处于未决状态,获取所述对象的具有活动状态的先前提交版本。
12.如权利要求1所述的方法,所述操作还包括:在所述数据记录被更新为提交状态之前并且所述元数据记录被更新为提交状态之后,接收读取所述对象的第二请求;响应于接收到所述第二请求,确定所述数据记录处于未决状态;以及响应于确定所述数据记录处于未决状态,确定所述元数据记录处于提交状态;以及响应于确定所述元数据记录处于提交状态,获取所述对象的存储在所述数据记录中的版本。
13.如权利要求12所述的方法,其中,作为用于处理所述第二请求的读取事务的一部分,所述数据记录被更新为提交状态。
14.如权利要求1所述的方法,所述操作还包括在修改所述对象的事务处于未决状态时接收删除所述对象的第二请求;响应于删除所述对象的所述第二请求,中止修改所述对象的所述事务。
15.如权利要求1所述的方法,所述操作还包括接收包括所述对象的经更新版本的第二写入请求;响应于接收到所述第二写入请求,生成用于所述对象的第二数据记录和第二元数据记录;以及将用于所述对象的所述第二数据记录和第二元数据记录维持在不活动状态,直到满足生命周期保留策略。
16.如权利要求1所述的方法,其中所述数据记录跨所述数据层中的多个存储位置被复制。
17.如权利要求1所述的方法,其中所述操作还防止所述客户端访问处于未决状态的数据。
18.如权利要求1所述的方法,其中所述第二确认包括所述对象的具体版本在所述数据层中的位置信息,所述操作还包括响应于接收到所述数据记录已经在所述数据层中被创建的所述第二确认:将用于所述数据的所述位置信息发送到所述元数据层以用于更新所述元数据记录,其中所述元数据记录是用于所述对象的特定于版本的元数据记录;其中,响应于接收到所述位置信息,所述元数据层将用于所述对象的具体版本的所述位置信息添加到所述特定于版本的元数据记录、将所述元数据记录更新为活动状态、并将用于所述对象的先前版本的第二元数据记录更新为不活动状态;并且所述操作包括周期性地审核所述数据层内的数据记录以确定是清除还是提交具有未决状态的数据记录;其中,如果所述元数据层中的对应元数据记录具有提交状态,那么提交相应的数据记录。
19.一种存储指令的非暂态计算机可读介质,所述指令在由一个或多个硬件处理器执行时,使所述一个或多个硬件处理器执行如权利要求1-18中任一项所述的方法。
20.一种系统,包括:
一个或多个硬件处理器;
存储指令的一个或多个非暂态计算机可读介质,所述指令在由所述一个或多个硬件处理器执行时,使所述一个或多个硬件处理器执行如权利要求1-18中任一项所述的方法。
21.一种装置,包括用于执行如权利要求1-18中任一项所述的方法的单元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/338,829 | 2016-10-31 | ||
US15/338,829 US10191936B2 (en) | 2016-10-31 | 2016-10-31 | Two-tier storage protocol for committing changes in a storage system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108021338A true CN108021338A (zh) | 2018-05-11 |
CN108021338B CN108021338B (zh) | 2023-12-19 |
Family
ID=62022388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711054116.3A Active CN108021338B (zh) | 2016-10-31 | 2017-10-31 | 用于实现两层提交协议的系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10191936B2 (zh) |
CN (1) | CN108021338B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10360099B2 (en) | 2017-04-28 | 2019-07-23 | Netapp Inc. | Object format resilient to remote object store errors |
US10831565B2 (en) * | 2017-09-28 | 2020-11-10 | Sap Se | Fault tolerant adapter system to consume database as a service |
US11947516B1 (en) * | 2018-02-22 | 2024-04-02 | Amazon Technologies, Inc. | Multi-tier definition management for distributed data stores |
US10997158B2 (en) * | 2018-09-21 | 2021-05-04 | Microsoft Technology Licensing, Llc | Techniques for updating big data tables using snapshot isolation |
US11061889B2 (en) * | 2018-09-24 | 2021-07-13 | Salesforce.Com, Inc. | Systems and methods of managing manifest refresh in a database |
US11200230B2 (en) | 2019-08-09 | 2021-12-14 | Couchbase, Inc. | Cost-based optimization for document-oriented database queries |
US20210365439A1 (en) * | 2020-05-22 | 2021-11-25 | Couchbase, Inc. | Distributed transaction execution in distributed databases |
US11681687B2 (en) | 2020-08-31 | 2023-06-20 | Couchbase, Inc. | Executing transactions on distributed databases |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1559041A (zh) * | 2001-09-26 | 2004-12-29 | Emc | 在计算机系统之间共享对象 |
CN102016852A (zh) * | 2008-03-05 | 2011-04-13 | 美国日本电气实验室公司 | 内容可寻址存储系统和方法 |
CN102307221A (zh) * | 2011-03-25 | 2012-01-04 | 国云科技股份有限公司 | 一种云存储系统及其实现方法 |
US8180813B1 (en) * | 2009-12-08 | 2012-05-15 | Netapp, Inc. | Content repository implemented in a network storage server system |
CN102460376A (zh) * | 2009-06-26 | 2012-05-16 | 英特尔公司 | 无约束事务存储器(utm)系统的优化 |
CN103548010A (zh) * | 2011-05-23 | 2014-01-29 | 微软公司 | 分布式存储环境中的同步复制 |
CN104657459A (zh) * | 2015-02-09 | 2015-05-27 | 中国科学院信息工程研究所 | 一种基于文件粒度的海量数据存储方法 |
US9459809B1 (en) * | 2014-06-30 | 2016-10-04 | Emc Corporation | Optimizing data location in data storage arrays |
Family Cites Families (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4965825A (en) | 1981-11-03 | 1990-10-23 | The Personalized Mass Media Corporation | Signal processing apparatus and methods |
US5544347A (en) | 1990-09-24 | 1996-08-06 | Emc Corporation | Data storage system controlled remote data mirroring with respectively maintained data indices |
US6157612A (en) | 1995-04-03 | 2000-12-05 | Lucent Technologies Inc. | Fast fading packet diversity transmission method and system |
US5680640A (en) | 1995-09-01 | 1997-10-21 | Emc Corporation | System for migrating data by selecting a first or second transfer means based on the status of a data element map initialized to a predetermined state |
US6714553B1 (en) | 1998-04-15 | 2004-03-30 | Top Layer Networks, Inc. | System and process for flexible queuing of data packets in network switching |
US20010016843A1 (en) | 1999-02-08 | 2001-08-23 | Todd Olson | Method and apparatus for accessing data |
US6658367B2 (en) | 2001-03-28 | 2003-12-02 | Hewlett-Packard Development Company, L.P. | System for time-bucketing of baselined data collector data |
US7656908B1 (en) | 2005-09-30 | 2010-02-02 | At&T Corp. | System and method for delivering content in a unicast/multicast manner |
US7707151B1 (en) | 2002-08-02 | 2010-04-27 | Emc Corporation | Method and apparatus for migrating data |
US7035971B1 (en) | 2002-09-23 | 2006-04-25 | Hewlett-Packard Development Company, L.P. | Request scheduling to mirrored heterogeneous storage arrays |
US7424514B2 (en) | 2002-11-08 | 2008-09-09 | The Regents Of The University Of Michigan | Peer-to-peer method and system for performing and managing backups in a network of nodes |
US7263593B2 (en) | 2002-11-25 | 2007-08-28 | Hitachi, Ltd. | Virtualization controller and data transfer control method |
US7287133B2 (en) | 2004-08-24 | 2007-10-23 | Symantec Operating Corporation | Systems and methods for providing a modification history for a location within a data store |
US7958093B2 (en) | 2004-09-17 | 2011-06-07 | International Business Machines Corporation | Optimizing a storage system to support short data lifetimes |
JP4074296B2 (ja) | 2005-03-25 | 2008-04-09 | 株式会社東芝 | スケジューリング可能性判定方法、リアルタイムシステム及びプログラム |
US20060271420A1 (en) | 2005-05-27 | 2006-11-30 | Peter Anselmann | System and method for performing capacity checks and resource scheduling within a supply chain management system |
US9032164B2 (en) | 2006-02-17 | 2015-05-12 | Emulex Corporation | Apparatus for performing storage virtualization |
JP5115556B2 (ja) | 2007-07-05 | 2013-01-09 | 日本電気株式会社 | 物体領域検出装置、物体領域検出システム、物体領域検出方法及びプログラム |
US8082258B2 (en) | 2009-02-10 | 2011-12-20 | Microsoft Corporation | Updating an inverted index in a real time fashion |
EP2239727A1 (en) | 2009-04-08 | 2010-10-13 | Yamaha Corporation | Musical performance apparatus and program |
US8369328B2 (en) | 2009-07-14 | 2013-02-05 | Saguna Networks Ltd. | System and method for efficient delivery of multi-unicast communication traffic |
US20110119100A1 (en) | 2009-10-20 | 2011-05-19 | Jan Matthias Ruhl | Method and System for Displaying Anomalies in Time Series Data |
US8868508B2 (en) | 2010-02-09 | 2014-10-21 | Google Inc. | Storage of data in a distributed storage system |
US8725698B2 (en) | 2010-03-30 | 2014-05-13 | Commvault Systems, Inc. | Stub file prioritization in a data replication system |
CN102884516B (zh) | 2010-05-13 | 2016-08-03 | 惠普发展公司,有限责任合伙企业 | 文件系统迁移 |
US8396852B2 (en) | 2010-09-20 | 2013-03-12 | International Business Machines Corporation | Evaluating execution plan changes after a wakeup threshold time |
US9384199B2 (en) | 2011-03-31 | 2016-07-05 | Microsoft Technology Licensing, Llc | Distributed file system |
JP5708262B2 (ja) | 2011-05-31 | 2015-04-30 | 富士通株式会社 | 予測プログラム、予測装置および予測方法 |
US20130091266A1 (en) | 2011-10-05 | 2013-04-11 | Ajit Bhave | System for organizing and fast searching of massive amounts of data |
US20130311555A1 (en) | 2012-05-18 | 2013-11-21 | Telefonica, S.A. | Method for distributing long-tail content |
CN103794006B (zh) | 2012-10-31 | 2016-12-21 | 国际商业机器公司 | 用于处理多个传感器的时序数据的方法和装置 |
US20140180461A1 (en) | 2012-12-20 | 2014-06-26 | Oliver Heck | Real-time activity planning and monitoring of activity execution |
US9501507B1 (en) | 2012-12-27 | 2016-11-22 | Palantir Technologies Inc. | Geo-temporal indexing and searching |
JP6002250B2 (ja) | 2013-01-10 | 2016-10-05 | 株式会社日立製作所 | 時系列データ処理装置及び方法並びに記憶媒体 |
US10102028B2 (en) | 2013-03-12 | 2018-10-16 | Sas Institute Inc. | Delivery acknowledgment in event stream processing |
US9507843B1 (en) * | 2013-09-20 | 2016-11-29 | Amazon Technologies, Inc. | Efficient replication of distributed storage changes for read-only nodes of a distributed database |
US9720989B2 (en) | 2013-11-11 | 2017-08-01 | Amazon Technologies, Inc. | Dynamic partitioning techniques for data streams |
KR20150088531A (ko) | 2014-01-24 | 2015-08-03 | 삼성에스디에스 주식회사 | 시계열 데이터 버켓 구성 및 디스플레이 방법과 그 장치 |
US9311012B2 (en) | 2014-02-19 | 2016-04-12 | Hitachi, Ltd. | Storage system and method for migrating the same |
US9524302B2 (en) | 2014-03-05 | 2016-12-20 | Scality, S.A. | Distributed consistent database implementation within an object store |
US9836326B2 (en) | 2014-03-31 | 2017-12-05 | Oracle International Corporation | Cache probe request to optimize I/O directed caching |
JP6444494B2 (ja) | 2014-05-23 | 2018-12-26 | データロボット, インコーポレイテッド | 予測データ分析のためのシステムおよび技術 |
US20150339314A1 (en) | 2014-05-25 | 2015-11-26 | Brian James Collins | Compaction mechanism for file system |
JP6476600B2 (ja) | 2014-06-10 | 2019-03-06 | 日本電気株式会社 | 情報表示処理システム、情報表示処理方法および情報表示処理プログラム |
GB2527296A (en) * | 2014-06-16 | 2015-12-23 | Ibm | A method for restoring data in a HSM system |
US9710186B2 (en) | 2014-06-20 | 2017-07-18 | Ca, Inc. | Performing online data migration with concurrent active user access to the data |
US9369406B2 (en) | 2014-07-03 | 2016-06-14 | Sas Institute Inc. | Resource server providing a rapidly changing resource |
US10469396B2 (en) | 2014-10-10 | 2019-11-05 | Pegasystems, Inc. | Event processing with enhanced throughput |
US9465387B2 (en) | 2015-01-09 | 2016-10-11 | Hitachi Power Solutions Co., Ltd. | Anomaly diagnosis system and anomaly diagnosis method |
US20170351543A1 (en) | 2015-01-29 | 2017-12-07 | Hewlett Packard Enterprise Development Lp | Heap data structure |
US20160306822A1 (en) | 2015-04-17 | 2016-10-20 | Samsung Electronics Co., Ltd. | Load balancing of queries in replication enabled ssd storage |
US9892005B2 (en) | 2015-05-21 | 2018-02-13 | Zerto Ltd. | System and method for object-based continuous data protection |
US9864774B2 (en) | 2015-06-23 | 2018-01-09 | International Business Machines Corporation | Granular buffering of metadata changes for journaling file systems |
US10296593B2 (en) | 2016-06-24 | 2019-05-21 | International Business Machines Corporation | Managing storage system metadata during data migration |
US10255305B2 (en) | 2016-09-09 | 2019-04-09 | Intel Corporation | Technologies for object-based data consistency in distributed architectures |
-
2016
- 2016-10-31 US US15/338,829 patent/US10191936B2/en active Active
-
2017
- 2017-10-31 CN CN201711054116.3A patent/CN108021338B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1559041A (zh) * | 2001-09-26 | 2004-12-29 | Emc | 在计算机系统之间共享对象 |
CN102016852A (zh) * | 2008-03-05 | 2011-04-13 | 美国日本电气实验室公司 | 内容可寻址存储系统和方法 |
CN102460376A (zh) * | 2009-06-26 | 2012-05-16 | 英特尔公司 | 无约束事务存储器(utm)系统的优化 |
US8180813B1 (en) * | 2009-12-08 | 2012-05-15 | Netapp, Inc. | Content repository implemented in a network storage server system |
CN102307221A (zh) * | 2011-03-25 | 2012-01-04 | 国云科技股份有限公司 | 一种云存储系统及其实现方法 |
CN103548010A (zh) * | 2011-05-23 | 2014-01-29 | 微软公司 | 分布式存储环境中的同步复制 |
US9459809B1 (en) * | 2014-06-30 | 2016-10-04 | Emc Corporation | Optimizing data location in data storage arrays |
CN104657459A (zh) * | 2015-02-09 | 2015-05-27 | 中国科学院信息工程研究所 | 一种基于文件粒度的海量数据存储方法 |
Also Published As
Publication number | Publication date |
---|---|
US20180121492A1 (en) | 2018-05-03 |
CN108021338B (zh) | 2023-12-19 |
US10191936B2 (en) | 2019-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108021338A (zh) | 用于实现两层提交协议的系统和方法 | |
JP6638024B2 (ja) | システム、スマートコントラクトのライフサイクルの管理方法、及び非一時的コンピュータ可読媒体 | |
US11899684B2 (en) | System and method for maintaining a master replica for reads and writes in a data store | |
CN101221573B (zh) | 将储存库还原到先前状态的方法 | |
US10015042B2 (en) | System and method for data replication using a single master failover protocol | |
AU2016405587B2 (en) | Splitting and moving ranges in a distributed system | |
US9886348B2 (en) | System and method for adjusting membership of a data replication group | |
US9411873B2 (en) | System and method for splitting a replicated data partition | |
CN103198090B (zh) | 用于优化虚拟桌面环境中的存储分配的方法和系统 | |
CN108021336A (zh) | 用于无缝数据迁移的数据布局方案 | |
US9621409B2 (en) | System and method for handling storage events in a distributed data grid | |
JP5357068B2 (ja) | 情報処理装置、情報処理システム、データ・アーカイブ方法およびデータ削除方法 | |
CN107667351A (zh) | 用于移动设备上的自动基于云的全数据备份和恢复的系统和方法 | |
CN101501652A (zh) | 检查点及一致性标记符 | |
CN107148617A (zh) | 日志协调存储组的自动配置 | |
CN108027828A (zh) | 与无状态同步节点的托管文件同步 | |
US20200104404A1 (en) | Seamless migration of distributed systems | |
CA3102144A1 (en) | Blockchain timeclock system | |
CN110431580A (zh) | 使用随机数表来减少并发区块链交易失败 | |
CN110032544A (zh) | 云端服务的权限管理方法及其云端数据存储系统 | |
US8380679B2 (en) | Method of handling transaction in a service oriented architecture environment | |
WO2009147847A1 (ja) | データベース並行編集方式 | |
US10942912B1 (en) | Chain logging using key-value data storage | |
House et al. | Toward fast and reliable active-active geo-replication for a distributed data caching service in the mobile cloud | |
JP4855537B2 (ja) | データベース並行編集方式 |
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 |