CN105393243B - 事务定序 - Google Patents
事务定序 Download PDFInfo
- Publication number
- CN105393243B CN105393243B CN201480039678.9A CN201480039678A CN105393243B CN 105393243 B CN105393243 B CN 105393243B CN 201480039678 A CN201480039678 A CN 201480039678A CN 105393243 B CN105393243 B CN 105393243B
- Authority
- CN
- China
- Prior art keywords
- read
- time
- database
- request
- indication
- 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
- 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/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/2315—Optimistic concurrency control
-
- 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/2365—Ensuring data consistency and integrity
-
- 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/466—Transaction processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
数据库服务的节点可以接收执行读该数据库服务存储的记录的读请求和对该记录执行事务的事务请求。第一时间和第二时间指示可以分别与该读和事务关联。可以至少部分地基于该第一时间指示在该第二时间指示的阈值内的确定来检测潜在的读异常(例如,不可重复读(fuzzy read)、读偏斜(read skew)等)。响应检测到潜在的读异常,可以在该事务请求指定的事务之后执行读,而无论第一时间指示是否指示比第二时间指示早的时点。
Description
背景技术
分布软件堆栈的各种组件在一些情况中能够提供(或支持)故障容忍(例如,通过复制)、更高的持久性和更低成本的解决方案(例如,通过使用多个较小且成本较低的组件,而不是较少的大且昂贵的组件)。但是,数据库从历史来看一直是软件堆栈的组件中最不适于分布的。例如,分布数据库同时确保预期数据库所要提供的所谓的ACID属性(例如,原子性、一致性、隔离性和持久性)可能是困难的。具体地来说,就一致性和隔离性属性而言,分布式数据库系统的节点之间进行协调以维持节点间的逻辑关系已被证明对于现有系统是非常困难的。
附图说明
图1是图示根据一个实施方案的数据库软件堆栈的各种组件的框图。
图2是图示根据一些实施方案的服务系统架构的框图,该服务系统架构可以被配置来实施被配置来执行事务定序的基于Web服务的数据库服务。
图3是图示根据一个实施方案的被配置来执行事务定序的数据库系统的各种组件的框图。
图4是图示根据一个实施方案的被配置来执行事务定序的分布式数据库优化的存储系统的框图。
图5是图示根据一个实施方案的被配置来执行事务定序的数据库系统中使用单独的分布式数据库优化的存储系统的框图。
图6是图示一种用于事务定序的方法的一个实施方案的流程图。
图7A-C是图示根据各种实施方案的各种事务定序场景的时序图。
图8是图示根据各种实施方案的被配置来实施事务定序的计算机系统的框图。
虽然本文通过若干实施方案和说明性附图的实例描述了实施方案,但是本领域技术人员将认识到实施方案不限于所描述的实施方案或附图。应当理解附图以及对其进行的详细描述并不旨在将实施方案限制于所公开的特定形式,而是相反,旨在涵盖落在如所附权利要求所定义的精神和范围内的所有修改、等效物和替代物。本文使用的标题仅出于组织的目的,而不意味着用于限制描述或权利要求的范围。如在本申请全文中所使用的,词汇“可以”是在容许意义(即,意味着有可能)上来使用的,而非强制意义(即,意味着必须)。词汇“包括(include,including,includes)”是指开放性关系且因此表示包括但不限于。相似地,词汇“具有(have,having,has)”也是指开放性关系且因此表示具有但不限于。如在本文中所使用的,术语“第一”、“第二”、“第三”等用作其在前的名词的标号,并且不暗示任何类型的定序(例如,空间、时间、逻辑等),除非以其他方式明确地指示此类定序。
各种组件可能被描述为“被配置来”执行一个或多个任务。在此语境中,“被配置来”是一种广义的引述,一般性地表示在操作期间“具有执行该一个或多个任务的结构”。因此,该组件能够被配置来执行任务,即使是该组件当前未在执行该任务(例如,即使在操作当前未被执行时,计算机系统仍可被配置来执行该操作)。在一些语境中,“被配置来”可以是一种结构的广义的引述,一般性地表示在操作期间“具有执行该一个或多个任务的电路”。因此,该组件能够被配置来执行该任务,即使是该组件当前未导通。一般来说,形成“被配置来”所对应的结构的电路可包括硬件电路。
为了方便描述,各种组件可被描述为执行一个或多个任务。此类描述应解释为包括短语“被配置来”。引述被配置来执行一个或多个任务的组件明确地无意援引35U.S.C.§112第六段落对该组件的解释。
“基于”,如在本文中所使用的,此术语用于描述影响确定的一个或多个因素。此术语不排斥可能影响确定的附加因素。即,确定可仅基于这些因素或至少部分地基于这些因素。对于短语“基于B确定A”。虽然B可以是影响A的确定的因素,但是此类短语不排斥A的确定还基于C。在其他实例中,可仅基于B来确定A。
本公开的范围(明确地或隐含地)包括本文公开的任何特征或该特征的组合,或其任何推广,无论其是否缓解了任何或所有本文解决的问题。因此,在本申请(或对其要求优先权的申请)对任何此类特征组合诉求权利的过程中可构想出新的权利要求。特定来说,参考所附权利要求,可将来自从属权利要求的特征与独立权利要求的特征进行组合,并且可将来自各个独立权利要求的特征以任何适合的方式而不仅仅以所附权利要求中枚举的具体组合来进行组合。
具体实施方式
公开事务定序的各种实施方案。本实施方案中的各种实施方案可以包括接收执行读存储的记录的读请求和执行对所述记录的事务(例如,写入等)的事务请求的节点(例如,数据库服务的节点)。本实施方案中的各种实施方案还可以包括分别将第一和第二时间指示与读和事务关联的节点。本实施方案中的各种实施方案还可以包括至少部分地基于所述第一时间指示在所述第二时间指示的阈值内的确定来检测潜在的读异常(例如,不可重复读(fuzzy read)、读偏斜(read skew)等)。注意,在一些实施方案中,检测还可以基于所述第一和第二时间指示以外的时间指示。响应检测到所述潜在的读异常,可以在所述事务请求指定的事务之后执行所述读,而无论所述第一时间指示是否指示比所述第二时间指示早的时点。在一些实例中,可以重试所述读,以使对于所述重试不会出现潜在的读异常。
说明书首先描述被配置来实施所公开的事务定序技术的示例性基于Web服务的数据库服务。示例性基于Web服务的数据库服务的描述中包括的有,示例性基于Web服务的数据库服务的多个方面,如数据库引擎和单独的分布式数据库存储服务(注意,在一些实施方案中,存储服务可以不与数据库引擎分开)。说明书随后描述用于事务定序的方法的各种实施方案的流程图。接下来,说明书描述可以实施所公开的技术的示例性系统。说明书全文中提供了各种实例。注意所公开的事务定序技术可以用在图1-5的示例性数据库服务以外的系统中,如可以用在可用于读、写和存储数据的其他系统中。例如,所公开的技术可以用在可能出现如下情况的任何系统中:在这些更新对于读是可见的时点读数据并且对数据进行一系列更新。
在一些实施方案中,本文描述的系统可以实施使客户端(例如,订户)能够在云计算环境中操作数据存储系统的Web服务。在一些实施方案中,所述数据存储系统可以是高度可伸缩并且可扩充的企业级数据库系统。在一些实施方案中,可以将查询指向跨多个物理资源分布的数据库存储,并且可以基于所需来扩大或缩小该数据库系统。在不同实施方案中,该数据库系统可以有效地使用各种类型和/或组织的数据库方案。在一些实施方案中,客户端/订户可以采用多种方式,例如经由SQL接口交互式地,将查询提交到该数据库系统。在其他实施方案中,外部应用和程序可以使用开放数据库连接性(ODBC)和/或Java数据库连接性(JDBC)驱动程序接口将查询提交到该数据库系统。
更具体地来说,在一些实施方案中,本文描述的系统可以实施其中内在地分布单个数据库系统的各种功能组件的面向服务的数据库架构。例如,这些系统可以将数据库的基本操作(例如,查询处理、事务管理、缓存和存储)组织成可以个别且独立地缩放的层,而不是将多个完整且庞大的数据库实例(其中的每一个可能包括无关的功能性,如应用服务器、搜索功能性,或需要提供数据库核心功能以外的其他功能性)绑在一起。例如,在一些实施方案中,本文描述的系统中的每一个数据库实例可以包括数据库层级(其可以包括单个数据库引擎头节点和客户端存储系统驱动程序)以及单独的分布式存储系统(其可以包括统一地执行现有技术系统的数据库层级中传统上执行的一些操作的多个存储节点)。正如本文提到的,所描述的事务定序技术也可以等效地应用于其他系统。
正如本文更详细描述的,在一个实施方案中,可以将一些最低级别的数据库操作(例如,备份、复原、恢复、日志记录操作和/或各种空间管理操作)从数据库引擎转移到存储层以及跨多个节点和存储设备来分布。例如,在一些实施方案中,应用对所存储的数据库表(以及其数据页)的更改可以由存储层本身来负责,而不是数据库引擎应用对数据库表(或其数据页)的更改并且随后将修改的数据页发送到存储层。在此类实施方案中,可以将重做日志记录而非修改的数据页发送到存储层,此后,可以有所延迟地且以分布式方式(例如,通过后台进程)执行重做处理(例如,应用重做日志记录)。在一些实施方案中,崩溃恢复(例如,根据所存储的重做日志记录重构数据页)还可以由存储层来执行,并且还可以由分布式(并且在一些情况中,延迟的)后台进程来执行。
在一些实施方案中,因为仅重做日志(而非修改的数据页)被发送到存储层,所以数据库层级与存储层之间的网络通信量与现有数据库系统中的网络通信量相比可极大地减少。在一些实施方案中,每一个重做日志可以约为对其指定更改的对应数据页的大小的十分之一。注意,从数据库层级和分布式存储系统发送的请求可以是异步的,并且一次可能有多个此类请求处于传送中。
一般来说,在给出一个数据之后,数据库的初级要求是其可以最终归还相同的一个数据。为此,数据库可以包括若干不同的组件(或层级),其中的每一个执行不同的功能。例如,传统数据库可以视为具有三个层级:用于执行查询解析、优化和执行的第一层级;用于提供事务性、恢复和持久性的第二层级;以及提供在本地连接的磁盘上或网络连接的存储上的存储的第三层级。正如上文提到的,伸缩传统数据库的传统尝试通常涉及复制数据库的所有三个层级并跨多个机器分布这些复制的数据库实例。
在一些实施方案中,本文描述的系统可以与传统数据库不同的方式将数据库系统的功能性分区,并且可以仅跨多个机器分布这些功能组件的子集(而非完整的数据库实例)以便实施伸缩。例如,在一些实施方案中,面向客户层级可以被配置来接收指定要存储或检索什么数据的请求,而非指定如何存储或检索该数据的请求。此层级可以执行请求解析和/或优化(例如,SQL解析和优化),而另一个层级可以负责查询执行。在一些实施方案中,第三层级可以负责提供事务性和结果的一致性。例如,此层级可以被配置来实施所谓的ACID属性中的一些,特定来说,以该数据库为目标的事务的原子性、维持该数据库内的一致性以及确保以该数据库为目标的事务之间的隔离性。在一些实施方案中,第三层级可以实施所公开的事务定序技术。在一些实施方案中,第四层级则可以负责在存在各种类型故障的情况下提供所存储数据的持久性。例如,此层级可以负责更改日志、从数据库崩溃恢复、管理对底层存储卷的访问和/或底层存储卷中的空间管理。
现在转到附图,图1是图示根据一个实施方案的数据库软件堆栈的各种组件的框图。正如此实例中图示的,数据库实例可以包括多个功能组件(或层),其中的每一个提供数据库实例功能性的一部分。在此实例中,数据库实例100包括查询解析和查询优化层(示出为110)、查询执行层(示出为120)、事务性和一致性管理层(示出为130)和持久性和空间管理层(示出为140)。正如上文提到的,在一些现有数据库系统中,伸缩数据库实例可能涉及一次或多次复制整个数据库实例(包括图1所示的所有层),并且随后添加胶合逻辑(gluelogic)将其缝合在一起。在一些实施方案中,本文描述的系统可替代地将持久性和空间管理层140的功能性从数据库层分担到单独的存储层,并且可以跨存储层中的多个存储节点分布该功能性。注意所公开的事务定序技术还可以应用于持久性和空间管理层140是数据库层级一部分的实施方案中。
在各种实施方案中,本文描述的数据库可以支持用于各种数据库操作/事务的标准或定制应用编程接口(API)。例如,该API可以支持用于创建数据库、创建表、更改表、创建用户、删除用户(dropping a user)、在表中插入一个或多个行、复制值、从表内选择数据(例如,查询表)、取消或中止查询的操作和/或其他操作。
在一些实施方案中,数据库实例的数据库层级可以包括数据库引擎头节点服务器(其还可称为主节点),数据库引擎头节点服务器从各种客户端程序(例如,应用)和/或订户(用户)接收读和/或写请求(和/或其他事务请求),然后解析它们并设计执行计划来执行关联数据库操作。例如,数据库引擎头节点可以开发获取复杂查询和连接结果所需的一系列步骤。在一些实施方案中,数据库引擎头节点可以管理数据库系统的数据库层级与客户/订户之间的通信,以及数据库层级与单独的分布式数据库优化的存储系统之间的通信。在一些实施方案中,正如下文更详细描述的,该数据库引擎头节点可以被配置来执行事务定序,这可以帮助维持特定的隔离级别(例如,读一致等)。
在一些实施方案中,数据库层级(或更具体的来说,数据库引擎头节点)可以包括其中临时性地保存最近访问的数据页的缓存。在此类实施方案中,如果接收到以此类缓存中的数据页为目标的写请求,则除了将对应的重做日志记录交付到存储层外,数据库引擎还可以应用对其缓存中副本的更改。然而,不同于其他数据库系统中那样,此缓存中保存的数据页可以一直不刷新到存储层,并且可以在任何时间将其废弃(例如,在最近应用于缓存的副本的写请求的重做日志记录被发送存储层且被确认之后的任何时间)。在不同实施方案中,该缓存可以实施各种锁定机构中的任何一个以控制一次至多一个写入方(或多个读取方)访问该缓存。然而,注意在包括此类缓存的实施方案中,对于给定数据库实例,该缓存可以不跨多个节点分布,而是可仅存在于数据库引擎头节点上。因此,可能没有缓存相关性或一致性问题要管理。不过,还要注意可能存在多个数据库实例,其每一个均具有数据库引擎头节点。
在一些实施方案中,数据库层级可以支持在系统中使用同步或异步读副本,例如,读请求可路由到的数据库层级的不同节点上的数据的只读副本。在此类实施方案中,如果给定数据库表的数据库引擎头节点接收到指向特定数据页的读请求,则其可以将该请求路由到这些只读副本中的任何一个(或特定一个)。在一些实施方案中,数据库引擎头节点中的客户端驱动程序可以被配置来向其他节点通知有关对缓存的数据页的更新和/或作废(例如,以便提示其将其缓存作废,此后其可以从存储层请求更新数据页的更新副本)。
在一些实施方案中,客户端驱动程序可以维护有关卷的元数据,并且可以直接向实施读请求和写请求所需的存储节点中的每一个发送异步请求,而无需在存储节点之间进行附加中转(hop)。例如,在一些实施方案中,响应对数据库表进行更改的请求,客户端驱动程序可以被配置来确定实施目标数据页存储的一个或多个节点,以及路由指定这些存储节点更改的重做日志记录。存储节点随后可以负责在未来某个时点将重做日志中指定的更改应用于目标数据页。当写入反过来向客户端驱动程序确认时,客户端驱动程序可以提前该卷持久的时点,并且可以反过来向数据库层级确认落实。正如前文提到的,在一些实施方案中,客户端驱动程序可以一直不向存储节点服务器发送数据页。这不仅可以减少网络通信量,还可以无需检查点或后台写入方线程,该检查点或后台写入方线程限制了先前数据库系统中的前台处理吞吐量。
在一些实施方案中,客户端驱动程序可以为接收到检索多个记录的读请求的数据库引擎头节点执行所公开的事务定序,正如本文描述。例如,数据库服务的数据库引擎头节点可能接收到执行读数据库服务存储的记录的读请求。另一个数据库引擎头节点可能接收到对记录执行事务(例如,写等)的事务请求。接收到读请求的数据库引擎头节点可以基于确定与读关联的时间指示在与事务关联的第二时间指示的阈值内而检测到潜在的读异常(例如,不可重复读(fuzzy read)、读偏斜(read skew)等)。响应于检测到潜在的读异常,可以在该事务请求指定的事务之后执行读,而无论第一时间指示是否指示比第二时间指示更早的时点。在一些实例中,可以重试读,以使对于重试不会出现潜在的读异常。注意,数据库引擎头节点可以在一个时间接收查询时间表的读请求,以及在另一个时间接收修改数据表的事务请求。图7A-C处图示正常读、不可重复读和读偏斜的各种实例时序图,如下文描述。
在一些实施方案中,许多读请求可以由数据库引擎头节点缓存来提供服务。但是,写请求可能需要持久性,因为大型故障事件太常见,从而不允许仅在存储器中的复制。因此,本文描述的系统可以被配置来通过在作为如下两个区域的存储层级中实施数据存储来使前台延迟路径中的重做日志记录写操作的成本最小化:当从数据库层级接收到重做日志记录时写入这些重做日志记录的仅追加且日志结构化的小区域,以及在后台将日志记录合并在一起以创建新版本的数据页的较大区域。在一些实施方案中,可以为每一个数据页维护存储器内结构,其指向每一个数据页的最后一个重做日志记录,从而向后链接日志记录,直到引用实例化数据块为止。对于读写混合工作,包括读被大量缓存的应用中,此方法可以提供良好性能。
图2中图示服务系统架构的一个实施方案,该服务系统架构可以被配置来实施基于Web服务的数据库服务。在图示的实施方案中,多个客户端(示出为数据库客户250a-250n)可以被配置来通过网络260与Web服务平台200交互。Web服务平台200可以被配置来与数据库服务210、分布式数据库优化的存储服务220和/或一个或多个其他虚拟计算服务230的一个或多个实例交互。注意,在可能曾在给定组件的一个或多个实例的情况中,本文对该组件的引述可以是以单数或复数形式进行的。但是,使用任一种形式均无意排斥另一种形式。
在各种实施方案中,图2所示的组件可以直接在计算机硬件内实施,作为计算机硬件可直接或间接执行的指令来实施或使用这些技术的组合来实施。例如,图2的组件可以由包括多个计算节点(或简称为节点)的系统来实施,每一个节点可以与图8所示且下文描述的计算机系统实施方案相似。在各种实施方案中,给定服务系统组件(例如,数据库服务的组件或存储服务的组件)的功能性可以由特定节点来实施或可跨若干节点分布。在一些实施方案中,给定节点可以实施多于一个服务系统组件的功能性(例如,多于一个数据库服务系统组件)。
一般来说,客户端250可以涵盖可被配置来经由网络260向Web服务平台200提交Web服务请求,包括对数据库服务的请求(例如,事务请求、读请求等)的任何类型的客户端。例如,给定客户端250可以包括适合版本的Web浏览器或可以包括被配置来作为Web浏览器的扩充来执行或在Web浏览器提供的执行环境内执行的插件模块或其他类型的代码模块。作为备选,客户端250(例如,数据库服务客户端)可以涵盖诸如数据库应用(或其用户接口)、媒体应用、办公应用或可以利用永久性存储资源来存储和/或访问一个或多个数据库表的任何其他应用之类的应用。在一些实施方案中,此类应用可以包括生成和处理Web服务请求的足够协议支持(例如,对超文本传输协议(HTTP)的适合版本的支持)而无需实施所有类型的基于Web的数据的完整浏览器支持。即,客户端250可以是被配置来直接与Web服务平台200交互的应用。在一些实施方案中,客户端250可以被配置来根据表示状态传输(REST)式样的Web服务架构、基于文档或基于消息的Web架构或另一种适合的Web服务架构来生成Web服务请求。
在一些实施方案中,客户端250(例如,数据库服务客户端)可以被配置来以对那些应用透明的方式向其他应用提供对数据库表的基于Web服务的存储的访问。例如,客户端250可以被配置来与操作系统或文件系统集成来根据本文描述的存储模型的适合变体提供存储。但是,该操作系统或文件系统可以呈交至应用的不同存储接口,如文件、目录和/或文件夹的常规文件系统分层结构。在此类实施方案中,应用可能无需修改即可利用图1的存储系统服务模型。反而,可以由客户端250和操作系统或文件系统代表操作系统环境内执行的应用来协调对Web服务平台200实施接口的细节。
客户端250可以经由网络260向Web服务平台200传送Web服务请求(例如,事务请求、读请求等)或从Web服务平台200接收响应。在各种实施方案中,网络260可以涵盖在客户端250与平台200之间建立基于Web的通信所需的联网硬件和协议的任何适合组合。例如,网络260一般可以涵盖统一地实施因特网的各种电信网络和服务提供商。网络260还可以包括如局域网(LAN)或广域网(WAN)的专用网络以及公用或专用无线网络。例如,给定客户端250和Web服务平台200均可以分别在具有自己内部网络的企业内提供。在此类实施方案中,网络260可以包括在给定客户端250与因特网以及在因特网与Web服务平台200之间建立联网链路所需的硬件(例如,调制解调器、路由器、交换机、负载平衡器、代理服务器等)和软件(例如,协议堆栈、记账软件、防火墙/安全性软件等)。在一些实施方案中,注意,客户端250可以使用公用因特网以外的专用网络来与Web服务平台200通信。例如,客户端250可以在与数据服务系统(例如,实施数据库服务210和/或分布式数据库优化的存储服务220的系统)相同的企业内提供。在此类情况中,客户端250可以完全通过专用网络260(例如,可以使用基于因特网的通信协议但是不可公开访问的LAN或WAN)来与平台200通信。
一般来说,Web服务平台200可以被配置来实施被配置来接收并处理Web服务请求,如访问数据页(或其记录)的请求的一个或多个服务端点。例如,Web服务平台200可以包括被配置来实施特定端点以使指向该端点的基于HTTP的Web服务请求得以正确地接收和处理的硬件和/或软件。在一个实施方案中,Web服务平台200可以实施为一种服务器系统,该服务器系统被配置来从客户端250接收Web服务请求,并将其转发到实施数据库服务210、分布式数据库优化的存储服务220和/或用于处理的另一种虚拟计算服务230的系统组件。在其他一些实施方案中,Web服务平台200可被配置为实施被配置来动态地管理大型Web服务请求处理负载的负载平衡以及其他请求管理特征的多个不同系统(例如,采用簇拓扑形式)。在各种实施方案中,Web服务平台200可以被配置来支持REST式样或基于文档(例如,基于SOAP)类型的Web服务请求。
除了实施为用于客户端的Web服务请求的可寻址端点外,在一些实施方案中,Web服务平台200还可以实施各种客户端管理特征。例如,平台200可以通过例如跟踪请求客户端250的身份标识、客户端请求的数量和/或频率、代表客户端250存储或检索的数据表(或其记录)的大小、客户端250使用的总存储带宽、客户端250请求的存储类别或任何其他可测量的客户端使用参数来协调客户端使用Web服务(包括存储资源)的计量和记账。在一些实施方案中,平台200可以被配置来将客户端Web服务请求分布到其相应的数据库实例的特定数据库引擎头节点。作为简单实例,在时间1处,平台200可以将读请求分布到数据库引擎头节点1,以及在时间3处,平台可以将写请求分布到数据库引擎头节点2。平台200还可以实施财务记账和计费系统,或可以维护可被外部系统查询和处理以用于客户端使用活动的报告和计费的使用数据数据库。在某些实施方案中,平台200可以被配置来收集、监视和/或汇总各种存储服务系统运行度量,如反映从客户端250接收的请求的比率和类型、此类请求使用的带宽、此类请求的系统处理延迟、系统组件利用率(例如,存储访问系统内的网络带宽和/或存储利用率)、因请求导致的错误比率和类型、存储和请求的数据页或其记录的特点(例如,大小、数据类型等)之类的度量或任何其他适合的度量。在一些实施方案中,此类度量可以被系统管理员用于调整和维护系统组件,而在其他一些实施方案中,此类度量(或此类度量的相关部分)可以展示给客户端250以使此类客户端能够监视其对数据库服务210、分布式数据库优化的存储服务220和/或另一种虚拟计算服务230(或实施这些服务的底层系统)的使用。
在一些实施方案中,平台200还可以实施用户认证和访问控制过程。例如,对于访问特定数据库表的给定Web服务请求,平台200可以被配置来确证与该请求关联的客户端250是否获授权访问该特定数据库表。平台200可以通过例如对照与该特定数据库表关联的凭证来评估身份标识、密码或其他凭证或对照该特定时间表的访问控制列表评估对该特定数据库表的所请求的访问来确定此类授权。例如,如果客户端250对于访问该特定数据库表没有足够凭证,则平台200可以通过例如向请求客户端250返回指示错误状况的响应来拒绝对应的Web服务请求。可以由数据库服务210、分布式数据库优化的存储服务220和/或其他虚拟计算服务230将各种访问控制策略作为访问控制信息的记录或列表来存储。
注意,虽然Web服务平台200可以表示客户端250可访问实施数据库服务210的数据库系统的特征所使用的主要接口,但是它不一定表示至此类特征的唯一接口。例如,可以使用与Web服务接口不同的备选API来使提供数据库系统的企业内部的客户端能够绕过Web服务平台200。注意,在本文描述的多个实例中,分布式数据库优化的存储服务220对于向客户端250提供数据库服务的计算系统或企业系统可以是内部的,并且可以不展示给外部客户端(例如,用户或客户端应用)。在此类实施方案中,内部“客户端”(例如,数据库服务210)可以通过本地网络或专用网络来访问分布式数据库优化的存储服务220,如分布式数据库优化的存储服务220与数据库服务210之间(例如,直接经由实施这些服务的系统之间的API)的实线所示。在此类实施方案中,代表客户端250存储数据库表中使用分布式数据库优化的存储服务220可以对于这些客户端是透明的。在其他一些实施方案中,分布式数据库优化的存储服务220可以通过Web服务平台200展示给客户端250以提供除依赖于数据库管理的数据库服务210的那些应用以外的应用的数据库表或其他信息的存储。这在图2中通过Web服务平台200与分布式数据库优化的存储服务220之间的虚线图示。在此类实施方案中,分布式数据库优化的存储服务220的客户端可以通过网络260(例如,通过因特网)访问分布式数据库优化的存储服务220。在一些实施方案中,虚拟计算服务230可以被配置来从分布式数据库优化的存储服务220接收存储服务(例如直接通过虚拟计算服务230与分布式数据库优化的存储服务220之间的API)以代表客户端250存储在执行计算服务230时使用的对象。这在图2中通过虚拟计算服务230与分布式数据库优化的存储服务220之间的虚线图示。在一些情况中,平台200的记账和/或凭证核实服务对于如管理客户端的内部客户端或同一个企业内的服务组件之间可能不是必需的。
注意,在各种实施方案中,可以由数据库服务210和/或分布式数据库优化的存储服务220来实施不同的存储策略。此类存储策略的实例可以包括持久性策略(例如,指示将存储的数据库表(或其数据页)的实例的数量以及将存储它们的不同节点的数量)和/或负载平衡策略(可以跨不同节点、卷和/或磁盘分布数据库表或其数据页以尝试均衡请求通信量)。此外,可以由这些服务的各种服务将不同的存储策略应用于不同类型的存储项。例如,在一些实施方案中,分布式数据库优化的存储服务220可以实施比数据页的持久性更高的重做日志记录的持久性。
图3是图示根据一个实施方案的包括数据库引擎和单独的分布式数据库存储服务的数据库系统的各种组件的框图。在此实例中,数据库系统300包括若干数据库表中的每一个的相应数据库引擎头节点320和分布式数据库优化的存储服务310(对于数据库系统的客户端,如数据库客户端350a-350n所示,可以是或可以不是可见的)。如此实例中图示的,数据库客户端350a-350n的其中一个或多个数据库客户端可以通过网络360访问数据库头节点320(例如,头节点320a、头节点320b或头节点320c,每一个头节点是相应数据库实例的组件)(例如,这些组件可以是可网络寻址的且可以对于数据库客户端350a-350n是可访问的)。但是,在不同的实施方案中,数据库系统可以采用分布式数据库优化的存储服务310来代表数据库客户端350a-350n存储一个或多个数据库表的数据页(以及重做日志记录和/或其他与之关联的元数据),以及执行如本文描述的数据库系统的其他功能,可以是或可以不是可网络寻址的以及对于存储客户端350a-350n是可访问的或不是可访问的。例如,在一些实施方案中,分布式数据库优化的存储服务310可以采用对于存储客户端350a-350n不可见的方式执行各种存储、访问、更改记录、恢复、日志记录操作和/或空间管理操作。
正如先前提到的,每一个数据库实例可以包括单个数据库引擎头节点320,数据库引擎头节点320从各种客户端程序(例如,应用)和/或订户(用户)接收请求(例如,事务请求等),然后解析它们、优化它们并设计执行计划来执行关联的数据库操作。在图3所示的实例中,数据库引擎头节点320a的查询解析、优化和执行组件305可以对从数据库客户端350a接收并靶向以数据库引擎头节点320a为其组件的数据库实例的查询执行这些功能。在一些实施方案中,查询解析、优化和执行组件305可以向数据库客户端350a返回查询响应,该查询响应可以视情况包括写确认、请求的数据页(或其多个部分)、出错消息和/或其他响应。如本实例所示,数据引擎头节点320a还可以包括客户端存储服务驱动程序325,客户端存储服务驱动程序325可以将读请求和/或重做日志记录(例如来自写)路由到分布式数据库优化的存储服务310内的各种存储节点,从分布式数据库优化的存储服务310接收写确认,从分布式数据库优化的存储服务310接收请求的数据页,和/或将数据页、出错消息或其他响应返回到查询解析、优化和执行组件305(查询解析、优化和执行组件305进而可以将它们返回到数据库客户端350a)。
在此实例中,数据库引擎头节点320a包括数据页缓存335,最近访问的数据页可以临时性地保存在该数据页缓存335中。如图3所示,数据库引擎头节点320a还可以包括事务和一致性管理组件330,事务和一致性管理组件330可以负责提供数据库引擎头节点320a为其组件的数据库实例中的事务性和一致性。例如,此组件可以负责确保该数据库实例以及指向该数据库实例的事务的原子性、一致性和隔离性属性。例如,数据库服务的数据库引擎头节点可以接收执行读数据库服务存储的记录的读请求。另一个数据库引擎头节点可能接收到对记录执行事务(例如,写等)的事务请求。接收到读请求的数据库引擎头节点的事务和一致性管理组件330则可以基于确定与读关联的时间指示在与事务关联的第二时间指示的阈值内而检测到潜在的读异常(例如,不可重复读(fuzzy read)、读偏斜(read skew)等)。响应检测到潜在的读异常,可以在该事务请求指定的事务之后执行读,而无论第一时间指示是否指示比第二时间指示早的时点。在一些实例中,可以重试读,以使对于重试不会出现潜在的读异常。
如图3所示,数据库引擎头节点320a还可以包括事务日志340和撤销日志345,事务日志340和撤销日志345可以被事务和一致性管理组件330用于跟踪各种事务的状态以及回滚未落实的事务的任何本地缓存的结果。
注意,图3所示的其他数据库引擎头节点320中的每一个(例如,320b和320c)可以包括类似的组件,并且可以对数据库客户端350a-350n中一个或多个数据库客户端接收的且指向这些数据库引擎头节点是其组件的相应数据库实例的查询和/或其他事务执行类似的功能。例如,在两个不同数据库引擎头节点正在阈值时间量内访问(例如,一个读、一个写)相同的数据的情形中可以实施所公开的事务定序技术,如本文描述。
图4中的框图图示分布式数据库优化的存储系统的一个实施方案。在此实例中,数据库系统400包括分布式数据库优化的存储系统410,分布式数据库优化的存储系统410通过互连460与数据库引擎头节点420通信。与图3所示的实例一样,数据库引擎头节点420可以包括客户端存储服务驱动程序425。在此实例中,分布式数据库优化的存储系统410包括多个存储系统服务器节点(包括示出为430、440和450的存储系统服务器节点),每一个存储系统服务器节点包括用于数据页的存储和其存储的片段的重做日志,以及被配置来执行各种片段管理功能的硬件和/或软件。例如,每一个存储系统服务器节点可以包括被配置来执行如下操作中任一个或全部的至少部分的硬件和/或软件:复制(本地复制,例如复制在存储节点内)、合并重做日志以生成数据页、日志管理(例如,操作日志记录)、崩溃恢复和/或空间管理(例如,片段的空间管理)。每一个存储系统服务器节点还可以具有多个连接的存储装置(例如,SSD),可以代表客户端(例如,用户、客户端应用和/或服务器服务订户)将数据块存储在这些连接的存储装置上。
在图4所示的实例中,存储系统服务器节点430包括数据页433、片段重做日志435、片段管理功能437和连接的SSD 471-478。还要注意,标记“SSD”可以是指或可以不是指固态硬盘驱动器,但是可以更广义地是指本地块存储卷,而无论其底层硬件。相似地,存储系统服务器节点440包括数据页443、片段重做日志445、片段管理功能447以及连接的SSD 481-488;以及存储系统服务器节点450包括数据页453、片段重做日志455、片段管理功能457和连接的SSD491-498。
在一些实施方案中,分布式数据库优化的存储系统中的每一个存储系统服务器节点可以实施节点服务器的操作系统上运行的管理与数据库引擎头节点的通信以例如接收重做日志、回送数据页等的一组进程。在一些实施方案中,可以将写入到分布式数据库优化的存储系统的所有数据块备份到长期和/或归档存储(例如,远程键值持久性备份存储系统)中。
图5是图示根据一个实施方案的在数据库系统中使用单独的分布式数据库优化的存储系统的框图。在此实例中,一个或多个客户端进程510可以将数据存储到包括数据库引擎520和分布式数据库优化的存储系统530的数据库系统维护的一个或多个数据库表中。在图5所示的实例中,数据库引擎520包括数据库层级组件560和客户端驱动程序540(客户端驱动程序540用作分布式数据库优化的存储系统530与数据库层级组件560之间的接口)。在一些实施方案中,数据库层级组件560可以执行如图3的查询解析、优化和执行组件305和事务和一致性管理组件330(例如,事务定序)执行的那些功能之类的功能,和/或可以存储数据页、事务日志和/或撤销日志(如图3的数据页缓冲335、事务日志340和撤销日志345存储的那些)。
在此实例中,一个或多个客户端进程510可以将数据库查询请求515(其可包括以存储节点535a-535n的一个或多个存储节点上存储的数据为目标的读和/或写和/或其他事务请求)发送到数据库层级组件560,并且可以从数据库层级组件560接收数据库查询响应517(例如,包括写确认和/或请求的数据的响应)。可以解析并优化包括写数据页的请求的每一个数据库查询请求515以生成一个或多个写记录请求541,可以将一个或多个写记录请求541发送到客户端驱动程序540以便后续路由到分布式数据库优化的存储系统530。在此实例中,客户端驱动程序540可以生成与每一个写记录请求541对应的一个或多个重做日志记录531,并且可以将其发送到分布式数据库优化的存储系统530的存储节点535中特定一个存储节点。分布式数据库优化的存储系统530可以将每一个重做日志记录531的对应写确认532返回到数据库引擎520(确切地来说,返回到客户端驱动程序540)。客户端驱动程序540可以将这些写确认传递到数据库层级组件560(作为写响应542),数据库层级组件560则可以将对应的响应(例如,写确认)作为数据库查询响应517之一发送到一个或多个客户端进程510。
在此实例中,可以解析并优化包括读数据页的请求的每一个数据库查询请求515以生成一个或多个读记录请求543,可以将一个或多个读记录请求543发送到客户端驱动程序540以便后续路由到分布式数据库优化的存储系统530。在此实例中,客户端驱动程序540可以将这些请求发送到分布式数据库优化的存储系统530的存储节点535中特定一个存储节点,以及分布式数据库优化的存储系统530可以将所请求的数据页533返回到数据库引擎520(确切地来说,返回到客户端驱动程序540)。客户端驱动程序540可以作为返回数据记录544将返回的数据页发送到数据库层级组件560,以及数据库层级组件560则可以将这些数据页作为数据库查询响应517发送到一个或多个客户端进程510。
在一些实施方案中,可以将各种出错和/或数据丢失消息534从分布式数据库优化的存储系统530发送到数据库引擎520(确切地来说,发送到客户端驱动程序540)。可以将这些消息作为出错和/或丢失报告消息545从客户端驱动程序540传递到数据库层级组件560,然后连同(或替代)数据库查询响应517传递到一个或多个客户端进程510。
在一些实施方案中,分布式数据库优化的存储系统530的API531-534和客户端驱动程序540的API 541-545可以将分布式数据库优化的存储系统530的功能性展示给数据库引擎520,如同数据库引擎520是分布式数据库优化的存储系统530的客户端一样。例如,数据库引擎520(通过客户端驱动程序540)可以通过API写重做日志记录或请求数据页以执行(或协助执行)数据库引擎520和分布式数据库优化存储系统530的组合实施的数据库系统的各种操作(例如,存储、访问、更改记录、恢复和/或空间管理操作)。正如图5所示,分布式数据库优化的存储系统530可以将数据块存储在存储节点535a-535n上,存储节点535a-535n中的每一个可以具有多个连接的SSD。在一些实施方案中,分布式数据库优化的存储服务530可以通过各种类型的冗余性方案的应用来为存储的数据块提供高持久性。
注意,在各种实施方案中,图5中的数据库引擎520与分布式数据库优化的存储系统530(例如,API 531-534)之间的API调用和响应和/或客户端驱动程序540与数据库层级组件560之间的API调用和响应(例如,API 541-545)可以通过安全代理连接来执行(例如,网关控制面管理的安全代理连接)或可以通过公用网络或作为备选通过如虚拟专用网(VPN)连接的专用通道来执行。至本文描述的数据库系统的多个组件和/或其之间的这些和其他API可以根据不同的技术来实施,包括但不限于,简单对象访问协议(SOAP)技术和表示状态传输(REST)技术。例如,这些API可以但不一定作为SOAP API或RESTful API来实施。SOAP是一种用于在基于Web的服务的场景中交换信息的协议。REST是用于分布式超媒体系统的架构式样。RESTful API(也可以称为RESTful web服务)是使用HTTP和REST技术实施的Web服务API。在一些实施方案中,可以使用各种语言将本文描述的API与客户端库封装(wrapped),这些语言包括但不限于C、C++、Java、C#和Perl,以支持与数据库引擎520和/或分布式数据库优化的存储系统530的集成。
如上文提到的,在一些实施方案中,可以将数据库系统的功能组件在由数据库引擎执行的功能组件和在单独的分布式数据库优化的存储系统执行的功能组件之间分配。在一个特定实例中,响应于从客户端进程(或其线程)接收到将某个项插入到数据库表中(例如,通过对该数据块添加记录来更新单个数据块)的请求,数据库引擎头节点的一个或多个组件可以执行查询解析、优化和执行,并且可以将查询的每一个部分发送到事务和一致性管理组件。
该事务和一致性管理组件可以确保没有其他客户端进程(或其线程)在同时尝试修改同一个行。例如,该事务和一致性管理组件可以负责确保此更改原子性地、一致性地、持久性地以及在数据库中以隔离的方式被执行。例如,该事务和一致性管理组件可以与数据库引擎头节点的客户端存储服务驱动程序一起工作以生成要发送到分布式数据库优化的存储服务中的节点之一的重做日志记录,并且按次序和/或按确保此事务满足ACID属性的定时将其(连同响应于其他客户端请求生成的其他重做日志)发送到分布式数据库优化的存储服务。在接收重做日志记录时,对应的存储节点可以更新数据块,并且可以更新该数据块的重做日志(例如,指向该数据块的所有更改的记录)。在一些实施方案中,数据库引擎可以负责生成此更改的重做记录,并且还可以负责生成撤销日志的重做日志记录,二者均可以在本地(在数据库层级中)使用来确保事务性。再者,在各种实施方案中,事务和一致性管理组件可以被配置来执行事务定序。例如,事务和一致性管理组件可以被配置来在多个数据库引擎头节点在大致相同的时间(例如,彼此阈值内的一致性时点)尝试执行事务(例如,读和落实)的情况中检测潜在的读异常(例如,不可重复读(fuzzy read)、读偏斜(readskew)等)。响应于检测到潜在的读异常,该事务和一致性管理组件还可以被配置来促使该读在其他事务之后进行,即使是该读与更早时间关联。
现在转到图6,在各种实施方案中,数据库系统300(或无法读、写和存储数据的数据库服务以外的某个系统)可以被配置来执行事务定序。虽然图6的方法可以描述为由分布式数据库系统的各种组件(例如,节点),如事务和一致性管理330和/或数据库引擎节点320a、320b、320c等的客户端驱动程序来执行,但是在一些情况中,该方法无需由任何特定的组件来执行。例如,在一些情况中,根据一些实施方案,图6的方法可以由某个其他组件或计算机系统来执行。或者,在一些情况中,数据库系统300的组件可以采用与图3的实例中所示不同的方式组合或存在。在各种实施方案中,图6的方法可以由分布式数据库系统的一个或多个节点来执行,该一个或多个节点的其中之一如图8的计算机系统所示。图6的方法示出为用于事务定序的方法的一个示例性实施。在其他实施中,图6的方法可以包括比示出的更多或更少的块。
在610处,可以例如从(例如数据库服务或其他服务的)一个或多个客户端接收到要执行读记录(例如,数据库服务或某个其他服务存储的记录)的读请求和对该记录执行事务的事务请求。在一个实施方案中,读请求可以作为SELECT语句或某个其他请求来接收。读请求还可以称为无法查看记录的快照的快照时点的请求。事务请求可以是UPDATE、INSERT或无法修改记录(例如数据库的记录)且可以落实的某个其他事务(例如,写事务)。在各种实施方案中,事务请求和读请求可以被可能对正在存储的记录具有同时访问权的不同节点(例如,能够读/写的主节点和/或此时只能读记录的主节点和读副本)接收。例如,在一个实施方案中,图2的Web服务平台200可以接收读请求和事务请求,并将它们路由到不同的数据库实例的不同节点。注意,虽然上文图1-5处的实例描述的是单独的数据库和存储层级,但是在其他实例中,存储层级可以不与数据库实例分开。并且,在其他实例中,该系统可以不是数据库服务,而可以是能够执行所存储的数据的读和写的另一种系统。再者,注意作为写方的两个节点可以在它们之间具有锁定。但是,作为读方的节点和作为写方的节点可以在它们之间没有锁定,以允许并发性。
在一个实施方案中,各种节点可以维护可用于事务定序的每一个节点时钟。可以在节点之间对这些时钟进行同步,这些时钟可以彼此内有+/-δ的精确度。因为多节点系统中,这些时钟可以具有非零精确度,所以大约同时的事件可能发生,并且可能难以精确地定序(因果关系)并且可能难以保持特定的隔离性级别。例如,读一致性隔离性级别可以包括如下属性:在语句的起始时间处,存在一个时点,在该时点处看到来自另一个节点落实的任何项,在该时点看不到尚未落实的来自另一个节点的更改,以及来自该节点本身的更改能够被看到而无论是否已落实。给定两个时间A和B,可能发生如下三种情形:A<B(A在B之前发生);A>B:A在B之后发生;以及A≈B(A大致与B同时发生,从而A和B在δ的精确度窗口内)。
在一些实施方案中,通过时钟维持的时间可以是时间戳(例如,2012年,15日,20:00.35GMT)以及在其他一些实施方案中,时间可以是指示时间的单调增加值,如日志序列号(“LSN”)。此值可以在发生系统节点之间的通信时增加。在LSN实例中,因为这些值单调地增加,所以LSN 100可以指示比LSN 105更早的时点。注意,在LSN时间空间中,每一个数值不一定被使用。因此,在一个实例中,LSN100和105可能是两个最靠近指定的LSN。在另一个实例中,可以使用LSN 100-105中的每一个。
如图中620处所示,第一和第二时间指示可以分别与读和事务关联。例如,在一些实施方案中,在接收到请求(例如,事务、读等)时,接收到该请求的节点可以基于头节点的相应时钟对事务指定一个或多个时间。例如,头节点可能在LSN 100处接收到读请求,并且可以指定100的一致性时点(快照时间)Ts。Ts可以表示何时快照时间被创建。作为另一个实例,头节点(例如,不同的头节点)可能在LSN 101处接收到更新表的请求。该节点可在LSN102处更新表,然后在LSN103处落实更新。在此类实例中,该节点可以指定103的落实时间Tc,其表示何时事务被落实。注意,还可以指定与事务关联的其他时间。例如,除了Tc外,Tw可以是另一个时间,其可以与写关联。Tw可以表示紧随要修改的最后一页被开锁(unlatched)(例如,释放/解锁该页)之后的时间,并且可以由接收到该事务请求的头节点来指定。作为另一个实例,除了Ts外,Tr可以是另一个时间,其可以与读关联。Tr可以表示紧随第一个数据页被锁存(latched)之后的时间,并且可以由接收到该读请求的头节点来指定。
如在630处所示,可能检测到潜在的读异常。在一个实施方案中,在框630处,接收到该读请求(并执行读)的头节点可以执行该检测。在一些实施方案中,此类检测可以基于确定第一时间指示(例如,Ts和/或Tr)在第二时间指示(例如,Tc和/或Tw)的阈值(例如,精确度窗口δ)。可能发生各种潜在的读异常。例如,当更新和(重)读几乎同时发生并导致相同记录的不同值读数时,可能发生不可重复读。在使用5的δ的表1的实例中,读正确地执行,因为它通过将落实处理为在读的一致性点之前发生而读取正确的值。图7A中以图形图示表1的实例。
表1
表2实例中示出和图7B中图示一种不可重复读,其中也使用5的δ。在该不可重复读中,读事务在LSN 101处读值(1),然后在同一个记录的LSN 104处看到第二次读的不同值(10)。正如本文描述,所公开的技术可以检测表2的潜在的不可重复读并调整该读,以使不可重复读不会实际地发生。
表2
注意,如果将这些操作串行化(例如,对客户端串行化),则不会发生表2的不可重复读,因为更新将在第一次读该行之前进行。
另一种异常是读偏斜,这是读出(例如,多个不同记录的)不一致数据的情况。考虑表3的实例(如图7C所示),以及δ为5。在表3以及图7C的实例中,数据表具有不变式X=2Y且初始值为X=1和Y=2。如图所示,在LSN 101处对X读出初始值1,但是在LSN 104处读出Y的更新值为20,这与X=2Y不一致。
表3
在一些实施方案中,在落实时间Tc位于读一致性点Ts的精确度窗口(δ)内的情况下可以检测到潜在的读异常。本文中使用潜在的读异常来指示存在读异常发生的可能性,但是注意潜在的读异常不一定意味着读异常将肯定地发生。相应地,如果存在读异常的可能性,则系统可以检测到它,并尝试避免该潜在的读异常,如下文框640处描述。
如上文提到的,在一些实施方案中,同样地,Tc和Ts以外的时间可以与读和/或其他事务关联。例如,在使用Tw的实施方案中,如果Tc>Ts,则事务所做的修改未被读看到,并且可能不会发生异常读。如果Tc<Ts,则事务所做的修改被该读看到。如果Tc≈Ts和Tw<Ts,则事务所做的修改在读之前做出,所以没有潜在的读异常。事务所做的更改被该读看到。否则,如果Tc≈Ts和Tw≈Ts,则存在潜在的读异常。
在一些实施方案中,还可以使用Tr来检测潜在的读异常。在此类实施方案中,如果Tc>Ts,则事务所做的修改未被读看到,并且可能不会发生异常读。如果Tc<Ts,则事务所做的修改被该读看到。如果Tc≈Ts和Tw<Tr,则事务所做的修改在读之前做出,所以没有潜在的读异常。否则,如果Tc≈Ts和Tw≈Tr,则存在潜在的读异常且可以在框630处被检测到。
注意,在一些实施方案中,读偏斜和不可重复读可能仅在第一页锁存之后发生。相应地,检索单个记录的语句可能不会遇到此类异常。因此,在一些实施方案中,框630的检测逻辑可以仅对多个记录检索执行(无论是相同记录的多次检索还是多个不同记录的检索)。
如在640处所示,响应于所述检测到潜在的读异常,接收到读请求的节点可以促成该读请求指定的读在事务请求指定的事务之后执行,而不考虑第一时间指示是否指示早于第二时间指示的时点。
在一些实施方案中,促使读在事务之后执行可以包括接收到读请求的节点重试读,以使与重试读关联的重试时间指示比第一时间指示晚的时间。例如,如果检测到潜在的不可重复读或读偏斜,则可以通过保持Ts而将Tr复位(例如,将Tr在时间上提前)来重试读语句。通过对重试保持Ts,可以实施提前进度,因为随着Tr被提前,事务和读最终可以落在比较逻辑的已知情况之一中(例如,将不会发生潜在的读异常的情况)。
注意,在一个实施方案中,对于重试,可以以重试时间(更新的Tr)替代先前的Tr再次应用框630的检测逻辑。相应地,如果重试成功,则检测逻辑将确定对于重试的读未发生读异常。例如,使用更新的Tr可以促使检测逻辑确定重试落在不可能出现异常读的范围之一内(例如,Tc≈Ts和Tw<Tr),并且重试将在没有异常读的情况下进行。另一方面,可能发生另一个潜在异常读,使得另一次重试时,时间上将另一次重试进一步提前。检测逻辑的应用,确定存在潜在异常读以及重试语句可以进行任何次,直到重试成功为止。或者,在一些实施方案中,该节点可以在返回出错消息之前重试该语句某个最大次数(例如,2、3、10次等),附有此出错消息的实际读值指示该读可能不精确。
在一个实施方案中,可以修改阈值。例如,基于系统中已经发生的事务的重试频度,可以修改阈值。作为一个实例,如果频繁地重试发生,则可以将阈值降低到更保守的级别。相似地,阈值可以被增大。
在一些实施方案中,框620、630和640可以对包括多次记录检索的读请求进行,无论是多次读相同记录还是读多个不同记录。因此,在此类实施方案中,读异常的检查可以对多次记录检索执行但是不对单次记录检索执行。相应地,第一次读可以是自由读,因为如果仅在执行一次读,则读偏斜或不可重复读是不可能的(因为这些读异常的定义包括与第一次读不一致的第二次读)。因此,在一些实施方案中,当处理一次记录检索的读请求和位于彼此的精确度窗口(阈值)内的事务请求时,系统可以不总是应用图6的方法。
在一些实施方案中,接收到读请求的节点可以知道另一个节点接收到写请求以及正在更新该记录。例如,该系统可以包括确定其他节点知道对数据的更改的底层子结构。示例底层子结构包括缓存融合(例如,相对于相应数据页缓存335或一些其他缓存的Web服务平台200级别)或共享磁盘。在一个实施方案中,一致性缓存可以设在公用存储的顶部(例如,存储层级)。该一致性缓存可以确保在节点写入某个项的情况下另一个节点将看到它。在一个实施方案中,可以将各种时间指示存储在事务表中。例如,可以自落实时间起将Tw与事务落实时间一起存储,并且每次写入值时,可以生成事务标识符。该事务标识符可以指示给定事务处于进行中还是已落实。如果对于给定记录,事务正在进行中,则执行读该记录的节点可以生成该记录的先前值(例如,回滚、撤销等)。
在各种实施方案中,本文描述的方法可以通过硬件和软件的任何组合来实施。例如,在一个实施方案中,这些方法可以由计算机系统(例如,图8中的计算机系统)来实施,该计算机系统包括一个或多个处理器,该一个或多个处理器执行存储在耦合到这些处理器的计算机可读存储介质上的程序指令。这些程序指令可以被配置来实施本文描述的功能性(例如,实施本文描述的服务/系统和/或存储服务/系统的各种服务器和其他组件的功能性)。
所公开的事务定序技术可以为客户提供强且易理解的隔离性级别。这些技术可以改善系统的可伸缩性,因为快照(读)创建可以快速且无需任何网络通信。而且,事务不重叠的工作还可以向外扩展。单元集合(Singleton)行检索可以快速,因为这些读可以是自由的而无需执行读异常检测逻辑。在(例如,通过除了Tc和Ts外还考虑Tr和/或Tw)使用细调的精确度窗口的实施方案中,语句重试的概率得以降低。
图8是图示根据各种实施方案的被配置来实施本文描述的系统的至少一部分的计算机系统的框图。例如,在不同实施方案中,计算机系统800可以被配置来实施(例如,数据库层级或相当的系统的)节点或代表客户端存储记录和关联的元数据的多个存储节点。计算机系统800可以是各种类型的设备中的任一种,包括但不限于,个人计算机系统、桌上型计算机、膝上型或笔记本计算机、主机计算机系统、手持计算机、工作站、网络计算机、消费设备、应用服务器、存储设备、电话、移动电话或一般任何类型的计算设备。
计算机系统800包括经由输入/输出(I/O)接口830耦合到系统存储器820的一个或多个处理器810(这些处理器中任一个可以包括多个核,这些核可以包括单线程或多线程的)。计算机系统800还包括耦合到I/O接口830的网络接口840。在各种实施方案中,计算机系统800可以是包括一个处理器810的单个处理器系统,或包括若干处理器810(例如,两个、四个、八个或其他适合数量)的多处理器系统。处理器810可以是能够执行指令的任何适合的处理器。例如,在各种实施方案中,处理器810可以是实施各种指令集架构(ISA)中的任何一个,如x86、PowerPC、SPARC或MIPS ISA或任何其他适合ISA的通用或嵌入式处理器。在多处理器系统中,每一个处理器810可以通用地但并非必需地实施相同的ISA。计算机系统800还包括一个或多个网络通信设备(例如网络接口840),用于通过通信网络(例如,因特网、LAN等)与其他系统和/或组件通信。例如,系统800上执行的客户端应用可以使用网络接口840来与实施本文描述的数据库系统的一个或多个组件的单个服务器上或服务器簇上执行的服务器应用通信。在另一个实例中,计算机系统800上执行的服务器应用的实例可以使用网络接口840来与可在其他计算机系统(例如,计算机系统890)上实施的服务器应用(或另一种服务器应用)的其他实例通信。
在图示的实施方案中,计算机系统800还包括一个或多个永久性存储设备860和/或一个或多个I/O设备880。在各种实施方案中,永久性存储设备860可以对应于磁盘驱动器、磁带驱动器、固态存储器、其他海量存储设备或任何其他永久性存储设备。计算机系统800(或其上的分布式应用或操作系统)可以按期望将指令和/或数据存储在永久性存储设备860中,并且可以按需检索存储的指令和/或数据。例如,在一些实施方案中,计算机系统800可以托管存储系统服务器节点,以及永久性存储860可以包括连接到该服务器节点的SSD。
计算机系统800包括被配置来存储处理器810可访问的指令和数据的一个或多个系统存储器820。在各种实施方案中,系统存储器820可以使用任何适合的存储器技术来实施(例如,高速缓存、静态随机存取存储器(SRAM)、DRAM、RDRAM、EDO RAM、DDR 10RAM、同步动态RAM(SDRAM)、Rambus RAM、EEPROM、非易失性/闪存型存储器或任何其他类型的存储器)。系统存储器820可以包括可被处理器810执行以实施本文描述的方法和技术的程序指令825。在各种实施方案中,程序指令825可以采用平台本地二进制、如JavaTM字节代码或采用任何其他语言,如C/C++、JavaTM等或其任何组合来进行编码。例如,在图示实施方案中,程序指令825包括可执行以实施数据库层级的数据库引擎头节点的功能性的程序指令,在不同实施方案中包括可执行以实施代表数据库层级的客户端存储数据库表和关联的元数据的单独分布式数据库优化的存储系统的多个存储节点之一的功能性的程序指令。在一些实施方案中,程序指令825可以实施多个单独的客户端、服务器节点和/或其他组件。
在一些实施方案中,程序指令825可以包括可执行以实施操作系统(未示出)的指令,该操作系统可以是各种操作系统中的任一种,如UNIX、LINUX、SolarisTM、MacOSTM、WindowsTM等。程序指令825中任一个或全部可以作为计算机程序产品或软件来提供,计算机程序产品或软件可以包括其上存储有指令的非暂态计算机可读存储介质,这些指令可以用于对计算机系统(或其他电子设备)编程以执行根据各种实施方案的过程。非暂态计算机可读存储介质可以包括用于以机器(例如,计算机)可读的形式(例如,软件、处理应用)来存储信息的任何机构。一般来说,非暂态计算机可访问介质可以包括经由I/O接口830耦合到计算机系统800的计算机可读存储介质或存储器介质,如磁介质或光介质,例如磁盘或DVD/CD-ROM。非暂态计算机可读存储介质还可以包括可以作为系统存储820或另一种类型的存储器包括在计算机系统800的一些实施方案中的任何易失性或非易失性介质,如RAM(例如,SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等。在其他一些实施方案中,程序指令可以使用经由如网络和/或无线链路(如可通过网络接口840来实施)的通信介质载送的光、声音或其他形式的传播信号(例如,载波、红外线信号、数字信号等)来传送。
在一些实施方案中,系统存储器820可以包括数据存储845(其可按本文描述的来配置)。例如,在不同时间以及在各种实施方案中,本文描述为由数据库层级来存储(例如,存储在数据库引擎头节点上)的信息,如事务日志、重做日志、缓存的页数据或执行本文描述的数据库层级的功能时使用的其他信息,可以存储在数据存储845中或存储在一个或多个节点上的系统存储器820的另一个部分中,永久性存储860中和/或一个或多个远程存储设备870上。相似地,在不同时间以及在各种实施方案中,本文描述为由存储层级来存储的信息(例如,重做日志记录、合并的数据页和/或执行本文描述的分布式存储系统的功能时使用的其他信息)可以存储在数据存储845中或存储在一个或多个节点上的系统存储器820的另一个部分中,永久性存储860中和/或一个或多个远程存储设备870上。一般,系统存储器820(例如,系统存储器820内的数据存储845)、永久性存储860和/或远程存储870可以存储数据块、数据块的副本、与数据块关联的元数据和/或其状态、数据库配置信息和/或实施本文描述的方法和技术时可使用的任何其他信息。
在一个实施方案中,I/O接口830可以被配置来协调处理器810、系统存储器820和系统中的任何外设之间的I/O通信量,包括经由网络接口840或其他外设接口。在一些实施方案中,I/O接口830可以执行任何必需的协议、定时或其他数据转换以将数据信号从一个组件(例如系统存储器820)转换成适于另一个组件(例如,处理器810)使用的格式。在一些实施方案中,I/O接口830可以包括对通过各种类型的外设总线(例如外设组件互连(PCI)总线标准或通用串行总线(USB)标准的变体)连接的设备的支持。在一些实施方案中,I/O接口830的功能可以分拆成两个或更多个单独组件,例如,北桥和南桥。再有,在一些实施方案中,I/O接口830中的一些或全部功能性,如至系统存储器820的接口,可以直接并入到处理器810中。
例如,网络接口840可以被配置来允许在计算机系统800与连接到网络的其他设备,如其他计算机系统890(其可以实施本文描述的一个或多个存储系统服务器节点、数据库引擎头节点和/或数据库系统的客户端)之间交换数据。此外,网络接口840可以被配置来允许计算机系统800与各种I/O设备850和/或远程存储870之间的通信。在一些实施方案中,输入/输出设备850可以包括一个或多个显示终端、键盘、小键盘、触摸板、扫描设备、语音或光学识别设备或适于一个或多个计算机系统800输入或检索数据的任何其他设备。计算机系统800中可以存在多个输入/输出设备850或可以将多个输入/输出设备850分布在包括计算机系统800的分布式系统的多个不同节点上。在一些实施方案中,相似的输入/输出设备可以与计算机系统800分开,并且可以通过有线或无线连接,如通过网络接口840与包括计算机系统800的分布式系统的一个或多个节点交互。网络接口840可以通用地支持一个或多个无线联网协议(例如,Wi-Fi/IEEE 802.11或另一种无线联网标准)。但是,在各种实施方案中,网络接口840可以支持通过任何适合的有线或无线通用数据网络,如其他类型的以太网进行的通信。此外,网络接口840可以支持通过电信/电话网络(如模拟语音网络或数字光纤通信网络)、通过存储区域网络(如光纤通道SAN)或通过任何其他适合类型的网络和/或协议进行的通信。在各种实施方案中,计算机系统800可以包括比图8所示那些更多、更少或与之不同的组件(例如,显示器、视频卡、音频卡、外设、其他网络接口如ATM接口、以太网接口、帧中继接口等)。
注意,本文描述的分布式系统实施方案中任一个或其组件中任一个可以作为一个或多个Web服务来实施。例如,数据库系统的数据库层级内的数据库引擎头节点可以作为Web服务向客户端提供采用本文描述的分布式存储系统的数据库服务和/或其他类型的数据存储服务。在一些实施方案中,可以通过设计成支持通过网络的可互操作机器对机器交互的软件和/或硬件系统来实施Web服务。Web服务可以具有以机器可处理格式,如Web服务描述语言(WSDL)描述的接口。其他系统可以采用Web服务的接口描述规范的方式与该Web服务交互。例如,该Web服务可以定义其他系统可以调用的各种操作,并且可以定义其他系统可在请求各种操作时预期到与之相符的特定应用编程接口(API)。
依据如下条款可以更好地理解前文:
1.一种系统,其包括:
多个计算节点,所述多个计算节点中的每一个包括至少一个处理器和存储器,其中所述多个计算节点被配置来统一地实施数据库服务;
其中所述多个计算节点的第一节点被配置来:
接收指向数据库表中特定数据页的特定数据记录的写请求,其中所述写请求指定要对所述特定数据记录做出的修改,并为所述写请求指定落实时间,其中所述落实时间指示要落实所述修改的时间;以及
其中所述多个计算节点的第二节点被配置来:
接收在所述数据库表中读取所述特定数据页的读请求,并为所述读请求指定读一致性点时间,其中所述读一致性点时间指示读的一致性点,确定所述读一致性点时间在所述落实时间的精确度窗口内,并促使所述读请求的执行在所述写请求指定的所述修改被落实之后执行,而无论所述读一致性点时间是否指示早于所述落实时间的时点。
2.如条款1所述的系统,其中所述多个计算节点的所述第二节点还被配置来:
确定与所述写请求关联的写开锁时间在与所述读请求关联的读锁存时间的精确度窗口内,
其中所述促使所述读请求的执行在所述写请求指定的所述修改被落实之后执行包括:
将所述读锁存时间移到较晚的时点,并且
自所述读一致性时点起重试所述读请求。
3.如条款2所述的系统,其中所述促使所述读请求的执行在所述写请求指定的所述修改被落实之后执行还包括:
确定所移动的读锁存时间不在所述写开锁时间的所述精确度窗口内。
4.如条款1所述的系统,其中所述第一和第二节点中的每一个被配置来维护相应的时钟,所述相应的时钟被保持在彼此所述精确度窗口内,其中所述落实时间由所述第一节点确定并且其中所述读一致性时点由所述第二节点确定。
5.一种方法,其包括:
由多个计算节点执行:
从一个或多个客户端接收执行读所存储的记录的读请求以及执行对所述记录更新的更新请求;
将第一和第二时间指示分别与所述读和所述更新关联;以及
至少部分地基于所述第一时间指示在所述第二时间指示的阈值内的确定来检测潜在的读异常。
6.如条款5所述的方法,其还包括:
响应所述检测到所述潜在的读异常,促使所述读请求指定的所述读在所述更新请求指定的所述更新之后执行,而无论所述第一时间指示是否指示比所述第二时间指示早的时点。
7.如条款5所述的方法,其还包括:
自所述第一时间指示起重试所述读,以使与重试所述读关联的重试时间指示指示比所述第一时间指示晚的时间;以及
确定对于所重试的读没有发生读异常。
8.如条款5所述的方法,其中所述第二时间指示指示所述更新落实的时间。
9.如条款5所述的方法,其中所述检测所述潜在的读异常还基于第三时间指示,其中所述第三时间指示也与所述更新请求关联。
10.如条款9所述的方法,其中所述检测所述潜在的读异常还基于所述第三时间指示在第四时间指示的阈值内的确定,其中所述第四时间指示也与所述读请求关联。
11.如条款5所述的方法,其中所述读请求被所述多个节点中的第一节点接收到,其中所述更新请求被所述多个节点中的第二不同节点接收到,其中所述第一和第二节点每一个均维护相应时钟,其中与所述读关联的所述第一时间指示由所述第一节点的所述相应时钟确定,并且其中与所述更新关联的所述第二时间指示由所述第二节点的所述相应时钟确定。
12.如条款5所述的方法,其中所述潜在的读异常是潜在的不可重复读。
13.如条款5所述的方法,其中所述潜在的读异常是潜在的读偏斜。
14.如条款5所述的方法,其还包括:
至少部分地基于重试的频度修改所述阈值。
15.如条款5所述的方法,其中对包括读所述记录以及读另一个记录或第二次读所述记录的读请求执行所述检测。
16.一种存储程序指令的非暂态计算机可读存储介质,其中所述程序指令是计算机可执行的以实施数据库服务的数据库节点,其中所述数据库节点被配置来:
将第一时间指示与读请求指定的读关联,其中所述读请求指定读所述数据库服务存储的记录;
确定所述第一时间指示在第二时间指示的阈值内,其中所述第二时间指示与事务请求指定的事务关联,其中所述事务请求被不同的数据库节点接收到,其中所述事务请求指定要修改所述记录的事务;以及
促使所述读请求的执行在所述事务请求指定的所述修改被落实之后执行,而无论所述第一时间指示是否指示比所述第二时间指示早的时点。
17.如条款16所述的非暂态计算机可读存储介质,其中所述数据库节点还被配置来:
将第三时间指示与所述读关联;
确定所述第三时间指示在第四时间指示的阈值内,其中所述第四时间指示与所述事务关联;以及
其中所述促使所述读请求的执行在所述事务请求指定的所述修改被落实之后执行包括:
以更晚的时点替代所述第三时间指示,以及
自所述第一时间指示起重试所述读请求。
18.如条款17所述的非暂态计算机可读存储介质,其中所述数据库节点还被配置来:
确定所述更晚的时点不在所述第四时间指示的阈值内。
19.如条款16所述的非暂态计算机可读存储介质,其中所述第一和第二时间指示是单调增加的时间指示符。
20.如条款16所述的非暂态计算机可读存储介质,其中所述读请求是包括所述记录的多次记录检索请求。
在各种实施方案中,可通过使用包括与所述Web服务请求关联的参数和数据的消息来请求或调用Web服务。可以根据如可扩充标记语言(XML)的特定标记语言将此类消息格式化和/或可以使用如简单对象访问协议(SOAP)的协议将其封装。为了执行Web服务请求,Web服务客户端可以使用如超文本传输协议(HTTP)的基于因特网的应用层传输协议来组装包括该请求的消息,并将该消息送达到与该Web服务对应的可寻址端点(例如,统一资源定位器(URL))。
在一些实施方案中,可以使用表示状态传输(“RESTful”)技术而非基于消息的技术来实施Web服务。例如,可以通过如PUT、GET或DELETE的HTTP方法内包括的参数而非SOAP消息内封装的参数来调用根据RESTful技术实施的Web服务。
如在图中所示和本文所描述的各种方法表示方法的示例性实施方案。所述方法可以在软件、硬件或其组合中实施。任何方法的顺序可以改变,并且各个元素可以被添加、重新排序、组合、省略、修改等。
虽然上文的实施方案已相当详细地予以描述,但是可以实施大量变体和修改,正如本领域技术人员充分地了解上文公开内容后将显见到的。所附权利要求旨在解释为涵盖所有此类修改和更改,并且相应地,上文描述应视为说明性的而非限制性的。
Claims (14)
1.一种用于读取数据的系统,其包括:
多个计算节点,所述多个计算节点中的每一个包括至少一个处理器和存储器,其中所述多个计算节点被配置来统一地实施数据库服务;
其中所述多个计算节点的第一节点被配置来:
接收指向数据库表中特定数据页的特定数据记录的写请求,其中所述写请求指定要对所述特定数据记录做出的修改,以及
对所述写请求指定落实时间,其中所述落实时间指示要落实所述修改的时间;以及
其中所述多个计算节点的第二节点被配置来:
接收读取所述数据库表中的所述特定数据页的读请求,
为所述读请求指定读一致性点时间,其中所述读一致性点时间指示读的一致性点,
确定所述读一致性点时间在所述落实时间的精确度窗口内,以及
响应于确定所述读一致性点时间在所述落实时间的精确度窗口内,即使所述读一致性点时间指示比所述落实时间早的时点,也促使已经根据所述写请求被修改的所述特定数据页的读请求的执行在所述写请求指定的所述特定数据页的修改被落实之后执行。
2.如权利要求1所述的系统,其中所述多个计算节点的所述第二节点还被配置来:
确定与所述写请求关联的写解锁时间在与所述读请求关联的读锁存时间的精确度窗口内,
其中所述促使所述读请求的执行在所述写请求指定的所述修改被落实之后执行包括:
将所述读锁存时间移动到更晚的时点,以及
自所述读一致性时点起重试所述读请求。
3.如权利要求2所述的系统,其中所述促使所述读请求的执行在所述写请求指定的所述修改被落实之后执行还包括:
确定所移动的读锁存时间不在所述写解锁时间的所述精确度窗口内。
4.如权利要求1所述的系统,其中所述第一和第二节点中的每一个被配置来维护相应的时钟,所述相应的时钟被保持在彼此的所述精确度窗口内,其中所述落实时间由所述第一节点确定并且其中所述读一致性时点由所述第二节点确定。
5.一种用于读取记录的方法,其包括:
由多个计算节点执行:
从一个或多个客户端接收执行读所存储的记录的读请求以及执行对所述记录更新的更新请求;
将第一和第二时间指示分别与所述读和所述更新关联;
至少部分地基于所述第一时间指示在所述第二时间指示的阈值内的确定来检测潜在的读异常;以及
响应所述检测到所述潜在的读异常,即使所述第一时间指示指示比所述第二时间指示早的时点,也促使在对所述记录的更新完成之后执行由所述读请求指定的读。
6.如权利要求5所述的方法,其中促使在对所述记录的更新完成之后执行由所述读请求指定的读包括:
自所述第一时间指示起重试所述读,以使与重试所述读关联的重试时间指示指示比所述第一时间指示晚的时间;以及
确定对于所重试的读没有发生读异常。
7.如权利要求5所述的方法,其中所述第二时间指示指示所述更新落实的时间。
8.如权利要求5所述的方法,其中所述检测所述潜在的读异常还基于第三时间指示,其中还将所述第三时间指示与所述更新请求关联。
9.如权利要求8所述的方法,其中所述检测所述潜在的读异常还基于所述第三时间指示在第四时间指示的阈值内的确定,其中还将所述第四时间指示与所述读请求关联。
10.如权利要求5所述的方法,其中所述读请求被所述多个节点中的第一节点接收到,其中所述更新请求被所述多个节点中的第二不同节点接收到,其中所述第一和第二节点每一个均维护相应的时钟,其中与所述读关联的所述第一时间指示由所述第一节点的所述相应时钟确定,并且其中与所述更新关联的所述第二时间指示由所述第二节点的所述相应时钟确定。
11.如权利要求5所述的方法,其中所述潜在的读异常是潜在的不可重复读。
12.如权利要求5所述的方法,其还包括:
至少部分地基于重试的频度修改所述阈值。
13.如权利要求5所述的方法,其中对包括读所述记录以及读另一个记录或第二次读所述记录的读请求执行所述检测。
14.一种用于读取记录的系统,其包括:
一个或多个处理器;以及
一个或多个存储器,所述存储器具有存储在其上的程序指令,其中所述程序指令通过所述一个或多个处理器是计算机可执行的以实施数据库服务的数据库节点,其中所述数据库节点被配置来:
将第一时间指示与读请求指定的读关联,其中所述读请求指定读所述数据库服务存储的记录;
确定所述第一时间指示在第二时间指示的阈值内,其中将所述第二时间指示与事务请求指定的事务关联,其中所述事务请求被不同的数据库节点接收到,其中所述事务请求指定要修改所述记录的事务;以及
响应于确定所述第一时间指示在第二时间指示的阈值内,即使所述第一时间指示指示比所述第二时间指示早的时点,也促使修改的记录的所述读请求的执行在所述事务请求指定的对所述记录的修改被落实之后执行。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/893,004 | 2013-05-13 | ||
US13/893,004 US9760596B2 (en) | 2013-05-13 | 2013-05-13 | Transaction ordering |
PCT/US2014/037901 WO2014186396A1 (en) | 2013-05-13 | 2014-05-13 | Transaction ordering |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105393243A CN105393243A (zh) | 2016-03-09 |
CN105393243B true CN105393243B (zh) | 2020-05-08 |
Family
ID=51865627
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480039678.9A Active CN105393243B (zh) | 2013-05-13 | 2014-05-13 | 事务定序 |
Country Status (6)
Country | Link |
---|---|
US (2) | US9760596B2 (zh) |
EP (1) | EP2997490B1 (zh) |
JP (1) | JP6181290B2 (zh) |
CN (1) | CN105393243B (zh) |
CA (1) | CA2912392C (zh) |
WO (1) | WO2014186396A1 (zh) |
Families Citing this family (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8818963B2 (en) | 2010-10-29 | 2014-08-26 | Microsoft Corporation | Halloween protection in a multi-version database system |
US10977277B2 (en) | 2010-12-23 | 2021-04-13 | Mongodb, Inc. | Systems and methods for database zone sharding and API integration |
US10997211B2 (en) | 2010-12-23 | 2021-05-04 | Mongodb, Inc. | Systems and methods for database zone sharding and API integration |
US11615115B2 (en) | 2010-12-23 | 2023-03-28 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US8996463B2 (en) | 2012-07-26 | 2015-03-31 | Mongodb, Inc. | Aggregation framework system architecture and method |
US10698775B2 (en) | 2016-05-31 | 2020-06-30 | Mongodb, Inc. | Method and apparatus for reading and writing committed data |
US10346430B2 (en) | 2010-12-23 | 2019-07-09 | Mongodb, Inc. | System and method for determining consensus within a distributed database |
US11544288B2 (en) | 2010-12-23 | 2023-01-03 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US9805108B2 (en) | 2010-12-23 | 2017-10-31 | Mongodb, Inc. | Large distributed database clustering systems and methods |
US10262050B2 (en) | 2015-09-25 | 2019-04-16 | Mongodb, Inc. | Distributed database systems and methods with pluggable storage engines |
CN103107898A (zh) * | 2011-11-09 | 2013-05-15 | 阿尔卡特朗讯公司 | 用于同时发送或接收多个管理对象的方法、设备以及系统 |
US11544284B2 (en) | 2012-07-26 | 2023-01-03 | Mongodb, Inc. | Aggregation framework system architecture and method |
US11403317B2 (en) | 2012-07-26 | 2022-08-02 | Mongodb, Inc. | Aggregation framework system architecture and method |
US10872095B2 (en) | 2012-07-26 | 2020-12-22 | Mongodb, Inc. | Aggregation framework system architecture and method |
US9195712B2 (en) | 2013-03-12 | 2015-11-24 | Microsoft Technology Licensing, Llc | Method of converting query plans to native code |
US9922086B1 (en) * | 2017-01-06 | 2018-03-20 | Amazon Technologies, Inc. | Consistent query of local indexes |
US9760596B2 (en) | 2013-05-13 | 2017-09-12 | Amazon Technologies, Inc. | Transaction ordering |
US10474645B2 (en) * | 2014-02-24 | 2019-11-12 | Microsoft Technology Licensing, Llc | Automatically retrying transactions with split procedure execution |
US10671594B2 (en) * | 2014-09-17 | 2020-06-02 | Futurewei Technologies, Inc. | Statement based migration for adaptively building and updating a column store database from a row store database based on query demands using disparate database systems |
US9626119B2 (en) * | 2014-11-14 | 2017-04-18 | Intel Corporation | Using counters and a table to protect data in a storage device |
US9830342B2 (en) * | 2014-11-20 | 2017-11-28 | International Business Machines Corporation | Optimizing database deduplication |
US10185736B2 (en) * | 2015-04-27 | 2019-01-22 | Microsoft Technology Licensing, Llc | Replicable differential store data structure |
JP6563111B2 (ja) | 2015-07-10 | 2019-08-21 | アビニシオ テクノロジー エルエルシー | 分散型データベースシステムを用いるネットワーク内でデータベースアクセス制御を提供する方法及びアーキテクチャ |
US9390154B1 (en) | 2015-08-28 | 2016-07-12 | Swirlds, Inc. | Methods and apparatus for a distributed database within a network |
US10747753B2 (en) | 2015-08-28 | 2020-08-18 | Swirlds, Inc. | Methods and apparatus for a distributed database within a network |
US10673623B2 (en) | 2015-09-25 | 2020-06-02 | Mongodb, Inc. | Systems and methods for hierarchical key management in encrypted distributed databases |
US10846411B2 (en) | 2015-09-25 | 2020-11-24 | Mongodb, Inc. | Distributed database systems and methods with encrypted storage engines |
US11240334B2 (en) | 2015-10-01 | 2022-02-01 | TidalScale, Inc. | Network attached memory using selective resource migration |
US10452681B1 (en) | 2015-11-30 | 2019-10-22 | Amazon Technologies, Inc. | Replication group pools for fast provisioning |
US10733201B1 (en) | 2015-11-30 | 2020-08-04 | Amazon Technologies, Inc. | Dynamic provisioning for data replication groups |
US10489230B1 (en) * | 2015-12-02 | 2019-11-26 | Amazon Technologies, Inc. | Chaining log operations in data replication groups |
US11640410B1 (en) | 2015-12-02 | 2023-05-02 | Amazon Technologies, Inc. | Distributed log processing for data replication groups |
US10567499B1 (en) | 2015-12-02 | 2020-02-18 | Amazon Technologies, Inc. | Unsupervised round robin catch up algorithm |
US10924543B1 (en) | 2015-12-18 | 2021-02-16 | Amazon Technologies, Inc. | Deployment strategy for maintaining integrity of replication groups |
US10795881B2 (en) | 2015-12-18 | 2020-10-06 | Sap Se | Table replication in a database environment |
US10235440B2 (en) | 2015-12-21 | 2019-03-19 | Sap Se | Decentralized transaction commit protocol |
US10572510B2 (en) * | 2015-12-21 | 2020-02-25 | Sap Se | Distributed database transaction protocol |
US10152527B1 (en) * | 2015-12-28 | 2018-12-11 | EMC IP Holding Company LLC | Increment resynchronization in hash-based replication |
US10776220B2 (en) | 2016-06-27 | 2020-09-15 | Mongodb, Inc. | Systems and methods for monitoring distributed database deployments |
US10521311B1 (en) | 2016-06-30 | 2019-12-31 | Amazon Technologies, Inc. | Prioritized leadership for data replication groups |
US10565227B1 (en) | 2016-08-31 | 2020-02-18 | Amazon Technologies, Inc. | Leadership lease protocol for data replication groups |
US11150995B1 (en) | 2016-09-13 | 2021-10-19 | Amazon Technologies, Inc. | Node placement for replication groups |
LT3539026T (lt) | 2016-11-10 | 2022-03-25 | Swirlds, Inc. | Būdai ir aparatas paskirstytajai duomenų bazei, apimančiai anonimines įvestis |
AU2017382161B2 (en) | 2016-12-19 | 2022-07-07 | Hedera Hashgraph, Llc | Methods and apparatus for a distributed database that enables deletion of events |
US10592528B2 (en) * | 2017-02-27 | 2020-03-17 | Sap Se | Workload capture and replay for replicated database systems |
US11573947B2 (en) | 2017-05-08 | 2023-02-07 | Sap Se | Adaptive query routing in a replicated database environment |
US10977227B2 (en) | 2017-06-06 | 2021-04-13 | Sap Se | Dynamic snapshot isolation protocol selection |
US10866868B2 (en) * | 2017-06-20 | 2020-12-15 | Mongodb, Inc. | Systems and methods for optimization of database operations |
US10579274B2 (en) | 2017-06-27 | 2020-03-03 | TidalScale, Inc. | Hierarchical stalling strategies for handling stalling events in a virtualized environment |
KR102348418B1 (ko) * | 2017-07-11 | 2022-01-07 | 스월즈, 인크. | 네트워크 내의 분산 데이터베이스를 효율적으로 구현하기 위한 방법들 및 장치 |
US10817347B2 (en) | 2017-08-31 | 2020-10-27 | TidalScale, Inc. | Entanglement of pages and guest threads |
US10789267B1 (en) | 2017-09-21 | 2020-09-29 | Amazon Technologies, Inc. | Replication group data management |
JP6798065B2 (ja) | 2017-11-01 | 2021-02-03 | スワールズ,インコーポレイテッド | 高速コピー可能データベースを効率的に実装するための方法及び機器 |
US11175927B2 (en) | 2017-11-14 | 2021-11-16 | TidalScale, Inc. | Fast boot |
US10817274B2 (en) * | 2018-01-31 | 2020-10-27 | Salesforce.Com, Inc. | Techniques for distributing software packages |
US11120006B2 (en) * | 2018-06-21 | 2021-09-14 | Amazon Technologies, Inc. | Ordering transaction requests in a distributed database according to an independently assigned sequence |
CN109189561A (zh) * | 2018-08-08 | 2019-01-11 | 广东亿迅科技有限公司 | 一种基于mpp架构的事务处理系统及其方法 |
CN109033420B (zh) * | 2018-08-08 | 2020-11-03 | 北京奇艺世纪科技有限公司 | 一种数据处理方法和装置 |
CN109165258A (zh) * | 2018-08-14 | 2019-01-08 | 郑州云海信息技术有限公司 | 一种数据同步方法与装置 |
CN109117093B (zh) * | 2018-08-20 | 2021-10-01 | 赛凡信息科技(厦门)有限公司 | 保证分布式对象存储中的数据、流量、容量一致性的方法 |
US11150939B2 (en) * | 2019-02-28 | 2021-10-19 | Salesforce.Com, Inc. | Composite batching to manage throughput for online commerce applications |
AU2020279389A1 (en) | 2019-05-22 | 2021-10-14 | Hedera Hashgraph, Llc | Methods and apparatus for implementing state proofs and ledger identifiers in a distributed database |
CN112350843B (zh) * | 2019-08-09 | 2022-02-08 | 烽火通信科技股份有限公司 | 一种基于虚拟组件的场景式割接方法和系统 |
US11755620B1 (en) * | 2020-04-09 | 2023-09-12 | Amazon Technologies, Inc. | Invoking supported non-relational database operations to provide results consistent with commands specified in a relational query language |
US11886422B1 (en) * | 2021-03-29 | 2024-01-30 | Amazon Technologies, Inc. | Transactional protocol for snapshot isolation without synchronized clocks |
US11709809B1 (en) | 2021-03-29 | 2023-07-25 | Amazon Technologies, Inc. | Tree-based approach for transactionally consistent version sets |
US11714573B1 (en) | 2021-03-29 | 2023-08-01 | Amazon Technologies, Inc. | Storage optimization in a distributed object store |
US11599514B1 (en) | 2021-03-29 | 2023-03-07 | Amazon Technologies, Inc. | Transactional version sets |
US11768741B2 (en) * | 2021-07-30 | 2023-09-26 | International Business Machines Corporation | Replicating changes written by a transactional virtual storage access method |
WO2023107614A2 (en) * | 2021-12-08 | 2023-06-15 | Xinsere Inc. | Highly distributed, cryptographic-based data storage method |
US20230244652A1 (en) * | 2022-01-31 | 2023-08-03 | Oracle International Corporation | Transactional query processing in external tables |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5452445A (en) * | 1992-04-30 | 1995-09-19 | Oracle Corporation | Two-pass multi-version read consistency |
CN1938703A (zh) * | 2004-03-30 | 2007-03-28 | 甲骨文国际公司 | 管理数据库系统中的事件-条件-操作规则 |
Family Cites Families (116)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4933901A (en) * | 1988-01-11 | 1990-06-12 | Texas Instruments Incorporated | Method for assigning priority to read and write requests received closely in time |
JPH03130842A (ja) | 1989-10-17 | 1991-06-04 | Toshiba Corp | データベースシステムの同時実行制御装置 |
DE69126066T2 (de) | 1990-06-29 | 1997-09-25 | Oracle Corp | Verfahren und Gerät zur Optimierung des Logbuchaufhebungsgebrauchs |
US5280612A (en) | 1991-11-26 | 1994-01-18 | International Business Machines Corporation | Multiple version database concurrency control system |
US5530850A (en) | 1993-10-25 | 1996-06-25 | International Business Machines Corporation | Data storage library array with log-structured file system which allows simultaneous write and garbage collection |
EP0675451A3 (en) | 1994-03-30 | 1996-12-04 | Siemens Stromberg Carlson | Distributed database architecture and system for managing a distributed database for development in an open network. |
US5870758A (en) | 1996-03-11 | 1999-02-09 | Oracle Corporation | Method and apparatus for providing isolation levels in a database system |
US6041423A (en) | 1996-11-08 | 2000-03-21 | Oracle Corporation | Method and apparatus for using undo/redo logging to perform asynchronous updates of parity and data pages in a redundant array data storage environment |
JPH10254748A (ja) | 1997-03-11 | 1998-09-25 | Fujitsu Ltd | 分散共有メモリ一貫性最適制御方法 |
US5907848A (en) | 1997-03-14 | 1999-05-25 | Lakeview Technology, Inc. | Method and system for defining transactions from a database log |
US7031987B2 (en) | 1997-05-30 | 2006-04-18 | Oracle International Corporation | Integrating tablespaces with different block sizes |
US6240413B1 (en) | 1997-12-22 | 2001-05-29 | Sun Microsystems, Inc. | Fine-grained consistency mechanism for optimistic concurrency control using lock groups |
US6112319A (en) * | 1998-02-20 | 2000-08-29 | Micron Electronics, Inc. | Method and system for verifying the accuracy of stored data |
US6233585B1 (en) | 1998-03-12 | 2001-05-15 | Crossworlds Software, Inc. | Isolation levels and compensating transactions in an information system |
US6317754B1 (en) | 1998-07-03 | 2001-11-13 | Mitsubishi Electric Research Laboratories, Inc | System for user control of version /Synchronization in mobile computing |
JP3450786B2 (ja) | 1999-03-05 | 2003-09-29 | ミツビシ・エレクトリック・リサーチ・ラボラトリーズ・インコーポレイテッド | 異なるデータファイルを調停する方法 |
JP3763992B2 (ja) | 1999-03-30 | 2006-04-05 | 富士通株式会社 | データ処理装置及び記録媒体 |
US6615219B1 (en) | 1999-12-29 | 2003-09-02 | Unisys Corporation | Database management system and method for databases having large objects |
US6631374B1 (en) | 2000-09-29 | 2003-10-07 | Oracle Corp. | System and method for providing fine-grained temporal database access |
CN100437569C (zh) | 2000-10-09 | 2008-11-26 | 最佳收益有限公司 | 数据处理方法和装置 |
US20020107835A1 (en) | 2001-02-08 | 2002-08-08 | Coram Michael T. | System and method for adaptive result set caching |
US6832229B2 (en) | 2001-03-09 | 2004-12-14 | Oracle International Corporation | System and method for maintaining large-grained database concurrency with a log monitor incorporating dynamically redefinable business logic |
WO2003001382A1 (en) | 2001-06-25 | 2003-01-03 | Nokia Corporation | Method and system for restarting a replica of a database |
US6957236B1 (en) * | 2002-05-10 | 2005-10-18 | Oracle International Corporation | Providing a useable version of a data item |
US7340577B1 (en) * | 2002-05-29 | 2008-03-04 | Nvidia Corporation | Method and system for efficiently executing reads after writes in a memory employing delayed write data |
US6732171B2 (en) | 2002-05-31 | 2004-05-04 | Lefthand Networks, Inc. | Distributed network storage system with virtualization |
US6970872B1 (en) * | 2002-07-23 | 2005-11-29 | Oracle International Corporation | Techniques for reducing latency in a multi-node system when obtaining a resource that does not reside in cache |
US6792518B2 (en) | 2002-08-06 | 2004-09-14 | Emc Corporation | Data storage system having mata bit maps for indicating whether data blocks are invalid in snapshot copies |
US7305386B2 (en) | 2002-09-13 | 2007-12-04 | Netezza Corporation | Controlling visibility in multi-version database systems |
US7146366B2 (en) | 2002-09-13 | 2006-12-05 | Netezza Corporation | Distributed concurrency control using serialization ordering |
US6976022B2 (en) | 2002-09-16 | 2005-12-13 | Oracle International Corporation | Method and mechanism for batch processing transaction logging records |
US8489742B2 (en) | 2002-10-10 | 2013-07-16 | Convergys Information Management Group, Inc. | System and method for work management |
US7308456B2 (en) | 2002-12-19 | 2007-12-11 | International Business Machines Corporation | Method and apparatus for building one or more indexes on data concurrent with manipulation of data |
US7010645B2 (en) | 2002-12-27 | 2006-03-07 | International Business Machines Corporation | System and method for sequentially staging received data to a write cache in advance of storing the received data |
US7937551B2 (en) | 2003-01-21 | 2011-05-03 | Dell Products L.P. | Storage systems having differentiated storage pools |
US6823347B2 (en) * | 2003-04-23 | 2004-11-23 | Oracle International Corporation | Propagating commit times |
US7287034B2 (en) | 2003-05-08 | 2007-10-23 | Oracle International Corporation | On-demand multi-version data dictionary to support distributed applications |
US20050015416A1 (en) | 2003-07-16 | 2005-01-20 | Hitachi, Ltd. | Method and apparatus for data recovery using storage based journaling |
US7328226B1 (en) | 2003-06-30 | 2008-02-05 | Symantec Operating Corporation | Coordinated distributed log-based snapshots in a multi-host environment |
WO2005010650A2 (en) * | 2003-07-03 | 2005-02-03 | Ebay Inc. | Method and system for managing data transaction requests |
JP2005050024A (ja) | 2003-07-31 | 2005-02-24 | Toshiba Corp | 計算機システムおよびプログラム |
US7865485B2 (en) | 2003-09-23 | 2011-01-04 | Emc Corporation | Multi-threaded write interface and methods for increasing the single file read and write throughput of a file server |
US7047322B1 (en) * | 2003-09-30 | 2006-05-16 | Unisys Corporation | System and method for performing conflict resolution and flow control in a multiprocessor system |
JP2005276094A (ja) | 2004-03-26 | 2005-10-06 | Hitachi Ltd | 分散ストレージ装置のファイル管理方法及び分散ストレージシステム並びにプログラム |
US7146386B2 (en) | 2004-03-29 | 2006-12-05 | Microsoft Corporation | System and method for a snapshot query during database recovery |
US20060020634A1 (en) | 2004-07-20 | 2006-01-26 | International Business Machines Corporation | Method, system and program for recording changes made to a database |
US7650356B2 (en) | 2004-08-24 | 2010-01-19 | Microsoft Corporation | Generating an optimized restore plan |
US7403945B2 (en) | 2004-11-01 | 2008-07-22 | Sybase, Inc. | Distributed database system providing data and space management methodology |
CA2590361C (en) | 2004-11-05 | 2012-01-03 | Data Robotics Incorporated | Dynamically expandable and contractible fault-tolerant storage system permitting variously sized storage devices and method |
JP2006263581A (ja) | 2005-03-24 | 2006-10-05 | Mazda Motor Corp | 排気ガス浄化用触媒 |
US7814057B2 (en) | 2005-04-05 | 2010-10-12 | Microsoft Corporation | Page recovery using volume snapshots and logs |
US7716388B2 (en) * | 2005-05-13 | 2010-05-11 | Texas Instruments Incorporated | Command re-ordering in hub interface unit based on priority |
US7707219B1 (en) | 2005-05-31 | 2010-04-27 | Unisys Corporation | System and method for transforming a database state |
US7716645B2 (en) | 2005-06-10 | 2010-05-11 | International Business Machines Corporation | Using atomic sets of memory locations |
US7873683B2 (en) | 2005-07-01 | 2011-01-18 | Qnx Software Systems Gmbh & Co. Kg | File system having transaction record coalescing |
US20070083570A1 (en) | 2005-10-11 | 2007-04-12 | Fineberg Samuel A | File system versioning using a log |
EP1952283A4 (en) | 2005-10-28 | 2010-01-06 | Goldengate Software Inc | DEVICE AND METHOD FOR GENERATING A REAL-TIME DATABASE DUPLICATE |
US8099726B2 (en) | 2005-12-07 | 2012-01-17 | Microsoft Corporation | Implementing strong atomicity in software transactional memory |
WO2007075587A2 (en) | 2005-12-19 | 2007-07-05 | Commvault Systems, Inc. | Systems and methods for performing data replication |
JP2007200182A (ja) | 2006-01-30 | 2007-08-09 | Hitachi Ltd | ストレージ装置、及びストレージシステム |
JP4800046B2 (ja) | 2006-01-31 | 2011-10-26 | 株式会社日立製作所 | ストレージシステム |
JP5124989B2 (ja) | 2006-05-26 | 2013-01-23 | 日本電気株式会社 | ストレージシステム及びデータ保護方法とプログラム |
JP2008003932A (ja) | 2006-06-23 | 2008-01-10 | Sony Corp | データ記憶装置、データ記憶方法およびコンピュータプログラム |
US7882064B2 (en) | 2006-07-06 | 2011-02-01 | Emc Corporation | File system replication |
US8069191B2 (en) | 2006-07-13 | 2011-11-29 | International Business Machines Corporation | Method, an apparatus and a system for managing a snapshot storage pool |
US8935206B2 (en) | 2007-01-31 | 2015-01-13 | Hewlett-Packard Development Company, L.P. | Snapshots in distributed storage systems |
US8370715B2 (en) | 2007-04-12 | 2013-02-05 | International Business Machines Corporation | Error checking addressable blocks in storage |
US8086650B1 (en) | 2007-06-15 | 2011-12-27 | Ipswitch, Inc. | Method for transforming and consolidating fields in log records from logs generated on different operating systems |
US7934062B2 (en) * | 2007-06-22 | 2011-04-26 | International Business Machines Corporation | Read/write lock with reduced reader lock sampling overhead in absence of writer lock acquisition |
US8326897B2 (en) | 2007-12-19 | 2012-12-04 | International Business Machines Corporation | Apparatus and method for managing data storage |
US7979670B2 (en) | 2008-01-24 | 2011-07-12 | Quantum Corporation | Methods and systems for vectored data de-duplication |
US8401994B2 (en) | 2009-09-18 | 2013-03-19 | Oracle International Corporation | Distributed consistent grid of in-memory database caches |
WO2009102425A1 (en) | 2008-02-12 | 2009-08-20 | Netapp, Inc. | Hybrid media storage system architecture |
US7747663B2 (en) | 2008-03-05 | 2010-06-29 | Nec Laboratories America, Inc. | System and method for content addressable storage |
US8229945B2 (en) | 2008-03-20 | 2012-07-24 | Schooner Information Technology, Inc. | Scalable database management software on a cluster of nodes using a shared-distributed flash memory |
US8074014B2 (en) | 2008-03-31 | 2011-12-06 | Microsoft Corporation | Storage systems using write off-loading |
US8266114B2 (en) | 2008-09-22 | 2012-09-11 | Riverbed Technology, Inc. | Log structured content addressable deduplicating storage |
US8341128B1 (en) | 2008-05-09 | 2012-12-25 | Workday, Inc. | Concurrency control using an effective change stack and tenant-based isolation |
US9104662B2 (en) | 2008-08-08 | 2015-08-11 | Oracle International Corporation | Method and system for implementing parallel transformations of records |
US9842004B2 (en) | 2008-08-22 | 2017-12-12 | Red Hat, Inc. | Adjusting resource usage for cloud-based networks |
US8255373B2 (en) | 2008-10-24 | 2012-08-28 | Microsoft Corporation | Atomic multiple modification of data in a distributed storage system |
US9542431B2 (en) * | 2008-10-24 | 2017-01-10 | Microsoft Technology Licensing, Llc | Cyclic commit transaction protocol |
US8229890B2 (en) | 2008-12-15 | 2012-07-24 | International Business Machines Corporation | Opening document stored at multiple database replicas |
US8521980B2 (en) * | 2009-07-16 | 2013-08-27 | Mosaid Technologies Incorporated | Simultaneous read and write data transfer |
US8429134B2 (en) | 2009-09-08 | 2013-04-23 | Oracle International Corporation | Distributed database recovery |
EP2476039B1 (en) | 2009-09-09 | 2016-10-26 | SanDisk Technologies LLC | Apparatus, system, and method for power reduction management in a storage device |
US8392479B1 (en) | 2009-09-14 | 2013-03-05 | Symantec Corporation | Method and apparatus for optimizing storage space allocation for computer data |
US8255627B2 (en) | 2009-10-10 | 2012-08-28 | International Business Machines Corporation | Secondary cache for write accumulation and coalescing |
US8250213B2 (en) | 2009-11-16 | 2012-08-21 | At&T Intellectual Property I, L.P. | Methods and apparatus to allocate resources associated with a distributive computing network |
US8396831B2 (en) | 2009-12-18 | 2013-03-12 | Microsoft Corporation | Optimistic serializable snapshot isolation |
US20110161496A1 (en) | 2009-12-28 | 2011-06-30 | Nicklin Jonathan C | Implementation and management of internet accessible services using dynamically provisioned resources |
EP2519872A4 (en) | 2009-12-31 | 2015-08-26 | Commvault Systems Inc | SYSTEMS AND METHOD FOR IMPLEMENTING DATA MANAGEMENT OPERATIONS USING SNAPSHOTS |
US20110178984A1 (en) | 2010-01-18 | 2011-07-21 | Microsoft Corporation | Replication protocol for database systems |
US8671074B2 (en) | 2010-04-12 | 2014-03-11 | Microsoft Corporation | Logical replication in clustered database system with adaptive cloning |
US8463825B1 (en) | 2010-04-27 | 2013-06-11 | Tintri Inc. | Hybrid file system for virtual machine storage |
JP5536568B2 (ja) | 2010-07-01 | 2014-07-02 | インターナショナル・ビジネス・マシーンズ・コーポレーション | トランザクションを集約して処理する方法、システム、およびプログラム |
US8412689B2 (en) | 2010-07-07 | 2013-04-02 | Microsoft Corporation | Shared log-structured multi-version transactional datastore with metadata to enable melding trees |
US20120041899A1 (en) | 2010-08-10 | 2012-02-16 | Palo Alto Research Center Incorporated | Data center customer cost determination mechanisms |
US8499139B2 (en) * | 2010-08-12 | 2013-07-30 | Lsi Corporation | Avoiding stall in processor pipeline upon read after write resource conflict when intervening write present |
US8910172B2 (en) | 2010-12-29 | 2014-12-09 | Symantec Corporation | Application resource switchover systems and methods |
US20120246483A1 (en) * | 2011-03-25 | 2012-09-27 | Netanel Raisch | Authentication System With Time Attributes |
US8918362B2 (en) | 2011-05-23 | 2014-12-23 | Microsoft Corporation | Replication processes in a distributed storage environment |
US8543538B2 (en) | 2011-06-01 | 2013-09-24 | Clustrix, Inc. | Systems and methods for redistributing data in a relational database |
US8554726B2 (en) | 2011-06-01 | 2013-10-08 | Clustrix, Inc. | Systems and methods for reslicing data in a relational database |
US9348883B2 (en) | 2011-06-01 | 2016-05-24 | Clustrix, Inc. | Systems and methods for replication replay in a relational database |
US8868492B2 (en) | 2011-06-15 | 2014-10-21 | Oracle International Corporation | Method for maximizing throughput and minimizing transactions response times on the primary system in the presence of a zero data loss standby replica |
US9323659B2 (en) | 2011-08-12 | 2016-04-26 | Sandisk Enterprise Ip Llc | Cache management including solid state device virtualization |
US8909996B2 (en) | 2011-08-12 | 2014-12-09 | Oracle International Corporation | Utilizing multiple storage devices to reduce write latency for database logging |
US8712961B2 (en) | 2011-09-23 | 2014-04-29 | International Business Machines Corporation | Database caching utilizing asynchronous log-based replication |
JP5772458B2 (ja) * | 2011-09-29 | 2015-09-02 | 富士通株式会社 | データ管理プログラム、ノード、および分散データベースシステム |
US10042674B2 (en) | 2011-09-30 | 2018-08-07 | Teradata Us, Inc. | Regulating capacity and managing services of computing environments and systems that include a database |
US9596294B2 (en) * | 2012-05-11 | 2017-03-14 | Google Inc. | System and method for committing transactions on remote servers |
US8965861B1 (en) * | 2012-06-28 | 2015-02-24 | Amazon Technologies, Inc. | Concurrency control in database transactions |
US9032165B1 (en) * | 2013-04-30 | 2015-05-12 | Amazon Technologies, Inc. | Systems and methods for scheduling write requests for a solid state storage device |
US10747746B2 (en) * | 2013-04-30 | 2020-08-18 | Amazon Technologies, Inc. | Efficient read replicas |
US9760596B2 (en) | 2013-05-13 | 2017-09-12 | Amazon Technologies, Inc. | Transaction ordering |
-
2013
- 2013-05-13 US US13/893,004 patent/US9760596B2/en active Active
-
2014
- 2014-05-13 CA CA2912392A patent/CA2912392C/en active Active
- 2014-05-13 CN CN201480039678.9A patent/CN105393243B/zh active Active
- 2014-05-13 JP JP2016514043A patent/JP6181290B2/ja active Active
- 2014-05-13 WO PCT/US2014/037901 patent/WO2014186396A1/en active Application Filing
- 2014-05-13 EP EP14797058.6A patent/EP2997490B1/en active Active
-
2017
- 2017-09-11 US US15/701,343 patent/US10872076B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5452445A (en) * | 1992-04-30 | 1995-09-19 | Oracle Corporation | Two-pass multi-version read consistency |
CN1938703A (zh) * | 2004-03-30 | 2007-03-28 | 甲骨文国际公司 | 管理数据库系统中的事件-条件-操作规则 |
Non-Patent Citations (1)
Title |
---|
面向海量数据的数据一致性研究;周婧 等;《计算机科学》;20061231;第33卷(第4期);137-140 * |
Also Published As
Publication number | Publication date |
---|---|
CA2912392C (en) | 2018-05-22 |
EP2997490A1 (en) | 2016-03-23 |
US20140337393A1 (en) | 2014-11-13 |
CN105393243A (zh) | 2016-03-09 |
CA2912392A1 (en) | 2014-11-20 |
US9760596B2 (en) | 2017-09-12 |
JP2016519379A (ja) | 2016-06-30 |
US10872076B2 (en) | 2020-12-22 |
US20180004801A1 (en) | 2018-01-04 |
EP2997490A4 (en) | 2017-02-22 |
EP2997490B1 (en) | 2022-01-19 |
JP6181290B2 (ja) | 2017-08-16 |
WO2014186396A1 (en) | 2014-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105393243B (zh) | 事务定序 | |
US9946735B2 (en) | Index structure navigation using page versions for read-only nodes | |
US11153380B2 (en) | Continuous backup of data in a distributed data store | |
US10642840B1 (en) | Filtered hash table generation for performing hash joins | |
US10831614B2 (en) | Visualizing restoration operation granularity for a database | |
US9842031B1 (en) | Incremental updates to user transaction state at read-only nodes of a distributed database | |
KR101914019B1 (ko) | 분산 데이터베이스 시스템들을 위한 고속 장애 복구 | |
KR101771246B1 (ko) | 분산 데이터 시스템들을 위한 전 시스템에 미치는 체크포인트 회피 | |
US9305056B1 (en) | Results cache invalidation | |
US10747746B2 (en) | Efficient read replicas | |
US9280591B1 (en) | Efficient replication of system transactions for read-only nodes of a distributed database | |
US9424140B1 (en) | Providing data volume recovery access in a distributed data store to multiple recovery agents | |
US9251003B1 (en) | Database cache survivability across database failures | |
US10409804B2 (en) | Reducing I/O operations for on-demand demand data page generation | |
US10885023B1 (en) | Asynchronous processing for synchronous requests in a database | |
US11080262B1 (en) | Optimistic atomic multi-page write operations in decoupled multi-writer databases | |
US11269930B1 (en) | Tracking granularity levels for accessing a spatial index | |
US11256695B1 (en) | Hybrid query execution engine using transaction and analytical engines | |
US11379463B1 (en) | Atomic enforcement of cross-page data constraints in decoupled multi-writer databases | |
US11914571B1 (en) | Optimistic concurrency for a multi-writer database | |
US11853319B1 (en) | Caching updates appended to an immutable log for handling reads to the immutable log | |
US11874796B1 (en) | Efficient garbage collection in optimistic multi-writer database systems | |
US20240220461A1 (en) | Remote durable logging for journaling file systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |