CN105324770B - 有效读出副本 - Google Patents
有效读出副本 Download PDFInfo
- Publication number
- CN105324770B CN105324770B CN201480035256.4A CN201480035256A CN105324770B CN 105324770 B CN105324770 B CN 105324770B CN 201480035256 A CN201480035256 A CN 201480035256A CN 105324770 B CN105324770 B CN 105324770B
- Authority
- CN
- China
- Prior art keywords
- data
- record
- database
- copy
- reading
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/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/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- 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
- G06F16/273—Asynchronous replication or reconciliation
Abstract
一种数据库系统可接收指定要对所述数据库系统存储的特定数据记录做出的修改的写入请求。表示要对所述特定数据记录做出的所述修改的日志记录可发送至所述数据库系统的存储服务。指示存储在读出副本的高速缓存中的所述特定数据记录的高速缓存版本过时的指示(例如,日志记录或其它指示)可发送至读出副本。为了后续读出由所述读出副本接收的所述特定数据记录,所述读出副本可从所述存储服务请求所述特定数据记录。
Description
发明背景
软件堆栈的各种组件的分布在一些情况下可以提供(或支持)容错(例如,通过复制)、更高的持久性以及更廉价的解决方案(例如,通过使用许多更小、更廉价的组件,而非略大、略昂贵的组件)。然而,数据库历来是软件堆栈的最难进行分布的组件之一。例如,可能难以分布数据库而同时仍然确保预期要提供的所谓的ACID特性(例如,原子性、一致性、隔离性和持久性)。
虽然大多数的现有的关系数据库未被分布,但是一些现有的数据库使用两个公共模型中的一个“缩放”(如与通过仅仅采用较大整体系统“扩大”相反):“无共享”模型以及“共享盘”模型。一般来说,在“无共享”模型中,接收到的查询被分解成数据库片(每个数据库片包括该查询的组件),这些片发送至不同计算节点以供查询处理,并且结果在它们返回前被收集和聚集。一般来说,在“共享盘”模型中,群集中的每个计算节点有权访问相同下层数据。在采用此模型的系统中,必须非常仔细管理高速缓存的相干性。在这两个模型中,大整体数据库复制在多个节点(包括独立式数据库实例的所有功能)上,并且“胶粘”逻辑被添加来将它们缝合在一起。例如,在“无共享”模型中,胶粘逻辑可以提供调度器的细分查询、将查询发送至多个计算节点并随后组合结果的功能。在“共享盘”模型中,胶粘逻辑可以用来将多个节点的高速缓存融在一起(例如,管理高速缓存层上的相干性)。这些“无共享”和“共享盘”数据库系统可能部署起来耗费成本、维持起来复杂,并且可能过度派发许多的数据库用例。
第三模型是用于缩放读出处理的读出复制模型。根据典型读出复制模型,当针对数据库的结构做出改变时,SQL记录可以创建在逻辑复制日志中,随后,逻辑复制日志可传播至所有副本。每个副本随后将会在它们自己版本的数据库上本地运行这些SQL语句。由于日志异步发送,因此读出副本在一定程度上滞后于主数据库而运行,并且如果读出副本需要被升级成主要读出副本,那么数据存在一定程度损失。
附图说明
图1是示出根据一个实施方案的数据库软件堆栈的各种组件的框图。
图2是示出根据一些实施方案的服务系统架构的框图,所述服务系统架构可配置成实施被配置成使用所公开的读出副本的基于web 服务的数据库服务。
图3是示出根据一个实施方案的被配置成使用所公开的读出副本的数据库系统的各种组件的框图。
图4是示出根据一个实施方案的被配置成使用所公开的读出副本的分布式数据库优化存储系统的框图。
图5是示出根据一个实施方案的被配置成使用所公开的读出副本的数据库系统中的单独分布式数据库优化存储系统的使用的框图。
图6是示出用于基于web服务的数据库服务的读出副本中的高速缓存无效的方法的一个实施方案的流程图。
图7是示出用于使用基于web服务的数据库服务中的所公开的读出副本执行读出的方法的一个实施方案的流程图。
图8是示出用于更新基于web服务的数据库服务中的读出副本中的高速缓存的方法的一个实施方案的流程图。
图9是示出用于将读出副本转换成基于web服务的数据库服务中的主要节点的方法的一个实施方案的流程图。
图10是示出根据各种实施方案的被配置成实施有效读出副本的计算机系统的框图。
虽然在本文中,借助举例针对若干实施方案和说明附图描述了实施方案,但是本领域的技术人员将认识到,实施方案不限于所描述的实施方案或附图。应当理解,附图及其详细描述不意图将实施方案限制于所公开的特定形式,相反,预期涵盖落在如随附权利要求书限定的精神和范围内的所有修改、等效物和替代形式。本文所用标题仅仅出于组织结构目的,并非意在用来限制说明书或权利要求书的范围。如本申请全文所使用的,词语“可/可以”在允许意义(即意指有可能) 上使用,而非限于强制意义(即意指必须)。词语“包括(include/including/includes)”指示开放性的关系,并且因此意指包括但不限于。类似地,词语“具有(have/having/has)”同样指示开放性的关系,并且因此意指具有但不限于。如本文中所使用的术语“第一”、“第二”、“第三”等等用作名词前的标记,并且不意味着任何类型次序 (例如,空间、时间、逻辑等等),除非这种次序另外明确指出。
各种组件可描述为“被配置成”执行一个或多个任务。在这样的上下文中,“被配置成”是大体意指“具有”在操作期间执行一个或多个任务的“结构”的宽泛表述。因此,组件可配置成执行任务,即使在组件当前并未执行这个任务(例如,一计算机系统可配置成执行操作,即使在操作当前未被执行时也是如此)。在一些上下文中,“被配置成”可是大体意指“具有”在操作期间执行一个或多个任务的“电路”的结构的宽泛表述。因此,组件可配置成执行任务,即使在组件当前未在运行时也是如此。一般来说,形成对应“被配置成”的结构的电路系统可以包括硬件电路。
为了方便描述,各种组件可描述为执行一个或多个任务。此类描述应解释为包括短语“被配置成”。陈述被配置成执行一个或多个任务的组件明确并不意图调用35 U.S.C.§112第六段作为该组件的解释。
如本文所使用,“基于”这个术语用于描述影响确定的一个或多个因素。这个术语并不排除可影响确定的另外因素。也就是说,确定可仅基于那些因素、或至少部分基于那些因素。考虑短语“基于B确定 A”,虽然B可为影响A的确定的因素,但是这个短语并不排除还基于C来确定A。在其他情况下,A可仅基于B确定。
本公开的范围包括本文(明确或暗示地)所公开的任何特征或特征的组合或其任何概括,无论它是否缓解本文所提出的问题的任何或全部。因此,新权利要求书可在本申请的起诉(或申请要求其优先权) 期间被表述为任何此类特征组合。具体来说,参考随附的权利要求书,来自从属权利要求中的特征可与独立权利要求中的那些组合,并且来自相应独立权利要求中的特征可以任何合适方式组合并且不仅组合在随附的权利要求书中列举的特定组合中。
附图中相同种类的元件当在说明书中被一般性提及时通过不带后缀的附图标记(例如,250)来指代。当附图中的一个元件在说明书中被特别地提及时通过带后缀的附图标记(例如,250a)来指代,以把它与同种类的其它元件相区分。
具体实施方式
公开了读出副本的各实施方案。各个本实施方案可以包括数据库服务的主要节点,该数据库服务从数据库服务的客户端接收指定要对数据库服务存储的记录做出的修改的写入请求。各个本实施方案还可包括发送重做日志记录,所述重做日志记录表示要对存储记录的版本的分布式存储服务的服务器节点做出的修改。各个本实施方案可还包括向一个或多个读出副本发送一个或多个读出副本的相应高速缓存中存储的数据记录的任何高速缓存版本过时的指示(例如,通知、实际读出日志记录等等)。为了后续读出由读出副本接收的那个数据记录,读出副本可以从分布式存储服务而非高速缓存检索该数据记录的当前版本。在一些实施方案中,读出副本可配置成转换(例如,故障转移)成主要节点(例如,在主要节点故障后)而不会损失数据。
本说明书首先描述包括所公开的读出副本的示例基于web服务的数据库服务。包括在示例基于web服务的数据库服务的描述中的是示例基于web服务的数据库服务的各个方面,如数据库引擎、读出副本以及单独分布式数据库存储服务。本说明书接着描述用于维持和使用读出副本(包括将读出副本转换成主要节点)的方法的各实施方案的流程图。接着,本说明书描述可实施所公开的技术的示例系统。在整个本说明书中提供各种实例。
在一些实施方案中,本文所描述的系统实施web服务,web服务使客户端(例如,订户)能够在云计算环境操作数据存储系统。在一些实施方案中,数据存储系统可为高度可伸缩且可扩展的企业级数据库系统。在一些实施方案中,查询可涉及分布在多个物理资源上的数据库存储装置,并且该数据库系统可以基于需要来扩大或缩小。在不同实施方案中,该数据库系统可有效地用于各种类型和/或组织的数据库模式。在一些实施方案中,客户端/订户可以多种方式(例如,经由SQL接口可交互地)向数据库系统提交查询。在其他实施方案中,外部应用以及程序可以使用开放式数据库连接(ODBC)和/或 Java数据库连接(JDBC)驱动器接口向数据库系统提交查询。
更具体地,在一些实施方案中,本文所述系统可实施面向服务的数据库架构,其中单数据库系统的各种功能组件是固有地分布的。例如,比起将多个完整且整体数据库实例(各自可以包括外来功能,如应用服务器、搜索功能、或超过提供数据库的核心功能需要的其他功能)捆绑在一起,这些系统可将数据库的基本操作(例如,查询处理、事务管理、高速缓存以及存储)组织成可单独且独立地伸缩的层。例如,在一些实施方案中,本文所描述的系统中的每个数据库实例可包括数据库层(其可包括单个主要节点以及客户端侧存储系统驱动器) 以及单独、分布式存储系统(其可包括多个存储节点,这些存储节点共同执行传统在现有系统的数据库层中执行的操作中的一些)。
如本文中更详细地描述,在一些实施方案中,数据库的最低级的操作(例如,备份、还原、快照、恢复和/或各种空间管理操作)中的一些可以从数据库引擎卸下至存储层并分布在多个节点和存储设备上。例如,在一些实施方案中,比起数据库引擎向数据库表(或其数据页面)应用改变并随后将修改过的数据页面发送至存储层,将改变应用至所存储的数据库表(和其数据页面)可为存储层本身的职责。在此类实施方案中,可将重做日志记录而非修改过的数据页面发送至存储层,此后,可以在一定程度上延迟并以分布方式(例如,通过后台进程)执行重做处理(例如,重做日志记录应用)。在一些实施方案中,崩溃恢复(例如,从所存储的重做日志记录来重建数据页面) 还可由存储层执行,并且还可由分布式(并且在一些情况下延迟)后台进程执行。
在一些实施方案中,由于重做日志以及未修改的数据页面发送至存储层,因此数据库层与存储层之间可以存在比现有的数据库系统少得多的网络流量。在一些实施方案中,每个重做日志可为指定其改变的对应数据页面的大小的大约十分之一。应当注意,从数据库层和分布式存储系统发送的请求可以是异步的,并且多个此类请求可以同时进行。此外,从数据库层的主要节点发送至数据库层的读出副本的通信(例如,高速缓存无效请求)同样可以是异步的。
如先前所指出,在典型大数据库系统中,整个数据集合需要在该数据库系统可在系统故障后重启之前还原。在这些数据库系统中,在崩溃后,系统必须确定所有数据页面刷新至盘所已知的最后的点(例如,检查点)并且必须重放从该点向前的任何改变日志。例如,在数据库可用于处理来自客户端进程的传入查询前,系统进程必须在所有数据页面中进行读出,这些数据页面在确定的检查点后改变并且应用尚未应用至那些数据页面的每个适用改变日志记录。
在一些实施方案中,本文所述数据库系统会能够在该数据库崩溃后几乎立即进行数据库引擎的故障后的重启(例如,使数据库可提供来接受并服务于查询),而非必须等待整个数据集合还原。相反,可以接受并服务于查询,同时崩溃恢复由一个或多个后台线程延迟执行。例如,在崩溃后,多个后台线程可以在不同存储节点上并行操作,以从对应重做日志重建数据页面。同时,如果传入查询目标在于尚未重建的数据页面,那么该存储层可配置成从适当重做日志中即时重新创建这个数据页面。
一般来说,在给定一份数据后,数据库的主要要求在于其可最终返回那份数据。为此,数据库可包括若干不同组件(或层),每个组件执行不同功能。例如,传统的数据可被视为具有三层:用于执行查询解析、优化以及执行的第一层;用于提供事务性、恢复以及持久性的第二层;以及提供在本地附盘或网络附属存储装置上的存储的第三层。如在上文指出,先前对缩放传统的数据库的尝试通常涉及复制数据库的所有三层并且在多个机器上分布那些复制的数据库实例。
在一些实施方案中,本文所述系统可以与传统的数据库不同的方式划分数据库系统的功能,并且可仅在多个机器上分布功能组件的子集合(而非完整的数据库实例),以便实施缩放。例如,在一些实施方案中,面向客户端的层可配置成接收指定哪些数据要存储或检索而非如何存储或检索数据的请求。该层可以执行请求解析和/或优化(例如,SQL解析和优化),同时另一个层可以负责查询执行。在一些实施方案中,第三层可负责提供结果的事务性和一致性。例如,该层可配置成强制执行所谓的ACID特性中的一些,具体来说,所述ACID 特性即为目标在于数据库的事务的原子性、维持数据库内的一致性并且确保目标在于数据库的事务之间的隔离性。在一些实施方案中,随后,第四层可负责在存在各种类型故障情况下提供所存储的数据的持久性。例如,该层可以负责改变记录、从数据库崩溃恢复、管理对下层存储卷的访问和/或下层存储卷中的空间管理。
应当注意,图1至图5中示出且描述的存储服务仅为实例。耦接至数据库引擎和读出副本的其他存储服务还可用于各实施方案。
图1是示出根据一个实施方案的数据库软件堆栈的各种组件的框图。如这个实例中所示,数据库实例可包括多个功能组件(或层),每个功能组件提供数据库实例的功能的一部分。在这个实例中,数据库实例100包括查询解析和查询优化层(示为110)、查询执行层(示为120)、事务性和一致性管理层(示为130)以及持久性和空间管理层(示为140)。如上指出,在一些现有的数据库系统中,扩展数据库实例可涉及将整个数据库实例复制一或多次(包括图1所示的所有层),并随后添加胶粘逻辑以将它们缝合在一起。在一些实施方案中,本文所述系统可替代地将持久性和空间管理层140的功能从数据库层卸下至单独的存储层,并且可将这个功能分布在存储层的多个存储节点上。
在一些实施方案中,本文所述数据库系统可保持图1中示出的数据库实例的上半部分的结构的大部分,但可以将备份、还原、快照、恢复和/或各种空间管理操作的至少部分的职责重新分布至存储层。当与先前方法以提供可缩放数据库相比时,以此方式重新分布功能并在数据库层与存储层之间紧密耦合日志处理可以改进性能、增加可提供性并且减少成本。例如,网络以及输入/输出带宽要求可被减少,因此重做日志记录(它们的大小比实际数据页面要小得多)仅可在节点上派发或保存在写入操作的延迟路径内。另外,数据页面生成可以在每个存储节点上在后台中独立完成(在前台处理允许时),而不阻止传入写入操作。在一些实施方案中,使用日志结构化的、非重写的存储装置可以例如通过仅使用元数据操纵而非数据页面的移动或复制,允许备份、还原、快照、时间点恢复以及卷增长操作更有效地执行。在一些实施方案中,存储层还可以负责使得代表客户端存储的数据(和/或与该数据关联的元数据,如重做日志记录)复制在多个存储节点上。例如,数据(和/或元数据)可被本地复制(例如,在存储节点集合在其自己的物理上不同的独立架构上执行的单个“可用性区”内)和/或复制在单个区域或不同区域中的可用性区上。
在各种实施方案中,本文所述数据库系统可支持用于各种数据库操作的标准或自定义应用编程接口(API)。例如,API可以支持用于创建数据库、创建表、更改表、创建用户、丢弃用户、将一个或多个行插入表中、复制值、从表选择数据(例如,对表进行查询)、取消或异常中止查询的操作和/或其他操作。
在一些实施方案中,数据库实例的数据库层可包括主要节点服务器(在本文中还可称为数据库引擎头节点服务器),该主要节点服务器从各客户端程序(例如,应用)和/或订户(用户)处接收读出和/ 或写入请求,随后解析这些请求并且发展执行计划以便实施关联的数据库操作。例如,数据库引擎头节点可以发展获得复杂查询和耦接的结果所必要的一系列的步骤。在一些实施方案中,数据库引擎头节点可以管理数据库系统的数据库层与客户端/订户之间的通信以及数据库层与单独分布式数据库优化存储系统之间的通信。
在一些实施方案中,数据库引擎头节点可以负责通过JDBC或 ODBC接口从终端客户端处接收SQL请求并且本地执行SQL处理和事务管理(其可包括锁定)。然而,比起本地生成数据页面,数据库引擎头节点(或其各种组件)可以生成重做日志记录,并且可以将它们派发至单独的分布式存储系统的适当节点。在一些实施方案中,用于分布式存储系统的客户端侧驱动器可托管在数据库引擎头节点上,并且可负责将重做日志记录路由至存储那些重做日志记录涉及的片段(或其数据页面)的存储系统节点(或多个节点)。例如,在一些实施方案中,每个片段可被镜像(或以其他方式变得有持久性)在形成保护组的多个存储系统节点上。在此类实施方案中,当接收到客户端请求时,客户端侧驱动器可跟踪存储有每个片段的节点并且可将重做日志路由至存储有片段的所有节点(例如,异步且并行地,基本同时)。一旦客户端侧驱动器从保护组的存储节点的写入定额(quorum) 接收确认(其可指示重做日志记录已写入至存储节点),其可将所请求改变的确认发送至数据库层(例如,至数据库引擎头节点)。例如,在数据通过使用保护组而变得持久的实施方案中,数据库引擎头节点无法提交事务,直到并且除非客户端侧驱动器从足够存储节点实例接收回复以便构成写入定额。类似地,对于涉及特定片段的读出请求,客户端侧驱动器可以向存储有片段的所有节点路由读出请求(例如,异步且并行,基本同时)。一旦客户端侧驱动器从保护组的存储节点的读出定额接收所请求的数据,它可将所请求的数据返回至数据库层 (例如,至数据库引擎头节点)。
在一些实施方案中,数据库层(或者更具体地,数据库引擎头节点)可以包括暂时保存最近访问的数据页面的高速缓存。在此类实施方案中,如果除了要将对应重做日志记录派发至存储层之外,接收目标是这种高速缓存中保存的数据页面的写入请求,那么该数据库引擎可对其高速缓存中保存的数据页面的副本应用改变。然而,不像其他数据库系统中那样,这个高速缓存中保存的数据页面可能无法刷新至存储层,并且其可随时弃用(例如,在写入请求的最近应用至高速缓存副本的重做日志记录发送至存储层并被确认后的任何时间)。在不同实施方案中,高速缓存可以实施各种锁定机制中的任何锁定机制以控制由至多一个写入器(或多个读出器)同时对高速缓存的访问。
在一些实施方案中,数据库层可以支持在系统中使用同步或异步的读出副本,例如,读出请求可路由至的数据库层的不同节点上的数据的只读副本。在此类实施方案中,如果用于给定数据库表的数据库引擎头节点接收涉及特定数据页面的读出请求,那么它可以向这些只读副本的任一个(或特定一个)路由请求。或者,在一些实施方案中,该客户端读出请求可由读出副本(从客户端)直接接收,而不首先经过数据库引擎头节点。在一些实施方案中,数据库引擎头节点中的客户端侧驱动器可配置成通知这些其他读出副本节点(例如,至那些其他节点的客户端侧驱动器)关于对高速缓存数据页面的更新和/或无效。作为响应,读出副本可配置成使它们的高速缓存(例如,高速缓存的特定页面或记录或整个高速缓存)无效。对于涉及无效高速缓存数据的后续读出,读出副本可配置成从存储层检索更新数据页面的更新副本(或那些页面的改变的日志记录,以便将它们应用至高速缓存)。在一些实施方案中,读出副本可配置成接收在数据库引擎头节点的高速缓存中存储的数据页面的指示(例如,清单),其可包括读出和写入侧上热(hot)的页面。读出副本可配置成从存储层检索热页面,这可有助于准备读出副本节点以转换成头节点(例如,如果头节点有故障)。另外,读出副本可配置成更新存储器中结构(例如,事务表),以便确定在头节点有故障时正在进行的哪些重做记录和撤销记录(例如,未由读出副本接收到或了解)。因此,所转换的读出副本可能已经具有温的高速缓存(例如,高速缓存可能不必通过擦除重建)作为转换进程的一部分。
在一些实施方案中,数据库引擎头节点和/或读出副本上运行的客户端侧驱动器可将专用接口暴露于存储层。在一些实施方案中,它还可将传统iSCSI接口暴露于一个或多个其他组件(例如,其他数据库引擎或虚拟计算服务组件)。在一些实施方案中,用于在存储层中的数据库实例的存储装置可建模为大小可无限制增长的并可具有与其关联的无限数量IOPS的单个卷。当创建卷时,其可被创建有特定大小、具有特定可用性/持久性特征(例如,指定其如何被复制)和/ 或具有与其关联的IOPS速率(例如,两者均是峰值且持续的)。例如,在一些实施方案中,可以支持各种不同的持久性模型,并且用户/订户能够针对它们数据库表指定多个复制副本、区或区域和/或基于它们的持久性、性能以及成本目标指定复制是同步还是异步的。
在一些实施方案中,(头节点和/或读出副本的)客户端侧驱动器可以维持关于卷的元数据,并且可直接向履行读出请求和写入请求必要的每个存储节点发送异步请求,而不需要在存储节点之间的另外跳数。例如,在一些实施方案中,响应于对数据库表做改变的请求,客户端侧驱动器可配置成确定正实施对目标数据页面的存储的一个或多个节点,并且将指定该改变的重做日志记录路由至那些存储节点。随后,存储节点可以负责在未来的某点将重做日志记录中指定的改变应用至目标数据页面。当写入被确认回发至客户端侧驱动器时,客户端侧驱动器可将卷持久的点提前,并可以向数据库层发回提交确认。如先前所指出,在一些实施方案中,客户端侧驱动器可能无法向存储节点服务器发送数据页面。这可不仅减少网络流量,而且还可无需检查点或在先前的数据库系统中约束前台处理吞吐量的后台写入线程。
在一些实施方案中,许多读出请求可由数据库引擎头节点高速缓存和/或特定读出副本的高速缓存来服务。然而,写入请求可需要持久性,因为大型故障事件太过普遍以致仅仅允许存储器内复制。因此,本文所述系统可配置成通过在存储层实施数据存储为两个区域来最小化前台延迟路径中的重做日志记录写入操作的成本:小型仅附加日志结构化的区域,重做日志记录在它们从数据库层接收到时写入到所述小型仅附加日志结构化的区域中;以及较大区域,其中日志记录合并在一起以在后台创建新版本的数据页面。在一些实施方案中,可以针对每个数据页面来维持指向该页面的上一重做日志记录(反向链接日志记录)的存储器内结构,直至参考实例化数据块。这个方法可为混合读出-写入工作负载提供良好性能,包括其中大程度地高速缓存读出内容的应用中也是如此。
在一些实施方案中,由于对重做日志记录的日志结构化的数据存储装置的访问可以包括一系列的顺序输入/输出操作(而非随机输入/ 输出操作),所以所做出的改变可密切打包在一起。还应注意,与其中对数据页面的每个改变造成对持久数据存储装置的两个输入/输出操作(一是用于重做日志,并且一是用于修改过的数据页面本身)的现有系统相比,在一些实施方案中,本文所述系统可以通过基于接收重做日志记录在分布式存储系统的存储节点处合并数据页面而来避免这种“写入放大”。
如先前所指出,在一些实施方案中,数据库系统的存储层可负责拍数据库快照。然而,由于该存储层实施日志结构化的存储,拍数据页面的快照(例如,数据块)可以包括记录与最近应用至数据页面/ 块的重做日志记录关联的时间戳(或与用以合并多个重做日志记录以创建新版本的数据页面/块的最近操作关联的时间戳),并且防止先前版本数据页面/块以及直到记录的时间点的任何后续日志条目的垃圾收集。例如,拍数据库快照可能无需读出、复制或写入数据块,如在采用断开卷备份策略时需要的。在一些实施方案中,对快照的空间要求可以是最小的,因为仅修改过的数据将需要另外空间,但是用户/ 订户能够选择除了活动数据集合之外他们想要多少另外空间保存接通卷快照。在不同实施方案中,快照可为离散(例如,每个快照可以提供自特定的时间点起对数据页面中的所有数据的访问)或连续(例如,每个快照可以提供在两个时间点之间来对数据页面中现存的数据的所有版本的访问)的。在一些实施方案中,回到先前快照可以包括记录日志记录以指示自那个快照无效且可进行垃圾收集起的所有的重做日志记录和数据页面以及在该快照点后弃用所有的数据库高速缓存条目。在此类实施方案中,由于存储系统将按请求并在后台在所有节点上逐块来将重做日志记录应用于数据块,因此可不需要前滚,正如在正常向前读出/写入处理中那样。崩溃恢复由此可并行进行并且分布在节点上。
可配置成实施基于web服务的数据库服务的服务系统架构的一实施方案在图2中示出。在所示实施方案中,许多个客户端(示为数据库客户端250a至250n)可配置成经由网络260来与web服务平台 200交互。Web服务平台200可配置成与数据库服务210(实例可以包括头节点和多个读出副本)、分布式数据库优化存储服务220和/或一个或多个其它虚拟计算服务230的一个或多个实例交互。应当注意,在可能存在给定组件的一个或多个实例情况下,在本文中提及那个组件可以单数或复数的形式进行。然而,对任一形式的使用预期并不排除另一形式。
在各种实施方案中,图2中示出的组件可在计算机硬件内直接实施,实施为可由计算机硬件(例如,微处理器或计算机系统)直接或间接执行的指令或使用这些技术的组合实施。例如,图2的组件可由包括多个计算节点(或简单地,节点)的系统来实施,每个计算节点可类似于图10示出并如下所述的计算机系统实施方案。在各种实施方案中,给定服务系统组件(例如,数据库服务的组件或存储服务的组件)的功能可由特定节点实施,或可分布在若干节点上。在一些实施方案中,给定节点可以实施多于一个服务系统组件(例如,多于一个数据库服务系统组件)的功能。
一般来说,客户端250可以涵盖任何类型的客户端,这些类型的客户端可配置成经由网络260来向web服务平台200提交web服务请求,包括针对数据库服务的请求。例如,给定的客户端250可以包括合适版本web浏览器,或可包括插件模块或其他类型的代码模块,这些模块被配置成作为web浏览器提供的执行环境的扩展执行或在 web浏览器提供的执行环境内执行。可替代地,客户端250(例如,数据库服务客户端)可以涵盖应用,如数据库应用(或其用户接口)、媒体应用、办公应用、或可利用持久存储资源存储和/或访问一个或多个数据库表的任何其他应用。在一些实施方案中,这种应用可以包括足够协议支持(例如,用于合适版本的超文本传输协议(HTTP)) 以生成和处理web服务请求,而不一定实施针对所有类型的基于web 的数据的全浏览器支持。也就是说,客户端250可为被配置成与web 服务平台200直接交互的应用。在一些实施方案中,客户端250可配置成根据表征状态传输(REST)型的web服务架构、基于文档或消息的web服务架构、或另一合适web服务架构生成web服务请求。
在一些实施方案中,客户端250(例如,数据库服务客户端)可配置成以对其它应用透明的方式来向其他应用提供对数据库表的基于web服务的存储的访问。例如,客户端250可配置成与操作系统或文件系统集成以便根据本文所述存储模型的合适变型来提供存储。然而,该操作系统或文件系统可向应用(如文件、目录和/或文件夹的常规文件系统层级)呈现不同存储接口。在此类实施方案中,应用无需被修改来利用图1的存储系统服务模型。相反,对接至Web服务平台200的具体组件可由客户端250及操作系统或文件系统代表操作系统环境内执行的应用进行协调。
客户端250可以经由网络260来向web服务平台200传达web 服务请求并从web服务平台接收响应。在各种实施方案中,网络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可以协调web服务(包括存储资源)的客户端使用的计量和会计,如通过跟踪发出请求的客户端250的身份、客户端请求的数量和/或频率、代表客户端250存储或检索的数据表(或其记录)的大小、客户端250所使用的总体存储带宽、客户端250请求的存储的类别、或任何其他可测量客户端使用参数。平台200还可实施财务会计和计费系统或能够维持可由外部系统查询并处理以进行客户端使用活动的报告和计费的使用数据的数据库。在某些实施方案中,平台 200可配置成收集、监控和/或聚合多种存储服务系统操作度量,如反映以下内容的度量:从客户端250接收的请求的速率和类型、此类请求所利用的带宽、对此类请求的系统处理延迟、系统组件利用率(例如,存储服务系统内的网络带宽和/或存储利用率)、因请求造成的错误的速率和类型、存储和请求的数据页面及其记录的特性(例如,大小、数据类型等等)或任何其他合适度量。在一些实施方案中,此类度量可以由系统管理器使用来调谐和维持系统组件,而在其他实施方案中,此类度量(或此类度量的相关部分)可暴露于客户端250,以使这样的客户端能够监控它们对数据库服务210、分布式数据库优化存储服务220和/或另一虚拟计算服务230(或实施那些服务的下层系统)的使用。
在一些实施方案中,平台200还可实施用户验证并且访问控制程序。例如,针对对访问特定数据库表的给定web服务请求,平台200 可配置成确定与请求关联的客户端250是否被授权以访问特定数据库表。平台200可以通过例如针对与特定数据库表关联的凭据评估身份、密码或其他凭据或针对特定数据库表的访问控制列表评估对特定数据库表的所请求的访问,确定这种授权。例如,如果客户端250不具有足够凭据访问特定数据库表,那么平台200可以拒绝对应web 服务请求,例如,通过向发出请求的客户端250返回响应以指示错误状况进行拒绝。各种访问控制策略可由数据库服务210、分布式数据库优化存储服务220和/或其他虚拟计算服务230来存储为访问控制信息的记录或列表。
应当注意,虽然web服务平台200可以表示客户端250可访问实施数据库服务210的数据库系统的特征所借助的主要接口,但是无需表示对此类特征的唯一接口。例如,可不同于web服务接口的替代 API可以用来允许企业内的提供数据库系统的客户端来绕过web服务平台200。应当注意,在本文所述实例中的许多实例中,分布式数据库优化存储服务220可在将数据库服务提供给客户端250的计算系统或企业系统内,并且可以不暴露于外部的客户端(例如,用户或客户端应用)。在此类实施方案中,内部的“客户端”(例如,数据库服务210)可以经本地或专用网络(示为分布式数据库优化存储服务220 与数据库服务210之间的实线(例如,通过正好在实施这些服务的系统之间的API))访问分布式数据库优化存储服务220。在此类实施方案中,在代表客户端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以及若干数据库表的每个的多个读出副本322a、322b和322c还有分布式数据库优化存储服务310(其可或可不对数据库系统的客户端可见,如数据库客户端350a至350n所示)。如这个实例中所示,数据库客户端350a 至350n的一个或多个可以经由网络360访问数据库头节点320(例如,头节点320a、头节点320b、或头节点320c,每个均是相应数据库实例的组件)和/或读出副本(例如,读出副本322a、322b和322c) (例如,这些组件可为网络可寻址和由数据库客户端350a至350n访问的)。应当注意,任何数量读出副本可与特定的数据库实例关联,但是为易于示出和解释,三个读出副本在图3中示出。在不同实施方案中,可由数据库系统采用来代表数据库客户端350a至350n存储一个或多个数据库表的数据页面(以及重做日志记录和/或与其关联的其它元数据)并执行数据库系统的其他功能(如本文中所述)的分布式数据库优化存储服务310可为或可不为网络可寻址和由数据库客户端350a至350n访问的。例如,在一些实施方案中,分布式数据库优化存储服务310可以存储客户端350a至350n不可见的方式执行各种存储、访问、改变记录、恢复和/或空间管理操作。
如先前所指出,每个数据库实例可包括单个数据库引擎头节点 320,所述单个数据库引擎头节点从各客户端程序(例如,应用)和/ 或订户(用户)处接收请求,随后解析它们、优化它们并且发展执行计划以便实行关联的数据库操作。另外如先前所指出,每个读出副本可以接收读出请求(例如,从各客户端程序、订户和/或从数据库引擎头节点处)并且可类似地解析这些请求、优化它们并且发展执行计划以便实行读出(例如,选择)。在图3所示出的实例中,数据库引擎头节点320a的查询解析、优化和执行组件305可对从数据库客户端350a接收且目标在于作为组件的那个数据库引擎头节点320a的数据库实例的查询执行这些功能。在一些实施方案中,查询解析、优化和执行组件305可向数据库客户端350a返回查询响应,所述查询响应可适当地包括写入确认、所请求的数据页面(或其部分)、错误消息和或其他响应。如这个实例中示出,数据库引擎头节点320a还可包括客户端侧存储服务驱动器325,所述客户端侧存储服务驱动器可向分布式数据库优化存储服务310内的读出副本和/或各种存储节点路由读出请求和/或重做日志记录,从分布式数据库优化存储服务310处接收写入确认,从分布式数据库优化存储服务310处接收所请求的数据页面,和/或返回数据页面、错误消息、或对查询解析、优化和执行组件305(其继而可将它们返回至数据库客户端350a)的其他响应。
在这种实例中,数据库引擎头节点320a包括数据页面高速缓存 335,其中最近所访问(读出和/或写入)的数据页面可暂时地保存。如图3所示,数据库引擎头节点320a还可包括事务性和一致性管理组件330,所述事务性和一致性管理组件可以负责提供作为组件的那个数据库引擎头节点320a的数据库实例的事务性和一致性。例如,该组件可负责确保数据库实例和关于该数据库实例的事务的原子性、一致性以及隔离性。如图3所示,数据库引擎头节点320a还可包括可由事务性和一致性管理组件330用来跟踪各种事务的状态并使得未提交的事务的任何本地高速缓存结果回退的事务日志340和撤销日志345。
应当注意,图3中示出的每个其他数据库引擎头节点320(例如, 320b和320c)可以包括类似组件,并且可执行用于由数据库客户端 350a至350n的一个或多个接收并针对作为组件的其的相应的数据库实例的查询的类似功能。
在各种实施方案中,读出副本322a、322b和322c的每个还可包括类似数据库引擎头节点的那些的组件和/或可配置成包括此类组件 (例如,在读出副本转换成数据库引擎头节点以便替代旧头节点)。如图所示,每个读出副本可以包括高速缓存326a以及客户端侧驱动器324a。客户端侧驱动器324a可与数据库引擎头节点的客户端侧存储服务驱动器325类似。此外,头节点与读出副本之间通信可在客户端侧驱动器324a与客户端侧存储服务驱动器325之间传达。高速缓存326a可与数据页面高速缓存335的类似之处是高速缓存可配置成存储最近所访问的数据页面。应当注意,在一个读出副本的高速缓存中存储的数据页面可不同于另一读出副本的高速缓存中存储的数据页面(其也可不同于数据页面高速缓存335中存储的数据页面)。此外,为一个读出副本的高速缓存中的数据页面而存储的实际数据可不同于为另一读出副本的高速缓存中的相同数据页面而存储的实际数据和/或可不同于数据页面高速缓存335中存储的相同数据页面的实际数据。
在一些实施方案中,在将重做日志(或撤销日志)发送至存储层时,客户端侧存储服务驱动器325还可被配置成将高速缓存无效指示 (其可为异步的)发送至读出副本。高速缓存无效指示可以指示对应于重做日志的高速缓存记录过时(如果读出副本存储对应于重做日志的高速缓存记录)和/或其实际上可为重做日志记录。对于对读出对应于过时高速缓存数据的数据的后续接收读出请求(从客户端),读出副本可从分布式数据库优化存储服务310处请求更新版本数据(例如,呈一个或多个重做/撤销日志记录、合并日志记录、或实际数据页面的形式),应用从主要节点接收以创建当前版本的数据的日志记录,并且将当前版本返回至请求读出的客户端。在一些实施方案中,随后,读出副本可以利用当前版本的数据记录来更新它的高速缓存并且移除/重置用于该数据的无效指示。在一些实施方案中,无效指示可为实际重做日志(或撤销日志),并且读出副本可配置成将来自分布式存储服务的日志记录和/或一个或多个日志记录应用至过时高速缓存版本数据记录,由此更新这个数据记录,因此这个数据记录不再过时。
在各种实施方案中,读出副本322a、322b和322c中的一个可转换成新的数据库引擎头节点(例如,如果头节点故障的话)。为了帮助准备进行这种转换,读出副本的一个或多个可配置成从数据库引擎头节点(当仍然活动时)处接受对存储在头节点的高速缓存中的数据页面的指示。指示可为在读出和写入侧上热的数据页面清单。读出副本随后可例如从分布式数据库优化存储设备310检索那些数据页面的版本,并且可将那些检索到的数据页面存储在高速缓存中。清单/ 指示可以周期性地(例如,按时、按日等等)或根据某些事件(例如,每次读出/写入、每10次读出/写入、根据指示可能的头节点故障的某个内头节点逻辑等)来发送。因此,如果转换成头节点,则读出副本的高速缓存可为更温高速缓存。在一个实施方案中,web服务平台200 可以确定一头节点已经故障并且选择要转换的读出副本。在其他实施方案中,用于检测头节点故障的第一读出副本可以确定其应转换成头节点或读出副本可支持哪个读出副本进行转换。在又一个实施方案中,读出副本中的给定一个可预先选择为在先前的头节点故障情况下,要转换成头节点的第一选项。还存在有确定哪个读出副本要转换的其他方式。在一些实施方案中,在转换进程中不会发生数据丢失,因为读出副本被连接至与主要节点写入的相同数据存储装置,并且因此有权访问其所有的数据。这与读出副本利用与由主要节点写入至的那个数据存储装置分开的不同数据存储装置的系统不同。在使用不同数据存储装置的此类系统中,可能在复制异步执行时发生数据丢失,或是在复制同步执行时出现较差性能。
此外,可以存在对应于正对来自先前的头节点的读出副本进行的事务的日志记录(例如,重做和/或撤销),这些日志记录是读出副本不了解(例如,未遇到、未接收到)但由分布式数据库优化存储服务 310接收到的。因此,即使清单帮助使读出副本的相应高速缓存保持为在一定程序上最新的,但是它们可仍在一些方面上是过时的。因此,在一个实施方案中,转换成新头节点的读出副本可配置成(在转换前或转换后)确定哪一个是最后一次日志记录(例如,如由单调增长的标识符标识,如读出副本知道的日志序号(LSN))。随后,读出副本可配置成请求具有比最后一次日志记录稍晚的对应日志记录、已被改变并使那些日志记录在高速缓存中无效的那些数据记录。读出副本还可以配置成请求实际日志记录和/或数据记录以便更新其自己的高速缓存,使其不再无效/过时。另外,读出副本可配置来维持正进行的事务的事务表。读出副本可配置成请求分布式数据库优化存储服务 310来向读出副本发送正进行的事务,并且随后根据正进行的事务更新存储器内结构(例如,事务表)。所转换的读出副本可配置成确定正进行的事务中的特定事务是与头节点的故障有关(例如,造成该头节点崩溃),并且使该事务的改变回退(例如,不对其应用于其自己的高速缓存和/或指示存储层来撤除存储层处的应用)。
在一些实施方案中,本文所述分布式数据库优化存储系统可以组织各种逻辑卷、片段以及页面中的数据以存储在一个或多个存储节点上。例如,在一些实施方案中,每一个数据库是由逻辑卷表示,并且每个逻辑卷在存储节点集合上分成片段。在存储节点中的特定一个上活动的每个片段包含一组连续的块地址。在一些实施方案中,每个数据页面存储在片段中,使得每个片段存储一个或多个数据页面的集合以及其存储的每个数据页面的改变日志(也被称为重做日志)。如本文中详细描述,存储节点可配置成接收重做日志记录(在本文中也可称为ULR)并将它们合并以创建新版本的对应数据页面和/或另外或替代日志记录(例如,延迟和/或响应于对数据页面的请求或响应于数据库崩溃)。在一些实施方案中,根据可变配置(其可由客户端指定,数据库表为该客户端维持在数据库系统中),数据页面和/或改变日志可以镜像在多个存储节点上。例如,在不同实施方案中,根据默认配置、专用持久偏好、或特定于客户端的持久偏好,数据或改变日志的一个、两个、或三个副本可存储在一个、两个、或三个不同可用性区或区域的每个中。
如本文所使用,描述根据各实施方案,以下术语可以用来描述分布式数据库优化存储系统对数据的组织。
卷:卷是表示存储系统的用户/客户端/应用了解的高持久的存储单元的逻辑概念。更具体地,卷是呈现给用户/客户端/应用作为对数据库表的各种用户页面的写入操作的单个一致有序日志的分布式存储区。每个写入操作可编码至用户日志记录(ULR),ULR表示对卷内的单个用户页面的内容的逻辑有序变化。如上指出,ULR在本文中还可称为重做日志记录。每个ULR可以包括唯一LSN或者说是日志序号,其可以是使用单调增加值来指示次序的标识符。例如,LSN 1先于LSN 3,LSN 3先于LSN 6。应当注意,无需使用序列中的每个数字。例如,在一些实施方案中,可以存在LSN 1、2、3、4和6,但无LSN 5。每个ULR可保存至形成保护组(PG)的分布式存储区中的一个或多个同步片段,以便针对ULR提供高持久性和可用性。卷可为可变大小连续范围字节提供LSN型读出/写入接口。
在一些实施方案中,卷可以包括多个扩展,每个扩展通过保护组而变得持久。在此类实施方案中,卷可以表示由可变连续序列的卷扩展而组成的存储单元。针对卷的读出和写入可映射至对组成卷扩展的对应读出和写入。在一些实施方案中,卷大小可以通过添加卷扩展或从卷末尾移除卷扩展而来改变。
片段:片段是分配给单个存储节点的持久性有限的存储单元。更具体地,片段为特定固定大小字节范围的数据提供有限尽可能持久性 (例如,为存储节点的永久但非冗余的单个故障点)。在各种实施方案中,这个数据在一些情况下可以是用户可寻址的数据的镜像,或其可为其他数据,如卷元数据或可擦除代码位。给定片段可准确地在一个存储节点上活动。在存储节点内,多个片段可以在每个SSD上活动,并且每个片段可限制于一个SSD(例如,片段可不横跨多个SSD)。在一些实施方案中,片段可不需要占据SSD上的连续区域;相反,在每个SSD中,可以存在描述每个片段拥有的区域的分配映射。如上指出,保护组可包括多个片段,这些片段铺散在多个存储节点上。在一些实施方案中,片段可以提供用于固定大小连续范围字节(其中大小在创建时限定)的LSN型读出/写入接口。在一些实施方案中,每个片段可由片段UUID标识(例如,片段的通用唯一标识符)。
存储页面:存储页面是存储器块,通常具有固定大小。在一些实施方案中,每个页面是具有由操作系统限定的大小的存储器块(例如,虚拟存储器、盘、或其他物理存储器的存储器块),并且在本文中还可以用术语“数据块”来指代。更确切地,存储页面可为一组连续扇区。它可用作SSD中的分配单元以及存在标头和元数据的日志页面中的单元。在一些实施方案中,并在本文所述数据库系统的上下文中,术语“页面”或“存储页面”可指具有数据库配置限定的大小的类似块,其可通常为2的倍数,如4096、8192、16384或32768字节。
日志页面:日志页面是用于存储日志记录(例如,重做日志记录或撤销日志记录)的存储页面的类型。在一些实施方案中,日志页面大小可与存储页面相同。每个日志页面可以包括包含关于该日志页面的元数据(例如,标识其所属的片段的元数据)的标头。应当注意,日志页面是一组织单元,并且可不一定是写入操作中包括的数据单元。例如,在一些实施方案中,在正常转发处理中,写入操作每次可向日志末尾写入一个扇区。
日志记录:日志记录(例如,日志页面的单独元素)可以具有若干不同分类。例如,用户日志记录(ULR)由存储系统的用户/客户端/应用来创建和了解,可以用来指示对卷中的用户数据的改变。控制日志记录(CLR)是由存储系统生成,可以包含用于跟踪元数据如当前无条件的卷持久LSN(VDL)的控制信息。在一些实施方案中,空日志记录(NLR)可以用作填充内容以便填充日志扇区或日志页面的未使用的空间。在一些实施方案中,在这些分类中的每类内可以存在各种类型日志记录,并且日志记录类型可对应于需要调用来解释日志记录的功能。例如,一种类型可以表示呈使用特定压缩格式的压缩格式的用户页面的所有数据;第二类型可以表示用户页面内字节范围的新值;第三类型可以表示对解释为整数的字节序列的递增操作;并且第四类型可以表示将一个字节范围复制至页面内的另一位置。在一些实施方案中,日志记录类型可由GUID(而非整数或枚举值)标识,这可简化版本化和发展,对于ULR而言尤其如此。
有效负载:日志记录的有效负载是特定于日志记录或特定类型的日志记录的数据或参数值。例如,在一些实施方案中,可能存在大多数(或所有)日志记录包括且存储系统本身了解的参数或属性集。这些属性可以是比起扇区大小而言可能相对小的公共日志记录标头/结构的部分。另外,大多数的日志记录可包括特定于那个日志记录类型的另外参数或数据,并且这个另外信息可被视为该日志记录的有效负载。在一些实施方案中,如果特定ULR的有效负载大于用户页面大小,那么它可以由有效负载包括用于用户页面的所有数据的绝对ULR (AULR)替换。这可使得存储系统能够对ULR的有效负载大小强加上限,这个上限等于用户页面大小。
应当注意,在一些实施方案中,当日志记录存储在片段日志中时,有效负载可与日志标头一起存储。在其他实施方案中,有效负载可以存储在单独位置中,并且指向存储该有效负载的该位置的指针可随日志标头一起存储。在另外一些实施方案中,有效负载的一部分可以存储在标头中,并且该有效负载的其余部分可以存储在单独位置中。如果整个有效负载存储在日志标头中,那么这被称为带内存储;否则,存储可被称为带外存储。在一些实施方案中,最大AULR的有效负载可带外存储在日志的冷区(其在下文进行描述)中。
用户页面:用户页面是存储系统的用户/客户端可见的特定卷的字节范围(固定大小)和其比对。用户界面是一逻辑概念,并且特定用户页面中的字节可或可不存储在任何现有存储页面中。特定卷的用户页面的大小可独立于该卷的存储页面大小。在一些实施方案中,用户页面大小可按卷配置,并且存储节点上的不同片段可以具有不同用户页面大小。在一些实施方案中,用户页面大小可约束为多倍扇区大小(例如,4KB),并且可以具有上限(例如,64KB)。另一方面,存储页面大小对于整个存储节点是固定的,并且可不改变,除非存在对下层硬件的改变。
数据页面:数据页面是用于以压缩形式存储用户页面数据的存储页面的类型。在一些实施方案中,数据页面中存储的每片数据与日志记录关联,并且每个日志记录可以包括指向数据页面内扇区(也被称为数据扇区)的指针。在一些实施方案中,除了每个扇区所提供的那些之外,数据页面可不包括任何嵌入式元数据。数据页面中的扇区之间可无关系。相反,至页面的组织仅可作为数据至片段的分配粒度的表达而存在。
存储节点:存储节点是其上部署存储节点服务器代码的单虚拟机。每个存储节点可以包含多个本地附属SSD,并可提供用于访问一个或多个片段的网络API。在一些实施方案中,各种节点可在活动列表或降级列表上(例如,如果它们响应缓慢或以其他方式受损,但又不是完全不可用的)。在一些实施方案中,客户端侧驱动器可有助于 (或负责于)将节点分类为活动或降级的,以便基于观察到的性能,确定是否且何时应替换它们,和/或确定何时且如何在各个节点之间重新分布数据。
SSD:如本文中所指,术语“SSD”可指如存储节点可遇到的本地块存储卷,无论该存储卷采用的存储类型如何,例如,盘、固态驱动器、电池支持RAM、NVMRAM设备(例如,一个或多个NVDIMM) 或另一类型的永久存储装置。SSD并不一定直接映射至硬件。例如,在不同实施方案中,单个固态存储装置可分解成多个本地卷,其中每个卷分成并分带成多个片段,和/或单驱动器可分解成多个卷以便易于管理。在一些实施方案中,每个SSD可以在单个固定位置存储分配映射。这个映射可以指示特定片段拥有哪些存储页面以及这些页面中的哪些才是日志页面(如与数据页面相反)。在一些实施方案中,存储页面可预先分配至每个片段,使得转发处理可以无需等待分配。在片段使用新分配的存储页面前,对分配映射的任何改变可能需要变得有持久性。
分布式数据库优化存储系统的一个实施方案由图4中的框图示出。在这个实例中,数据库系统400包括分布式数据库优化存储系统 410,所述分布式数据库优化存储系统经由互连460来与数据库引擎头节点420、读出副本422a以及读出副本422b通信(仅示出两个读出副本以便易于示出/解释)。如图3中示出的实例,数据库引擎头节点420可以包括客户端侧存储服务驱动器425,并且读出副本422a 和422b各自分别可以包括客户端侧驱动器424a和424b。在这个实例中,分布式数据库优化存储系统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以及附属SSD 491至498。
如先前所指出,在一些实施方案中,扇区是在SSD上的对齐单元并且可为SSD上的可写入而没有写入将仅部分完成的风险的最大大小。例如,用于各固态驱动器和旋转介质的扇区大小可为4KB。在本文所述分布式数据库优化存储系统的一些实施方案中,每个且每一个扇区可以在扇区开始处包括64位(8字节)CRC,无论扇区所属更高级的实体如何。在此类实施方案中,这个CRC(其可以在每次扇区从SSD中读出时有效)可以用于检测崩溃。在一些实施方案中,每个且每一个扇区还可包括“扇区类型”字节,其值将扇区标识为日志扇区、数据扇区、或未初始化扇区。例如,在一些实施方案中,扇区类型字节值0可以指示扇区未初始化。
图5是示出根据一个实施方案的数据库系统中的单独分布式数据库优化存储系统的使用的框图。在这个实例中,一个或多个客户端进程510可将数据存储至由包括数据库引擎520和分布式数据库优化存储系统530的数据库系统维持的一个或多个数据库表。在图5所示出的实例中,数据库引擎520包括数据库层组件560和客户端侧驱动器540(其用作分布式数据库优化存储系统530、数据库层组件560 以及读出副本522之间的接口)。在一些实施方案中,数据库层组件 560可以执行功能,如图3的查询解析、优化和执行组件305与事务性和一致性管理组件330执行的那些功能,和/或可以存储数据页面、事务日志和/或撤销日志(如图3的数据页面高速缓存335、事务日志 340和撤销日志345存储的那些)。
在这个实例中,一个或多个客户端进程510可向数据库层组件 560发送数据库查询请求515(其可包括目标在于存储节点535a至 535n的一个或多个上存储的数据的读出和/或写入请求),并且可从数据库层组件560接收数据库查询响应517(例如,包括写入确认和/ 或请求数据的响应)。包括对写入数据页面的请求的每个数据库查询请求515可解析并优化,以便生成一个或多个写入记录请求541,所述写入记录请求可发送至客户端侧驱动器540,以后续路由至分布式数据库优化存储系统530。在这个实例中,客户端侧驱动器540可以生成对应于每个写入记录请求541的一个或多个重做日志记录531,并且可以将它们发送至分布式数据库优化存储系统530的存储节点 535的特定一个。在一些实施方案中,对于写入请求,客户端侧驱动器540可向读出副本522的客户端侧驱动器524发送高速缓存无效指示546(例如,通知和/或一个或多个重做日志记录531)。分布式数据库优化存储系统530可向数据库引擎520(具体是指客户端侧驱动器540)返回每个重做日志记录531的对应写入确认532。客户端侧驱动器540可向数据库层组件560传送这些写入确认(作为写入响应 542),所述数据库层组件随后可向一个或多个客户端进程510发送对应响应(例如,写入确认)作为其中一个数据库查询响应517。
在这个实例中,包括对读出数据页面的请求的每个数据库查询请求515可解析并优化,以便生成一个或多个读出记录请求543,所述读出记录请求可发送至客户端侧驱动器540,以后续路由至分布式数据库优化存储系统530。在这个实例中,客户端侧驱动器540可以发送这些请求以指定分布式数据库优化存储系统530的存储节点535中的一个,并且分布式数据库优化存储系统530可以将所请求的数据页面533返回至数据库引擎520(具体来说是返回至客户端侧驱动器 540)。客户端侧驱动器540可以将所返回的数据页面发送至数据库层组件560作为返回数据记录544,并且随后,数据库层组件560可以将数据页面发送至一个或多个客户端进程510作为数据库查询响应 517。应当注意,除了或替代对分布式数据库优化存储系统530做出请求,可对数据库引擎的高速缓存(例如,数据页面高速缓存335) 做出某些读出和写入请求。作为解析和优化某些读出请求的部分,读出查询计划的一些或全部可被传至读出副本522以便执行读出。
在一些实施方案中,各种错误和/或数据丢失消息534可以从分布式数据库优化存储系统530发送至数据库引擎520(具体来说是发送至客户端侧驱动器540)。这些消息可从客户端侧驱动器540传至数据库层组件560作为错误和/或丢失报告消息545,并且随后连同(或替代)数据库查询响应517一起传至一个或多个客户端进程510。
如本文中所述,在各种实施方案中,对于写入请求,客户端侧驱动器540可向读出副本522的客户端侧驱动器524发送高速缓存无效指示546(例如,通知和/或一个或多个重做日志记录531)。高速缓存无效指示546可以指示高速缓存526中一个或多个高速缓存数据记录是过时的。在一个实施方案中,高速缓存无效指示546可发送至读出副本522,无论读出副本522的高速缓存526是否存储根据写入请求而改变的数据。在另一实施方案中,数据库引擎520可以确定哪个读出副本(如果存在的话)存储对应于由写入请求改变的数据的数据并选择性地向那些读出副本发送高速缓存无效指示546。
在一些实施方案中,客户端进程510可直接向读出副本522提交查询数据库的数据库读出请求572。对于对未过时的高速缓存数据的请求,读出副本可从高速缓存526检索所请求的数据并将其返回至客户端进程以作为数据库读出响应576。对于对在高速缓存526中呈现为过时数据的数据记录或未呈现在高速缓存526中的数据记录的请求,客户端侧驱动器524可向分布式数据库优化存储系统530发送页面请求573,并且所请求的数据页面574可返回至读出副本522并随后提供至客户端进程510作为数据库读出响应576。在一个实施方案中,数据页面574可通过读出副本522的客户端侧驱动器524路由,并且数据页面可存储在高速缓存526中并替换过时高速缓存数据或替换确定为冷数据(例如,比起其他高速缓存数据被访问的频率更低) 的一些其他数据。
在各种实施方案中,读出副本522可转换成主要节点/数据库引擎。这样,所转换的读出副本可配置成包括数据库引擎520中示出的所有组件,以及图5未示出的那些(例如,数据页面高速缓存335、事务性和一致性管理330等等)。为了帮助准备这种转换,数据库引擎520(虽然仍是主要节点)可向读出副本522发送对数据库引擎的高速缓存(例如,数据页面高速缓存335)中存储的数据页面的指示 (未在图5中示出,但可从客户端侧驱动器540向客户端侧驱动器 524发送)。如本文中所述,指示可为在读出和写入侧上热的(例如,最主动读出和写入)数据页面清单。读出副本522随后可例如从分布式数据库优化存储服务530检索那些数据页面版本,并且可将那些检索到的数据页面存储在高速缓存中。清单/指示可以周期性地(例如,按时、按日等等)或根据某些事件(例如,每次读出/写入、每10次读出/写入、根据指示可能主要节点故障的某个内部主要节点逻辑等) 来发送。因此,读出副本522的高速缓存526可比先前要温,这可有利于在主要节点发生故障时更快地恢复和转换。
在各种实施方案中,如本文中所述,可以存在对应于正对来自先前主要节点即数据库引擎520的读出副本522进行的事务(例如,写入)的日志记录(例如,重做和/或撤销),这些日志记录是读出副本 522不了解(例如,未遇到、未接收到)但由分布式数据库优化存储服务530接收到的。因此,即使清单帮助高速缓存526保持在一定程度上是最新的,但是高速缓存526仍会包括一些过时条目。因此,在一个实施方案中,转换成新的主要节点的读出副本522(在转换前或转换后)可以确定哪一个是读出副本522接收到的最后一次日志记录(例如,如由单调增长的标识符如LSN标识)。随后,读出副本522 可使高速缓存526中的对应于比所确定的最后一次日志记录稍后的改变的具有相应的标识符的日志记录的数据无效。读出副本可以请求 (例如,从分布式数据库优化存储服务530处)实际日志记录和/或数据记录以便更新高速缓存526,使得这个高速缓存不再是过时的。另外或替代地,读出副本522可以维持正进行的事务的存储器内数据结构(例如,事务表)。读出副本可从分布式数据库优化存储服务530 请求正进行的事务,并且随后利用正进行的事务更新存储器内结构。在一个实施方案中,所转换的读出副本可以确定正进行的事务中的特定事务与主要节点的故障相关(例如,造成主要节点崩溃),并且使这个事务的改变回退(例如,不应用该改变)。应当注意,在日志结构化的存储系统中,如分布式数据库优化存储服务530中,由分布式数据库优化存储服务530提供的正进行的事务可不包括每个正进行的事务。例如,如果正进行的事务包括由LSN 1标识的将数据记录X 从值‘1’改变为值‘2’的重做日志、由LSN 2标识的然后将数据记录X 改变为值‘4’的重做日志、接下来的由LSN 3标识的撤销与LSN 2关联的改变的撤销日志,那么分布式数据库优化存储服务530可以仅向读出副本提供由LSN 1标识的重做日志(且不提供与LSN 2和LSN 3 关联的日志)。
应当注意,在各种实施方案中,图5中的数据库引擎520与分布式数据库优化存储系统530之间的API调用和响应(例如,API 531 至API 534)和/或客户端侧驱动器540与数据库层组件560之间的 API调用和响应(例如,API 541至API 545)和/或读出副本522与分布式数据库优化存储系统530之间的API调用和响应(例如,API 573至API 574)和/或客户端侧驱动器524与高速缓存526之间的API 调用和响应(例如,API 575和API 547)可经安全代理连接(例如,由网关控制平面管理的那个)执行,或者可经公共网络或替代地专用信道(如虚拟专用网络(VPN))连接执行。通向本文所述数据库系统的组件和/或在这些组件之间的这些和其他API可以根据不同技术实施,所述技术包括但不限于简单对象访问协议(SOAP)技术以及表征状态传输(REST)技术。例如,这些API可为但不一定被实施为SOAP API或RESTful API。SOAP是用于在基于Web的服务的上下文中交换信息的协议。REST是用于分布式超媒体系统的架构型式。 RESTful API(也可称为RESTful web服务)是使用HTTP和REST 技术实施的web服务API。在一些实施方案中,本文所述API可以各种语言来与客户端库一起打包,所述语言包括但不限于C、C++、Java、 C#以及Perl,用以支持与数据库引擎520和/或分布式数据库优化存储系统530的集成。
如上指出,在一些实施方案中,数据库系统的功能组件可以在数据库引擎执行的那些与单独分布式数据库优化存储系统中执行的那些之间划分。在一个特定实例中,响应于从客户端进程(或其线程) 接收对将一些内容插入数据库表中的请求(例如,以通过向该数据块添加记录来对单数据块进行更新),主要节点的一个或多个组件可以执行查询解析、优化以及执行,并且可向事务性和一致性管理组件发送该查询的每个部分。事务性和一致性管理组件可以确保其他客户端进程(或其线程)不会尝试同时修改相同的行。例如,事务性和一致性管理组件可负责来确保这个改变原子性地、一致性地、持久性地且以隔离方式来在数据库中执行。例如,事务性和一致性管理组件可与主要节点的客户端侧存储服务驱动器一起工作来生成要发送至分布式数据库优化存储服务中的节点中的一个上的重做日志记录,并且将其按序和/或根据确保ACID特性符合该事务的定时来发送至分布式数据库优化存储服务(连同响应于其他客户端请求而生成的其他重做日志)。在接收重做日志记录(其可以被存储服务视为“更新记录”) 时,对应存储节点可更新数据块,并且可更新数据块的重做日志(例如,对数据块的所有改变的记录)。在一些实施方案中,该数据库引擎可负责来生成此改变的撤销日志记录,并且还可负责针对撤销日志生成重做日志记录,这两者可本地使用(在数据库层中)来确保事务性。然而,不同于传统的数据库系统中那样,本文所述系统可以将用于将改变应用至数据块的职责转移至存储系统(而非在数据库层处应用这些改变并将修改的数据块发往存储系统)。
现在转至图6,在各种实施方案中,数据库系统300可配置成在数据库写入时使读出副本中的高速缓存条目无效。虽然图6的方法可描述为由分布式数据库系统的各种组件(例如,节点)执行,如图3 至图5的主要节点、读出副本、或读出副本和/或主要节点的客户端驱侧动器,但是在一些情况下,所述方法无需通过任何特定组件执行。例如,根据一些实施方案,在一些情况下,图6的方法可由一些其他组件或计算机系统执行。或者,在一些情况下,数据库系统300的组件可以不同于图3至图5的实例所示的方式来组合或存在。在各种实施方案中,图6的方法可由分布式数据库系统的一个或多个节点执行,其中一个节点示为图10的计算机系统。图6的方法示为用于在数据库写入时使读出副本中的高速缓存条目无效的方法的一个示例实施方式。在其他实施方式中,图6的方法可以包括另外或比示出的更少的方框。例如,图6的方法可以结合图7、图8和/或图9的方法的一个或多个方框使用。
在610处,可以接收指定对由数据库服务存储的数据记录的修改的写入请求。例如,写入请求(例如,插入、更新、删除等等)可由主要节点从数据库服务的客户端接收。写入请求可以指定要对数据库表中存储的给定数据记录做出的修改。作为简单实例,写入请求可以指定将数据记录A改变为值‘2’。
如620处所示,可以生成表示要对数据记录做出的修改的日志记录。在一个实施方案中,主要节点(客户端侧驱动器)可以生成日志记录,所述日志记录可为对数据记录的改变的指示(例如,对数据记录A的改变,这种改变将造成其值改变为‘2’,而不包括整个数据页面本身)。在此类实施方案中,日志记录可不为包括数据记录本身的整个已改变的数据页面。
如630处所示,日志记录可发送至(例如,由主要节点的客户端侧驱动器)存储包括给定数据记录的数据页面的版本的分布式存储服务的特定服务器节点(或多个服务器节点)。随后,该服务器节点可将修改从日志记录应用至服务器节点存储的实际数据页面。
如640处所示,高速缓存无效指示可发送至读出副本(或至多个读出副本),指示读出副本的高速缓存中存储的给定数据记录的高速缓存版本是过时的。如本文中所述,在各种实施方案中,高速缓存无效指示可为标识随后可由读出副本存储的所对应高速缓存数据过时的给定数据记录的简单通知,和/或高速缓存无效指示还可包括发送至存储服务的实际日志记录(例如,以供由读出副本应用至其数据记录的高速缓存版本)。通知可存储在读出副本维持的数据结构中,使得对于后续请求对应于过时数据的数据而言,读出副本将会了解日期是过时的,并从存储服务而非从其高速缓存检索数据。在高速缓存无效指示包括实际日志记录的实施方案中,读出副本可将日志记录所指定的修改应用至其高速缓存。这样做后,那个高速缓存条目(以及数据记录)就可不再被指示为是过时的。例如,在更新其高速缓存之后,客户端侧驱动器或读出副本的某个其他组件可将用于该特定数据记录的过时高速缓存指示移除(例如,从维持过时高速缓存条目列表的数据结构)。应当注意,在一些实施方案中,由于系统可以是异步的,并且该读出副本的高速缓存可能过时,因此其可基于存储服务所存储的内容以及来自主要节点的日志记录中指示的内容更新其高速缓存。图7在下文中更详细地描述这种情景。
现在转至图7,在各种实施方案中,读出副本可配置成接收并响应于读出请求。虽然图7的方法可描述为由分布式数据库系统的各种组件(例如,节点)执行,如图3至图5的读出副本、或读出副本的客户端侧驱动器,但是在一些情况下,所述方法无需通过任何特定组件执行。例如,根据一些实施方案,在一些情况下,图7的方法可由一些其他组件或计算机系统执行。或者,在一些情况下,数据库系统 300的组件可以不同于图3至图5的实例所示的方式来组合或存在。在各种实施方案中,图7的方法可由分布式数据库系统的一个或多个节点执行,其中一个节点示为图10的计算机系统。图7的方法示为用于读出副本接收和响应于读出请求的方法的一个示例实施方式。在其他实施方式中,图7的方法可以包括另外或比示出的更少的方框。例如,图7的方法可以结合图6、图8和/或图9的方法的一个或多个方框使用。
如710处所示,读出副本可以接收对读出数据记录(其对应于过时条目)的请求(例如,从客户端)。应当注意,对读出数据记录的请求有时可在方框610至640已经执行后传入。例如,许多读出和/ 或写入可在于方框710处接收对对应于过时条目的数据记录的请求之前,针对其他数据记录进行。或者,如果这个数据记录尤其热,那么其可以是由数据库层接收的下一请求。
应当注意,读出副本还可接收对其他数据记录(例如,高速缓存中的未过时的那种、完全未存储在高速缓存中的那种)的请求。关于对高速缓存中的未过时的数据记录的请求,读出副本可仅向客户端返回来自其高速缓存的所请求的数据。关于对未存储在该读出副本的高速缓存中的数据记录的请求,读出副本可以从分布式存储服务请求数据,从存储层接收那个数据,将该数据存储在高速缓存中,并向发出请求的客户端提供数据。
在720处,可以确定读出副本的高速缓存中的数据记录的高速缓存版本是过时的。例如,在一些实施方案中,这种确定可以基于确定高速缓存无效指示针对那个特定数据记录是否是存在/活动的。例如,在一个实施方案中,读出副本可以存储此类指示(例如,在数据结构中),此类指示包括它们所属于的数据记录。在一个实施方案中,对于已过时的高速缓存数据,读出副本可不将过时数据返回至发出请求的客户端。作为另一实例,由于系统可以是异步的,因此读出副本可在其高速缓存中存储数据记录的更新为具有值5的暂时性标识符(例如,LSN)的版本。由主要节点发送至存储服务和读出副本的日志记录可以具有为10的LSN。而且,存储服务存储的数据的版本可更新为LSN 9版本。在这种实例中,读出副本可确定其版本是过时的(甚至除了其从主要节点接收到的日志记录)。如本文中所述,在这种实例中,读出副本可从存储服务请求日志记录,以在利用来自主要节点的日志记录来进一步更新其高速缓存之前对其高速缓存进行更新。
如730处所示,读出副本可以从分布式存储服务请求该数据记录的当前版本。在一个实施方案中,该分布式存储服务可响应于来自读出副本的请求将所请求的数据记录(或用以更新高速缓存版本的一个或多个日志记录)的当前版本返回至读出副本。继续上述实例,读出副本可以存储数据的更新为LSN 5的版本,存储服务可以存储更新为 LSN 9的版本,并且主要节点所发送的日志记录可与LSN 10关联。在这种实例中,读出副本可从存储服务请求并检索为LSN 9的数据记录或与介于5与9之间的LSN关联的一个或多个日志记录,并且应用那些日志记录本身。在此点上,读出副本用于该数据记录的高速缓存条目可更新为LSN 9。随后,读出副本可进一步利用来自主要节点的日志记录来更新其更新为LSN 9的高速缓存版本,以便创建数据记录的为LSN 10的当前版本。读出副本随后可用来自分布式存储服务的数据记录的当前版本来替换过时高速缓存数据,并且如740处所示,读出副本随后可向发出请求的客户端发送该数据记录的当前版本。
应当注意,在一些实施方案中,方框720和730可以在从主要节点接收到日志记录时执行,而不需要在方框710处请求特定数据记录。以下在图8的方框830处描述类似情景。此外,另外注意,读出副本的高速缓存的更新可在除了响应于从主要节点接收无效指示(例如,日志记录)外的时间执行。例如,读出副本可以确定存储服务存储的数据记录的版本是更新的(例如,与下一LSN相关联),并请求和接收更新数据记录或日志记录以应用至其自己的高速缓存。
现在转至图8,在各种实施方案中,数据库系统300可配置成更新(保温)读出副本的高速缓存。虽然图8的方法可描述为由分布式数据库系统的各种组件(例如,节点)执行,如图3至图5的读出副本、或读出副本的客户端侧驱动器,但是在一些情况下,所述方法无需通过任何特定组件执行。例如,根据一些实施方案,在一些情况下,图8的方法可由一些其他组件或计算机系统执行。或者,在一些情况下,数据库系统300的组件可以不同于图3至图5的实例所示的方式来组合或存在。在各种实施方案中,图8的方法可由分布式数据库系统的一个或多个节点执行,其中一个节点示为图10的计算机系统。图8的方法示为用于更新读出副本的高速缓存的方法的一个示例实施方式。在其他实施方式中,图8的方法可以包括另外或比示出的更少的方框。例如,图8的方法可以结合图6、图7和/或图9的方法的一个或多个方框使用。
如810处所示,哪个数据页面存储在主要节点的高速缓存中的指示可由读出副本例如从主要节点处接收。在一个实施方案中,指示可为主要节点的高速缓存中存在的数据页面的清单,这些数据页面可对应于在读出和写入侧上热的页面。清单/指示可以周期性地(例如,按时、按日等等)或根据某些事件(例如,每次读出/写入、每10次读出/写入、根据指示可能主要节点故障的某个内部主要节点逻辑等) 来发送。
在820处,该读出副本的高速缓存可以利用主要节点的高速缓存中存储的数据页面的版本进行更新。例如,读出副本可例如从分布式数据库优化存储服务请求/检索清单中数据页面的版本。随后,读出副本可将那些检索到的数据页面存储在它们相应高速缓存中。因此,如果转换成/故障转移至主要节点,则读出副本的高速缓存可为温高速缓存,并且因此允许实现更快转换/启动。
如830处所示,该读出副本的高速缓存可以利用正进行的事务进行更新。在一个实施方案中,可以存在对应于正对来自先前主要节点的读出副本进行的事务的日志记录(例如,重做和/或撤销),这些日志记录是读出副本不了解(例如,未遇到、未接收到)但由分布式存储服务接收到的。因此,即使清单帮助使读出副本的相应高速缓存保持为在一定程序上最新的,但是高速缓存仍会存储一些过时数据。因此,在一个实施方案中,转换成新的主要节点的读出副本和/或许多读出副本(在转换前或转换后)可以确定哪一个是读出副本所知道的最后一次日志记录(例如,如由单调增长的标识符(如LSN)标识)。随后,读出副本可以从分布式存储服务请求与比读出副本所知道的最后一次日志记录稍后的日志记录关联的那些数据记录。根据那个信息,读出副本可以确定哪个数据是过时的(与读出副本不知道的日志记录关联的记录)并指出其是过时的。在一个实施方案中,读出副本随后可以请求实际日志记录和/或数据记录以便更新其自己的高速缓存,使其不再无效/过时。
在一个实施方案中,读出副本可以维持正进行的事务的事务表。正进行的事务在本文中用来描述对分布式存储服务从主要节点处接收但未被任何读出副本知道/接收的数据进行的事务。读出副本可以请求分布式存储服务向读出副本发送正进行的事务,并且随后根据正进行的事务更新存储器内结构(例如,事务表)。所转换的读出副本可以确定正进行的事务中的特定事务与主要节点的故障相关(例如,造成主要节点崩溃),并且使这个事务的改变回退(例如,不应用该改变)。
现在转至图9,在各种实施方案中,数据库系统300可配置成将读出副本转换(例如,故障转移)成新的主要节点。虽然图9的方法可描述为由分布式数据库系统的各种组件(例如,节点)执行,如图 3至图5的读出副本、或读出副本的客户端侧驱动器,但是在一些情况下,所述方法无需通过任何特定组件执行。例如,根据一些实施方案,在一些情况下,图9的方法可由一些其他组件或计算机系统执行。或者,在一些情况下,数据库系统300的组件可以不同于图3至图5 的实例所示的方式来组合或存在。在各种实施方案中,图9的方法可由分布式数据库系统的一个或多个节点执行,其中一个节点示为图 10的计算机系统。图9的方法示为用于将读出副本转换/故障转移至主要节点的方法的一个示例实施方式。在其他实施方式中,图9的方法可以包括另外或比示出的更少的方框。例如,图9的方法可以结合图6、图7和/或图8的方法的一个或多个方框使用。
在910处,可检测数据库主要节点故障事件。主要节点故障可为任何类型系统故障,这种系统故障造成主要节点无法继续运行,如功率损失、无可用存储器、系统失灵等。检测可以多种方式发生。例如,特定读出副本的客户端侧驱动器可能无法与故障主要节点通信。作为另一实例,故障主要节点可以将对问题的指示分发至读出副本的一个或多个,以便指示主要节点将发生的故障。还存在着检测该故障的其他实例。
如920处示出,读出副本可转换成主要节点,以便替换先前主要节点。这种转换可为用于替换故障主要节点的故障转移进程的部分。可以根据多个方式(例如,预先选择、投票、首先进行检测、由web 服务平台选择等)确定哪个读出副本要转换成主要节点,如本文中所述。在一个实施方案中,所转换的读出副本可能已与存储层及其他读出副本建立连接。如果没有建立连接,那么920处的转换还可包括建立此类连接。如果存在正进行的事务使得所转换的读出副本的高速缓存未完全更新,那么可以执行图8的方法的一个或多个方框以进一步更新高速缓存。如本文中所述,由于读出副本附属与由主要节点写入至的相同数据存储装置,因此与针对读出副本和主要节点使用单独存储装置的系统相比,在将读出副本转换成主要节点的过程中不会发生数据丢失。
如930处所示,新的主要节点可被提供来例如由其他读出副本、由客户端和/或由存储服务来访问。例如,在一个实施方案中,新的主要节点可与读出副本和/或存储服务(和/或活动的客户端,如果存在一个的话)通信,从而指示其为新的主要节点并且示出其正处于准备好的状态。
所公开的读出副本可以通过消除在数据块级的物理复制(至持久存储装置的)的需要和/或通过消除具有运行至两个盘集的更新内容的两个完整的数据库的需要来增强效率。作为替代,主要节点和读出副本可附属相同存储装置。此外,由于高速缓存可以同步(或近似于同步)保存,因此它可有利于使读出副本之间能够无需锁定或一致性。同步保存高速缓存还可通过使得新的主要节点已具有温高速缓存促成读出副本至主要节点的故障转移/转换,从而有效减少总体故障回复时间。
在各种实施方案中,本文所述方法(例如,图6至图9的方法) 可由硬件和软件的任何组合实施。例如,在一个实施方案中,方法可由计算机系统(例如,如图10的计算机系统)实施,该计算机系统包括执行存储在耦接至处理器的计算机可读存储介质上的程序指令的一个或多个处理器。程序指令可配置成实施本文所述功能(例如,实施本文所述数据库服务/系统和/或存储服务/系统的各种服务器和其他组件的功能)。
图10是示出根据各种实施方案的被配置成实施本文所述数据库系统的至少一部分的计算机系统的框图。例如,在各种实施方案中,计算机系统1000可配置成实施数据库层的主要节点、读出副本、或代表数据库层的客户端存储数据库表和关联的元数据的单独分布式数据库优化存储系统的多个存储节点中的一个。计算机系统1000可为各种类型设备中的任何设备,包括但不限于:个人计算机系统、台式计算机、膝上型或笔记本计算机、主机计算机系统、手持计算机、工作站、网络计算机、消费设备、应用服务器、存储设备、电话、移动电话、或一般任何类型的计算设备。
计算机系统1000包括经由输入/输出(I/O)接口1030耦接至系统存储器1020的一个或多个处理器1010(其中任何可以包括多个核心,可为单线程或多线程的)。计算机系统1000还包括耦接至I/O接口1030的网络接口1040。在各种实施方案中,计算机系统1000可为单处理器系统(包括一个处理器1010)或多处理器系统(包括若干处理器1010(例如,两个、四个、八个、或另外合适的数量))。处理器1010可为能够执行指令的任何合适的处理器。例如,在各种实施方案中,处理器1010可为实现多个指令集架构(ISA)中的任何 ISA的通用或嵌入处理器,如x86、PowerPC、SPARC、或MIPS ISA 或任何其他合适ISA。在多处理器系统中,每个处理器1010可共同地但非必须实现相同ISA。计算机系统1000还包括用于经由通信网络(例如,互联网、LAN等)与其他系统和/或组件通信的一个或多个网络通信设备(例如,网络接口1040)。例如,在系统1000上执行的客户端应用可使用网络接口1040与在实施本文所述数据库系统的组件的一个或多个的单服务器或服务器群上执行的服务器应用通信。在另一实例中,在计算机系统1000上执行的服务器应用的实例可以使用网络接口1040来与可实施在其他计算机系统(例如,计算机系统1090)上的服务器应用(或另一服务器应用)的其他实例通信。
在所示实施方案中,计算机系统1000还包括了一个或多个永久存储设备1060和/或一个或多个I/O设备1080。在各种实施方案中,永久存储设备1060可对应于盘驱动器、带驱动器、固态存储器、其他大容量存储设备或任何其他永久存储设备。计算机系统1000(或分布式应用或其上运行的操作系统)可按需要将指令和/或数据存储在永久存储设备1060中,并且可按需要检索所存储的指令和/或数据。例如,在一些实施方案中,计算机系统1000可以托管存储系统服务器节点,并且永久存储装置1060可以包括该附属服务器节点的SSD。
计算机系统1000包括一个或多个系统存储器1020,系统存储器 1020被配置成存储可由处理器1010访问的指令和数据。在各种实施方案中,系统存储器1020可使用任何合适的存储器技术(例如,高速缓存、静态随机存取存储器(SRAM)、DRAM、RDRAM、EDO RAM、 DDR10RAM、同步动态RAM(SDRAM)、Rambus RAM、EEPROM、非易失性/闪存型存储器或任何其他类型的存储器中的一个或多个) 来实施。系统存储器1020可以包含可由处理器1010执行来实施本文所述的方法和技术的程序指令1025。在各种实施方案中,程序指令 1025可以平台本机二进制码、任何解释语言(如JavaTM字节代码) 或以任何其他语言(如C/C++、JavaTM等)或它们的任何组合进行编码。例如,在所示实施方案中,程序指令1025包括程序指令,所述程序指令可执行来在各种实施方案中实施以下项的功能:数据库层主要节点、多个读出副本中的一个读出副本、或代表数据库层的客户端存储数据库表和关联的元数据的单独分布式数据库优化存储系统的多个存储节点中的一个存储节点。在一些实施方案中,程序指令1025可以实施多个单独的客户端、服务器节点和/或其他组件。
在一些实施方案中,程序指令1025可以包括可执行来实施操作系统(未示出)的指令,所述操作系统可为各种操作系统中的任何操作系统,如UNIX、LINUX、SolarisTM、MacOSTM、WindowsTM等。程序指令1025的任何或全部可提供为计算机程序产品或软件,其可包括具有指令存储在其上的非暂时计算机可读存储介质,可以用来根据各种实施方案对计算机系统(或其他电子设备)进行编程以执行进程。非暂时计算机可读存储介质可以包括用于存储呈机器(例如,计算机)可读形式(例如,软件、处理应用)的信息的任何机制。一般来说,非暂时计算机可访问介质可以包括计算机可读存储介质或存储器介质,如磁性或光学介质,例如,经由I/O接口1030耦接到计算设备1000的盘或DVD/CD-ROM。非暂时计算机可读存储介质还可包括任何易失性或非易失性介质,如RAM(例如,SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等,这些易失性或非易失性介质可作为系统存储器1020或另一类型的存储器包括在计算机系统 1000的一些实施方案中。在其他实施方案中,程序指令可以使用经由通信介质(如网络和/或无线链路,如可经由网络接口1040而实施的那些)来传达的光学、声学或其他形式的传播信号(例如,载波、红外信号、数字信号等)进行通信。
在一些实施方案中,系统存储器1020可以包括数据存储区1045,数据存储区可如本文所述那样配置。例如,本文所述如由数据库层存储(例如,在主要节点上)的信息如事务日志、撤销日志、高速缓存页面数据或用于执行本文所述数据库层功能的其他信息可以在不同时间上并且在各种实施方案中存储在数据存储区1045中、或存储在一个或多个节点上的系统存储器1020的另一部分中、存储在永久存储设备1060中、和/或存储在一个或多个远程存储设备1070上。沿着那些线路,本文所述如由读出副本存储的信息如读出副本的高速缓存中存储的各种数据记录、存储器内数据结构、清单数据结构和/或用于执行本文所述读出副本功能的其他信息可以在不同时间上并且在各种实施方案中存储在数据存储区1045中、或存储在一个或多个节点上的系统存储器1020的另一部分中、存储在永久存储设备1060 中、和/或存储在一个或多个远程存储设备1070上。类似地,本文所述如由数据库层存储的信息(例如,重做日志记录、数据页面、数据记录、和/或用于执行本文所述分布式存储系统的功能的其他信息) 可以在不同时间上并且在各种实施方案中存储在数据存储区1045 中、或存储在一个或多个节点上的系统存储器1020的另一部分中、存储在永久存储设备1060中、和/或存储在一个或多个远程存储设备 1070上。一般来说,系统存储器1020(例如,系统存储器1020内的数据存储区1045)、永久存储装置1060和/或远程存储装置1070可存储数据块、数据块的副本、与数据块关联的元数据和/或它们的状态、数据库配置信息、和/或可用于实施本文所述的方法和技术的任何其他信息。
在一个实施方案中,I/O接口1030可配置成协调处理器1010、系统存储器1020和系统中的任何外围设备(包括通过网络接口1040 或其他外围接口)之间的I/O通信量。在一些实施方案中,I/O接口 1030可以执行任何必要协议、定时或用于将来自一个组件(例如,系统存储器1020)的数据信号变换成适于另一组件(例如,处理器 1010)使用的格式的其他数据变换。在一些实施方案中,I/O接口1030 可以包括对通过任何类型外围总线附接的设备的支持,如外围组件互连(PCI)总线标准或通用串行总线(USB)标准的变型。在一些实施方案中,I/O接口1030功能可划分成两个或更多个单独组件,例如像北桥和南桥。另外,在一些实施方案中,I/O接口1030(如通向系统存储器1020的接口)的功能性的一些或全部可直接并入于处理器 1010。
例如,网络接口1040可配置成允许在计算机系统1000与附接至网络的其他设备如其他计算机系统1090(其可实施本文所述数据库系统的一个或多个存储系统服务器节点、主要节点、读出副本节点和 /或客户端)之间交换数据。另外,网络接口1040可配置成允许计算机系统1000与各种I/O设备1050和/或远程存储装置1070之间的通信。在一些实施方案中,输入/输出设备1050可以包括一个或多个显示终端、键盘、小键盘、触摸板、扫描设备、语音或者光学识别设备、或适于由一个或多个计算机系统1000输入或检索数据的任何其他设备。多个输入/输出设备1050可存在于计算机系统1000中,或可分布于包括计算机系统1000的分布式系统的各种节点上。在一些实施方案中,类似输入/输出设备可独立于计算机系统1000,并可通过有线或无线连接如通过网络接口1040来与包括计算机系统1000的分布式系统的一个或多个节点交互。网络接口1040可以共同支持一个或多个无线联网协议(例如,Wi-Fi/IEEE 802.11或另一无线联网标准)。然而,在各种实施方案中,网络接口1040可以经由任何合适的有线或无线通用数据网络(例如像其他类型的以太网)来支持通信。另外,网络接口1040可以经由电信/电话网络(如模拟语音网络或数字光纤通信网络)、经由存储区域网络(如光纤通道SAN)、或经由任何其他合适类型网络和/或协议来支持通信。在各种实施方案中,计算机系统1000可包括比图10中示出的那些更多、更少或不同的组件(例如,显示器、显卡、声卡、外围设备、其他网络接口如ATM接口、以太网接口、帧中继接口等)
应当注意,任何本文所述分布式系统实施方案或任何它们中的组件可实施为一个或多个web服务。例如,数据库系统的数据库层内的主要节点和/或读出副本节点可以将数据库服务和/或采用本文所述分布式存储系统的其他类型数据存储服务呈现给客户端作为web服务。在一些实施方案中,web服务可由设计成支持经网络的互操作机器间交互的软件和/或硬件系统。web服务可以具有呈机器可处理的格式 (如Web服务描述语言(WSDL))描述的接口。其他系统可以web 服务的接口的描述所规定的方式来与web服务交互。例如,web服务可以限定其他系统可调用的各种操作,并且可以限定其他系统可在请求各种操作时预期将顺应的特定应用编程接口(API)。
在各种实施方案中,web服务可以通过包括与web服务请求关联的参数和/或数据的消息的使用来请求和调用。这种消息可以根据特定标记语言(如可扩展标记语言(XML))来格式化,和/或可以使用协议(如简单对象访问协议(SOAP))封装。为了执行web服务请求,web服务客户端可以编写出包括请求的消息,并且使用基于互联网的应用层传输协议(如超文本传输协议(HTTP))将消息传达至可寻址的端点(例如,对应于web服务的统一资源定位符(URL))。
在一些实施方案中,web服务可以使用表征状态传输 (“RESTful”)技术而非基于消息的技术来实施。例如,根据RESTful 技术来实施的web服务可以通过HTTP方法内包括的参数(如放置、获得或删除)调用,而非SOAP消息内封装的参数调用。
前述内容还就以下条款来更好地理解:
1.一种方法,所述方法包括:
通过包括主要节点、各自具有高速缓存的多个读出副本以及分布式存储服务的数据库服务的多个节点执行:
从所述数据库服务的客户端接收针对数据库表中的给定数据记录的写入请求,其中所述写入请求指定要对所述给定数据记录来做出的修改;
生成表示要对所述给定数据记录做出的所述修改的重做日志记录;
向存储包括所述给定数据记录的所述数据页面的版本的所述分布式存储服务的特定服务器节点发送所述重做日志记录;以及
将所述重做日志记录发送至所述多个读出副本,其中所述重做日志记录指示所述多个读出副本的相应高速缓存中存储的所述给定数据记录的高速缓存版本是过时的;
其中由所述多个读出副本中的读出副本接收的、对所述给定数据记录的后续请求包括所述读出副本从所述分布式存储服务请求所述给定数据记录的当前版本。
2.如条款1所述的方法,其还包括:
通过所述读出副本从所述数据库服务的客户端接收对读出所述给定数据记录的请求;
确定所述读出副本的所述高速缓存中存储的所述给定数据记录的所述高速缓存版本是过时的;
从所述分布式存储服务请求所述给定数据记录的所述当前版本;以及
将所述给定数据记录的所述当前版本发送至所述客户端。
3.如条款1所述的方法,其还包括:
将关于哪些数据页面存储在所述主要节点的高速缓存中的指示发送至所述多个读出副本;以及
利用所述主要节点的所述高速缓存中存储的所述数据页面的版本来更新所述多个读出副本的所述相应高速缓存。
4.如条款1所述的方法,其还包括:
将所述多个读出副本中的一个转换成新的主要节点以便替代所述主要节点,而不损失在转换时来自未反映在所述一个读出副本的所述高速缓存中的更新的数据。
5.一种系统,所述系统包括:
一个或多个计算节点,每个计算节点包括至少一个处理器和存储器,其中所述一个或多个计算节点被配置成共同实施数据库服务,并且其中所述数据库服务包括主要节点、具有高速缓存的读出副本以及分布式存储服务;
其中所述主要节点被配置成:
接收指定要对所述数据库服务存储的特定数据记录做出的修改的写入请求;
将表示要对所述特定数据记录做出的所述修改的重做日志记录发送至存储包括所述特定数据记录的数据页面的版本的所述分布式存储服务的服务器节点;以及
将指示发送至所述读出副本,所述指示指明所述读出副本的所述高速缓存中的所述特定数据记录的高速缓存版本过时。
6.如条款5所述的系统,其中所述指示是高速缓存无效通知。
7.如条款5所述的系统,其中所述指示是所述重做日志记录,其中所述读出副本被配置成将所述重做日志记录应用于所述读出副本的所述高速缓存中存储的所述特定数据记录的所述高速缓存版本。
8.如条款7所述的系统,其中所述重做日志记录与时间标识符关联,其中所述读出副本被配置成:
从所述分布式服务器节点处接收一个或多个日志记录,所述一个或多个日志记录具有表示比与所述特定数据记录的所述高速缓存版本关联的较早的时间标识符稍后的时间点的相应时间标识符;以及
将所述一个或多个日志记录和所述重做日志记录应用于所述特定数据记录的所述高速缓存版本。
9.如条款5所述的系统,其中所述读出副本被配置成:
从所述数据库服务的客户端处接收对读出包括所述特定数据记录的所述数据页面的请求;以及
响应于接收到所述读出副本的所述高速缓存中的所述特定数据记录的所述高速缓存版本过时的指示,向所述分布式存储服务发送对所述数据页面的当前版本的请求。
10.如条款9所述的系统,其中所述读出副本还配置成:
从所述分布式存储服务接收所述数据页面的所述当前版本;
利用来自所述数据页面的所述当前版本的所述特定数据记录的当前版本替代所述特定数据记录的所述高速缓存版本;以及
向所述数据库服务的所述客户端提供所述数据页面的所述当前版本。
11.如条款5所述的系统,其中所述读出副本被配置成:
从所述数据库服务的客户端处接收对读出由所述数据库服务存储的不同数据记录的请求,其中所述不同数据记录的高速缓存版本未指示为是过时的;以及
向所述数据库服务的所述客户端提供所述不同数据记录的所述高速缓存版本。
12.如条款5所述的系统,其中所述读出副本被配置成:
从所述主要节点处接收对所述主要节点的高速缓存中存储的多个数据页面的指示;
从所述分布式存储服务检索所述多个数据页面的版本;以及
将所述多个数据页面的所检索的版本存储在所述读出副本的所述高速缓存中。
13.如条款5所述的系统,其中所述读出副本被配置成:
响应于所述主要节点的故障,转换成新的主要节点,但不损失在转换时来自未反映在所述读出副本的所述高速缓存中的更新的数据
14.如条款13所述的系统,其中所述读出副本被配置成:
从所述分布式存储服务确定所述读出副本的所述高速缓存中的哪些数据是过时的;以及
将所确定的过时数据指示为是过时的。
15.如条款13所述的系统,其中所述读出副本被配置成:
从所述分布式存储服务接收对所述分布式存储服务从所述主要节点接收但先前未被所述读出副本接收的数据的一个或多个事务;以及
利用一个或多个事务来更新所述新的主要节点的事务表。
16.如条款15所述的系统,其中所述读出副本被配置成:
确定所述一个或多个事务中的特定事务与所述主要节点的所述故障有关;以及
使所述特定事务的改变回退。
17.一种非暂时计算机可读存储介质,所述非暂时计算机可读存储介质存储程序指令,其中所述程序指令是计算机可执行的,以实施数据库服务的读出副本,其中所述读出副本被配置成:
从主要节点处接收指示所述读出副本的高速缓存中的特定数据的高速缓存版本过时的日志记录,其中所述日志记录指示对所述数据库服务存储的所述特定数据的更新;
从所述数据库服务的客户端处接收对读出所述特定数据的请求;以及
向所述数据库服务的分布式存储服务发送对所述特定数据的当前版本的请求。
18.如条款17所述的非暂时计算机可读存储介质,其中所述日志记录是与日志序号关联,并且其中所述读出副本还配置成:
从所述分布式存储服务接收一个或多个日志记录,所述一个或多个日志记录具有指示比所述特定数据记录的所述高速缓存版本的日志序号稍后的时间点的相应日志序号;
将来自所述分布式存储服务的所述一个或多个日志记录和来自所述主要节点的所述日志记录应用于所述特定数据的所述高速缓存版本以创建所述特定数据的当前版本;以及
向所述数据库服务的所述客户端提供所述特定数据的所述当前版本。
19.如条款17所述的非暂时计算机可读存储介质,其中所述读出副本还配置成:
在所述主要节点故障后,而转换成新的主要节点,但不损失在转换时来自未反映在所述读出副本的所述高速缓存中的更新的数据。
20.如条款17所述的非暂时计算机可读存储介质,其中所述读出副本还配置成:
从所述分布式存储服务确定所述读出副本的所述高速缓存中的哪些数据是过时的。
21.如条款17所述的非暂时计算机可读存储介质,其中所述读出副本还配置成:
利用从所述分布式存储服务接收到的一个或多个事务来更新所述读出副本的事务表,其中所述一个或多个事务先前未被所述读出副本接收。
如附图中示出且在本文中描述的各种方法表示了方法的示例性实施方案。方法可以软件、硬件或其组合手动实施。任何方法的次序可改变,并且各种元素可添加、记录、组合、省略、修改等。
虽然已相当详细地描述以上的实施方案,但是如本领域的技术人员将清楚,一旦完全理解以上公开内容,就可做出许多变化以及修改。预期的是,随附权利要求书解释为涵盖所有此类修改以及改变,并且因此,以上描述被视为是说明性的,而非限制性的意义。
Claims (15)
1.一种用于保持读出副本的方法,包括:
通过包括多个节点的数据库服务执行以下操作,其中每个节点具有用于数据记录的高速缓存并且每个节点能够用作用于一个或多个数据库表的主要节点:
选择所述多个节点中的主要节点来执行对存储在外部的分布式存储服务中的数据库表的写入请求,所述数据库服务能够通过网络访问所述分布式存储服务,其中所述多个节点中除该主要节点外的多个节点实现了读出副本;
在所述数据库服务内包括的所述主要节点处从所述数据库服务的客户端接收针对所述数据库表中的给定数据记录的写入请求,其中所述写入请求指定要对所述给定数据记录做出的修改;
在所述数据库服务内包括的所述主要节点处生成表示要对所述给定数据记录做出的所述修改的重做日志记录;
将所述重做日志记录在网络连接上从所述数据库服务内包括的所述主要节点发送至所述分布式存储服务以代表所述客户端执行对所述给定数据记录的所述修改,其中所述分布式存储服务存储包括所述给定数据记录的数据页面的版本;
将所述重做日志记录通过网络连接从所述数据库服务内包括的所述主要节点发送至所述数据库服务的多个读出副本,其中所述重做日志记录指示所述多个读出副本的相应高速缓存中存储的所述给定数据记录的高速缓存版本是过时的;
在接收到指示所述给定数据记录的高速缓存版本过时的所述重做日志记录之后,在所述数据库服务的所述多个读出副本中的读出副本处接收针对所述给定数据记录的请求;以及
响应于在所述多个读出副本中的所述读出副本接收到针对所述给定数据记录的所述请求,由所述多个读出副本中的所述读出副本通过网络连接从所述分布式存储服务获得所述给定数据记录的当前版本,其中所述给定数据记录的所述当前版本包括对所述给定数据记录执行了的所述修改。
2.如权利要求1所述的方法,其还包括:
通过所述读出副本从所述数据库服务的客户端接收对读出所述给定数据记录的请求;
确定所述读出副本的所述高速缓存中存储的所述给定数据记录的所述高速缓存版本是过时的;
从所述分布式存储服务请求所述给定数据记录的所述当前版本;以及
将所述给定数据记录的所述当前版本发送至所述客户端。
3.如权利要求1所述的方法,其还包括:
将关于哪些数据页面存储在所述主要节点的高速缓存中的指示发送至所述多个读出副本;以及
利用所述主要节点的所述高速缓存中存储的所述数据页面的版本来更新所述多个读出副本的所述相应高速缓存。
4.如权利要求1所述的方法,其还包括:
将所述多个读出副本中的一个读出副本转换成新的主要节点以便替代所述主要节点,而不损失在转换时来自未反映在所述一个读出副本的所述高速缓存中的更新的数据。
5.一种用于保持读出副本的系统,包括:
一个或多个计算节点,每个计算节点包括至少一个处理器和存储器,其中所述一个或多个计算节点被配置成共同实施保持数据库的一个或多个表格的数据库服务,其中所述一个或多个计算节点每个实现用于数据记录的高速缓存并且能够用作所述数据库的主要节点,并且其中所述一个或多个计算节点中的主要节点被配置为执行对所述数据库的写入请求并且所述一个或多个计算节点中除所述主要节点外的另一个节点被配置为实现所述数据库的读出副本;和
多个存储节点,被配置为共同实施位于所述数据库服务外部并且所述数据库服务通过网络能够访问的分布式存储服务,所述分布式存储服务存储由所述数据库服务保持的所述数据库的完整数据的逻辑卷;
其中所述主要节点被配置成:
接收指定要对所述数据库服务存储的特定数据记录做出的修改的写入请求,
将表示要对所述特定数据记录做出的所述修改的重做日志记录在网络连接上发送至所述分布式存储服务,其中所述分布式存储服务存储包括所述特定数据记录的数据页面的版本,以及
将指示发送至所述读出副本,所述指示指明所述读出副本的所述高速缓存中的所述特定数据记录的高速缓存版本过时,其中所述读出副本不存储所述数据库的数据记录中的至少一些数据记录;并且
其中所述读出副本被配置成:
响应于针对被指示为在所述读出副本的高速缓存中过时的所述特定数据记录的请求,从所述分布式存储服务请求所述特定数据记录的当前版本,其中所述特定数据记录的所述当前版本包括对所述特定数据记录执行了的所述修改。
6.如权利要求5所述的系统,其中所述指示是高速缓存无效通知。
7.如权利要求5所述的系统,其中所述指示是所述重做日志记录,其中所述读出副本被配置成:
从所述主要节点接收指示所述读出副本的高速缓存中的数据记录的高速缓存版本过时的另一重做日志记录;以及
将所述另一重做日志记录应用于所述读出副本的所述高速缓存中存储的所述数据记录的所述高速缓存版本,而不是从所述分布式存储服务请求所述数据记录。
8.如权利要求7所述的系统,其中所述重做日志记录与时间标识符关联,并且其中所述读出副本被配置成:
从所述分布式存储服务的服务器节点接收一个或多个日志记录,所述一个或多个日志记录具有表示比与所述特定数据记录的所述高速缓存版本关联的较早的时间标识符晚的时间点的相应时间标识符;以及
将所述一个或多个日志记录和所述重做日志记录应用于所述特定数据记录的所述高速缓存版本。
9.如权利要求5所述的系统,其中所述读出副本被配置成:
从所述数据库服务的客户端接收所述请求以读出包括所述特定数据记录的所述数据页面。
10.如权利要求5所述的系统,其中所述读出副本被配置成:
从所述数据库服务的客户端接收对读出由所述数据库服务存储的不同数据记录的请求,其中所述不同数据记录的高速缓存版本未指示为是过时的;以及
向所述数据库服务的所述客户端提供所述不同数据记录的所述高速缓存版本。
11.如权利要求5所述的系统,其中所述读出副本被配置成:
从所述主要节点接收对所述主要节点的高速缓存中存储的多个数据页面的指示;
从所述分布式存储服务检索所述多个数据页面的版本,以及
将所述多个数据页面的所检索的版本存储在所述读出副本的所述高速缓存中。
12.如权利要求5所述的系统,其中所述读出副本被配置成:
响应于所述主要节点的故障,转换成新的主要节点,但不损失在转换时来自未反映在所述读出副本的所述高速缓存中的更新的数据。
13.如权利要求12所述的系统,其中所述读出副本被配置成:
从所述分布式存储服务确定所述读出副本的所述高速缓存中的哪些数据是过时的;以及
将所确定的过时数据指示为是过时的。
14.一种用于保持读出副本的系统,包括:
一个或多个处理器;以及
一个或多个存储器,所述一个或多个存储器存储程序指令,其中所述程序指令是计算机可执行的,以实施数据库服务的读出副本,其中所述读出副本被配置成:
从所述数据库服务内包括的主要节点接收指示所述读出副本的高速缓存中的特定数据的高速缓存版本过时的日志记录,其中所述日志记录指示对由所述数据库服务存储的所述特定数据的更新;
从所述数据库服务的客户端接收读出被指示为在所述读出副本的高速缓存中过时的所述特定数据的请求;以及
通过网络连接向在所述数据库服务外部的存储所述特定数据的分布式存储服务发送对所述特定数据的当前版本的请求,其中所述特定数据的所述当前版本包括对所述特定数据的所述更新。
15.如权利要求14所述的系统,其中所述日志记录与日志序号关联,并且其中所述读出副本还配置成:
从所述分布式存储服务接收一个或多个日志记录,所述一个或多个日志记录具有指示比所述特定数据的所述高速缓存版本的日志序号晚的时间点的相应日志序号;
将来自所述分布式存储服务的所述一个或多个日志记录和来自所述主要节点的所述日志记录应用于所述特定数据的所述高速缓存版本以创建所述特定数据的当前版本;以及
向所述数据库服务的所述客户端提供所述特定数据的所述当前版本。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/873,467 US10747746B2 (en) | 2013-04-30 | 2013-04-30 | Efficient read replicas |
US13/873,467 | 2013-04-30 | ||
PCT/US2014/036257 WO2014179504A1 (en) | 2013-04-30 | 2014-04-30 | Efficient read replicas |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105324770A CN105324770A (zh) | 2016-02-10 |
CN105324770B true CN105324770B (zh) | 2019-08-16 |
Family
ID=51790151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480035256.4A Active CN105324770B (zh) | 2013-04-30 | 2014-04-30 | 有效读出副本 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10747746B2 (zh) |
EP (1) | EP2992463A4 (zh) |
JP (1) | JP6404907B2 (zh) |
CN (1) | CN105324770B (zh) |
CA (1) | CA2910270C (zh) |
WO (1) | WO2014179504A1 (zh) |
Families Citing this family (81)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8332365B2 (en) | 2009-03-31 | 2012-12-11 | Amazon Technologies, Inc. | Cloning and recovery of data volumes |
US9703706B2 (en) | 2011-02-28 | 2017-07-11 | Oracle International Corporation | Universal cache management system |
US9760596B2 (en) * | 2013-05-13 | 2017-09-12 | Amazon Technologies, Inc. | Transaction ordering |
KR102094163B1 (ko) * | 2013-08-28 | 2020-03-27 | 삼성전자 주식회사 | 하이브리드 캐시 기반의 메모리 시스템에서 캐시를 관리하는 장치 및 방법과, 그 메모리 시스템 |
US9569513B1 (en) * | 2013-09-10 | 2017-02-14 | Amazon Technologies, Inc. | Conditional master election in distributed databases |
US9830329B2 (en) * | 2014-01-15 | 2017-11-28 | W. Anthony Mason | Methods and systems for data storage |
WO2015108538A1 (en) * | 2014-01-20 | 2015-07-23 | Hewlett-Packard Development Company, L.P. | Controlling replication of identity informaton |
US10248682B2 (en) | 2015-02-20 | 2019-04-02 | Scality, S.A. | Object storage system capable of performing snapshots, branches and locking |
US9524302B2 (en) | 2014-03-05 | 2016-12-20 | Scality, S.A. | Distributed consistent database implementation within an object store |
US10366070B2 (en) * | 2015-02-20 | 2019-07-30 | Scality S.A. | Locking and I/O improvements of systems built with distributed consistent database implementations within an object store |
US20150310862A1 (en) * | 2014-04-24 | 2015-10-29 | Microsoft Corporation | Deep learning for semantic parsing including semantic utterance classification |
US10803012B1 (en) * | 2014-05-09 | 2020-10-13 | Amazon Technologies, Inc. | Variable data replication for storage systems implementing quorum-based durability schemes |
US9785510B1 (en) | 2014-05-09 | 2017-10-10 | Amazon Technologies, Inc. | Variable data replication for storage implementing data backup |
US9652328B2 (en) * | 2014-05-12 | 2017-05-16 | International Business Machines Corporation | Restoring an application from a system dump file |
US10210171B2 (en) * | 2014-06-18 | 2019-02-19 | Microsoft Technology Licensing, Llc | Scalable eventual consistency system using logical document journaling |
US9613078B2 (en) * | 2014-06-26 | 2017-04-04 | Amazon Technologies, Inc. | Multi-database log with multi-item transaction support |
EP3161630A1 (en) * | 2014-06-26 | 2017-05-03 | Amazon Technologies, Inc. | Multi-database log with multi-item transaction support |
US9807164B2 (en) * | 2014-07-25 | 2017-10-31 | Facebook, Inc. | Halo based file system replication |
US11386115B1 (en) * | 2014-09-12 | 2022-07-12 | Amazon Technologies, Inc. | Selectable storage endpoints for a transactional data storage engine |
US9858312B2 (en) * | 2014-10-14 | 2018-01-02 | Red Hat, Inc. | Transaction compensation for single phase resources |
US9990391B1 (en) * | 2015-08-21 | 2018-06-05 | Amazon Technologies, Inc. | Transactional messages in journal-based storage systems |
US10235407B1 (en) * | 2015-08-21 | 2019-03-19 | Amazon Technologies, Inc. | Distributed storage system journal forking |
US10740311B2 (en) * | 2015-09-14 | 2020-08-11 | Sap Se | Asynchronous index loading for database computing system startup latency managment |
CN105426467B (zh) * | 2015-11-16 | 2018-11-20 | 北京京东尚科信息技术有限公司 | 一种用于Presto的SQL查询方法及系统 |
US10877956B2 (en) * | 2015-11-24 | 2020-12-29 | Sap Se | Transactional cache invalidation for inter-node caching |
US10353895B2 (en) * | 2015-11-24 | 2019-07-16 | Sap Se | Atomic visibility switch for transactional cache invalidation |
US10423493B1 (en) * | 2015-12-21 | 2019-09-24 | Amazon Technologies, Inc. | Scalable log-based continuous data protection for distributed databases |
US10567500B1 (en) | 2015-12-21 | 2020-02-18 | Amazon Technologies, Inc. | Continuous backup of data in a distributed data store |
CN105426271B (zh) * | 2015-12-22 | 2018-09-21 | 华为技术有限公司 | 对分布式存储系统的锁管理的方法和装置 |
CN106980625B (zh) * | 2016-01-18 | 2020-08-04 | 阿里巴巴集团控股有限公司 | 一种数据同步方法、装置及系统 |
US10929357B2 (en) * | 2016-02-29 | 2021-02-23 | Red Hat, Inc. | Detecting stale storage layouts without using client locks |
US10007607B2 (en) * | 2016-05-31 | 2018-06-26 | Salesforce.Com, Inc. | Invalidation and refresh of multi-tier distributed caches |
US11003684B1 (en) * | 2016-06-30 | 2021-05-11 | Amazon Technologies, Inc. | Cooperative log application |
US10229012B2 (en) * | 2016-08-15 | 2019-03-12 | Oracle International Corporation | Committing copy-on-write transaction with a persist barrier for a persistent object including payload references |
US10455045B2 (en) | 2016-09-06 | 2019-10-22 | Samsung Electronics Co., Ltd. | Automatic data replica manager in distributed caching and data processing systems |
US10467195B2 (en) | 2016-09-06 | 2019-11-05 | Samsung Electronics Co., Ltd. | Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system |
US9858151B1 (en) | 2016-10-03 | 2018-01-02 | International Business Machines Corporation | Replaying processing of a restarted application |
CN108228678B (zh) * | 2016-12-22 | 2020-10-16 | 华为技术有限公司 | 一种多副本数据恢复方法及装置 |
US11030215B2 (en) * | 2016-12-23 | 2021-06-08 | Ingram Micro Inc. | Technologies for scaling user interface backend clusters for database-bound applications |
US10931763B2 (en) * | 2017-01-11 | 2021-02-23 | Qualcomm Incorporated | Systems and methods for opaque object delivery in a communication network |
CN108363641B (zh) * | 2017-01-26 | 2022-01-14 | 华为技术有限公司 | 一种主备机数据传递方法、控制节点以及数据库系统 |
US10909143B1 (en) * | 2017-04-14 | 2021-02-02 | Amazon Technologies, Inc. | Shared pages for database copies |
WO2019008158A1 (en) * | 2017-07-06 | 2019-01-10 | Chromaway Ab | METHOD AND SYSTEM OF DISTRIBUTED COMPUTER SYSTEM |
US11347774B2 (en) * | 2017-08-01 | 2022-05-31 | Salesforce.Com, Inc. | High availability database through distributed store |
US20190065327A1 (en) * | 2017-08-31 | 2019-02-28 | Nicira, Inc. | Efficient versioned object management |
CN107577775B (zh) * | 2017-09-08 | 2021-12-10 | 北京奇艺世纪科技有限公司 | 一种读取数据方法、装置、电子设备及可读存储介质 |
US11327887B2 (en) | 2017-09-14 | 2022-05-10 | Oracle International Corporation | Server-side extension of client-side caches |
US10754844B1 (en) | 2017-09-27 | 2020-08-25 | Amazon Technologies, Inc. | Efficient database snapshot generation |
US10990581B1 (en) | 2017-09-27 | 2021-04-27 | Amazon Technologies, Inc. | Tracking a size of a database change log |
US11755615B2 (en) * | 2017-10-06 | 2023-09-12 | The Boeing Company | Distributed data management system and method |
CN110020359B (zh) * | 2017-11-08 | 2024-04-05 | 亿阳信通股份有限公司 | 应用在网页前端的数据处理方法、装置及存储介质 |
US11182372B1 (en) | 2017-11-08 | 2021-11-23 | Amazon Technologies, Inc. | Tracking database partition change log dependencies |
US11042503B1 (en) * | 2017-11-22 | 2021-06-22 | Amazon Technologies, Inc. | Continuous data protection and restoration |
US11269731B1 (en) | 2017-11-22 | 2022-03-08 | Amazon Technologies, Inc. | Continuous data protection |
US10380196B2 (en) * | 2017-12-08 | 2019-08-13 | Palantir Technologies Inc. | Systems and methods for using linked documents |
CN110045912B (zh) | 2018-01-16 | 2021-06-01 | 华为技术有限公司 | 数据处理方法和装置 |
US10621049B1 (en) | 2018-03-12 | 2020-04-14 | Amazon Technologies, Inc. | Consistent backups based on local node clock |
CN110196788B (zh) * | 2018-03-30 | 2022-05-20 | 腾讯科技(深圳)有限公司 | 一种数据读取方法、装置、系统及存储介质 |
CN110688357B (zh) * | 2018-06-20 | 2021-08-20 | 华为技术有限公司 | 一种日志型数据的读取方法和装置 |
US11126505B1 (en) | 2018-08-10 | 2021-09-21 | Amazon Technologies, Inc. | Past-state backup generator and interface for database systems |
US10831666B2 (en) | 2018-10-05 | 2020-11-10 | Oracle International Corporation | Secondary storage server caching |
US11042454B1 (en) | 2018-11-20 | 2021-06-22 | Amazon Technologies, Inc. | Restoration of a data source |
CN111309799A (zh) * | 2018-12-11 | 2020-06-19 | 中兴通讯股份有限公司 | 数据合并的实现方法、装置、系统及存储介质 |
CN109657015B (zh) * | 2018-12-25 | 2023-05-02 | 四川效率源信息安全技术股份有限公司 | 一种基于oracle行迁移和行连接的数据提取方法 |
US11106541B2 (en) | 2019-03-15 | 2021-08-31 | Huawei Technologies Co., Ltd | System and method for replicating data in distributed database systems |
CN111797062B (zh) * | 2019-04-09 | 2023-10-27 | 华为云计算技术有限公司 | 数据处理方法、装置和分布式数据库系统 |
US10999397B2 (en) * | 2019-07-23 | 2021-05-04 | Microsoft Technology Licensing, Llc | Clustered coherent cloud read cache without coherency messaging |
US11556349B2 (en) * | 2020-03-04 | 2023-01-17 | International Business Machines Corporation | Booting a secondary operating system kernel with reclaimed primary kernel memory |
CN111414392B (zh) * | 2020-03-25 | 2022-08-05 | 浩鲸云计算科技股份有限公司 | 高速缓存异步刷新方法、系统及计算机可读存储介质 |
US11561864B1 (en) | 2020-03-26 | 2023-01-24 | Amazon Technologies, Inc. | Creating database clones at a specified point-in-time |
EP4189620A4 (en) * | 2020-08-03 | 2024-03-20 | Hitachi Vantara Llc | CACHE UPDATES THROUGH DISTRIBUTED MESSAGE QUEUES |
US11657066B2 (en) | 2020-11-30 | 2023-05-23 | Huawei Cloud Computing Technologies Co., Ltd. | Method, apparatus and medium for data synchronization between cloud database nodes |
US20210089411A1 (en) * | 2020-12-04 | 2021-03-25 | Intel Corporation | Restoring persistent application data from non-volatile memory after a system crash or system reboot |
US11249866B1 (en) * | 2021-04-22 | 2022-02-15 | Microsoft Technology Licensing, Llc | Snapshot-based data corruption detection |
CN113220669B (zh) * | 2021-06-09 | 2024-04-16 | 京东科技控股股份有限公司 | 业务数据的处理方法、装置及电子设备 |
CN113535656B (zh) * | 2021-06-25 | 2022-08-09 | 中国人民大学 | 数据访问方法、装置、设备及存储介质 |
US11687561B2 (en) * | 2021-08-11 | 2023-06-27 | Capital One Services, Llc | Systems and methods for cross-region data processing |
US11822551B2 (en) * | 2021-08-31 | 2023-11-21 | International Business Machines Corporation | Pre-optimized writes to a database based on intelligence gathered from read cache |
CN114253988B (zh) * | 2022-03-01 | 2022-05-13 | 维塔科技(北京)有限公司 | 基于版本的数据更新方法、装置、电子设备及存储介质 |
US20230409556A1 (en) * | 2022-05-31 | 2023-12-21 | Gong.Io Ltd. | Techniques for synchronous access to database replicas |
CN117149097B (zh) * | 2023-10-31 | 2024-02-06 | 苏州元脑智能科技有限公司 | 一种分布式存储系统数据访问控制方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7653668B1 (en) * | 2005-11-23 | 2010-01-26 | Symantec Operating Corporation | Fault tolerant multi-stage data replication with relaxed coherency guarantees |
CN102043686A (zh) * | 2009-10-20 | 2011-05-04 | 华为技术有限公司 | 一种内存数据库的容灾方法、备用服务器及系统 |
Family Cites Families (107)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03130842A (ja) | 1989-10-17 | 1991-06-04 | Toshiba Corp | データベースシステムの同時実行制御装置 |
EP0465018B1 (en) | 1990-06-29 | 1997-05-14 | Oracle Corporation | Method and apparatus for optimizing undo log usage |
US5280612A (en) | 1991-11-26 | 1994-01-18 | International Business Machines Corporation | Multiple version database concurrency control system |
US5452445A (en) | 1992-04-30 | 1995-09-19 | Oracle Corporation | Two-pass multi-version read consistency |
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 |
US5951695A (en) | 1997-07-25 | 1999-09-14 | Hewlett-Packard Company | Fast database failover |
US6240413B1 (en) | 1997-12-22 | 2001-05-29 | Sun Microsystems, Inc. | Fine-grained consistency mechanism for optimistic concurrency control using lock groups |
US7930278B2 (en) | 1998-02-13 | 2011-04-19 | Oracle International Corporation | Methods to perform disk writes in a distributed shared disk system needing consistency across failures |
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 |
US6615223B1 (en) * | 2000-02-29 | 2003-09-02 | Oracle International Corporation | Method and system for data replication |
US6631374B1 (en) | 2000-09-29 | 2003-10-07 | Oracle Corp. | System and method for providing fine-grained temporal database access |
CN100345143C (zh) | 2000-10-09 | 2007-10-24 | 最佳收益有限公司 | 数据处理方法和装置 |
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 |
US20040249869A1 (en) | 2001-06-25 | 2004-12-09 | Kenneth Oksanen | Method and system for restarting a replica of a database |
US6732171B2 (en) | 2002-05-31 | 2004-05-04 | Lefthand Networks, Inc. | Distributed network storage system with virtualization |
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 |
US7146366B2 (en) | 2002-09-13 | 2006-12-05 | Netezza Corporation | Distributed concurrency control using serialization ordering |
US7305386B2 (en) | 2002-09-13 | 2007-12-04 | Netezza Corporation | Controlling visibility in multi-version database systems |
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 |
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 |
JP2005050024A (ja) | 2003-07-31 | 2005-02-24 | Toshiba Corp | 計算機システムおよびプログラム |
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 |
US8185663B2 (en) | 2004-05-11 | 2012-05-22 | Hewlett-Packard Development Company, L.P. | Mirroring storage interface |
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 |
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 |
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 |
US7651593B2 (en) * | 2005-12-19 | 2010-01-26 | Commvault Systems, Inc. | Systems and methods for performing data replication |
EP1974296B8 (en) | 2005-12-19 | 2016-09-21 | 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 |
US7734580B2 (en) | 2007-01-29 | 2010-06-08 | Oracle International Corporation | Readable physical storage replica and standby database system |
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 |
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 |
WO2009102425A1 (en) | 2008-02-12 | 2009-08-20 | Netapp, Inc. | Hybrid media storage system architecture |
US8401994B2 (en) | 2009-09-18 | 2013-03-19 | Oracle International Corporation | Distributed consistent grid of in-memory database caches |
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 |
US8176012B1 (en) | 2008-10-06 | 2012-05-08 | Netapp, Inc. | Read-only mirroring for load sharing |
US8255373B2 (en) | 2008-10-24 | 2012-08-28 | Microsoft Corporation | Atomic multiple modification of data in a distributed storage system |
US8229890B2 (en) | 2008-12-15 | 2012-07-24 | International Business Machines Corporation | Opening document stored at multiple database replicas |
US8429134B2 (en) | 2009-09-08 | 2013-04-23 | Oracle International Corporation | Distributed database recovery |
WO2011031900A2 (en) | 2009-09-09 | 2011-03-17 | Fusion-Io, Inc. | 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 |
US8595191B2 (en) | 2009-12-31 | 2013-11-26 | Commvault Systems, Inc. | Systems and methods for performing data management operations using snapshots |
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 |
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 |
US8572031B2 (en) | 2010-12-23 | 2013-10-29 | Mongodb, Inc. | Method and apparatus for maintaining replica sets |
US8910172B2 (en) | 2010-12-29 | 2014-12-09 | Symantec Corporation | Application resource switchover systems and methods |
US8495019B2 (en) * | 2011-03-08 | 2013-07-23 | Ca, Inc. | System and method for providing assured recovery and replication |
US8918362B2 (en) | 2011-05-23 | 2014-12-23 | Microsoft Corporation | Replication processes in a distributed storage environment |
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 |
US8543538B2 (en) | 2011-06-01 | 2013-09-24 | Clustrix, Inc. | Systems and methods for redistributing data 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 |
JP5405530B2 (ja) | 2011-06-27 | 2014-02-05 | 日本電信電話株式会社 | 分散データストアシステムおよび障害復旧方法 |
US8909996B2 (en) | 2011-08-12 | 2014-12-09 | Oracle International Corporation | Utilizing multiple storage devices to reduce write latency for database logging |
WO2013025540A1 (en) | 2011-08-12 | 2013-02-21 | Sandisk Enterprise Ip Llc | Cache management including solid state device virtualization |
US8712961B2 (en) | 2011-09-23 | 2014-04-29 | International Business Machines Corporation | Database caching utilizing asynchronous log-based replication |
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 |
US8874508B1 (en) * | 2012-10-02 | 2014-10-28 | Symantec Corporation | Systems and methods for enabling database disaster recovery using replicated volumes |
US10346369B2 (en) * | 2012-10-11 | 2019-07-09 | Delphix Corp. | Retrieving point-in-time copies of a source database for creating virtual databases |
US9411866B2 (en) * | 2012-12-19 | 2016-08-09 | Sap Global Ip Group, Sap Ag | Replication mechanisms for database environments |
US9558220B2 (en) * | 2013-03-04 | 2017-01-31 | Fisher-Rosemount Systems, Inc. | Big data in process control systems |
-
2013
- 2013-04-30 US US13/873,467 patent/US10747746B2/en active Active
-
2014
- 2014-04-30 WO PCT/US2014/036257 patent/WO2014179504A1/en active Application Filing
- 2014-04-30 EP EP14791149.9A patent/EP2992463A4/en not_active Withdrawn
- 2014-04-30 CN CN201480035256.4A patent/CN105324770B/zh active Active
- 2014-04-30 CA CA2910270A patent/CA2910270C/en active Active
- 2014-04-30 JP JP2016512028A patent/JP6404907B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7653668B1 (en) * | 2005-11-23 | 2010-01-26 | Symantec Operating Corporation | Fault tolerant multi-stage data replication with relaxed coherency guarantees |
CN102043686A (zh) * | 2009-10-20 | 2011-05-04 | 华为技术有限公司 | 一种内存数据库的容灾方法、备用服务器及系统 |
Also Published As
Publication number | Publication date |
---|---|
CA2910270C (en) | 2022-05-31 |
US20140324785A1 (en) | 2014-10-30 |
EP2992463A1 (en) | 2016-03-09 |
JP6404907B2 (ja) | 2018-10-17 |
EP2992463A4 (en) | 2016-12-28 |
JP2016517124A (ja) | 2016-06-09 |
CA2910270A1 (en) | 2014-11-06 |
US10747746B2 (en) | 2020-08-18 |
WO2014179504A1 (en) | 2014-11-06 |
CN105324770A (zh) | 2016-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105324770B (zh) | 有效读出副本 | |
CN105210062B (zh) | 用于分布式数据库系统的系统范围检查点避免 | |
CN105190622B (zh) | 用于分布式数据库系统的快速崩溃恢复 | |
CN105190623B (zh) | 日志记录管理 | |
CN105190533B (zh) | 原位快照 | |
CN105122241B (zh) | 具有数据库引擎和独立分布式存储服务的数据库系统 | |
US10956601B2 (en) | Fully managed account level blob data encryption in a distributed storage environment | |
CN106233264B (zh) | 使用可变条带大小的文件存储装置 | |
CN106255967B (zh) | 分布式存储系统中的命名空间管理 | |
US9699017B1 (en) | Dynamic utilization of bandwidth for a quorum-based distributed storage system | |
CN102662992B (zh) | 一种海量小文件的存储、访问方法及装置 | |
CN104281506A (zh) | 一种文件系统的数据维护方法及系统 | |
CN105393243A (zh) | 事务定序 | |
CN106170777A (zh) | 降低基于块的存储的数据卷耐久性状态 | |
CN106462544A (zh) | 分布式存储系统中的会话管理 | |
CN106462545A (zh) | 可缩放文件存储服务 | |
CN103605698A (zh) | 一种用于分布异构数据资源整合的云数据库系统 | |
EP2710477B1 (en) | Distributed caching and cache analysis | |
CN104270412A (zh) | 一种基于Hadoop分布式文件系统的三级缓存方法 | |
CN112162846B (zh) | 事务处理方法、设备及计算机可读存储介质 | |
US20120297010A1 (en) | Distributed Caching and Cache Analysis | |
CN110457307A (zh) | 元数据管理系统、用户集群创建方法、装置、设备和介质 | |
CN101261639B (zh) | 数据库对象的共享 | |
US11341163B1 (en) | Multi-level replication filtering for a distributed database | |
CN110019521A (zh) | 针对图书馆海量数据的分布式存储管理系统 |
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 |