日志记录管理的制作方法

文档序号:17148461发布日期:2019-03-19 23:12阅读:208来源:国知局
日志记录管理的制作方法

在一些情况下,软件堆栈的各种部件的分布可提供(或支持)容错 性(例如,通过复制)、较高耐久性、和较不昂贵的解决方案(例如,通 过使用许多较小的、较不昂贵的部件,而不是较少大型的、昂贵的部 件)。然而,在历史上数据库已经是至少服从分布的软件堆栈的部件。 例如,可能难以分布数据库同时仍确保期望它们提供的所谓ACID特 性(例如,原子性、一致性、隔离性、和耐久性)。

尽管大部分现存的相关数据库未被分布,使用两个常用模型中的 一个来“向外扩展”(与通过仅采用较大单片系统的“向上扩展”相反)一 些现存的数据库:“无共享”模型和“共享磁盘”模型。一般来说,在“无 共享”模型中,接收的查询分解成数据库碎片(其中的每一个包括查询 部件),这些碎片被发送至不同的计算机节点用于查询处理,并且在 它们返回前收集和集合结果。一般来说,在“共享磁盘”模型中,群集 中的每个计算机节点访问相同的基础数据。在采用这个模型的系统 中,必须非常小心以便管理高速缓存一致性。在这两个模型中,在多 个节点(包括单机数据库实例的所有功能性)上复制大型、单片数据库, 并且添加“胶合”逻辑以便将它们缝合在一起。例如,在“无共享”模型 中,胶合逻辑可提供分配器的功能性,所述分配器使查询细分、将它 们发送至多个计算机节点、以及随后组合结果。在“共享磁盘”模型中, 胶合逻辑可用来将多个节点的高速缓存融合在一起(例如,以便管理 在高速缓存层处的一致性)。部署这些“无共享”和“共享磁盘”数据库系 统可能花费较大,并且维持起来较复杂,以及它们可能过度服务许多 数据库使用情况。

附图说明

图1为示出根据一个实施方案的数据库软件堆栈的各种部件的 框图。

图2为示出根据一些实施方案的服务系统架构的框图,所述服务 系统架构可被配置来实施基于网络服务的数据库服务。

图3为示出根据一个实施方案的数据库系统的各种部件的框图, 所述数据库系统包括数据库引擎和独立分布式数据库存储服务。

图4为示出根据一个实施方案的分布式数据库优化存储系统的 框图。

图5为示出根据一个实施方案的数据库系统中的独立分布式数 据库优化存储系统的使用的框图。

图6为示出根据一个实施方案的可将数据和元数据存储在分布 式数据库优化存储系统的给定节点上的方式的框图。

图7为示出根据一个实施方案的数据库容量的示例性配置的框 图。

图8为示出用于在基于网络服务的数据库服务中形成和/或使用 快照的方法的一个实施方案的流程图。

图9为示出用于在基于网络服务的数据库服务中操纵日志记录 的方法的一个实施方案的流程图。

图10为示出根据各种实施方案的被配置来实施数据库系统的至 少一部分的计算机系统的框图,所述数据库系统包括数据库引擎和独 立分布式数据库存储服务。

虽然在本文中通过列举若干实施方案和示意性附图的实例的方 式描述了实施方案,本领域的技术人员应认识到,实施方案并不限于 所描述的实施方案或附图。应理解,附图和对其的详细描述并非意图 将实施方案限于所公开的特定形式,而是相反,其意图在于涵盖落入 由所附权利要求书所界定的精神和范围内的所有修改、等同物以及替 代方案。本文中使用的任何标题都仅用于组织目的,并且并不意图用 于限制描述或权利要求书的范围。贯穿本申请所使用的词语“可以”是 在许可的意义上(即意指具有可能性)、而非强制的意义上(即意指必须) 使用。词语“包括(include/including/includes)”指示开放性关系并且因此 意味着包括但不限于。类似地,词语“具有(have/having/has)”也指示开 放性关系,并且因此意味着具有但不限于。本文使用的术语“第一”、 “第二”、“第三”等用作它们后面的名词的标签,并且不暗示任何类型 的排序(例如,空间、时间、逻辑等),除非这种排序另有明确说明。

各种部件可被描述为“被配置来”执行一个或多个任务。在这类情 况下,“被配置来”是一般意味着“具有操作过程中执行一个或多个任 务的结构”的宽泛叙述。因此,部件可被配置来执行任务,即使是部 件当前并未执行所述任务时(例如,计算机系统可被配置来执行操作, 即使是所述操作当前并未被执行时)。在一些情况下,“被配置来”可 以是一般意味着“具有在操作过程中执行一个或多个任务的电路系 统”的结构的宽泛叙述。因此,部件可被配置来执行任务,即使是所 述部件当前并未开启时。一般而言,形成对应于“被配置来”的结构的 电路系统可包括硬件电路。

为了方便描述,各种部件可被描述为执行一个或多个任务。这些 描述应被理解为包括短语“被配置来”。叙述被配置来执行一个或多个 任务的部件明确地意图不援引美国法典第35章第112条第六段对所 述部件的解释。

“基于.”如本文所使用,此术语用于描述影响确定的一个或多个因 素。此术语不排除可能影响确定的另外因素。也就是说,确定可仅仅 是基于这些因素,或至少部分地基于这些因素。考虑短语“基于B确 定A"。尽管B可能是影响A的确定的因素,但是这种短语不排除还 基于C确定A。在其他例子中,可仅基于B来确定A。

本公开的范围包括本文公开的任何特征或特征的组合(明确地或 含蓄地),或其任何概括,不管其是否缓解了本文所提出的任何或所 有问题。因此,在本申请(或要求其优先权的申请)的审理过程中可以 就特征的任何此类组合制定新的权利要求书。具体地,参考所附权利 要求书,来自从属权利要求的特征可与独立权利要求的特征相组合, 并且来自相应独立权利要求的特征可以任何适当的方式不是仅仅以 所附权利要求书中列举的具体组合来组合。

具体实施方式

本文公开快照产生的各种实施方案。本文实施方案中的各种实施 方案可包括维持多个日志记录的数据库服务的分布式存储系统。日志 记录可与由数据库服务存储的数据的相应改变相关联。本文实施方案 中的各种实施方案可包括产生快照的分布式存储系统,所述快照可用 于读取截至对应于所述快照的状态时的数据。产生快照可包括产生指 示日志记录中的特定一个的特定日志识别符(例如,日志序列号、时 间戳记等)的元数据。在一些实施方案中,元数据还可指示快照识别 符。所公开的快照产生技术可在不读取、复制或写入数据页面以作为 快照产生的一部分的情况下被执行。

本文还公开日志记录操纵的各种实施方案。本文实施方案中的各 种实施方案可包括接收多个日志记录的数据库服务的分布式存储系 统。本文实施方案中的各种实施方案还可包括在分布式存储系统的多 个存储节点之中存储多个日志记录的分布式存储系统。本文实施方案 中的各种实施方案还可包括转化多个日志记录的分布式存储系统。转 化可包括修剪、裁剪、简化、融合,和/或以其他方式删除、合并或 增加记录等转化。

本说明书首先描述被配置来实施所公开的快照操作(例如,创建、 删除、使用、操纵等)和日志记录操纵技术的示例性基于网络服务的 数据库服务。示例性基于网络服务的数据库服务的描述中包括示例性 基于网络服务的数据库服务的各个方面,如数据库引擎和独立分布式 数据库存储服务。本说明书随后描述用于快照操作和日志记录操纵的 方法的各种实施方案的流程图。接下来,本说明书描述可实施所公开 的技术的示例性系统。在整个说明书中提供各种实例。

在一些实施方案中,本文中描述的系统可实施网络服务,所述网 络服务使得客户端(例如,订阅者)能够在云计算环境中操作数据存储 系统。在一些实施方案中,数据存储系统可为高度可缩放的和可扩展 的企业级数据库系统。在一些实施方案中,查询可指向横跨多个物理 源分布的数据库存储,并且数据库系统可在所需的基础上扩大或缩 小。在不同实施方案中,数据库系统可在各种类型和/或组织的数据 库模式下有效工作。在一些实施方案中,客户端/订阅者可能以许多 方式(例如,通过到数据库系统的SQL接口以交互方式)提交查询。在 其他实施方案中,外部应用和程序可使用到数据库系统的开放数据库 连接(ODBC)和/或Java数据库连接(JDBC)驱动器接口来提交查询。

更具体地,在一些实施方案中,本文描述的系统可实施面向服务 的数据库架构,在所述数据库架构中单个数据库系统的各种功能部件 固有地分布。例如,不是将多个完整的和单片的数据库实例(其中的 每一个可包括外来功能性,如应用服务器、搜索功能性、或超过需要 用来提供数据库的核心功能的其他功能性)捆绑在一起,这些系统可 将数据库的基本操作(例如,查询处理、事务管理、高速缓存和存储) 组织成可单独和独立缩放的层。例如,在一些实施方案中,本文所描 述的系统中的每个数据库实例可包括数据库层(其可包括单个数据库 引擎头节点和客户端侧存储系统驱动器)、和独立分布式存储系统(其 可包括共同执行在现有系统的数据库层中常规执行的操作中的一些 的多个存储节点)。

如本文更详细描述的,在一些实施方案中,数据库的一些最低水 平操作(例如,备份、复原、快照、恢复、日志记录操纵和/或各种空 间管理操作)可从数据库引擎卸载至存储层,并且分布在多个节点和 存储装置上。例如,在一些实施方案中,不是数据库引擎对数据库表 格(或其数据页面)应用改变以及随后将修改的数据页面发送至存储 层,对存储的数据库表格(或其数据页面)的改变的应用可为存储层本 身的责任。在此类实施方案中,可将重做日志记录而不是修改的数据 页面发送至存储层,在其之后重做处理(例如,应用重做日志记录)可 稍微徐缓地并且以分布式方式执行(例如,通过后台处理)。在一些实 施方案中,崩溃恢复(例如,从存储的重做日志记录重建数据页面)也 可由存储层执行,以及也可由分布式(并且在一些情况下徐缓的)后台 处理执行。

在一些实施方案中,因为只有重做日志(以及未修改的数据页面) 被发送至存储层,在数据库层与存储层之间可存在比现有数据库系统 中更少的网络流量。在一些实施方案中,每个重做日志可大约为它指 定改变的对应数据页面大小的十分之一。注意从数据数据库层和分布 式存储系统发送的请求可为异步的,并且多个此类请求可同时在发送 中。

一般来说,在被给予数据片之后,数据库的基本要求为它可最终 交还回那个数据片。为此,数据库可包括若干不同部件(或层),其中 的每一个执行不同的功能。例如,传统数据库可被认为具有三个层: 用于执行查询解析、优化和执行的第一层;用于提供事务性、恢复和 耐久性的第二层;以及在本地附接的磁盘上或在网络附接的存储区上 提供存储的第三层。如以上指出的,对缩放传统数据库的先前尝试通 常已包含复制数据库的所有三层,以及在多个机器上分布那些复制的 数据库实例。

在一些实施方案中,本文描述的系统可不同于传统数据库中的来 划分数据库系统的功能性,并且可在多个机器上仅分布功能部件的子 集(不是完整的数据库实例)以便实施缩放。例如,在一些实施方案中, 面向客户端的层可被配置来接收请求,所述请求指定存储和检索什么 数据,但未指定如何存储和检索所述数据。这个层可执行请求解析和 /或优化(例如,SQL解析和优化),而另一层可负责查询执行。在一些 实施方案中,第三层可负责提供结果的事务性和一致性。例如,这个 层可被配置来施行一些所谓的ACID特性,具体地,把数据库作为目 标的事务的原子性、维持数据库内的一致性、以及确保把数据库作为 目标的事务之间的隔离。在一些实施方案中,第四层随后可负责在存 在各种故障的情况下提供存储的数据的耐久性。例如,这个层可负责 改变日志、从数据库崩溃恢复、管理对基础存储容量的访问和/或在 基础存储容量中的空间管理。

现在转向附图,图1为示出根据一个实施方案的数据库软件堆栈 的各种部件的框图。如这个实例中示出的,数据库实例可包括多个功 能部件(或层),其中的每一个提供数据库实例功能性的一部分。在这 个实例中,数据库实例100包括查询解析和查询优化层(被示作110)、 查询执行层(被示作120)、事务性和一致性管理层(被示作130)、和耐 久性和空间管理层(被示作140)。如以上指出的,在一些现存数据库 系统中,缩放数据库实例可包含复制整个数据库实例一次或多次(包 括图1中示出的所有层),以及随后添加胶合逻辑以便将它们缝合在 一起。在一些实施方案中,本文描述的系统反而可将耐久性和空间管 理层140的功能性从数据库层卸载至独立存储层,并且可在存储层中 的多个存储节点上分布那个功能性。

在一些实施方案中,本文描述的数据库系统可保持图1所示的数 据库实例的上半部的大部分结构,但可重新分布用于对存储层的备 份、复原、快照、恢复、和/或各种空间管理操作的至少部分的责任。 当与用来提供可缩放数据库的先前方法相比时,以这种方式重新分布 功能性以及在数据库层与存储层之间紧密连接日志处理可改善性能、 增加可用性和降低成本。例如,由于只有重做日志记录(其在大小上 比实际数据页面小很多)可在节点上运送或在写入操作的时延路径内 持续,所以可简化网络和输入/输出带宽要求。此外,数据页面的产 生可在每个存储节点上独立地后台完成(如前台处理允许的),而不阻 塞进入的写入操作。在一些实施方案中,使用日志结构化、非重写的 存储可允许备份、复原、快照、时间点恢复、和容量增长操作被更有 效地执行,例如,通过仅使用元数据操纵而不是移动或复制数据页面。 在一些实施方案中,存储层也可承担复制代表客户端的在多个存储节 点上存储的数据(和/或与所述数据关联的元数据,如重做日志记录) 的责任。例如,数据(和/或元数据)可本地(例如,在单个“可用区”内, 在所述单个“可用区”中存储节点集合在它自身的物理不同的、独立的 基础结构上执行)复制和/或在单个区域或不同区域中的可用区上复 制。

在各种实施方案中,本文描述的数据库系统可支持用于各种数据 库操作的标准或定制的应用编程接口(API)。例如,API可支持用于创 建数据库、创建表格、更改表格、创建用户、删除用户、在表格中插 入一个或多个行、复制值、从表格内选择数据(例如,查询表格)、取 消或中止查询、创建快照和/或其他操作。

在一些实施方案中,数据库实例的数据库层可包括数据库引擎头 节点服务器,所述数据库引擎头节点服务器接收来自各种客户端程序 (例如,应用)和/或订阅者(用户)的读取和/或写入请求,随后解析它们 并且发展执行计划以便实施关联的数据库操作。例如,数据库引擎头 节点可发展对获得用于复杂的查询和连接的结果有必要的步骤系列。 在一些实施方案中,数据库引擎头节点可管理在数据库系统的数据库 层与客户端/订阅者之间的通信,以及在数据库层与独立分布式数据 库优化存储系统之间的通信。

在一些实施方案中,数据库引擎头节点可负责从端部客户端通过 JDBC接口或ODBC接口来接收SQL请求,以及负责本地执行SQL 处理和事务管理(其可包括锁定)。然而,并非在本地产生数据页面, 数据库引擎头节点(或其各种部件)可产生重做日志记录,并且可将它 们运送至独立分布式存储系统的适当节点。在一些实施方案中,用于 分布式存储系统的客户端侧驱动器可在数据库引擎头节点上代管,并 且可负责将重做日志记录路由至存储那些重做日志记录指向的区段 (或其数据页面)的存储系统节点(或多个节点)。例如,在一些实施方 案中,每个区段在形成保护组的多个存储系统节点上可为镜像的(或 否则被形成为耐用的)。在此类实施方案中,客户端侧驱动器可记录 在其上存储每个区段的节点,并且当接收客户端请求时,可将重做日 志路由至在其上存储区段的所有节点(例如,异步地和基本上同时并 行)。一旦客户端侧从保护组中的存储节点的写入群体接收返回的确 认(其可指示重做日志记录已被写入至存储节点),它就可将请求的改 变的确认发送至数据库层(例如,至数据库引擎头节点)。例如,在其 中通过使用保护组使得数据耐用的实施方案中,数据库引擎头节点可 能不能够提交事务,除非客户端侧驱动器从足够的存储节点实例接收 回复以便构成写入群体。类似地,对于指向特定区段的读取请求,客 户端侧驱动器可将读取请求路由至在其上存储所述区段的所有节点 (例如,异步地和基本上同时并行地)。一旦客户端侧驱动器从保护组 中的存储节点的读取群体接收请求的数据,它可将请求的数据返回至 数据库层(例如,至数据库引擎头节点)。

在一些实施方案中,数据库层(或更具体地,数据库引擎头节点) 可包括在其中临时保持最近访问的数据页面的高速缓冲存储器。在此 类实施方案中,如果接收将保持在此类高速缓冲存储器中的数据页面 作为目标的写入请求,除了将对应的重做日志记录运送至存储层之 外,数据库引擎可对保持在它的高速缓冲存储器中的数据页面的复制 应用改变。然而,不同于在其他数据库系统中,保持在这个高速缓冲 存储器中的数据页面可能从不被刷新至存储层,并且它可在任何时候 被抛弃(例如,在用于最近应用至高速缓存的复制的写入请求的重做 日志记录已被发送至存储层和被确认之后的任何时候)。在不同实施 方案中,高速缓冲存储器可实施任何的各种锁定机构,以便通过每次 最多一个写入者(或多个读取者)控制访问高速缓冲存储器。然而注意 在包括此类高速缓冲存储器的实施方案中,高速缓冲存储器可能未分 布在多个节点上,但对于给定数据库实例可仅存在于数据库引擎头节 点上。因此,可能不存在要管理的高速缓存相干性或一致性问题。

在一些实施方案中,数据库层可支持在系统中使用同步或异步读 取复制品,例如,在读取请求可被路由至其的数据库层的不同节点上 的数据只读副本。在此类实施方案中,如果用于给定数据库表格的数 据库引擎头节点接收指向特定数据页面的读取请求,那么它可将请求 路由至这些只读副本中的任何一个(或特定的一个)。在一些实施方案 中,数据库引擎头节点中的客户端侧驱动器可被配置来通知这些其他 节点关于高速缓存的数据页面的升级和/或失效(例如,以便提示它们 使它们的高速缓冲存储器无效,在其之后它们可从存储层请求更新的 数据页面的更新副本)。

在一些实施方案中,在数据库引擎头节点上运行的客户端侧驱动 器可暴露针对存储层的专用接口。在一些实施方案中,它也可暴露针 对一个或多个其他部件(例如,其他数据库引擎或虚拟计算服务部件) 的传统iSCSI接口。在一些实施方案中,在存储层中用于数据库实例 的存储可被模制成单个卷,所述单个卷可在大小上增长而不受限制, 并且可具有不限数目的与它关联的IOPS。当创建卷时,可用具体大 小、用具体的可用性/耐久性特性(例如,指定它被如何复制)、和/或 与它关联的IOPS速率(例如,峰值和持续的)来创建它。例如,在一 些实施方案中,各种不同的耐久性模型可被支持,并且用户/订阅者 可以能够为它们的数据库表格基于它们的耐久性、性能和成本目标来 指定一些复制副本、区、或区域、和/或复制是同步的还是异步的。

在一些实施方案中,客户端侧驱动器可维持关于卷的元数据,并 且可将异步请求直接发送至对实现读取请求和写入请求有必要的每 个存储节点,而不需要在存储节点之间的附加跳跃。例如,在一些实 施方案中,响应对数据库表格进行改变的请求,客户端侧驱动器可被 配置来确定实施用于目标数据页面的存储的一个或多个节点,以及路 由指定对那些存储节点的改变的重做日志记录。存储节点随后可在将 来的某个时刻负责将在重做日志记录中指定的改变应用至目标数据 页面。由于返回客户端侧驱动器的写入被确认,所以客户端侧驱动器 可提前在其处卷为耐用的点,并且可确认返回数据库层的提交。如先 前指出的,在一些实施方案中,客户端侧驱动器可能从不将数据页面 发送至存储节点服务器。这不仅可简化网络流量,还可移除对检查点 或后台写入线程的需要,所述检查点或后台写入线程在先前的数据库 系统中约束前台处理吞吐量。

在一些实施方案中,许多读取请求可由数据库引擎头节点高速缓 冲存储器服务。然而,由于大规模的故障事件可能太常见而不允许仅 在存储器中复制,写入请求可能需要耐久性。因此,本文描述的系统 可被配置来最小化重做日志记录写入操作的成本,所述重做日志记录 写入操作在前台延时路径中,通过将存储层中的数据存储实施成两个 区域:小型仅附加的日志结构化区域,当从数据库层被接收重做日志 记录时将其写入至其中;以及较大区域,在所述较大区域中日志记录 合并在一起以便后台创建新版本的数据页面。在一些实施方案中,可 维持存储器中结构用于每个数据页面,所述每个数据页面指向用于那 个页面的最后重做日志记录、反向链接日志记录,直到实体化数据块 被引用。这个方法可提供用于混合的读取-写入工作负荷的良好性能, 包括在其中大量高速缓存读取的应用中。

在一些实施方案中,因为对用于重做日志记录的日志结构化数据 存储的访问可包括一系列连续的输入/输出操作(不是随机输入/输出 操作),做出的改变可被紧密包装在一起。还应注意,与在其中对数 据页面的每个改变导致对持久数据存储的两个输入/输出操作(一个用 于重做日志,并且一个用于修改的数据页面本身)的现存系统相比, 在一些实施方案中,通过基于重做日志记录的接收来合并在分布式存 储系统的存储节点处的数据页面,本文描述的系统可避免这个“写入 放大”。

如先前指出的,在一些实施方案中,数据库系统的存储层可负责 取得数据库快照。然而,因为存储层实施日志结构化存储,取得数据 页面(例如,数据块)的快照可包括记录与最近应用至数据页面/数据块 的重做日志记录关联的时间戳(或与合并多个重做日志记录以便创建 新版本的数据页面/数据块的最近操作关联的时间戳),和阻止先前版 本的页面/块的无用数据收集以及直到记录的时间点的任何随后日志 条目。在这类实施方案中,取得数据库快照可能不需要如当采用远离 卷备份策略时将需要的读取、复制或写入数据块。在一些实施方案中, 对快照的空间要求可为最小的,由于仅修改的数据将需要附加的空 间,但用户/订阅者可以能够选择除活动数据集之外他们想要保持多 少附加空间用于在卷上的快照。在不同的实施方案中,快照可为离散 的(例如,每个快照可提供对截至具体时间点时的数据页面中的所有 数据的访问)或连续的(例如,每个快照可提供对存在于两个时间点之 间的数据页面中的所有版本的数据的访问)。在一些实施方案中,回 复至先前的快照可包括记录日志记录以便指示所有的重做日志记录 和数据页面(由于快照为无效的和可无用数据收集的),以及在快照点 后丢弃所有数据库高速缓存条目。在此类实施方案中,由于存储系统 将在逐块基础上如请求的和后台在所有节点上对数据块应用重做日 志记录,就像它在正常的向前读取/写入处理中做的,所以不需要向 前滚动。从而可使得崩溃恢复并行和分布在节点上。图8和图9描述 关于快照创建、使用和/或操纵的另外细节。

图2中示出可被配置来实施基于网络服务的数据库服务的服务 系统架构的一个实施方案。在所示的实施方案中,一些客户端(被示 作数据库客户端250a-250n)可被配置来通过网络260与网络服务平台 200互相作用。网络服务平台200可被配置来与数据库服务210、分 布式数据库优化存储服务220和/或一个或多个其他虚拟计算服务230 的一个或多个实例相互作用。注意其中给定部件的一个或多个实例可 存在,可使得本文中对那个部件的引用为单数的或复数的。然而,任 何一种形式的使用不意图排除另一种。

在各种实施方案中,图2所示的部件可直接在计算机硬件内实 施,如可由计算机硬件直接执行或间接执行的指令(例如,微处理器 或计算机系统),或使用这些技术的组合。例如,图2的部件可由包 括一些计算节点(或简单地,节点)的系统来实施,所述计算节点中的 每一个可类似于图10所示的和以下描述的计算机系统实施方案。在 各种实施方案中,给定服务系统部件(例如,数据库服务的部件或存 储服务的部件)的功能性可由特定节点来实施或可分布在若干节点 上。在一些实施方案中,给定节点可实施多于一个服务系统部件(例 如,多于一个数据库服务系统部件)的功能性。

一般来说,客户端250可包含可被配置来通过网络260向网络服 务平台200提交网络请求的任何类型的客户端,所述网络请求包括用 于数据库服务的请求(例如,产生快照的请求等)。例如,给定客户端 250可包括适当版本的网络浏览器,或可包括被配置来作为延伸执行 或在由网络浏览器提供的执行环境内执行的插件模块或其他类型的 代码模块。可替代地,客户端250(例如,数据库服务客户端)可包含 应用程序,如数据库应用程序(或其用户接口)、媒体应用程序、办公 室应用程序、或可使用持久存储资源以便存储和/或访问一个或多个 数据库表格的任何其他应用程序。在一些实施方案中,此类应用程序 可包括足够的协议支持(例如,用于适当版本的超文本传输协议 (HTTP)),用于产生和处理网络服务请求,而不必要地实施用于所有 类型的基于网络的数据的完整浏览器支持。就是说,客户端250可为 被配置来直接与网络服务平台200相互作用的应用程序。在一些实施 方案中,客户端250可被配置来根据表述性状态转移(REST)类型的网 络架构、基于文件或基于消息的网络服务架构、或另一适当的网络服 务架构产生网络服务请求。

在一些实施方案中,客户端250(例如,数据库服务客户端)可被 配置来向其他应用程序以对这些应用程序透明的方式提供对基于网 络服务的数据表格存储的访问。例如,客户端250可被配置来与操作 系统或文件系统集成,来提供根据本文所描述的存储模型的适当变体 的存储。然而,操作系统或文件系统可呈现针对应用程序的不同存储 接口,如文件、目录和/或文件夹的常规文件系统层级。在此类实施 方案中,应用程序可能不需要被修改以便使用图1的存储系统服务模 型。反而,对网络服务平台200的介接的细节可通过客户端250和代 表在操作系统环境内执行的应用程序的操作系统或文件系统来协调。

客户端250可通过网络260将网络服务请求(例如,快照请求、 快照请求参数、读取请求、复原快照等)传达至网络服务平台200以 及从网络服务平台200接收响应。在各种实施方案中,网络260可包 含对在客户端250与平台200之间建立基于网络的通信有必要的联网 的硬件和协议的任何适当组合。例如,网络260通常可包含共同实施 因特网的各种电信网络和服务提供者。网络260也可包括专用网络(如 局域网(LAN)或广域网(WAN))以及公用无线网络或专用无线网络。例 如,给定的客户端250和网络服务平台200可分别被供应在具有其自 身内部网络的企业内。在此类环境中,网络260可包括对在给定客户 端250与因特网之间以及在因特网和网络服务平台200之间建立联网 链接有必要的硬件(例如,调制解调器、路由器、交换器、负载均衡 器、代理服务器等)和软件(例如,协议堆栈、会计软件、防火墙/安全 软件等)。注意在一些实施方案中,客户端250可使用专用网络而不 是公用因特网来与网络服务平台200通信。例如,客户端250可被供 应在与数据库服务系统相同的企业内(例如,实施数据库服务210和/ 或分布式数据库优化存储服务220的系统)。在此类情况下,客户端 250可通过专用网络260(例如,可使用基于因特网的通信协议但不可 公共访问的LAN或WAN)与平台200通信。

一般来说,网络服务平台200可被配置,以便实施被配置来接收 和处理网络服务请求(如对访问数据页面(或其记录)的请求)的一个或 多个服务端点。例如,网络服务平台200可包括被配置来实施特定端 点的硬件和/或软件,以使得指向那个端点的基于HTTP的网络服务 请求被适当地接收和处理。在一个实施方案中,网络服务平台200可 被实施作为服务器系统,所述服务器系统被配置来从客户端250接收 网络服务请求,并且将它们转发至实施数据库服务210、分布式数据 库优化存储服务220和/或另一虚拟计算服务230的系统的部件用于 处理。在其他实施方案中,网络服务平台200可被配置成一些异构系 统(例如,处于集群拓扑),所述异构系统实施负载平衡和被配置来动 态管理大规模的网络服务请求处理负载的其他请求管理特征。在各种 实施方案中,网络服务平台200可被配置来支持REST类型的或基于 文件(例如,基于SOAP)类型的网络服务请求。

除起到用于客户端的网络服务请求的可寻址端点的作用之外,在 一些实施方案中,网络服务平台200可实施各种客户端管理特征。例 如,平台200可协调网络服务(包括存储资源)的客户端使用的测量和 计数,如通过追踪请求客户端250的身份、客户端请求的数目和/或 频率、被存储或检索的代表客户端250的数据表格(或其记录)的大小、 由客户端250使用的总存储带宽、由客户端250请求的存储类别、或 任何其他可测量的客户端使用参数。平台200也可实施财务账目和计 费系统,或可维持使用数据的数据库,所述使用数据的数据库可由用 于客户端使用活动的报告和计费的外部系统查询和处理。在某些实施 方案中,平台200可被配置来收集、监视和/或集合各种存储服务系 统操作度量,如反映从客户端250接收的请求的速率和类型、由此类 请求利用的带宽、用于此类请求的系统处理时延、系统部件利用(例 如,网络带宽和/或存储服务系统内的存储利用)、由请求导致的错误 的速率和类型、存储的和请求的数据页面或其记录的特性(例如,大 小、数据类型等)的度量、或任何其他适当的度量。在一些实施方案 中,此类度量可由系统管理员使用以便调谐和维持系统部件,而在其 他实施方案中,此类度量(或此类度量的相关部分)可暴露于客户端 250,以便使得此类客户端能够监视它们使用数据库服务210、分布 式数据库优化存储服务220和/或另一虚拟计算服务230(或实施那些 服务的基础系统)。

在一些实施方案中,平台200也可实施用户认证和访问控制程 序。例如,对于访问特定数据库表格的给定网络服务请求,平台200 可被配置来查明与请求关联的客户端250是否被授权访问特定数据 库表格。平台200可确定此类认证,例如通过相对于与特定数据库表 格关联的凭据评估身份、密码或其他凭据,或相对于用于特定数据库 表格的访问控制列表评估对特定数据库表格的请求的访问。例如,如 果客户端250不具有足够的凭据来访问特定数据库表格,平台200可 例如通过将指示错误情况的响应返回至请求客户端250来拒绝对应 的网络服务请求。通过数据库服务210、分布式数据库优化存储服务 220和/或其他虚拟计算服务230,各种访问控制政策可被存储作为访 问控制信息的记录或列表。

注意尽管网络服务平台200可代表通过其客户端250可访问实施 数据库服务210的数据库系统的特征的主接口,但它不需要代表针对 此类特征的唯一接口。例如,可与网络服务接口不同的替代性API 可用于允许提供数据库系统的企业内部客户端绕开网络服务平台 200。注意在本文描述的许多实例中,分布式数据库优化存储服务220 可在计算系统内或向客户端250提供数据库服务的计算系统或企业 系统内,并且不可暴露于外部客户端(例如,用户或客户端应用程序)。 在此类实施方案中,内部“客户端”(例如,数据库服务210)可在本地 网络或专用网络上访问分布式数据库优化存储服务220,被示出为在 分布式数据库优化存储服务220与数据库服务210之间的实线(例如, 通过直接在实施这些服务的系统之间的API)。在此类实施方案中, 在存储代表客户端250的数据库表格中使用分布式数据库优化存储 服务220对那些客户端可为透明的。在其他实施方案中,分布式数据 库优化存储服务220可通过网络服务平台200暴露于客户端250,以 便为除了依靠数据库服务210的那些应用程序外的应用程序提供数 据库表格或其他信息的存储用于数据库管理。这在图2中通过网络服 务平台200与分布式数据库优化存储服务220之间的虚线示出。在此 类实施方案中,分布式数据库优化存储服务220的客户端可通过网络 260(例如,在因特网上)访问分布式数据库优化存储服务220。在一些 实施方案中,虚拟计算服务230可被配置来从分布式数据库优化存储 服务220(例如,通过直接在虚拟计算服务230与分布式数据库优化存 储服务220之间的API)接收存储服务,来存储在执行计算服务230 中使用的代表客户端250的对象。这在图2中通过虚拟计算服务230 与分布式数据库优化存储服务220之间的虚线示出。在一些情况下, 平台200的计数和/或凭证服务对于内部客户端(如管理客户端)或在 同一企业内的服务部件之间可能为不必要的。

注意在各种实施方案中,不同的存储政策可由数据库服务210和 /或分布式数据库优化存储服务220来实施。此类存储政策的实例可 包括耐久性政策(例如,指示将被存储的数据库表格(或其数据页面) 的实例数目和在其上它们将被存储的不同节点数目的政策)和/或负载 平衡政策(其可在不同的节点、卷和/或磁盘上分布数据库表格或其数 据页面,试图均衡请求流量)。此外,通过各种服务中的一个,可对 不同类型的存储项目应用不同的存储政策。例如,在一些实施方案中, 分配式数据库优化存储服务220可为重做日志记录实施比为数据页 面更高的耐久性。

图3为示出根据一个实施方案的数据库系统的各种部件的框图, 所述数据库系统包括数据库引擎和独立分布式数据库存储服务。在这 个实例中,数据库系统300包括用于若干数据库表格中的每一个的各 自数据库引擎头节点320和分布式数据库优化存储服务310(其对数 据库系统的客户端可能是或可能不是可见的,所述客户端被示出为数 据库客户端350a-350n)。如这个实例所示,数据库客户端350a-350n 中的一个或多个可通过网络360(例如,这些部件对于数据库客户端 350a-350n可为网络可寻址的和可访问的)来访问数据库头节点320 (例如,头节点320a、头节点320b、或头节点320c,其中的每一个为 各自数据库实例的部件)。然而,可由数据库系统采用以便存储代表 数据库客户端350a-350n的一个或多个数据表格(以及重做日志记录 和/或与其关联的其他元数据)的数据页面以及执行如本文所述的数据 库系统的其他功能的分布式数据库优化存储服务310在不同的实施 方案中对于存储客户端350a-350n可能是或可能不是网络可寻址的或 可访问的。例如,在一些实施方案中,分布式数据库优化存储服务 310可能以对存储客户端350a-350n不可见的方式来执行各种存储、 访问、改变日志、恢复、日志记录操纵和/或空间管理操作。

如先前指出的,每个数据库实例可包括单个数据库引擎头节点 320,所述单个数据库引擎头节点320接收来自各种客户端程序(例如, 应用程序)和/或订阅者(用户)的请求(例如,快照请求等),随后解析它 们,优化它们并且发展执行计划以便实施关联的数据库操作。在图3 所示的实例中,数据库引擎头节点320a的查询解析、优化和执行部 件305可执行用于查询的这些功能,所述查询从数据库客户端350a 接收并且把数据库引擎头节点320a为部件的数据库实例作为目标。 在一些实施方案中,查询解析、优化和执行部件305可将查询响应返 回至数据库客户端305a,所述查询响应可包括写入确认、请求的数 据页面(或其部分)、错误消息、和/或其他响应(在适当情况下)。如这 个实例所示,数据库引擎头节点320a也可包括客户端侧存储服务驱 动器325,所述客户端侧存储服务驱动器325可将读取请求和/或重做 日志记录路由至在分布式数据库优化存储服务310内的各种存储节 点,从分布式数据优化存储服务310接收写入确认,从分布式数据库 优化存储服务310接收请求的数据页面,和/或将数据页面、错误消 息、或其他响应返回至查询解析、优化和执行部件305(其反过来可 将它们返回至数据库客户端350a)。

在这个实例中,数据库引擎头节点320a包括在其中最近访问的 数据页面可被暂时保持的数据页面高速缓冲存储器335。如图3所示, 数据库引擎头节点320a也可包括事务和一致性管理部件330,所述 事务和一致性管理部件330可负责在数据库头节点320a为部件的数 据库实例中提供事务性和一致性。例如,这个部件可负责确保数据库 实例的原子性、一致性和隔离特性以及指向数据库实例的事务。如图 3所示,数据库引擎头节点320a也可包括事务日志340和撤销日志 345,所述事务日志340和撤销日志345可由事务和一致性管理部件 330采用,以便追踪各种事务状态以及将不提交的事务的任何本地高 速缓存的结果向后滚动。

注意图3所示的其他数据库引擎头节点320中的每一个(例如, 320b和320c)可包括类似的部件并且可执行用于查询的类似功能,所 述查询由数据库客户端350a-350n中的一个或多个接收,并且指向它 为部件的各自数据库实例。

在一些实施方案中,本文描述的分布式数据库优化存储系统可在 各种逻辑卷、区段和页面中组织数据用于一个或多个存储节点上存 储。例如,在一些实施方案中,每个数据库表格由逻辑卷代表,并且 每个逻辑卷在存储节点集合上被分割。依存在存储节点中的特定一个 上的每个区段包含一组连续块地址。在一些实施方案中,每个数据页 面存储在区段中,以使得每个区段存储一个或多个数据页面的集合和 用于它存储的每个数据页面的改变日志(也被称为重做日志)(例如, 重做日志记录的日志)。如本文详细描述的,存储节点可被配置来接 收重做日志记录(其在本文中也被称为ULR),以及合并它们来创建新 版本的对应数据页面和/或附加日志记录或替换日志记录(例如,徐缓 地和/或响应于对数据页面的请求或数据库崩溃)。在一些实施方案中, 根据可变的配置(其可由客户端指定,所述客户端被代表的数据库表 格被维持在数据库系统中),数据页面和/或改变日志在多个存储节点 上可为镜像的。例如,在不同实施方案中,根据默认配置、具体应用 的耐久性偏好、或具体客户端的耐久性偏好,数据日志或改变日志的 一个、两个或三个副本可存储在一个、两个或三个不同的可用区或区 域中的每一个中。

如本文使用的,以下术语可用于描述根据各种实施方案的通过分 布式数据库优化存储系统进行的数据的组织。

卷:卷为代表存储系统的用户/客户端/应用程序理解的高度耐用 的存储单元的逻辑概念。更具体地,卷为对用户/客户端/应用程序显 示成对数据库表格的各种用户页面的写入操作的单个一致有序日志 的分布式存储。每个写入操作可被编码在用户日志记录(ULR)中,所 述用户日志记录(ULR)代表对卷内的单个用户页面的内容的逻辑、有 序突变。如以上指出的,ULR在本文中也可被称为重做日志记录。 每个ULR可包括唯一识别符(例如,逻辑序列号(LSN)、时间戳记等)。 应指出,唯一识别符可以是单调递增的并且对日志记录中的特定一个 是唯一的。还应指出,在分配至日志记录的识别符的序列中可存在间 隙。例如,在LSN实例中,LSN 1、4、5、6和9可分配至五个相应 日志记录,而LSN 2、3、7和8未被使用。每个ULR可持续至形成 保护组(PG)的在分布式存储中的一个或多个同步区段,以便为ULR 提供高耐久性和可用性。卷可提供用于可变大小的连续字节范围的 LSN类型的读取/写入接口。

在一些实施方案中,卷可包括多个程度,通过保护组使得每个耐 用。在此类实施方案中,卷可代表由变异连续的卷程度序列组成的存 储单元。指向卷的读取和写入可映射至对构成的卷程度的对应的读取 和写入中。在一些实施方案中,卷的大小可通过从卷末端添加或移除 卷程度来改变。

区段:区段为分配至单个存储节点的耐久性受限的存储单元。更 具体地,区段为具体固定大小的数据字节范围提供有限的最大努力耐 久性(例如,为存储节点的持久的、但非冗余的单个故障点)。在一些 情况下,这个数据可为用户可寻址数据的镜像,或在各种实施方案中, 它可为其他数据,如卷元数据或可擦除的编码比特。给定区段可恰好 依存在一个存储节点上。在存储节点内,多个区段可依存在每个SSD 上,并且每个区段可被限制于一个SSD(例如,区段可能不横跨多个 SSD)。在一些实施方案中,可能不需要区段来占据SSD上的连续区 域;宁可在每个SSD中存在描述由每个区段拥有的区域的分配映射。 如以上指出的,保护组可包括在多个存储节点上散布的多个区段。在 一些实施方案中,区段可提供用于固定大小(其中大小在创建时被限 定)的连续字节范围的LSN类型的读取/写入接口。在一些实施方案 中,每个区段可通过区段UUID(例如,区段的通用唯一识别符)来识 别。

存储页面:存储页面为通常具有固定大小的存储器块。在一些实 施方案中,每个页面为具有由操作系统限定的大小的存储器块(例如, 虚拟存储器、磁盘、或其他物理存储器的),并且在本文中也可被称 为术语“数据块”。更具体地,存储页面可为一组连续扇区。它可用作 SSD中的分配单元,以及日志页面中对于其存在标头和元数据的单 元。在一些实施方案中,以及在本文描述的数据库系统的情况下,术 语“页面”或“存储页面”可指具有由数据库配置限定的大小的类似块, 所述大小通常可为2的倍数,如4096、8192、16384或32768字节。

日志页面:日志页面为用于存储日志记录(例如,重做日志记录 或撤销日志记录)的一种类型的存储页面。在一些实施方案中,日志 页面在大小上可等于存储页面。每个日志页面可包括标头,所述标头 包含关于那个日志页面的元数据(例如,识别它属于的区段的元数据)。 注意日志页面为组织单元,并且可能不必须为包括在写入操作中的数 据单元。例如,在一些实施方案中,在正常向前处理期间,写入操作 可一次一个扇区地写入至日志尾部。

日志记录:日志记录(例如,日志页面的单独元件)可具有若干不 同的类别。例如,由存储系统的用户/客户端/应用程序创建和理解的 用户日志记录(ULR)可用于指示对卷中的用户数据的改变。由存储系 统产生的控制日志记录(CLR)可包含用于追踪元数据(如当前无条件 的卷耐用LSN(VDL))的控制信息。在一些实施方案中,空日志记录 (NLR)可用作填料,以便填充日志扇区或日志页面中的未用空间。在 一些实施方案中,在这些类别中的每一个内可存在各种类型的日志记 录,并且日志记录类型可对应于需要被调用以便解释日志记录的功 能。例如,一种类型可使用具体的压缩格式来代表压缩格式的用户页 面的所有数据;第二类型可代表用于用户页面内的字节范围的新值; 第三类型可代表对被解释成整数的字节序列的增量操作;以及第四类 型可代表在页面内将一个字节范围复制到另一位置。在一些实施方案 中,日志记录类型可由GUID(不是由整数或枚举)来识别,所述GUID 可简化版本控制和发展,特别用于ULR。

有效负载:日志记录的有效负载为针对一个或多个特定类型的日 志记录的数据或参数值。例如,在一些实施方案中,可能存在大部分 (或所有的)日志记录包括,并且存储系统本身理解的一组参数或属性。 这些属性可为与扇区大小相比可能为相对小的常用日志记录标头/结 构的部分。此外,大部分日志记录可包括针对那个日志记录类型的附 加的参数或数据,并且这个附加信息可被认为是那个日志记录的有效 负载。在一些实施方案中,如果用于特定ULR的有效负载大于用户 页面大小,它可由绝对ULR(AULR)来替换,所述绝对ULR的有效 负载包括用于用户页面的所有数据。这可使得存储系统能够对等于用 户页面大小的ULR的有效负载的大小施行上限。

注意当将日志记录存储在区段日志中时,在一些实施方案中,有 效负载可连通日志标头一起存储。在其他实施方案中,有效负载可存 储在独立位置中,并且到在其中存储有效负载的位置的指针可与日志 标头一起存储。在另一些实施方案中,有效负载的一部分可存储在标 头中,并且有效负载的剩余物可存储在独立位置中。如果整个有效负 载与日志标头一起存储,这可被称为带内存储;否则存储可被称为带 外的。在一些实施方案中,大部分大型AULR的有效负载可带外存 储在日志冷区(其在以下描述)中。

用户页面:用户页面为用于特定卷的字节范围(固定大小的)和其 对准,所述特定卷对存储系统的用户/客户端为可见的。用户页面为 逻辑概念,并且在特定用户页面中的字节可能或可能不原样存储在任 何存储页面中。用于特定卷的用户页面的大小可独立于用于那个卷的 存储页面的大小。在一些实施方案中,用户页面大小可被每卷配置, 并且在存储节点上的不同区段可具有不同的用户页面大小。在一些实 施方案中,用户页面大小可被约束成多个扇区大小(例如,4KB),并 且可具有上限(例如,64KB)。另一方面,存储页面大小对于整个存储 节点可为固定的,并且可能不改变除非存在对基础硬件的改变。

数据页面:数据页面为用于存储压缩形式的用户页面数据的一种 类型的存储页面。在一些实施方案中,存储在数据页面中的每个数据 片与日志记录关联,并且每个日志记录可包括到数据页面内的扇区 (也被称为数据扇区)的指针。在一些实施方案中,数据页面可能不包 括除由每个扇区提供的之外的任何嵌入式元数据。在数据页面中扇区 之间可能不存在关系。反而,到页面中的组织可仅作为到区段的数据 分配的间隔尺寸的表达存在。

存储节点:存储节点为在其上存储节点服务器代码被部署的单个 虚拟机器。每个存储节点可包含多个本地附接的SSD,并且可提供网 络API用于访问一个或多个区段。在一些实施方案中,各个节点可在 活动列表上,或在降级列表上(例如,如果它们缓慢响应或另外被损 坏,但未完全不能用)。在一些实施方案中,客户端侧驱动器基于观 测的性能可帮助(或负责)将节点分类成活动的或降级的,用于确定它 们是否以及何时应被替换,和/或用于确定何时和如何在各个节点中 重新分布数据。

SSD:如本文指出的,术语“SSD”可指如通过存储节点可见的本 地块存储卷,不考虑由那个存储卷采用的存储类型,例如,磁盘、固 态驱动、电池支持的RAM、NVMRAM装置(例如,一个或个 NVDIMM)、或另一类型的持久存储装置。SSD不必要直接映射至硬 件。例如,单个固态存储装置可能分成多个本地卷,其中在不同的实 施方案中,每个卷被分裂成多个区段以及在多个区段上剥离,和/或 单个驱动可仅为容易管理而分成多个卷。在一些实施方案中,每个 SSD可在单个固定位置处存储分配映射。这个映射可指示特定区段拥 有的那些存储页面,以及这些页面中的哪些为日志页面(与数据页面 相对)。在一些实施方案中,存储页面可被提前分配至每个区段,以 使得向前处理可能不需要等待分配。在新分配的存储页面由区段使用 之前,可能需要使得对分配映射的任何改变耐用。

分布式数据库优化存储系统的一个实施方案由图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、和附接的SSD 491-498。

如先前指出的,在一些实施方案中,扇区为在SSD上的对齐单 元,并且可为在SSD上可被写入而没有所述写入将仅被部分完成的 风险的最大大小。例如,用于各种固态驱动和旋压介质的扇区大小可 为4KB。在本文所述的分布式数据库优化存储系统的一些实施方案 中,每个以及每一个扇区可在所述扇区开始处包括64比特(8字节) CRC,不考虑扇区为其一部分的较高水平实体。在此类实施方案中, 这个CRC(每次当从SSD读取扇区时,其可生效)可在检测破坏中使 用。在一些实施方案中,每个和每一个扇区也可包括“扇区类型”字节, 其值将所述扇区识别成日志扇区、数据扇区、或未初始化的扇区。例 如,在一些实施方案中,为0的扇区类型字节值可指示扇区未初始化。

在一些实施方案中,在分布式数据库优化存储系统中的每个存储 系统服务器节点可实施在节点服务器的操作系统上运行的一组处理, 所述处理管理与数据库引擎头节点的通信,例如,以便接收重做日志、 送回数据页面等。在一些实施方案中,写入至分布式数据块优化存储 系统的所有数据块可备份到长期存储和/或档案存储(例如,在远程键 值耐用备份存储系统中)。

图5为示出根据一个实施方案的数据库系统中的独立分布式数 据库优化存储系统的使用的框图。在这个实例中,一个或多个客户端 进程510可将数据存储至由数据库系统维持的一个或多个数据库表 格,所述数据库系统包括数据库引擎520和分布式数据库优化存储系 统530。在图5所示的实例中,数据库引擎520包括数据库层部件560 和客户端侧驱动器540(其用于分布式数据库优化存储系统530与数 据库层部件560之间的接口)。在一些实施方案中,数据库层部件560 可执行功能(如由图3的查询解析、优化和执行部件305以及事务和 一致性管理部件330执行的那些),和/或可存储数据页面、事务日志 和/或撤销日志(如由图3的数据页面高速缓冲存储器335、事务日志 340和撤销日志345存储的那些)。

在这个实例中,包括对读取数据页面的请求的每个数据库查询请 求515可被解析和优化,以便产生可被发送至客户端侧驱动器540用 于随后路由至分布式数据库优化存储系统530的一个或多个读取记 录请求543。在这个实例中,客户端侧驱动器540可将这些请求发送 至分布式数据库优化存储系统530的存储节点535中的具体的一些, 并且分布式数据库优化存储系统530可将请求的数据页面533返回至 数据库引擎520(具体至客户端侧驱动器540)。客户端侧驱动器540 可将返回的数据页面发送至数据库层部件560作为返回数据记录 544,并且数据库层部件560随后可将数据页面发送至一个或多个客 户端进程510作为数据库查询响应517。

在一些实施方案中,各种错误和/或数据损失消息534可从分布 式数据库优化存储系统530发送至数据库引擎520(具体至客户端侧 驱动器540)。这些消息可从客户端侧驱动器540传递至数据库层部件 560作为错误和/或损失报告消息545,并且随后连同(或代替)数据库 查询响应517至一个或多个客户端进程510。

在一些实施方案中,各种错误和/或数据损失消息534可从分布 式数据库优化存储系统530发送至数据库引擎520(具体至客户端侧 驱动器540)。这些消息可从客户端侧驱动器540传递至数据库层部件 560作为错误和/或损失报告消息545,并且随后连同(或代替)数据库 查询响应517至一个或多个客户端进程510。

在一些实施方案中,分布式数据库优化存储系统530的API 531-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调用和响应(例如,API 531-534) 和/或在客户端侧驱动器540与数据库层部件560之间的API调用和 响应(例如,API 541-545)可在安全代理连接(例如,由网关控制面管 理的一个)上执行,或可在公共网络上,或可替代地在专用通道(如虚 拟专用网络(VPN)连接)上执行。到本文所述的数据库系统的部件和/ 或在其之间的这些和其他API可根据不同的技术(包括但不限于,简 单对象访问协议(SOAP)技术和表述性状态转移(REST)技术)来实施。 例如,这些API可能,但不必须被实施作为SOAP API或RESTful API。 SOAP为用于在基于网络的服务的情况下用于交换信息的协议。REST 为用于分布式超媒体系统的构造风格。RESTful API(其也可被称为 RESTful网络服务)为使用HTTP和REST技术实施的网络服务API。 本文描述的API在一些实施方案中可用各种语言(包括但不限C、 C++、Java、C#和Perl)中的客户端库来包装,以便支持与数据库引擎 520和/或分布式数据库优化存储系统530的合并。

如以上指出的,在一些实施方案中,数据库系统的功能部件可在 由数据库引擎执行的那些与在独立、分布式、数据库优化存储系统中 执行的那些之间划分。在一个具体实例中,响应于接收来自客户端进 程(或其线程)的对将某物插入至数据库表格中(例如,通过将记录添加 那个数据块来更新单个数据块)的请求,数据库引擎头节点的一个或 多个部件可执行查询解析、优化、和执行,以及可将查询的每个部分 发送至事务和一致性管理部件。事务和一致性管理部件可确保没有其 他客户端进程(或其线程)试图同时修改相同的行。例如,事务和一致 性管理部件可负责确保这个改变自动地、一致地、耐久地以及以隔离 的方式在数据库中执行。例如,事务和一致性管理部件可与数据库引 擎头节点的客户端侧存储服务驱动器一起工作,以便产生将被发送至 分布式数据库优化存储服务中的一个节点的重做日志记录,以及将它 发送至分布式数据库优化存储服务(连同响应于其他客户端请求产生 的其他重做日志),以一个顺序和/或用确保ACID特性满足这个事务 的定时。在接收重做日志记录(其也可被称为更新记录)后,对应的存 储节点可更新数据块,并且可更新用于所述数据块的重做日志(例如, 指向数据块的所有改变的记录)。在一些实施方案中,数据库引擎可 负责产生用于这个改变的撤销日志,并且也可负责产生用于撤销日志 的重做日志记录,其都可本地(在数据库层中)用于确保事务性。然而, 不同于常规数据库系统,本文描述的系统可将对数据块应用改变的责 任转移至存储系统(不是在数据库层应用它们以及将修改的数据块运 送至存储系统)。此外,如本文在图8-9所述,在各种实施方案中,快 照操作和/或日志操纵同样可由存储系统执行。

在不同的实施方案中,各种不同的分配模型可被实施用于SSD。 例如,在一些实施方案中,日志条目页面和物理应用页面可从与SSD 装置关联的单个堆的页面分配。这个方法可具有留下由日志页面和数 据页面消耗的相对数量的存储的优点,以便保持未指定的以及自动适 应使用。它也可具有允许页面保持未准备的,直到它们随意不用准备 地使用和重新目的化的优点。在其他实施方案中,分配模型可将存储 装置划分成用于日志条目和数据页面的独立空间。一旦此类分配模型 由图6中的框图示出以及在以下描述。

图6为示出根据一个实施方案的可将数据和元数据存储在分布 式数据库优化存储系统的给定存储节点(或持久存储装置)上的方式的 框图。在这个实例中,SSD存储空间600将SSD标头和其他固定的 元数据存储在标记610的空间的部分中。它将日志页面存储在标记 620的空间的部分中,并且包括被初始化和保留用于附加日志页面的 标记630的空间。SSD存储空间600的一部分(被示出为640)被初始 化,但未分配,并且另一空间部分(被示出为650)未被初始化以及未 分配。最终,标记660的SSD存储空间600的部分存储数据页面。

在这个实例中,第一可用日志页槽被指示成615,并且最后使用 的日志页槽(短暂的)被指示成625。最后保留的日志页槽被指示成 635,并且最后可用日志页槽被指示成645。在这个实例中,第一使 用的数据页槽(短暂的)被指示成665。在一些实施方案中,在SSD存 储空间600内的这些元件(615、625、635、645和665)中的每一个的 位置可由各自的指针来识别。

在图6所示的分配方法中,有效日志页面可被包装至平坦存储空 间的开始中。在使用地址空间中较远的附加的日志页槽之前,由于被 释放的日志页面而打开的孔可再用。例如,在最坏的情况下,第一n 个日志页槽包含有效日志数据,其中n为已经同时存在的有效日志页 面的最大数目。在这个实例中,有效数据页面可被包装至平坦存储空 间的末端中。在使用地址空间中较低的附加的数据页槽之前,由于被 释放的数据页面而打开的孔可再用。例如,在最坏的情况下,最后m 个数据页面包含有效数据,其中m为已经同时存在的有效数据页面 的最大数目。

在一些实施方案中,在日志页槽可变成潜在的有效日志页面条目 组的部分之前,它必须被初始化至对于有效未来日志条目页面不可能 为混乱的值。由于引退的日志页面具有足够的元数据以便对于新的有 效日志页面为永不混乱的,对于循环的日志页槽这是含蓄真实的。然 而,当存储装置被首先初始化时,或当潜在用于存储应用数据页面的 空间被改造时,日志页槽必须在它们添加至日志页槽池之前被初始 化。在一些实施方案中,再平衡/改造日志空间可能作为后台任务来 执行。

在图6所示的实例中,当前日志页槽池包括在第一可用日志页槽 (在615处)与最后保留的日志页槽(625)之间的区域。在一些实施方案 中,这个池可安全增长至最后可用日志页槽(625),不用再初始化新的 日志页槽(例如,通过持续对识别最后保留的日志页槽635的指针的 更新)。在这个实例中,超过最后可用日志页槽(其由指针645识别), 通过持续初始化的日志页槽,以及持续更新用于最后可用日志页槽的 指针(645),所述池可增长至第一使用的数据页槽(其由指针665识别)。 在这个实例中,被示出作为650的SSD存储空间600的先前未初始 化和未分配的部分可被暂用以便存储日志页面。在一些实施方案中, 通过持续对用于最后保留的日志页槽的指针(635)的更新,当前日志页 槽池可向下收缩至最后使用的日志页槽(其通过指针来识别)的位置。

在图6所示的实例中,当前数据页槽池包括在最后可用日志页槽 (其由指针645来识别)与SSD存储空间600的端部之间的区域。在一 些实施方案中,通过持续对最后可用日志页槽的指针(645)的更新,数 据页面池可安全增长至由最后保留的日志页槽的指针(635)识别的位 置。在这个实例中,被示出为640的SSD存储空间600的先前未初 始化但未分配的部分可被暂用以便存储日志页面。超过这个,通过持 续对用于最后保留的日志页槽(635)和最后使用的日志页槽(645)的指 针的更新,有效再分配SSD存储空间600的部分(被示出为630和640) 以便存储数据页面而不是日志页面,所述池可安全增长至由最后使用 的日志页槽的指针(625)识别的位置。在一些实施方案中,通过初始化 附加的日志页槽和持续对最后可用日志页槽的指针(645)的更新,数据 页槽池可安全向下收缩至由第一使用的数据页槽的指针(665)识别的 位置。

在采用图6所示的分配方法的实施方案中,用于日志页面池和数 据页面池的页面大小可被独立挑选,同时仍促进良好的堆积性能。在 此类实施方案中,可能不存在有效日志页面链接至由应用数据形成的 欺骗日志页面的可能性,并且可能区分损坏的日志与链接至还未写入 的下一页面的有效日志尾部。在采用图6所示的分配方法的实施方案 中,在启动时,直到由最后保留的日志页槽的指针(635)识别的位置的 所有日志页槽可迅速和相继地被读取,并且整个日志索引可被再构造 (包括推测的链接和顺序)。在此类实施方案中,由于可从LSN排序约 束推断一切,在日志页面之间可能不需要存在明确的链接。

在一些实施方案中,区段可包括三个主要部分(或区):包含热日 志的一个、包含冷日志的一个、以及包含用户页面数据的一个。区不 必要为SSD的连续区域。它们宁可以存储页面的间隔尺寸来散布。 此外,可能存在用于每个区段的根页面,所述每个区段存储关于所述 区段的元数据和它的性能。例如,用于区段的根页面可存储用于区段 的用户页面大小、区段中的用户页面数目、热日志区的当前开始/头 部(其可能以刷新数目的形式记录)、卷纪元、和/或访问控制元数据。

在一些实施方案中,热日志区可从客户端接受新的写入,如同它 们由存储节点接收。指定来自先前版本的页面的以Δ形式的用户/数 据页面改变的两个Δ用户日志记录(DULR),以及指定完全用户/数据 页面的内容的绝对用户日志记录(AULR)可被完全写入日志中。日志 记录可添加至这个区中,以近似它们被接收(例如,它们不是通过LSN 来分类)以及它们可横跨日志页面的顺序。日志记录可为自描述的, 例如,它们可包含它们自身的大小的指示。在一些实施方案中,在这 个区域中未执行无用数据收集。相反,在所有需要的日志记录已经被 复制至冷日志后,可通过从日志开始截断来改造空间。每次扇区被写 入时,在热区中的日志扇区可用最近已知的无条件的VDL来注释。 有条件的VDL CLR可在它们被接收时被写入至热区中,但仅最近写 入的VDL CLR可能为有意义的。

在一些实施方案中,每次新的日志页面被写入时,它可被分配一 个刷新数目。刷新数目可被写入作为每个日志页面内的每个扇区的部 分。当比较两个日志页面时,刷新数目可用于确定哪个日志页面稍后 被写入。刷新数目可单调增加,并且范围至SSD(或存储节点)。例如, 一组单调增加的刷新数目在SSD上的所有区段之间(或在存储节点上 的所有区段)共享。

在一些实施方案中,在冷日志区中,日志记录可能以它们的LSN 增长顺序来存储。在这个区中,AULR可能不必被顺序存储,取决于 它们的大小。例如,如果它们具有大的有效负载,所述有效负载的全 部或一部分可存储在数据区中,并且它们可指向它们的数据被存储在 数据区中的地方。在一些实施方案中,在冷日志区中的日志页面每次 可一整页面地被写入,不是扇区接着扇区地。因为在冷区中的日志页 面每次被整个页面地写入,用于其所有扇区中的刷新数目不相同的冷 区中的任何日志页面可被认为是不完全写入的页面并且可被忽略。在 一些实施方案中,在冷日志区中,DULR可以能够横跨日志页面(直 到两个日志页面的最大值)。然而,AULR可能不能够跨越日志扇区, 例如,以使得合并操作在单个原子写入中将能够用AULR来替换 DULR。

在一些实施方案中,冷日志区通过从热日志区复制日志记录来填 充。在此类实施方案中,仅其LSN小于或等于当前无条件的卷耐用 LSN(VDL)的日志记录可为符合条件的以便被复制到冷日志区。当将 日志记录从热日志区移动至冷日志区时,一些日志记录(如许多CLR) 可能不需要被复制因为它们不再是必须的。此外,可在这个点处执行 用户页面的一些附加合并,其可简化所需的复制数量。在一些实施方 案中,一旦给定热区日志页面已被完全写入,并且不再是最新的热区 日志页面,以及在热区日志页面上的所有ULR已被成功复制到冷日 志区,所述热区日志页面可被释放和再使用。

在一些实施方案中,无用数据收集可在冷日志区中进行,以便改 造由废弃日志记录占据的空间,例如,不再需要存储在存储层的SSD 中的日志记录。例如,当存在用于相同用户页面的随后AULR,以及 由日志记录代表的版本的用户页面不再被需要在SSD上保留时,日 志记录可变成废弃的。在一些实施方案中,通过合并两个或更多的邻 近日志页面以及用更少的新日志页面来替换它们,所述更少的新日志 页面包含来自它们替换的日志页面的所有非废弃的日志记录,无用数 据收集进程可改造空间。新的日志页面可被分配大于它们替换的日志 页面的刷新数目的新的刷新数目。在这些新的日志页面的写入完成 后,替换的日志页面可被添加至空闲页面库。注意在一些实施方案中, 可能不存在使用任何指针的日志页面的任何明确链接。反而,日志页 面的序列可通过在那些页面上的刷新数目来含蓄地确定。每当日志记 录的多个副本被发现时,在日志页面中存在的具有最高刷新数目的日 志记录可被认为是有效的,并且其他的可被认为是废弃的。

在一些实施方案中,例如,因为在数据区(扇区)内管理的空间的 间隔尺寸可不同于数据区(存储页面)外的间隔尺寸,可能存在一些存 储残片。在一些实施方案中,为使得这个存储残片在控制下,所述系 统可追踪由每个数据页面使用的扇区的数目,可优先从几乎完整的数 据页面分配,并且可优先无用数据收集几乎空的数据页面(如果它仍 为相关的,其可需要将数据移动至新的位置)。注意在一些实施方案 中,被分配至区段的页面可能在所述三个区中被重定意图。例如,当 被分配至区段的页面被释放时,它可保持与那个区段关联持续某个时 间段,并且随后可在那个区段的三个区中的任何一个中使用。每个扇 区的扇区标头可指示所述扇区属于的区。一旦页面中的所有扇区为空 闲的,所述页面可返回在区上共享的常用空闲存储页面池。这个空闲 存储页面共享在一些实施方案中可简化(或避免)存储残片。

在一些实施方案中,本文描述的分布式数据库优化存储系统可在 存储器中维持各种数据结构。例如,对于在区段中存在的每个用户页 面,用户页面表格可存储比特,所述比特指示这个用户页面是否为“清 除的”(即它是否包括所有零点)、来自用于页面的冷日志区的最新日志 记录的LSN、以及来自用于页面的热日志区的所有日志记录的位置的 阵列/列表。对于每个日志记录,用户页面表格可存储扇区数目、那 个扇区内的日志记录偏移、将在那个日志页面内读取的扇区的数目、 第二日志页面(如果日志记录跨越日志页面)的扇区数目、以及将在那 个日志页面内读取的扇区的数目。在一些实施方案中,用户页面表格 也可存储来自冷日志区的每个日志记录的LSN,和/或用于最新的 AULR(如果它在冷日志区)的有效负载的扇区数目的阵列。

在本文描述的分布式数据库优化存储系统的一些实施方案中, LSN索引可存储在存储器中。LSN索引可将LSN映射至冷日志区内 的日志页面。假设在冷日志区中的日志记录被分类,它可能将包括每 个日志页面一个条目。然而,在一些实施方案中,每个非废弃的LSN 可存储在索引中,并且映射至对应的扇区数目、偏移、和用于每个日 志记录的扇区的数目。

在本文描述的分布式数据库优化存储系统的一些实施方案中,日 志页面表格可存储在存储器中,并且日志页面表格可在冷日志区的无 用数据收集期间使用。例如,日志页面表格可识别哪些日志记录为废 弃的(例如,哪些日志记录可被无用数据收集),以及多少空闲空间在 每个日志页面上可用。

在本文描述的存储系统中,程度可为代表可与其他程度组合(连 结的或剥离的)以便代表卷的高耐用存储单元的逻辑概念。可通过单 个保护组中的成员关系使得每个程度耐用。程度可给LSN类型的读 取/写入接口提供具有在创建时限定的固定大小的连续字节子范围。 对程度的读取/写入操作可通过包含的保护组映射至一个或多个合适 的区段读取/写入操作中。如本文使用的,术语“卷程度”可指用于代表 卷内的具体字节子范围的程度。

如以上指出的,卷可包括多个程度,每个程度由包括一个或多个 区段的保护组代表。在一些实施方案中,指向不同程度的日志记录可 具有交错的LSN。为改变直到特定LSN的卷以便(使其)为耐用的, 可能需要直到那个LSN的所有日志记录为耐用的,无论它们属于的 程度。在一些实施方案中,客户端可追踪还未被使得耐用的突出日志 记录,并且一旦直到具体LSN的所有ULR被使得耐用,它可将卷耐 用LSN(VDL)消息发送至卷中的保护组中的一个。VDL可被写入至 用于保护组的所有同步镜像区段。这有时被称为“无条件VDL”,并 且它可周期性地持续至各种区段(或更具体地,至各种保护组)连同在 所述区段上发生的写入活动。在一些实施方案中,无条件VDL可存 储在日志扇区标头中。

在各种实施方案中,可在区段上执行的操作可包括写入从客户端 接收的DULR或AULR(其可包括将DULR或AULR写入至热日志 区的尾部,以及随后更新用户页面表格)、读取冷用户页面(其可包括 定位用户页面的数据扇区,以及返回它们而不需要应用任何附加的 DULR)、读取热用户页面(其可包括定位用于用户页面的最近AULR 的数据扇区,以及将任何随后的DULR应用至用户页面,在返回它 前),用AULR替换DULR(其可包括合并用于用户页面的DULR以 便创建替换应用的最后DULR的AULR)、操纵日志记录等。如本文 描述的,合并为将DULR应用至较早版本的用户页面以便创建稍后 版本的用户页面的进程。因为(直到另一DULR被写入)在合并前写入 的所有DULR可能不需要按需读取和应用,合并用户页面可帮助简 化读取时延。通过使得旧的AULR和DULR为废弃的(假定不存在需 要日志记录为当前的快照),它也可帮助改造存储空间。在一些实施 方案中,合并操作可包括定位最近的AULR,以及依次应用任何随后 的DULR而不跳过DULR中的任何一个。如以上指出的,在一些实 施方案中,合并可能不在热日志区内执行。反而,它可在冷日志区内 执行。在一些实施方案中,当日志记录从热日志区复制至冷日志区时, 合并也可被执行。

在一些实施方案中,合并用户页面的决定可由用于页面的未决定 的DULR链的大小(例如,如果DULR的长度超过用于合并操作的预 先限定的阈值,根据全系统的、具体应用的或客户端指定的政策)、 或由被客户端读取的用户页面来触发。

图7为示出根据一个实施方案的数据库卷710的示例性配置的框 图。在这个实例中,对应于各种地址范围715(被示出作为地址范围 715a-715e)中的每一个的数据被存储为不同的区段745(被示出为区 段745a-745n)。更具体地,对应于各种地址范围715中的每一个的数 据可被组织至不同的程度(被示出作为程度725a-725b,和程度 735a-735h)中,并且这些程度中的每一个可包括在不同的保护组730 (被示出作为730a-730f)中,用或不用剥离(如被示出为带区集720a和 带区集720b)。在这个实例中,保护组1示出擦除编码的使用。在这 个实例中,保护组2和3以及保护组6和7代表彼此的镜像数据组, 同时保护组4代表单个实例(非冗余的)的数据组。在这个实例中,保 护组8代表组合其他保护组的多层保护组(例如,这可代表多区域保 护组)。在这个实例中,带区集1(720a)和带区集2(720b)示出在一些 实施方案中程度(例如,程度725a和725b)可如何被剥离至卷中。

更具体地,在这个实例中,保护组1(730a)包括程度a-c (735a-735c),所述程度a-c(735a-735c)分别包括来自范围1-3 (715a-715c)的数据,并且这些程度可映射至区段1-4(745a-745d)。保 护组2(730b)包括程度d(735d),所述程度d(735d)包括从范围4(715d) 剥离的数据,并且这个程度映射至区段5-7(745e-745g)。类似地,保 护组3(730c)包括程度e(735e),所述程度e(735e)包括从范围4(715d) 剥离的数据,并且被映射至区段8-9(745h-745i),以及保护组4(730d) 包括程度f(735f),所述程度f(735f)包括从范围4(715d)剥离的数据, 并且被映射至区段10(745j)。在这个实例中,保护组6(730e)包括程 度g(735g),所述程度g(735g)包括从范围5(715e)剥离的数据,并且 被映射至区段11-12(745k-745l),以及保护组7(730f)包括程度h (735h),所述程度h(735h)包括从范围5(715e)剥离的数据,并且被映 射至区段13-14(745m-745n)。

现在转向图8,在各种实施方案中,数据库系统400可被配置来 创建、删除、修改和/或以其他方式使用快照。尽管图8的方法可被 描述为由日志结构化存储系统如分布式数据库优化存储系统410的 各种部件(例如,存储系统服务器节点430、440、450等)执行,但是 在一些情况下所述方法不需要由任何特定部件执行。例如,在一些情 况下,根据一些实施方案,图8的方法可由一些其他部件或计算机系 统执行。或者,在一些情况下,数据库系统400的部件可以与图4的 实例中所示不同的方式组合或存在。在各种实施方案中,图8的方法 可由分布式数据库优化存储系统的一个或多个计算机执行,所述计算 机中的一个被示出为图10的计算机系统。图8的方法被示出为用于 快照创建、删除、修改、使用等的方法的一种示例性实现方式。在其 他实现方式中,图8的方法可包括另外的或比所示少的框图。

在810,可维持多个日志记录,每个日志记录与由数据库服务存 储/维持的数据的相应改变相关联。在各种实施方案中,由日志记录 描写的改变可由数据库服务的分布式数据库优化存储系统的存储系 统服务节点430存储。如本文所描述,在一个实施方案中,日志记录 可由分布式数据库优化存储系统从数据库服务的数据库引擎头节点 接收。在其他实施方案中,日志记录可从独立于数据库服务的分布式 数据库优化存储系统的另一部件接收。

在一个实施方案中,如本文所描述,每个日志记录可与相应识别 符、如顺序排序的识别符(例如,日志序列号(“LSN”))相关联。日志记 录可与它们被被接收时的相应LSN相关联,或存储系统可按照给定 日志记录被接收的顺序向其分配LSN。

多个日志记录所对应于的数据可以是单个数据页面(例如,图4 的数据页面433、443或453)或多个数据页面。考虑其中多个日志记 录包括具有LSN 1-4的四个日志记录的情景。在一个实例中,LSN 1-4 中的每一个可涉及数据页面A。或者,在另一实例中,LSN 1和LSN 3可涉及数据页面A并且LSN 2和LSN 4可涉及数据页面B。应指出, 在实例中,每个特定日志记录可与单个用户/数据页面相关联(例如, LSN 1-页面A、LSN 2-页面B等)。

应指出,在各种实施方案中,日志记录可以分布式方式存储在各 个节点上,如图4的存储系统服务器节点430、440和450。在一些 实施方案中,日志记录的单个副本可存储在单个节点处,或在其他实 例中,单个副本可存储在多个节点处。从上文的四个日志记录实例继 续,具有LSN 1的日志记录可存储在节点430和节点440两者处,具 有LSN 2的日志记录可存储在节点430处,并且具有LSN 3和LSN 4 的日志记录可存储在所有三个节点430、440和450处。在这种实例 中,并非所有各个节点和/或镜像可随整组日志记录保持最新。如图9 处所描述,日志记录操纵可被执行来便于调和存储在各个节点处的日 志记录之间的不同。

在一些实施方案中,给定日志记录被存储的位置(例如,哪个或 哪些节点)可由数据库引擎头节点确定并且可以作为提供至分布式数 据库优化存储系统的路由信息被包括。可替代地或另外地,分布式数 据库优化存储系统可确定哪个或哪些节点存储给定日志记录。在一个 实施方案中,由分布式数据库优化存储系统做出的这种确定可以是为 了通过在各个节点之中大约成比例地分布日志记录来使性能最大化。 在一个实施方案中,由分布式数据库优化存储系统做出的这种确定可 取决于日志记录的重要性。例如,重要(例如,频繁被访问)的数据页 面的AULR可存储在多个节点处,而与不那么重要的数据页面相关 联的DULR可仅存储在单个节点处。

如本文所描述,日志记录可包括DULR和AULR。在各种实施 方案中,应用程序、数据库服务、和/或数据库服务(或其他部件)的用 户可确定是否创建数据页面的给定改变的DULR或AULR。例如, 数据库服务可确保给定数据页面的每十个日志记录中的至少一个是 AULR。在这种实例中,如果给定数据页面的连续九个日志记录是 DULR,那么数据库服务可指定下一个日志记录为AULR。

此外,在各种实施方案中,卷中的每个数据页面可能需要AULR。 因此,对于数据页面的第一写入,日志记录可以是AULR。在一个实 施方案中,作为系统初始化的一部分,每个数据页面可被写入至一定 值(例如,全零)以将数据页面初始化为AULR。全零AULR可足以使 得数据页面的后续写入可以是DULR。

如820处所示,可产生快照。在各种实施方案中,产生快照可包 括产生指示特定日志记录的日志识别符(例如,LSN)的元数据。在一 些实例中,也可产生指示其他特定日志记录的一个或多个其他日志识 别符的元数据。指示日志记录的日志识别符的这类元数据可指示那些 特定日志记录将被保留(例如,不删除或无用数据收集)以用于那个快 照(直到那个快照被删除或替换)。

在一些实施方案中,所产生的元数据还可指示快照识别符。示例 性快照识别符可包括与快照相关联的序列号、名称、时间中的一个或 多个。例如,特定快照可被称作SN1和/或可具有GMT 2005年12月 22日14:00.00(确切地下午2点)的时间戳。

在各种实施方案中,与快照相关联的元数据可用于防止一个或多 个日志记录被无用数据收集。例如,元数据可指示取决于与快照相关 联的日志记录/LSN而需要再创建给定页面的一个或多个日志记录。 因此,元数据可确保可取决于与快照相关联的LSN产生数据页面。

在各种实施方案中,元数据可存储在多种不同位置中。例如,元 数据可存储在每个日志记录内并且可指示那个相应日志记录的保护 免于无用数据收集的状态。例如,如果对于特定快照,具有LSN 2、 LSN 3和LSN 4的日志记录不应被无用数据收集,那么与LSN 2、LSN 3和LSN 4处的日志记录相关联的元数据应指示LSN 2、LSN 3和LSN 4处的日志记录不应被无用数据收集。如另一实例,快照元数据可存 储在更高水平的分布式数据库优化存储系统处(例如,在区段、卷、 或日志记录水平、或其他地方等),并且可指示多个日志记录的无用 数据收集状态。在这种实例中,元数据包括对应于根据快照应被保留 的日志记录的LSN列表。应指出,在取得后续快照时,将被保留的 日志记录可改变。因此,对应于日志记录中的特定一个的元数据也可 改变。例如,LSN 2、LSN 3和LSN 4可不再需要被保留以用于未来 的快照。因此,在这种实例中,元数据可被修改以使得其不再指示对 应于LSN 2、LSN 3和LSN 4的日志记录应被保留。

在一个实施方案中,元数据可明确地指示哪些日志记录不是可无 用数据收集的,或相反地它可指示快照类型(在下文中描述)连同对应 于快照的特定LSN。在这种实施方案中,分布式数据库优化存储系统 的无用数据收集进程可从快照类型和特定LSN确定哪些日志记录是 并且哪些日志记录不是可无用数据收集的。例如,无用数据收集进程 可确定与特定LSN相关联的日志记录以及那个数据页面的在时间上 回溯直到先前AULR的每个DULR不是可无用数据收集的。

在各种实施方案中,快照可特定于特定数据页面,或者它可特定 于多个数据页面(例如,区段、卷)。

在一个实施方案中,如本文所描述,元数据可指示快照的类型(例 如,快照是连续的还是离散的快照)。快照的类型可在元数据中被直 接指示,或者它可被间接指示(例如,被指示为不可无用数据收集的 日志记录可指示快照是连续的还是离散的)。例如,连续快照可指示 不可无用数据收集的一组日志记录,而离散快照可指示不可无用数据 收集的不同(例如,更小)组日志记录。在一些情况中,连续和离散快 照可具有指示相同组日志记录的元数据。例如,对于在对应于AULR 的时间点取得的数据页面的快照,连续和离散快照都可具有指示仅 AULR应受保护免于无用数据收集的元数据。

连续快照可用于将数据复原至连续快照的时间与先前时间(例 如,最近AULR)之间的每个时间点。相比之下,离散快照可重复用 于将数据复原至截至快照的时间点时的状态。例如,考虑以下数据页 面(AULR)的实例,其中那个数据页面之后有三个Δ日志记录,随后 是新版本的数据页面(AULR)以及那个新版本的数据页面的再三个Δ 日志记录。使用快照复原数据在本文被用来描述在不复制先前版本的 数据的情况下读取截至快照时的数据。如果离散快照在所有条目(两 个AULR和所有六个DULR)之后的时间点取得,那么可被指示为不 可无用数据收集的日志条目包括新版本的数据页面以及那个数据页 面之后的三个日志条目。如果连续快照从当前快照时间点到第一版本 的数据页面的时间点取得,那么可被指示为不可无用数据收集的日志 条目包括第一数据页面以及所有六个日志记录。应指出,中间实例化 块(例如,新版本的数据页面(AULR))可不被指示为不可无用数据收 集,因为它可用第一版本的数据页面和前三个日志记录重新创建。应 指出,在此实例中,连续快照可用于将数据页面复原至日志记录存在 时的任何时间点,而离散快照可用于将数据页面复原至快照的时间点 与快照之前的最近AULR之间的每个时间点。

在一些实施方案中,产生快照可在无需如当采用离卷备份策略 (off-volume backup strategy)时将需要的另外读取、复制或写入数据块 的情况下执行。因此,可原位产生快照,使得快照产生可不需要取得 数据的备份。应指出,可能出现其中数据也存储在其他地方的数据的 备份,但是这种事件可在快照产生进程之外执行。例如,客户端可请 求将数据的多个副本存储在独立存储位置中。

如830处所示出,数据可被复原至对应于快照的状态。例如,如 果用户丢弃了表格但是想要找回表格,快照可用于读取/复原数据(例 如,数据页面、区段、卷等),使得表格再次可用。应指出,读取/复 原快照可包括丢失在快照的时间点之后执行的一些数据/工作,并且 可不包括创建先前版本的数据的副本以作为读取/复原进程的一部 分。

将数据复原至对应于快照的状态可包括将日志记录中的一个或 多个(包括元数据中所指示的特定日志记录)应用至先前版本的数据。 先前版本的数据可以是AULR的形式或它可以是DULR的形式(如应 用至AULR和/或DULR之前的一个或多个DULR)。

在一些实施方案中,将一个或多个日志记录应用至先前版本的数 据可作为数据库服务的后台处理来执行。在一个实施方案中,将日志 记录应用至先前版本的数据可分布在数据库服务的各个节点上。在一 个实施方案中,将日志记录应用至先前版本的数据可在那些各个节点 上并行执行。

如840处所示出,在复原至特定快照之后,与晚于与快照相关联 的时间的时间相关联的一个或多个日志记录可被指示为可无用数据 收集。例如,如果对于具有在LSN 3处取得的快照的数据页面存在具 有LSN 1-6的日志记录,那么在复原在LSN 3处取得的快照之后, LSN 4-6可被指示为可无用数据收集或者可仅将不可无用数据收集指 示去除(从而使得它们可无用数据收集)。因此,即使在LSN 6处取得 第二快照,在从LSN 3复原快照之后,在LSN 6处取得的快照可不 再处于原位,使得对应于在LSN 6处取得的快照的日志记录的保护可 不再有效。或者,在一个实施方案中,第二快照可即使当复原至先前 快照时仍旧被保留。

在各种实施方案中,无用数据收集可以是允许改造用于存储日志 记录的空间用于未来的其他日志记录(或用于其他数据)的后台处理。 无用数据收集可散布在各个节点上,使得无用数据收集可作为并行的 分布式进程发生。通过无用数据收集进程改造可包括删除一个或多个 日志记录。这些要删除的日志记录可通过无用数据收集进程基于元数 据中所指示的特定日志记录和/或可基于快照的类型来确定。或者, 在其中每个受保护日志记录在元数据中被明确地指示的一个实施方 案中,那么无用数据收集进程可仅删除在元数据中未被指示受保护的 日志记录。

在一些实施方案中,可至少部分地基于快照合并多个日志记录。 例如,对于给定数据页面,如果AULR存在于LSN 1处,DULR存 在于LSN 2-8处并且离散快照在LSN 8处取得,那么可创建新AULR 以替代LSN 8处的DULR,使得将来自LSN 2-8的日志记录中的每一 个应用至LSN 1处的AULR。LSN 8处的新AULR随后可允许LSN 1-7 处的日志记录可无用数据收集,从而腾出用于存储这些日志记录的空 间。应指出,对于连续快照,合并可能不发生,以便维持复原至由连 续快照覆盖的每一个时间点的能力。应指出,客户端可请求保留先前 两天的连续快照,并且保留在那之前三十天的周期性(例如,每天两 次、每天一次)离散快照。当连续快照落在先前两天的范围之外时, 它可被转换成离散快照,并且可不再保留所转换的离散快照所不再需 要的日志记录。

考虑其中对于第1-30天中的每一天存在每天一次的离散快照并 且从第30天到第32天存在连续快照的实例。在第33天,客户端可 不再需要从第30天到第31天的连续快照,因为它不再在最近的两天 时间段之内。因此,可将从第30天到第31天的连续快照转换成离散 快照。为了将从第30天到第31天的连续快照的一部分转换成离散快 照,可修改元数据以使得那个时间点的离散快照所不再需要的日志记 录可被指示为可无用数据收集(或者不再被指示为不可无用数据收 集)。按照同样的方式,也可删除和/或无用数据收集第1天的离散快 照(假定第2天离散快照不取决于第1天的离散快照的日志记录),因 为它不再落在最近两天之前的先前三十天的窗口之内。删除第1天的 快照可包括修改和/或删除保护与第1天快照相关联的日志记录不被 无用数据收集(除非后续快照需要)的元数据,使得那些记录随后是可 无用数据收集的。应指出,如果第2天的离散快照取决于第1天的离 散快照的日志记录,那么可在AULR中转换与第2天的离散快照相 关联的一个或多个日志记录,使得可删除和/或无用数据收集第1天 日志记录。

如本文所描述,图8的方法可应用于单个数据页面的数据或来自 多个数据页面的数据。因此,在各种实施方案中,快照可用于从多个 不同数据页面复原数据或将数据复原至单个数据页面。因此,快照的 元数据可指示单个数据页面的一个或多个特定日志记录的一个或多 个日志识别符或多个数据页面的多个日志记录的多个日志识别符。还 应指出,在一些例子中,对应于用于单个数据页面的快照的元数据还 可指示多个日志记录的多个日志识别符。例如,元数据可指示不应被 无用数据收集(如如果快照对应于DULR)的多个日志记录。在这种实 例中,元数据可指示(直接地或间接地)那个页面的在时间上回溯至最 近AULR的每个DULR以及最近AULR不应被无用数据收集。

与通过读取、复制和写入数据块备份数据来执行快照的系统对 照,所公开的原位快照技术可在使用更少IO和网络资源方面改善系 统的性能。并且因为这些性能改善,所公开的技术可提供较少的系统 的用户(例如,将系统用于前台活动的那些)将可见的事务速率停顿或 抑制。

现在转向图9,在各种实施方案中,数据库系统400可被配置来 操纵(例如,转化、修改等)日志记录。尽管图9的方法可被描述为由 日志结构化存储系统如分布式数据库优化存储系统410的各种部件 (例如,存储系统服务器节点430、440、450等)执行,但是在一些情 况下所述方法不需要由任何特定部件执行。例如,在一些情况下,根 据一些实施方案,图9的方法可由一些其他部件或计算机系统执行。 或者,在一些情况下,数据库系统400的部件可以与图4的实例中所 示不同的方式组合或存在。在各种实施方案中,图9的方法可由分布 式数据库优化存储系统的一个或多个计算机执行,所述计算机中的一 个被示出为图10的计算机系统。图9的方法被示出为用于日志转化/ 操纵的方法的一种示例性实现方式。在其他实现方式中,图9的方法 可包括另外的或比所示少的框图。例如,图9的方法可与图8的方法 结合使用,使得图9的方法包括图8的方法的一个或多个块。

在910,可接收多个日志记录。例如,日志记录可由分布式数据 库优化存储系统从数据库服务的数据库引擎头节点接收。如在图8处 指出并且如本文所描述,每个日志记录可与相应日志序列识别符相关 联,并且可与由数据库系统存储的数据的相应改变相关联。还如本文 所描述,日志记录可包括一个或多个AULR(也被称为基线日志记 录),和/或一个或多个DULR。基线日志记录可包括一页数据,使得 它包括所述页面的全部数据而不仅仅是所述数据的改变。相比之下, DULR可包括一页数据的改变而不是完整一页数据。

下面的段落描述用于描述日志记录范围的示例性符号。单括号() 和方括号[]指示一定范围内的开放(排他性)和闭合(包括性)界限。如本 文所描述,LSN可以是日志记录的顺序排序,使得0<=a<=b<=c<= d<=e。LSN t是代表尾部的特殊LSN,其从0开始并且随写入在卷 上发生而持续增加。如本文所使用,日志区间是具有能够在给定基线 LSN处的卷的情况下读取一个或多个目标LSN处的卷所必须的所有 信息的日志记录的集合。在一个实施方案中,日志区间不包含所具有 的LSN小于或等于基线LSN或大于最高目标LSN的任何日志记录。 例如,如果在基线LSN‘a’处存在完整卷,并且日志区间是L(a;b], 那么可在LSN‘b’处产生并读取所述卷。

随后使用示例性句法,日志区间可表示为L(<基线LSN>;<目标 LSN组>]。在一个实施方案中,<基线LSN>可以是单个LSN(例如, ‘0’或‘a’)。<目标LSN组>可以是单个LSN(例如,‘b’)、离散LSN的 序列(例如,‘b,c’)、LSN的包括性范围(例如,‘c..d’)、或其组合(例如, ‘b,c,d..e’)。包括性范围,如c..d指示足够的信息可供用于复原c与d 之间的任何卷。根据示例性性句法,目标LSN大于或等于基线LSN。 还根据示例性句法,日志区间的LSN以升序列出。

在各种实施方案中,日志区间中的记录可以是AULR和/或DULR 的组合。日志区间可替代地可包括仅DULR或仅AULR。例如,日 志区间可仅包括在基线与目标LSN之间被修改的用户页面的AULR。 在各种实施方案中,不需要能够在目标LSN之外的LSN处产生各种 版本的用户页面。例如,日志区间L(a;c]可不具有足够的信息来在LSN b(其中a<b<c)处产生用户页面。

假定卷的初始状态包括全零,L(0;a]形式的日志区间可表示LSN a处的卷。

本文所描述的日志区间符号指示包括多个数据/用户页面的卷的 LSN。例如,考虑包括仅两个页面(x和y)的卷。具有LSN 1的日志 记录可以是页面x的AULR并且具有LSN 2的日志记录可以是页面y 的AULR。继续所述实例,具有LSN 3和LSN 5的日志记录可以是 页面x的DULR并且具有LSN 4和LSN 6的日志记录可以是页面y 的DULR。如果对页面y的读取请求进入,那么数据库服务可开始于 LSN 2处的AULR(这是页面y的最近的AULR),并且在其上应用自 LSN 4和LSN 6开始的改变。相似地,对于对页面x的读取请求,数 据库服务将开始于LSN 1处的AULR,并且随后在将页面x返回至请 求者之前应用自LSN 3和LSN 5处的日志记录开始的改变。

如920处所示出,可将多个日志记录存储在分布式数据库优化存 储系统的存储节点之中。在一个实施方案中,给定日志记录可存储在 分布式数据库优化存储系统的一个或多个存储节点处。在一个实施方 案中,分布式数据库优化存储系统可确定给定日志记录将存储在其上 的哪一个或多个存储节点上,或分布式数据库优化存储系统可从数据 库引擎头节点接收指示给定日志记录将存储在其上的一个或多个存 储节点的指令。应指出,在一些例子中,因为每个存储节点可能不是 在给定时间存储相同的一个或多个日志记录,存储系统的一个或多个 节点和/或镜像可能不随整组当前日志记录保持最新。

如930处所示出,可转化多个日志记录。如本文描述的示例性符 号中所指示,可被转化的多个日志记录可包括两个或更多个日志区 间。这两个或更多个日志区间可以是用于转化的操作数。下文中提供 作为操作数的日志区间的各种实例(例如,L(a;c]、L(a;b,d]、L(a;b,c..e] 等)。转化可以多种方式发生。例如,在一个实施方案中,转化多个 日志记录可产生修改的多个日志记录。修改的多个日志记录可以是不 同多个日志记录。不同多个日志记录与初始地维持的多个日志记录相 比可在数量上较少、在数量上较大、或在数量上相等但在日志记录中 的至少一个中有所不同。日志记录的转化可得到更有效的系统(例如, 在存储空间、网络使用率等方面)。

在一个实施方案中,在具有多个节点和镜像的分布式系统中,节 点和/或镜像中的一些可保持最新,而其中的一些则不保持最新。在 这种实施方案中,转化多个日志记录可包括:确定存储节点中的一个 不同节点处所维持的日志记录中存在的差异,以及调和各个节点处所 维持的日志记录中的这些差异。调和日志记录中的差异可包括以日志 记录的总的主日志的方式产生和/或重建修改的多个日志记录,总的 主日志调和各个节点处所存储的各个日志记录。在一个实施方案中, 随后可向各个节点和/或镜像提供主日志以使日志的内容同步(例如, 通过替换未保持最新的日志)。或者,在一个实施方案中,可将主日 志维持在特定节点上。那个主日志可被视为存储节点的主日志,直到 下一次出现日志调和。

为了示出日志调和,考虑具有三个存储节点SN 1、SN 2和SN 3 的简单实例。SN 1可存储具有识别符LSN 1、LSN 2和LSN 3的日 志记录。SN 2可存储具有识别符LSN 3、LSN 4和LSN 5的日志记 录,并且SN 3可存储具有识别符LSN 6的日志记录。转化日志记录 可包括产生主日志记录,所述主日志记录包括LSN 1-6的一次例子而 不是存储在SN 1和SN 2两处的LSN 3的两个例子。执行日志调和 可包括将一个或多个日志操作应用至日志记录。示例性日志操作包括 合并、裁剪、修剪、简化、融合和或以其他方式删除或增加日志记录。 下文中更详细地描述这类示例性日志操作。

如本文所描述,在一个实施方案中,转化日志记录可包括合并多 个日志记录。合并日志记录可包括将Δ日志记录转换成新基线日志记 录。考虑数据页面x和y的实例,其中LSN 1、LSN 2、LSN 15和 LSN 16是相应AULR的识别符并且LSN 2-14是相应DULR的识别 符。合并日志记录可包括将LSN 8的DULR转换成AULR。为了将 LSN 8转换成AULR,可将自与LSN 8对应于相同数据页面(例如, 数据页面y)的日志记录(包括LSN 8处的日志记录)开始的改变应用至 那个数据页面的最近的AULR。例如,如果LSN 2对应于数据页面y 的AULR并且LSN 4、LSN 6和LSN 8对应于数据页面y的DULR, 那么将LSN 8处的DULR转换成AULR包括将LSN 4、LSN 6和LSN 8处的日志记录的改变应用至LSN 2处的AULR。如本文所描述,在 一定情况下,随后可无用数据收集或以其他方式删除LSN 2、LSN 4 和LSN 6处的日志记录,而在其他情况下(例如,对于连续快照或其 他依赖物的情况),可保留那些LSN、直到不再需要。

在各种实施方案中,多个日志记录可与可用于将数据复原至先前 状态的至少一个快照(例如,根据图8的方法创建的快照)相关联。在 这类实施方案中,转化多个记录可包括至少部分地基于快照无用数据 收集日志记录中的一个或多个。例如,继续先前的合并实例,如果需 要LSN 2、LSN 4和LSN 6以作为连续快照的一部分,那么对应于那 些LSN的日志记录可以是不可无用数据收集的(并且可能并不首先被 合并)。相比之下,如果不需要那些日志记录以作为快照的一部分, 那么可对它们进行无用数据收集。例如,如果离散快照存在于LSN 2、 LSN 4和LSN 6之后的LSN(例如,LSN 10)处,那么可需要LSN 2、 LSN 4和LSN 6处的日志记录,因为LSN 8处的日志记录是AULR。 因此,可无用数据收集LSN 2、LSN 4和LSN 6处的日志记录。

如本文所描述,转化日志记录可包括指示一个或多个日志记录是 可无用数据收集的。在这种实例中,转化日志记录以指示一个或多个 日志记录可无用数据收集可包括:产生和/或修改与那一个或多个日 志记录相关联的元数据以指示那些日志记录是可无用数据收集的。

在一个实施方案中,转化日志记录可包括删除一个或多个日志记 录。如本文所描述,删除日志记录可以是裁剪或修剪操作等操作的一 部分。在一些实施方案中,删除日志记录可不同于无用数据收集,因 为无用数据收集可作为后台处理被动地且惰性地执行,而删除可作为 前台处理执行。

在一个实施方案中,转化日志记录可包括执行修剪操作以修剪多 个日志记录。执行修剪操作可包括删除所具有的相应识别符(例如, LSN值)小于或小于等于目标识别符(例如,目标LSN)的值的一个或 多个日志记录(和/或将其指示为可无用数据收集)。修剪操作可用于增 加日志区间的基线LSN。应指出,相应识别符可根据时间顺序排序, 因此在一些实施方案中,修剪可包括删除所具有的相应相关联时间在 目标识别符的相关联时间之前的日志记录。

在一个实施方案中,用于操作的左变量可以是具有基线LSN B1 的日志区段,并且右变量可以是有待去除的LSN的范围。因此,结 果可以是具有在对应于目标LSN的时间点处开始的LSN的一个或多 个日志记录。作为一个实例,考虑以下示例性修剪操作,其中‘-’表示 修剪,L(a;c]-(a,b]=L(b;c]。因此,从(a;c]减去部分(a,b],产生新范围 (b;c]。如以上所指出,单括号()可指示一定范围内的开放界限并且方 括号[]可指示一定范围内的闭合界限。作为另一个修剪实例,考虑修 剪操作L(a;b,d]-(a,c]。结果是L(c;d]。作为又一个修剪实例,考虑其 中L(a;b,c..e]-(a,d]=L(d;e]的修剪操作。

因为修剪操作,可删除(或无用数据收集)所具有的LSN小于或等 于新基线LSN的一个或多个日志记录。在一些实例中,原始日志区 间可能可不包括要修剪的任何此类日志记录。在那些实例中,修剪操 作可不使得日志区间的大小减小。

在一个实施方案中,转化日志记录可包括执行裁剪操作以裁剪多 个日志记录。执行裁剪操作可包括删除所具有的相应识别符(例如, LSN值)大于或大于等于目标识别符(例如,目标LSN)的值的一个或 多个日志记录(和/或将其指示为可无用数据收集)。裁剪操作可用于去 除日志区间的尾部部分。类似于修剪操作,因为相应识别符可根据时 间顺序排序,在一些实施方案中,裁剪可包括删除所具有的相应相关 联时间在目标识别符的相关联时间之后的日志记录。

在一个实施方案中,用于裁剪操作的左变量可以是具有目标LSN T1的日志区间,并且右变量可以是新目标LSN T2,其中T2是T1 的真子集。裁剪操作可去除LSN,使得所去除的LSN大于所保留的 LSN。例如,对于{T1-T2}中的LSN L3,其中L2在T2中,以下条件 可为真:L3>L2。

作为一个实例,考虑以下示例性裁剪操作,其中‘@’表示修剪, L(a;b,c]@[b]=L(a;b]。因此,从日志区间L(a;b,c]删除所具有的相应识 别符大于目标识别符b的日志记录的部分。另一实例包括 L(a;b..d]@[b..c]=L(a;b..c]。裁剪操作如同修剪操作的情况,原始日志 区间可不包括要裁剪的任何此类日志记录。在那些实例中,裁剪操作 可不使得日志区间的大小减小。

在一个实施方案中,转化日志记录可包括简化多个日志记录。简 化操作可在不改变最高目标LSN的情况下简化日志区间中的一组目 标LSN。因此,简化操作可以是与裁剪操作互补的操作。简化可不剪 掉日志区间的头部或尾部,而是替代地可去除区间的中间部分。简化 操作的实例将是去除快照的连续部分。例如,如果请求最近两天的连 续快照并且请求最近30天的离散快照,那么一旦连续快照的一部分 超过两天,就可去除一部分,从而产生一个或多个离散快照。

简化操作可由‘@@’表示。简化操作的左变量可以是具有目标 LSN T1的日志区间,其中右变量是下一个LSN T2,其中T2是T1 的真子集。T1中的最高LSN可等于T2中的最高LSN。作为实例, L(a;b..c]@@[c]可产生L(a;c]。作为另一实例,L(a;a..b,c..e]@@[b,d..e] 可产生L(a;b,d..e]。应指出,可不要求删除日志记录以作为简化操作 的一部分。在一些实例中,可能不要求删除一些日志记录以产生新目 标LSN处的用户页面版本。可安全删除但不要求删除那些日志记录。 那些日志记录可以被保留在原位和/或被惰性地无用数据收集。识别 哪些日志记录可删除(例如,通过删除或无用数据收集)可基于所确定 的多个日志记录之中的依赖性来确定。例如,某些DULR可取决于 一个或多个先前DULR和/或一个先前AULR。因此,在一个实施方 案中,可删除和/或无用数据收集可删除的且不具有取决于它的其他 日志记录的日志记录,而可保持并且不删除或无用数据收集否则将可 删除但具有取决于它的其他日志记录的日志记录。

应指出,在一些实施方案中,虽然有可能以一种灵活的方式增加 基线LSN,但目标LSN的类似减小可能是不可获得的。例如,虽然 L(a;c]可转化成L(b;c],但在一些实施方案中,它不可转化成L(a;b], 因为L(a;c]可能遗失a与b之间的被b与c之间的AULR取代的一些 日志记录。因此,L(a;c]可能缺少足够的信息来产生LSN b处的整个 卷。日志区间中的新目标LSN组可能必须是先前目标LSN组的子集。 例如,L(a;b..c]和L(a;a..c]可能不具有必要的信息来产生LSN b处的 整个卷,但是可使用裁剪和简化操作转化成L(a;b]。

在一个实施方案中,转化日志记录可包括在融合操作中组合所述 多个日志记录与另一多个日志记录。例如,融合操作可包括将两个邻 近日志区间组合成单个日志区间,使得两个日志区间的目标LSN都 得以保留。融合操作可由为‘+’表示。左变量可包括具有较低基线LSN B1的日志记录,其中最高目标LSN是T1。右变量可包括具有较高基 线LSN B2的日志记录。在一些实施方案中,B2等于T1。一个示例 性融合操作是L(a;b]+L(b;c]=L(a;b,c]。另一个示例性融合操作是 L(a;b,c]+L(c;d,e]=L(a;b,c,d,e]。在各种实施方案中,可不删除日志记录 以作为融合操作的一部分。

在一个实施方案中,如果无用数据收集在不保留任何快照的情况 下执行,日志可由L(0;t]表示。如果不执行无用数据收集,日志可由 L(0;0..t]表示。

用于表示LSN‘a’处的卷的记号可以是V[a]。V[0]可被假定为包 括全零。在一个实施方案中,转化卷的日志记录可包括由‘*’表示的构 成操作。在给定较低LSN处的卷以及对应于LSN间隙的日志区间的 情况下,可创建较高LSN处的新的卷。左变量可以是LSN B处的卷, 并且右变量可以是具有基线LSN B和单个目标LSN T的日志区间。 在构成所需要的卷之前,可将具有多个目标LSN的日志区间裁剪和/ 或简化成感兴趣的单个LSN。实例包括V[a]*L(a;b]=V[b]。

在一个实施方案中,转化日志记录可包括对多个日志记录执行操 作的组合。考虑从操作的组合导出的转化:{L(b;c],L(b;d]}→L(b;c,d]。 这种转化可从如下的修剪和融合操作导出:L(b;d]-(b,c]=L(c;d]和 L(b;c]+L(c;d]=L(B;c,d]。另一个示例性导出转化扩展先前实例: {L(a;c],L(b;d]}→L(b;c,d],其包括来自先前实例的修剪和融合并且还 包括另外的修剪L(a;c]-(a,b]=L(b;c]。应指出,‘→’的使用在不示出操 作细节的情况下表示一般转化。例如,{L1,L2}→{L3}在不示出执行 转化的基础操作的情况下是从L1和L2到L3的转化。

在各种实施方案中,对多个日志记录执行多个操作的组合可便于 快照操作(例如,作为如图8中的取得、复原、截断和/或删除快照的 一部分)、或日志记录调和以及其他操作。以下是用于取得、复原和 删除离散快照和连续快照的示例性组合。

对于组合操作以取得离散快照的实例,分布式存储系统的实况日 志的初始状态可以是L(0;t]。可在尾部达到LSN a时取得快照,即 L(0;a,t]。随后可在[a]处裁剪L(0;a,t],即L(0;a,t]@[a]=L(0;a]。可将L(0;a] 复制到快照存储位置,所述快照存储位置可以是分布式存储系统之外 的独立存储位置。可在尾部达到LSN b时取得另一快照,即L(0;a,b,t]。 随后可根据L(0;a,b,t]-(0,a]修剪L(0;a,b,t],得出L(a;b,t)。随后可在[b] 处裁剪L(a;b,t),即(L(a;b,)@[b]),得出L(a;b]。随后可将L(a;b]也复 制到快照存储位置。

对于组合操作以复原离散快照的实例,考虑可在快照存储位置处 获得的以下内容:L(0;a]、L(a;b]。可将L(0;a]和L(a;b]复制到复原目 的地并且可根据L(0;a]+L(a;b]=L(0;a,b]将其融合。随后可根据 L(0;a,b]@@[b]=L(0;b]简化融合区间。L(0;b]可以是要复原的所需快照 并且可用于开始新的卷。

对于组合操作以删除旧的离散快照的实例,考虑以下初始实况日 志状态L(0;a,b,t]。L(a;a,b,t]@@[b,t]=L(0;b,t]可用于删除a处的快照, 并且L(0;a,b,t]@@[t]=L(0;t]可用于删除快照a和b两者。

对于组合操作以取得连续快照的实例,分布式存储系统的实况日 志的初始状态可以是L(0;t],如同离散快照取得实例的情况。当尾部 达到LSN a时,开始连续快照制作,如由L(0;a..t]指示。在尾部越过 LSN b(b<t)之后,可通过[a..b]裁剪(@@)L(0;.a..t]以得到L(0;a..b]。随 后可将L(0;a..b]复制到快照存储位置。在尾部越过LSN c(c<t)之后, L(0;a..t]@@[a..c]=L(0;a..c)。L(0;a..c)@@[b..c]=L(0;b..c]。随后可在(0,a] 处修剪L(0;b..c]以得到L(b;b..c],随后可将L(b;b..c]复制到快照存储 位置。当尾部达到LSN d时,可剥离连续快照:L(0,a..d,t]。

对于组合操作以复原连续快照的实例,考虑可在快照存储位置出 获得的以下内容:L(0;a..b]和L(b;b..c]。可将L(0;a..b]和L(b;b..c]复制 到复原目的地,在复原目的地处,两个日志区间可被融合在一起成为 L(0;a..b]+L(b;b..c]=L(0;a..c]。如果针对LSN x(其中b<x<c)请求复 原,那么可执行以下内容:L(0;a..c]@[a..x]=L(0;a..x]。随后可在[x] 处简化(@@)结果,得出L(0;x]。所需快照可以是L(0;x]并且可用于开 始新的卷。

考虑以下组合操作以删除所具有的实况日志的初始状态为 L(0,a..d,t]的连续快照的实例。可通过[t]简化L(0,a..d,t]以删除整个连 续快照,得出L(0;t](不具有保留快照的日志区间)。作为另一实例, 可通过[a..c,t]简化L(0,a..d,t]以删除连续快照从c至d的一部分,得出 L(0,a..c,t]。作为另一实例,可通过[c..d,t]简化L(0,a..d,t]以删除连续快 照从a至c的一部分,得出L(0,c..d,t]。

考虑以下组合操作以截断所具有的实况日志的初始状态为 L(0,a..t](其中c<t)的当前连续快照的实例。L(0,a..t]@@[c..t]=L(0;c..t], 其可仅包含当前连续快照的最近一部分。

在各种实施方案中,数据库服务可从用户接收快照所在的时间 帧、范围或窗口的请求,和/或可接收所请求快照的类型(例如,连续 的或离散的)的指示。例如,用户可请求他们想要先前两天的连续快 照以及想要先前三十天的离散快照。数据库服务随后可确定要对日志 区间执行哪个日志记录操作(例如,修剪、简化、裁剪等)以满足用户 的请求。继续所述实例,一旦连续快照的一部分超过两天之久,系统 就可确定简化操作可适合于改造(例如,通过无用数据收集)用于不再 需要的日志记录的空间。

在各种实施方案中,本文所述的方法可通过硬件和软件的任何结 合来实施。例如,在一个实施方案中,所述方法可由包括执行程序指 令的一个或多个处理器的计算机系统(例如,如图10中的计算机系统) 来实施,所述程序指令存储在连接至处理器的计算机可读存储介质 上。程序指令可被配置来实施本文所述的功能(例如,实施数据库服 务/系统和/或本文所述的存储服务/系统的各种服务器和其他部件的 功能)。

图10为示出根据各种实施方案的被配置来实施本文所述的数据 库系统的至少一部分的计算机系统的框图。例如,在不同的实施方案 中,计算机系统1000可被配置来实施数据库层的数据库引擎头节点、 或独立分布式数据库优化存储系统的多个存储节点中的一个,所述独 立分布式数据库优化存储系统存储数据库表格和代表数据库层的客 户端的关联元数据。计算机系统1000可能是各种类型的装置中的任 何一种,包括但不限于:个人计算机系统、台式电脑、膝上电脑或笔 记本电脑、主机计算机系统、手持式计算机、工作站、网络计算机、 消费装置、应用服务器、存储装置、电话、移动电话、或大体上任何 类型的计算装置。

计算机系统1000包括通过输入/输出(I/O)接口1030连接至系统 存储器1020的一个或多个处理器1010(其中的任何一个可包括多个 核心,所述多个核心可为单线程的或多线程的)。计算机系统1000还 包括耦接到I/O接口1030的网络接口1040。在各种实施方案中,计 算机系统1000可为包括一个处理器1010的单一处理器系统,或包括 若干处理器1010(例如两个、四个、八个或另一合适数量)的多处理器 系统。处理器1010可为能够执行指令的任何处理器。例如,在各种 实施方案中,处理器1010可为实施各种指令集架构(ISA)中任何一种 架构的通用或嵌入式处理器,所述架构例如x86、PowerPC、SPARC、 或MIPS ISA或任何其他合适ISA。在多处理器系统中,每一个处理 器1010可通常但不一定实施相同的ISA。计算机系统1000也包括一 个或多个网络通信装置(例如,网络接口1040),用于与其他系统和/ 或部件通过通信网络(例如,因特网、LAN等)通信。例如,在系统 1000上执行的客户端应用程序可使用网络接口1040,以便与在单个 服务器或一组服务器上执行的服务器应用程序通信,所述一组服务器 实施本文所述的数据库系统的一个或多个部件。在另一实例中,在计 算机系统1000上执行的服务器应用程序的实例可使用网络接口 1040,以便与可能在其他计算机系统(例如,计算机系统1090)上执行 的服务器应用程序(或另一服务器应用程序)的其他实例通信。

在所述的实施方案中,计算机系统1000也包括一个或多个持久 的存储装置1060和/或一个或多个I/O装置1080。在各种实施方案中, 持久存储装置1060可对应于磁盘驱动、磁带驱动、固态存储器、其 他大容量存储装置、或任何其他持久存储装置。计算机系统1000(或 分布式应用程序或在其上操作的操作系统)可如期望的将指令和/或数 据存储在持久存储装置1060中,并且可按需检索存储的指令和/或数 据。例如,在一些实施方案中,计算机系统1000可代管存储系统服 务器节点,并且持久存储1060可包括附接至那个服务器节点的SSD。

计算机系统1000包括被配置来存储可由处理器1010访问的指令 和数据的一个或多个系统存储器1020。在各种实施方案中,系统存 储器1020可使用任何合适的存储器技术(例如,高速缓冲存储器、静 态随机存取存储器(SRAM)、DRAM、RDRAM、EDO RAM、DDR 10 RAM、同步动态RAM(SDRAM)、Rambus RAM、EEPROM、非暂时 性/闪存类型的存储器、或任何其他类型的存储器中的一个或多个)来 实施。系统存储器1020可包含程序指令1025,所述程序指令1025 可由处理器1010执行以便实施本文所述的方法和技术。在各种实施 方案中,程序指令1025可能以平台本地二进制、任何解译语言(如 JavaTM字节代码)、或以任何其他语言(C/C++、JavaTM等)、或以其 任何组合来编码。例如,在所示的实施方案中,程序指令1025包括 程序指令,所述程序指令可执行以便实施数据库层的数据库引擎头节 点、或独立分布式数据库优化存储系统的多个存储节点中的一个的功 能性,所述独立分布式数据库优化存储系统在不同的实施方案中存储 数据库表格和代表数据库层的客户端的关联元数据。在一些实施方案 中,程序指令1025可实施多个独立客户端、服务器节点、和/或其他 部件。

在一些实施方案中,程序指令1025可包括可执行以便实施操作 系统(未示出)的指令,所述操作系统可为各种操作系统中的任何一种, 如UNIX、LINUX、SolarisTM、MacOSTM、WindowsTM等。程序 指令1025中的任何一个或所有可被提供作为可包括具有在其上存储 的指令的非暂时性计算机可读存储介质的计算机程序产品、或软件, 所述指令可用于编程计算机系统(或其他电子装置)以便根据各种实施 方案执行进程。非暂时性的计算机可读的存储介质可包括用于存储机 器(例如,计算机)可读的形式(例如软件、处理应用程序)的信息的任 何机构。一般来说,非暂时性的计算机可访问的介质可包括计算机可 读的存储介质或存储器介质,例如磁性介质或光学介质,例如经由I/O 接口1030连接至计算机系统1000的磁盘或DVD/CD-ROM。非暂时 性计算机可读存储介质还可以包括可作为系统存储器1020或另一类 型的存储器被包括在计算机系统1000的一些实施方案中的任何易失 性或非易失性介质,如RAM(例如,SDRAM、DDR SDRAM、RDRAM、 SRAM等)、ROM等。在其他实施方案中,程序指令可使用通过通信 介质(如网络链接和/或无线链接)传达的光学、声学或其他形式的传播 信号(例如,载波、红外线信号、数字信号等)来通信,如可通过网络 接口1040执行的。

在一些实施方案中,系统存储器1020可包括可如本文所述配置 的数据存储1045。例如,在不同时间和在各种实施方案中,如本文 描述成由数据库层(例如,在数据库引擎头节点上)存储的信息(如事务 日志、撤销日志、高速缓存的数据页面、或在执行本文所述的数据库 层功能中使用的其他信息)可存储在数据存储1045中、或在一个或多 个节点上的系统存储器1020的另一部分上、在持久存储1060中、和 /或在一个或多个远程存储装置1070上。类似的,在不同时间和在各 种实施方案中,如本文描述成由存储层存储的信息(例如,重做日志 记录、合并的数据页面、和/或在执行本文所述的分布式存储系统功 能中使用的其他信息)可存储在数据存储1045中、或在一个或多个节 点上的系统存储器1020的另一部分上、在持久存储1060中、和/或 在一个或多个远程存储装置1070上。一般而言,系统存储器1020(例 如,系统存储器1020内的数据存储1045)、持久存储1060、和/或远 程存储1070可存储数据块、数据块复制品、与数据块和/或它们的状 态关联的元数据、数据块配置信息、和/或可在实施本文所述的方法 和技术中使用的任何其他信息。

在一个实施方案中,I/O接口1030可被配置来协调处理器1010、 系统存储器1020和系统中的任何外围装置之间的I/O流量,包括通 过网络接口1040或其他外围接口。在一些实施方案中,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接口、以太网 接口、帧中继接口等)。

注意本文所述的分布式系统实施方案中的任何一个,或它们的部 件中的任何一个,可被实施作为一个或多个网络服务。例如,数据库 系统的数据层内的数据库引擎头节点可呈现数据库服务和/或其他类 型的数据存储服务,所述数据库服务和/或其他类型的数据存储服务 对客户端采用文本所述的分布式存储系统,如网络服务。在一些实施 方案中,网络服务可由被设计来支持通过网络的彼此协作的机对机相 互作用的软件和/或硬件系统实施。网络服务可具有以机器可处理格 式描述的接口,如网络服务描述语言(WSDL)。其他系统可能以由描 述网络服务的接口的描述规定的方式与网络服务相互作用。例如,网 络服务可限定其他系统可调用的各种操作,并且可限定特定的应用编 程接口(API),当请求各种操作时,其他系统可能期望服从所述特定 的应用编程接口(API)。

在各种实施方案中,通过使用包括与网络服务请求关联的参数和 /或数据的消息,网络服务可被请求或调用。此类消息可根据特定的 标记语言(如可延伸标记语言(XML))被格式化,和/或使用协议(简单对 象访问协议(SOAP))来封装。为执行网络服务请求,网络服务客户端 可装配包括所述请求的消息,以及使用基于因特网的应用层转移协议 (如超文本传输协议(HTTP))将所述消息传达至对应于网络服务的可 寻址端点(例如,统一资源定位符(URL))。

在一些实施方案中,网络服务可使用表述性状态转移(“RESTful”) 技术而不是基于消息的技术来实施。例如,根据RESTful技术实施的 网络服务可通过包括在HTTP方法(如PUT、GET或DELETE)内而不 是封装在SOAP消息内的参数来调用。

鉴于以下条款,上述内容可更好地理解:

1.一种系统,其包括:

多个存储节点,其中的每一个包括至少一个处理器和存储器,其 中所述多个存储节点被配置来共同地实施数据库服务的分布式日志 结构化存储系统,所述分布式日志结构化存储系统被配置来:

从所述数据库服务的一个或多个数据库引擎头节点接收多个日 志记录,其中所述多个日志记录中的每一个与由所述数据库服务存储 的数据的相应改变相关联,并且进一步与相应日志序列识别符相关 联;

将所述多个日志记录存储在所述多个存储节点之中;并且

转化所述多个日志记录,其中所述多个日志记录包括作为用于所 述转化的操作数的两个或更多个日志区间。

2.如条款1所述的系统,其中所述分布式日志结构化存储系统 进一步被配置来:

确定所述多个日志记录中存储在所述多个存储节点中的第一存 储节点处的第一日志记录与所述多个日志记录中存储在所述多个节 点中的第二存储节点处的第二日志记录之间存在差异;

其中所述转化所述多个日志记录包括:调和所述第一日志记录与 所述第二日志记录之间的所述差异。

3.如条款1所述的系统,其中所述转化所述多个日志记录包括: 至少部分地基于所确定的所述多个日志记录之中的依赖性来确定所 述多个日志记录中的一个或多个日志记录为可删除的。

4.一种方法,其包括:

由数据库服务的一个或多个计算机执行以下各项:

维持指示由所述数据库服务存储的数据的多个日志记录,其中每 个日志记录与相应日志序列识别符相关联;以及

转化所述多个日志记录,其中所述多个日志记录包括作为用于所 述转化的操作数的两个或更多个日志区间。

5.如条款4所述的方法,其还包括:

确定在至少一个方面上,所述多个日志记录中存储在所述数据库 服务的第一存储节点处的第一日志记录不同于所述多个日志记录中 存储在所述数据库服务的第二存储节点处的第二日志记录;

其中所述转化所述多个日志记录包括:调和所述第一日志记录和 所述第二日志记录。

6.如条款4所述的方法,其中所述多个日志记录包括至少一个 基线日志记录,其中所述基线日志记录包括一页所述数据。

7.如条款4所述的方法,其中所述多个日志记录包括至少一个Δ 日志记录,其中所述Δ日志记录包括对一页所述数据的改变。

8.如条款4所述的方法,其中所述转化所述多个日志记录包括: 将所述多个日志记录的Δ日志记录转换成新的基线日志记录。

9.如条款4所述的方法,其中所述多个日志记录与可用于将所 述数据复原至先前状态的至少一个快照相关联,其中所述转化所述多 个日志记录包括:至少部分地基于所述至少一个快照来无用数据收集 所述日志记录中的一个或多个。

10.如条款4所述的方法,其中所述转化所述多个日志记录包括: 指示所述多个日志记录中的一个或多个日志记录为可无用数据收集 的。

11.如条款4所述的方法,其中所述转化所述多个日志记录包括: 删除所述多个日志记录中的一个或多个日志记录。

12.如条款4所述的方法,其中所述转化所述多个日志记录包括 执行修剪操作,其中所述执行所述修剪操作包括:删除所述多个日志 记录中所具有的相应识别符所具有的值小于目标识别符的值的一个 或多个日志记录。

13.如条款4所述的方法,其中所述转化所述多个日志记录包括 执行裁剪操作,其中所述执行所述裁剪操作包括:删除所述多个日志 记录中所具有的相应识别符所具有的值大于目标识别符的值的一个 或多个日志记录。

14.如条款4所述的方法,其中所述转化所述多个日志记录包括: 至少部分地基于所确定的所述多个日志记录之中的依赖性来确定所 述多个日志记录中的一个或多个日志记录为可删除的。

15.如条款4所述的方法,其中所述转化所述多个日志记录包括: 将所述多个日志记录与另外多个日志记录结合。

16.如条款4所述的方法,其中所述转化所述多个日志记录包括: 作为快照操作的一部分对所述多个日志记录执行多个操作。

17.一种存储程序指令的非暂时性计算机可读存储介质,其中所 述程序指令是计算机可执行的,以实施数据库服务的多个分布式日志 结构化存储节点中的一个分布式日志结构化存储节点,其中所述分布 式日志机构化存储节点被配置来:

存储多个日志记录,其中所述多个日志记录中的每一个与由所述 多个分布式日志结构化存储节点存储的数据的相应改变相关联,并且 进一步与相应识别符相关联;并且

转化所述多个日志记录,其中所述多个日志记录包括作为用于所 述转化的操作数的两个或更多个日志区间。

18.如条款17所述的非暂时性计算机可读存储介质,其中所述 转化所述多个日志记录包括:调和存储在所述分布式日志机构化存储 节点处的第一日志记录与存储在所述多个分布式日志结构化存储节 点中的另一个分布式日志结构化存储节点处的第二日志记录之间的 差异。

19.如条款17所述的非暂时性计算机可读存储介质,其中所述 转化所述多个日志记录包括执行修剪操作,其中所述执行所述修剪操 作包括:删除所述多个日志记录中所具有的相应识别符所具有的值小 于目标识别符的值的一个或多个日志记录。

20.如条款17所述的非暂时性计算机可读存储介质,其中所述 转化所述多个日志记录包括:删除所述多个日志记录中所具有的相应 识别符所具有的值大于目标识别符的值的一个或多个日志记录。

如在图中所示和本文所描述的各种方法表示方法的示例性实施 方案。所述方法可在软件中、在硬件中、或在其组合中手动实施。任 何方法的顺序可以改变,并且各个元素可以被添加、重新排序、组合、 省略、修改等。

尽管已相当详细地描述了以上实施方案,但一旦完全了解以上公 开内容,各种改变和修改对所属领域的技术人员将变为显而易见。旨 在以下权利要求被解释成包含所有这些修改和改变,并且相应地,以 上描述应视为具有说明性而非限制性意义。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1