CN109933597A - 具有数据库引擎和独立分布式存储服务的数据库系统 - Google Patents

具有数据库引擎和独立分布式存储服务的数据库系统 Download PDF

Info

Publication number
CN109933597A
CN109933597A CN201910182226.0A CN201910182226A CN109933597A CN 109933597 A CN109933597 A CN 109933597A CN 201910182226 A CN201910182226 A CN 201910182226A CN 109933597 A CN109933597 A CN 109933597A
Authority
CN
China
Prior art keywords
data
page
database
log
storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910182226.0A
Other languages
English (en)
Other versions
CN109933597B (zh
Inventor
A·W·古普塔
N·法罕
S·J·麦凯尔维
L·D·伯彻尔
C·R·纽科姆
P·J·马德哈瓦拉普
B·托布勒
J·M·科里
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Priority to CN201910182226.0A priority Critical patent/CN109933597B/zh
Publication of CN109933597A publication Critical patent/CN109933597A/zh
Application granted granted Critical
Publication of CN109933597B publication Critical patent/CN109933597B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques

Abstract

本公开涉及具有数据库引擎和独立分布式存储服务的数据库系统。提供了一种系统,包括一个或多个计算节点,其中的每一个包括至少一个处理器和存储器,其中所述一个或多个计算节点被配置为共同实施在一个或多个存储设备上存储数据块的分布式数据存储。所述一个或多个计算节点中的一个计算节点被配置为:接收以所述数据块中的一个为目标的读取请求;识别存储在该计算节点上的指定要对目标数据块进行的修改的一个或多个更新记录;把所述一个或多个更新记录应用于所述目标数据块的先前存储版本以生成所述目标数据块的当前版本;以及响应于所述读取请求而返回所述目标数据块的当前版本。

Description

具有数据库引擎和独立分布式存储服务的数据库系统
本申请是申请日为2014年3月11日的、名称为“具有数据库引擎和独立分布式存储服务的数据库系统”的发明专利申请No.201480021079.4的分案申请。
技术领域
本公开涉及具有数据库引擎和独立分布式存储服务的数据库系统。
背景技术
在一些情况下,软件堆栈的各种部件的分布可提供(或支持)容错性(例如,通过复制)、较高耐久性、和较不昂贵的解决方案(例如,通过使用许多较小的、较不昂贵的部件,而不是较少大型的、昂贵的部件)。然而,在历史上数据库已经是至少服从分布的软件堆栈的部件。例如,可能难以分布数据库同时仍确保期望它们提供的所谓ACID特性(例如,原子性、一致性、隔离性、和耐久性)。
尽管大部分现存的相关数据库未被分布,使用两个常用模型中的一个来“向外扩展”(与通过仅采用较大单片系统的“向上扩展”相反)一些现存的数据库:“无共享”模型和“共享磁盘”模型。一般来说,在“无共享”模型中,接收的查询分解成数据库碎片(其中的每一个包括查询部件),这些碎片被发送至不同的计算机节点用于查询处理,并且在它们返回前收集和集合结果。一般来说,在“共享磁盘”模型中,群集中的每个计算机节点访问相同的基础数据。在采用这个模型的系统中,必须非常小心以便管理高速缓存一致性。在这两个模型中,在多个节点(包括单机数据库实例的所有功能性)上复制大型、单片数据库,并且添加“胶合”逻辑以便将它们缝合在一起。例如,在“无共享”模型中,胶合逻辑可提供分配器的功能性,所述分配器使查询细分、将它们发送至多个计算机节点、以及随后组合结果。在“共享磁盘”模型中,胶合逻辑可用来将多个节点的高速缓存融合在一起(例如,以便管理在高速缓存层处的一致性)。部署这些“无共享”和“共享磁盘”数据库系统可能花费较大,并且维持起来较复杂,以及它们可能过度服务许多数据库使用情况。
在传统数据库系统中,由数据库系统管理的数据存储在直接附加的磁盘上。如果磁盘失效,那么更换所述磁盘并且随后必须重新加载适当的数据。例如,在许多系统中,崩溃恢复包括从备份系统复原最近的快照,并且随后重播从所述点向前的最后快照以后做出的任何改变。然而,这个方法不能很好地缩放以用于大型数据库。
发明内容
提供了一种系统,包括一个或多个计算节点,其中的每一个包括至少一个处理器和存储器,其中所述一个或多个计算节点被配置为共同实施在一个或多个存储设备上存储数据块的分布式数据存储。所述一个或多个计算节点中的一个计算节点被配置为:接收以所述数据块中的一个为目标的读取请求;识别存储在该计算节点上的指定要对目标数据块进行的修改的一个或多个更新记录;把所述一个或多个更新记录应用于所述目标数据块的先前存储版本以生成所述目标数据块的当前版本;以及响应于所述读取请求而返回所述目标数据块的当前版本。
附图说明
图1为示出根据一个实施方案的数据库软件堆栈的各种部件的框图。
图2为示出根据一些实施方案的服务系统架构的框图,所述服务系统架构可被配置来实施基于网络服务的数据库服务。
图3为示出根据一个实施方案的数据库系统的各种部件的框图,所述数据库系统包括数据库引擎和独立分布式数据库存储服务。
图4为示出根据一个实施方案的分布式数据库优化存储系统的框图。
图5为示出用于访问数据库系统中的数据的方法的一个实施方案的流程图,所述数据库系统包括数据库引擎和独立分布式数据库存储服务。
图6为示出根据一个实施方案的数据库系统中的独立分布式数据库优化存储系统的使用的框图。
图7为从数据库引擎的角度示出用于在数据库系统中执行写入操作的方法的一个实施方案的流程图。
图8为从分布式数据库优化存储系统的角度示出用于在数据库系统中执行写入操作的方法的一个实施方案的流程图。
图9为示出根据一个实施方案的可将数据和元数据存储在分布式数据库优化存储系统的给定节点上的方式的框图。
图10为示出根据一个实施方案的数据库容量的示例性配置的框图。
图11为从数据库引擎的角度示出用于在数据库系统中执行读取操作的方法的一个实施方案的流程图。
图12为从分布式数据库优化存储系统的角度示出用于在数据库系统中执行读取操作的方法的一个实施方案的流程图。
图13为示出用于在包括保护组的分布式数据库优化存储系统中执行读取操作和写入操作的方法的一个实施方案的流程图。
图14为示出根据各种实施方案的被配置来实施数据库系统的至少一部分的计算机系统的框图,所述数据库系统包括数据库引擎和独立分布式数据库存储服务。
虽然在本文中通过列举若干实施方案和示意性附图的实例的方式描述了实施方案,本领域的技术人员应认识到,实施方案并不限于所描述的实施方案或附图。应理解,附图和对其的详细描述并非意图将实施方案限于所公开的特定形式,而是相反,其意图在于涵盖落入由所附权利要求书所界定的精神和范围内的所有修改、等同物以及替代方案。本文中使用的任何标题都仅用于组织目的,并且并不意图用于限制描述或权利要求书的范围。贯穿本申请所使用的词语“可以”是在许可的意义上(即意指具有可能性)、而非强制的意义上(即意指必须)使用。类似地,词语“包括(include/including/includes)”意味着包括但不限于。
具体实施方式
在一些实施方案中,本文中描述的系统可实施网络服务,所述网络服务使得客户端(例如,订阅者)能够在云计算环境中操作数据存储系统。在一些实施方案中,数据存储系统可为高度可缩放的和可扩展的企业级数据库系统。在一些实施方案中,查询可指向横跨多个物理源分布的数据库存储,并且数据库系统可在所需的基础上扩大或缩小。在不同实施方案中,数据库系统可在各种类型和/或组织的数据库模式下有效工作。在一些实施方案中,客户端/订阅者可能以许多方式(例如,通过到数据库系统的SQL接口以交互方式)提交查询。在其他实施方案中,外部应用和程序可使用到数据库系统的开放数据库连接(ODBC)和/或Java数据库连接(JDBC)驱动器接口来提交查询。
更具体地,在一些实施方案中,本文描述的系统可实施面向服务的数据库架构,在所述数据库架构中单个数据库系统的各种功能部件固有地分布。例如,不是将多个完整的和单片的数据库实例(其中的每一个可包括外来功能性,如应用服务器、搜索功能性、或超过需要用来提供数据库的核心功能的其他功能性)捆绑在一起,这些系统可将数据库的基本操作(例如,查询处理、事务管理、高速缓存和存储)组织成可单独和独立缩放的层。例如,在一些实施方案中,本文所描述的系统中的每个数据库实例可包括数据库层(其可包括单个数据库引擎头节点和客户端侧存储系统驱动器)、和独立分布式存储系统(其可包括共同执行在现有系统的数据库层中常规执行的操作中的一些的多个存储节点)。
如本文更详细描述的,在一些实施方案中,数据库的一些最低水平操作(例如,备份、复原、快照、恢复、和/或各种空间管理操作)可从数据库引擎卸载至存储层,并且分布在多个节点和存储装置上。例如,在一些实施方案中,不是数据库引擎对数据库表格(或其数据页面)应用改变以及随后将修改的数据页面发送至存储层,对存储的数据库表格(或其数据页面)的改变的应用可为存储层本身的责任。在此类实施方案中,可将重做日志记录而不是修改的数据页面发送至存储层,在其之后重做处理(例如,应用重做日志记录)可稍微徐缓地并且以分布式方式执行(例如,通过后台处理)。在一些实施方案中,崩溃恢复(例如,从存储的重做日志记录重建数据页面)也可由存储层执行,以及也可由分布式(并且在一些情况下徐缓的)后台处理执行。
在一些实施方案中,因为只有重做日志(以及未修改的数据页面)被发送至存储层,在数据库层与存储层之间可存在比现有数据库系统中更少的网络流量。在一些实施方案中,每个重做日志可大约为它指定变化的对应数据页面大小的十分之一。注意从数据数据库层和分布式存储系统发送的请求可为异步的,并且多个此类请求可同时在发送中。
如先前指出的,在典型的大型数据库系统中,在系统故障后,数据库系统可重启前,整个数据集需要被复原。在这些数据库系统中,在崩溃之后,系统必须确定最后点,在所述最后点处已知所有的数据页面已被刷新至磁盘(例如,检查点),并且必须重播从那个点向前的任何改变日志。例如,在可使得数据库可用于处置来自客户端进程的进入查询之前,系统进程必须在确定的检查点后改变的所有数据页面中读取,并且应用尚未被应用至那些数据页面的每个可应用改变日志记录。
在一些实施方案中,本文描述的数据库系统可能够几乎立即在数据库崩溃后的故障之后重启数据库引擎(例如,以便使得数据库可用来接受和服务查询),而不用必须等待整个数据集复原。相反,当崩溃恢复由一个或多个后台线程徐缓执行时,查询可被接收和服务。例如,在崩溃之后,多个后台线程可在不同的存储节点上并行操作,以便从对应的重做日志重建数据页面。与此同时,如果进入查询把还未被重建的数据页面作为目标,存储层可被配置来从适当的重做日志动态重新创建数据页面。
一般来说,在被给予数据片之后,数据库的基本要求为它可最终交还回那个数据片。为此,数据库可包括若干不同部件(或层),其中的每一个执行不同的功能。例如,传统数据库可被认为具有三个层:用于执行查询解析、优化和执行的第一层;用于提供事务性、恢复和耐久性的第二层;以及在本地附接的磁盘上或在网络附接的存储区上提供存储的第三层。如以上指出的,对缩放传统数据库的先前尝试通常已包含复制数据库的所有三层,以及在多个机器上分布那些复制的数据库实例。
在一些实施方案中,本文描述的系统可不同于传统数据库中的来划分数据库系统的功能性,并且可在多个机器上仅分布功能部件的子集(不是完整的数据库实例)以便实施缩放。例如,在一些实施方案中,面向客户端的层可被配置来接收请求,所述请求指定存储和检索什么数据,但未指定如何存储和检索所述数据。这个层可执行请求解析和/或优化(例如,SQL解析和优化),而另一层可负责查询执行。在一些实施方案中,第三层可负责提供结果的事务性和一致性。例如,这个层可被配置来施行一些所谓的ACID特性,具体地,把数据库作为目标的事务的原子性、维持数据库内的一致性、以及确保把数据库作为目标的事务之间的隔离。在一些实施方案中,第四层随后可负责在存在各种故障的情况下提供存储的数据的耐久性。例如,这个层可负责改变日志、从数据库崩溃恢复、管理对基础存储容量的访问和/或在基础存储容量中的空间管理。
图1为示出根据一个实施方案的数据库软件堆栈的各种部件的框图。如这个实例中示出的,数据库实例可包括多个功能部件(或层),其中的每一个提供数据库实例功能性的一部分。在这个实例中,数据库实例100包括查询解析和查询优化层(被示作110)、查询执行层(被示作120)、事务性和一致性管理层(被示作130)、和耐久性和空间管理层(被示作140)。如以上指出的,在一些现存数据库系统中,缩放数据库实例可包含复制整个数据库实例一次或多次(包括图1中示出的所有层),以及随后添加胶合逻辑以便将它们缝合在一起。在一些实施方案中,本文描述的系统反而可将耐久性和空间管理层140的功能性从数据库层卸载至独立存储层,并且可在存储层中的多个存储节点上分布那个功能性。
在一些实施方案中,本文描述的数据库系统可保持图1所示的数据库实例的上半部的大部分结构,但可重新分布用于对存储层的备份、复原、快照、恢复、和/或各种空间管理操作的至少部分的责任。当与用来提供可缩放数据库的先前方法相比时,以这种方式重新分布功能性以及在数据库层与存储层之间紧密连接日志处理可改善性能、增加可用性和降低成本。例如,由于只有重做日志记录(其在大小上比实际数据页面小很多)可在节点上运送或在写入操作的时延路径内持续,所以可减少网络和输入/输出带宽要求。此外,数据页面的产生可在每个存储节点上独立地后台完成(如前台处理允许的),而不阻塞进入的写入操作。在一些实施方案中,使用日志结构化、非重写的存储可允许备份、复原、快照、时间点恢复、和容量增长操作被更有效地执行,例如,通过仅使用元数据操纵而不是移动或复制数据页面。在一些实施方案中,存储层也可承担复制代表客户端的在多个存储节点上存储的数据(和/或与所述数据关联的元数据,如重做日志记录)的责任。例如,数据(和/或元数据)可本地(例如,在单个“可用区”内,在所述单个“可用区”中存储节点集合在它自身的物理不同的、独立的基础结构上执行)复制和/或在单个区域或不同区域中的可用区上复制。
在各种实施方案中,本文描述的数据库系统可支持用于各种数据库操作的标准或定制的应用编程接口(API)。例如,API可支持用于创建数据库、创建表格、更改表格、创建用户、删除用户、在表格中插入一个或多个行、复制值、从表格内选择数据(例如,查询表格)、取消或中止查询、和/或其他操作。
在一些实施方案中,数据库实例的数据库层可包括数据库引擎头节点服务器,所述数据库引擎头节点服务器接收来自各种客户端程序(例如,应用)和/或订阅者(用户)的读取和/或写入请求,随后解析它们并且发展执行计划以便实施关联的数据库操作。例如,数据库引擎头节点可发展对获得用于复杂的查询和连接的结果有必要的步骤系列。在一些实施方案中,数据库引擎头节点可管理在数据库系统的数据库层与客户端/订阅者之间的通信,以及在数据库层与独立分布式数据库优化存储系统之间的通信。
在一些实施方案中,数据库引擎头节点可负责从端部客户端通过JDBC接口或ODBC接口来接收SQL请求,以及负责本地执行SQL处理和事务管理(其可包括锁定)。然而,并非在本地产生数据页面,数据库引擎头节点(或其各种部件)可产生重做日志记录,并且可将它们运送至独立分布式存储系统的适当节点。在一些实施方案中,用于分布式存储系统的客户端侧驱动器可在数据库引擎头节点上代管,并且可负责将重做日志记录路由至存储那些重做日志记录指向的区段(或其数据页面)的存储系统节点(或多个节点)。例如,在一些实施方案中,每个区段在形成保护组的多个存储系统节点上可为镜像的(或否则被形成为耐用的)。在此类实施方案中,客户端侧驱动器可记录在其上存储每个区段的节点,并且当接收客户端请求时,可将重做日志路由至在其上存储区段的所有节点(例如,异步地和基本上同时并行)。一旦客户端侧从保护组中的存储节点的写入群体接收返回的确认(其可指示重做日志记录已被写入至存储节点),它就可将请求的变化的确认发送至数据库层(例如,至数据库引擎头节点)。例如,在其中通过使用保护组使得数据耐用的实施方案中,数据库引擎头节点可能不能够提交事务,除非客户端侧驱动器从足够的存储节点实例接收回复以便构成写入群体。类似地,对于指向特定区段的读取请求,客户端侧驱动器可将读取请求路由至在其上存储所述区段的所有节点(例如,异步地和基本上同时并行地)。一旦客户端侧驱动器从保护组中的存储节点的读取群体接收请求的数据,它可将请求的数据返回至数据库层(例如,至数据库引擎头节点)。
在一些实施方案中,数据库层(或更具体地,数据库引擎头节点)可包括在其中临时保持最近访问的数据页面的高速缓冲存储器。在此类实施方案中,如果接收将保持在此类高速缓冲存储器中的数据页面作为目标的写入请求,除了将对应的重做日志记录运送至存储层之外,数据库引擎可对保持在它的高速缓冲存储器中的数据页面的复制应用改变。然而,不同于在其他数据库系统中,保持在这个高速缓冲存储器中的数据页面可能从不被刷新至存储层,并且它可在任何时候被抛弃(例如,在用于最近应用至高速缓存的复制的写入请求的重做日志记录已被发送至存储层和被确认之后的任何时候)。在不同实施方案中,高速缓冲存储器可实施任何的各种锁定机构,以便通过每次最多一个写入者(或多个读取者)控制访问高速缓冲存储器。然而注意在包括此类高速缓冲存储器的实施方案中,高速缓冲存储器可能未分布在多个节点上,但对于给定数据库实例可仅存在于数据库引擎头节点上。因此,可能不存在要管理的高速缓存相干性或一致性问题。
在一些实施方案中,数据库层可支持在系统中使用同步或异步读取复制品,例如,在读取请求可被路由至其的数据库层的不同节点上的数据只读副本。在此类实施方案中,如果用于给定数据库表格的数据库引擎头节点接收指向特定数据页面的读取请求,那么它可将请求路由至这些只读副本中的任何一个(或特定的一个)。在一些实施方案中,数据库引擎头节点中的客户端侧驱动器可被配置来通知这些其他节点关于高速缓存的数据页面的升级和/或失效(例如,以便提示它们使它们的高速缓冲存储器无效,在其之后它们可从存储层请求更新的数据页面的更新副本)。
在一些实施方案中,在数据库引擎头节点上运行的客户端侧驱动器可暴露针对存储层的专用接口。在一些实施方案中,它也可暴露针对一个或多个其他部件(例如,其他数据库引擎或虚拟计算服务部件)的传统iSCSI接口。在一些实施方案中,在存储层中用于数据库实例的存储可被模制成单个卷,所述单个卷可在大小上增长而不受限制,并且可具有不限数目的与它关联的IOPS。当创建卷时,可用具体大小、用具体的可用性/耐久性特性(例如,指定它被如何复制)、和/或与它关联的IOPS速率(例如,峰值和持续的)来创建它。例如,在一些实施方案中,各种不同的耐久性模型可被支持,并且用户/订阅者可以能够为它们的数据库表格基于它们的耐久性、性能和成本目标来指定一些复制副本、区、或区域、和/或复制是同步的还是异步的。
在一些实施方案中,客户端侧驱动器可维持关于卷的元数据,并且可将异步请求直接发送至对实现读取请求和写入请求有必要的每个存储节点,而不需要在存储节点之间的附加跳跃。例如,在一些实施方案中,响应对数据库表格进行改变的请求,客户端侧驱动器可被配置来确定实施用于目标数据页面的存储的一个或多个节点,以及路由指定对那些存储节点的改变的重做日志记录。存储节点随后可在将来的某个时刻负责将在重做日志记录中指定的改变应用至目标数据页面。由于返回客户端侧驱动器的写入被确认,所以客户端侧驱动器可提前在其处卷为耐用的点,并且可确认返回数据库层的提交。如先前指出的,在一些实施方案中,客户端侧驱动器可能从不将数据页面发送至存储节点服务器。这不仅可减少网络流量,还可移除对检查点或后台写入线程的需要,所述检查点或后台写入线程在先前的数据库系统中约束前台处理吞吐量。
在一些实施方案中,许多读取请求可由数据库引擎头节点高速缓冲存储器服务。然而,由于大规模的故障事件可能太常见而不允许仅在存储器中复制,写入请求可能需要耐久性。因此,本文描述的系统可被配置来最小化重做日志记录写入操作的成本,所述重做日志记录写入操作在前台延时路径中,通过将存储层中的数据存储实施成两个区域:小型仅附加的日志结构化区域,当从数据库层被接收重做日志记录时将其写入至其中;以及较大区域,在所述较大区域中日志记录合并在一起以便后台创建新版本的数据页面。在一些实施方案中,可维持存储器中结构用于每个数据页面,所述每个数据页面指向用于那个页面的最后重做日志记录、反向链接日志记录,直到实体化数据块被引用。这个方法可提供用于混合的读取-写入工作负荷的良好性能,包括在其中大量高速缓存读取的应用中。
在一些实施方案中,因为对用于重做日志记录的日志结构化数据存储的访问可包括一系列连续的输入/输出操作(不是随机输入/输出操作),做出的改变可被紧密包装在一起。还应注意,与在其中对数据页面的每个改变导致对持久数据存储的两个输入/输出操作(一个用于重做日志,并且一个用于修改的数据页面本身)的现存系统相比,在一些实施方案中,通过基于重做日志记录的接收来合并在分布式存储系统的存储节点处的数据页面,本文描述的系统可避免这个“写入放大”。
如先前指出的,在一些实施方案中,数据库系统的存储层可负责取得数据库快照。然而,因为存储层实施日志结构化存储,取得数据页面(例如,数据块)的快照可包括记录与最近应用至数据页面/数据块的重做日志记录关联的时间戳(或与合并多个重做日志记录以便创建新版本的数据页面/数据块的最近操作关联的时间戳),和阻止先前版本的页面/块的无用数据收集以及直到记录的时间点的任何随后日志条目。例如,取得数据库快照可能不需要如当采用远离卷备份策略时将需要的读取、复制或写入数据块。在一些实施方案中,对快照的空间要求可为最小的,由于仅修改的数据将需要附加的空间,但用户/订阅者可以能够选择除活动数据集之外他们想要保持多少附加空间用于在卷上的快照。在不同的实施方案中,快照可为离散的(例如,每个快照可提供对在具体时间点的数据页面中的所有数据的访问)或连续的(例如,每个快照可提供对存在于两个时间点之间的数据页面中的所有版本的数据的访问)。在一些实施方案中,回复至先前的快照可包括记录日志记录以便指示所有的重做日志记录和数据页面(由于快照为无效的和可无用数据收集的),,以及在快照点后丢弃所有数据库高速缓存条目。在此类实施方案中,由于存储系统将在逐块基础上如请求的和后台在所有节点上对数据块应用重做日志记录,就像它在正常的向前读取/写入处理中做的,所以不需要向前滚动。从而可使得崩溃恢复并行和分布在节点上。
图2中示出可被配置来实施基于网络服务的数据库服务的服务系统架构的一个实施方案。在所示的实施方案中,一些客户端(被示作数据库客户端250a-250n)可被配置来通过网络260与网络服务平台200互相作用。网络服务平台200可被配置来与数据库服务210、分布式数据库优化存储服务220和/或一个或多个其他虚拟计算服务230的一个或多个实例相互作用。注意其中给定部件的一个或多个实例可存在,可使得本文中对那个部件的引用为单数的或复数的。然而,任何一种形式的使用不意图排除另一种。
在各种实施方案中,图2所示的部件可直接在计算机硬件内实施,如可由计算机硬件直接执行或间接执行的指令(例如,微处理器或计算机系统),或使用这些技术的组合。例如,图2的部件可由包括一些计算节点(或简单地,节点)的系统来实施,所述计算节点中的每一个可类似于图14所示的和以下描述的计算机系统实施方案。在各种实施方案中,给定服务系统部件(例如,数据库服务的部件或存储服务的部件)的功能性可由特定节点来实施或可分布在若干节点上。在一些实施方案中,给定节点可实施多于一个服务系统部件(例如,多于一个数据库服务系统部件)的功能性。
一般来说,客户端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或逻辑序列号。每个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中。
如这个实例所示,所述方法可包括响应于接收重做日志记录,存储系统节点将重做日志记录写入至磁盘(或至另一类型的持久存储介质),并且将写入确认返回数据库引擎头节点,如在540中。在一些实施方案中,响应于接收写入确认,数据库引擎头节点可将对应的写入确认返回从其接收写入请求的客户端(未示出)。如这个实例所示,在某个时间点处(例如,在接收重做日志记录并且返回写入确认之后的时间点处),所述方法可包括存储系统节点合并用于特定数据页面的多个重做日志记录(例如,包括在步骤540处被写入至磁盘的重做日志记录),以便产生在它的当前状态下的特定数据页面的例示,如在550中。例如,合并重做日志可包括将所有重做日志应用至先前实例化版本的特定数据页面,所述所有重做数据日志已经由用于特定数据页面的存储系统接收,但还未被应用至特定数据页面的实例以便提供最新版本的特定数据页面。注意在一些实施方案中,最新版本的特定数据页面可直接从一个或多个重做日志产生,例如,不用将它们应用至先前存储版本的特定数据页面。
如图5所示,所述方法也可包括(例如,在合并重做日志以便创建最新版本的特定数据页面之后的某点处)数据库引擎头节点接收指向特定数据页的读取请求,如在560中。作为响应,数据引擎头节点可将对应的读取请求发送至存储特定数据页面的存储节点,如在570中。注意在这个实例中,假定数据库引擎头节点不将当前版本的特定数据页面存储在它的高速缓冲存储器中。另外,所述方法可包括数据库引擎头节点自身响应于读取请求(例如,通过返回来自它的高速缓冲存储器的请求的数据),不是将对应的读取请求发送至存储系统节点。如这个实例所示,所述方法可包括存储系统节点在它的当前状态下将特定数据页面返回至数据库引擎头节点,如在580中,在其之后,数据库引擎头节点可将请求的数据返回至从其接收读取请求的客户端,如在590中。
在各种实施方案中,返回数据库引擎头节点(例如,在步骤580中)的所述版本的特定数据页面可为由步骤550中的合并操作产生的相同版本,或可为由随后的合并操作创建的更近的版本(例如,应用在步骤550中的合并操作之后的附加重做日志的那个)。例如,在不同实施方案中,附加的合并操作可能在存储系统节点处执行,响应于来自数据库引擎头节点的读取请求的接收,作为数据库崩溃恢复操作的一部分,或响应于另一类型的触发。注意在一些实施方案中,响应于接收对访问数据的请求,用于访问在包括数据库引擎和独立分布式数据库存储服务的数据库系统中的数据的图5所示的操作可在数据库系统中自动执行。
在一些实施方案中,在分布式数据库优化存储系统中的每个存储系统服务器节点可实施在节点服务器的操作系统上运行的一组处理,所述处理管理与数据库引擎头节点的通信,例如,以便接收重做日志、送回数据页面等。在一些实施方案中,写入至分布式数据块优化存储系统的所有数据块可备份到长期存储和/或档案存储(例如,在远程键值耐用备份存储系统中)。
图6为示出根据一个实施方案的数据库系统中的独立分布式数据库优化存储系统的使用的框图。在这个实例中,一个或多个客户端进程610可将数据存储至由数据库系统维持的一个或多个数据库表格,所述数据库系统包括数据库引擎620和分布式数据库优化存储系统630。在图6所示的实例中,数据库引擎620包括数据库层部件660和客户端侧驱动器640(其用于分布式数据库优化存储系统630与数据库层部件660之间的接口)。在一些实施方案中,数据库层部件660可执行功能(如由图3的查询解析、优化和执行部件305以及事务和一致性管理部件330执行的那些),和/或可存储数据页面、事务日志和/或撤销日志(如由图3的数据页面高速缓冲存储器335、事务日志340和撤销日志345存储的那些)。
在这个实例中,一个或多个客户端进程610可将数据库查询请求615(其可包括把存储在一个或多个存储节点635a-635n上的数据作为目标的读取和/或写入请求)发送至数据库层部件660,并且可从数据库层部件660接收数据库查询响应617(例如,包括写入确认和/请求的数据的响应)。包括对写入数据页面的请求的每个数据库查询请求615可被解析和优化,以便产生可被发送至客户端侧驱动器640用于随后路由至分布式数据库优化存储系统630的一个或多个写入记录请求641。在这个实例中,客户端侧驱动器640可产生对应每个写入记录请求641的一个或多个重做日志记录631,并且可将它们发送至分布式数据库优化存储系统630的存储节点635中的具体的一些。分布式数据库优化存储系统630可将用于每个重做日志记录631的对应写入确认632返回至数据库引擎620(具体至客户端侧驱动器640)。客户端侧驱动器640可将这些写入确认传递至数据库层部件660(作为写入响应642),所述数据库层部件660随后可将对应的相应(例如,写入确认)发送至一个或多个客户端进程610作为数据库查询响应617中的一个。
在这个实例中,包括对读取数据页面的请求的每个数据库查询请求615可被解析和优化,以便产生可被发送至客户端侧驱动器640用于随后路由至分布式数据库优化存储系统630的一个或多个读取记录请求643。在这个实例中,客户端侧驱动器640可将这些请求发送至分布式数据库优化存储系统630的存储节点635中的具体的一些,并且分布式数据库优化存储系统630可将请求的数据页面633返回至数据库引擎620(具体至客户端侧驱动器640)。客户端侧驱动器640可将返回的数据页面发送至数据库层部件660作为返回数据记录644,并且数据库层部件660随后可将数据页面发送至一个或多个客户端进程610作为数据库查询响应617。
在一些实施方案中,各种错误和/或数据损失消息634可从分布式数据库优化存储系统630发送至数据库引擎620(具体至客户端侧驱动器640)。这些消息可从客户端侧驱动器640传递至数据库层部件660作为错误和/或损失报告消息645,并且随后连同(或代替)数据库查询响应617至一个或多个客户端进程610。
在一些实施方案中,分布式数据库优化存储系统630的API631-634和客户端侧驱动器640的API 641-645可将分布式数据库优化存储系统630的功能性暴露至数据库引擎620,犹如数据库引擎620为分布式数据库优化存储系统630的客户端。例如,数据库引擎620(通过客户端侧驱动器640)可通过这些API写入重做日志记录或请求数据页面,以便执行(或促进其性能)由数据库引擎620和分布式数据库优化存储系统630的组合实施的数据库系统的各种操作(例如,存储、访问、改变日志、恢复、和/或空间管理操作)。如图6所示,分布式数据库优化存储系统630可在存储节点635a-635n上存储数据块,所述存储节点635a-635n中的每一个可具有多个附接的SSD。在一些实施方案中,分布式数据库优化存储系统630可通过应用各种类型的冗余方案为存储的数据块提供高耐久性。
注意在各种实施方案中,在图6中,在数据库引擎620与分布式数据库优化存储系统630之间的API调用和响应(例如,API 631-634)和/或在客户端侧驱动器640与数据库层部件660之间的API调用和响应(例如,API 641-645)可在安全代理连接(例如,由网关控制面管理的一个)上执行,或可在公共网络上,或可替代地在专用通道(如虚拟专用网络(VPN)连接)上执行。到本文所述的数据库系统的部件和/或在其之间的这些和其他API可根据不同的技术(包括但不限于,简单对象访问协议(SOAP)技术和表述性状态转移(REST)技术)来实施。例如,这些API可能,但不必须被实施作为SOAP API或RESTful的API。SOAP为用于在基于网络的服务的情况下用于交换信息的协议。REST为用于分布式超媒体系统的构造风格。RESTful的API(其也可被称为RESTful网络服务)为使用HTTP和REST技术实施的网络服务API。本文描述的API在一些实施方案中可用各种语言(包括但不限C、C++、Java、C#和Perl)中的客户端库来包装,以便支持与数据库引擎620和/或分布式数据库优化存储系统630的合并。
如以上指出的,在一些实施方案中,数据库系统的功能部件可在由数据库引擎执行的那些与在独立、分布式、数据库优化存储系统中执行的那些之间划分。在一个具体实例中,响应于接收来自客户端进程(或其线程)的对将某物插入至数据库表格中(例如,通过将记录添加那个数据块来更新单个数据块)的请求,数据库引擎头节点的一个或多个部件可执行查询解析、优化、和执行,以及可将查询的每个部分发送至事务和一致性管理部件。事务和一致性管理部件可确保没有其他客户端进程(或其线程)试图同时修改相同的行。例如,事务和一致性管理部件可负责确保这个改变自动地、一致地、耐久地以及以隔离的方式在数据库中执行。例如,事务和一致性管理部件可与数据库引擎头节点的客户端侧存储服务驱动器一起工作,以便产生将被发送至分布式数据库优化存储服务中的一个节点的重做日志记录,以及将它发送至分布式数据库优化存储服务(连同响应于其他客户端请求产生的其他重做日志),以一个顺序和/或用确保ACID特性满足这个事务的定时。在接收重做日志记录(其可被认为通过存储服务的“更新记录”)后,对应的存储节点可更新数据块,并且可更新用于所述数据块的重做日志(例如,指向数据块的所有改变的记录)。在一些实施方案中,数据库引擎可负责产生用于这个改变的撤销日志,并且也可负责产生用于撤销日志的重做日志记录,其都可本地(在数据库层中)用于确保事务性。然而,不同于常规数据库系统,本文描述的系统可将对数据块应用改变的责任转移至存储系统(不是在数据库层应用它们以及将修改的数据块运送至存储系统)。
从数据库引擎的角度来看,用于在数据库系统中执行写入操作的方法的一个实施方案通过图7中的流程图示出。如在710处所示,在这个实例中,所述方法包括数据库引擎头节点接收(例如,从数据库客户端)指向数据库表格中的数据记录的写入请求。例如,写入请求可指定新的数据记录应被添加至数据库表格(或至其特定数据页面)或可指定对数据表格的特定数据页面中的现存数据记录的修改。所述方法也可包括数据库引擎头节点(或其特定部件)解析和/或优化写入请求,如在720中。例如,在一些实施方案中,数据库引擎头节点可负责产生查询执行计划。如图7所示,所述方法可包括数据库引擎头节点产生指定请求的写入的重做日志记录,如在730中,以及数据库引擎头节点(或更具体地,在数据库引擎头节点上的客户端侧存储服务驱动器)确定存储所述写入请求指向的特定数据页面的分布式数据库优化存储系统的节点,如在740中。
如这个实例所示,所述方法可包括数据库引擎头节点(或更具体地,在数据库引擎头节点上的客户端侧存储服务驱动器)将重做日志记录而不是任何版本的特定数据页面发送至确定的存储系统节点,如在750中。如图7所示,可能不存在数据库引擎头节点相对于写入请求采取的其他行动,直到(以及除非)数据库引擎头节点(或更具体地,在数据库引擎头节点上的客户端侧存储服务驱动器)从存储系统接收写入确认。一旦这个确认被接收(被示出为从760的正退出),所述方法可包括数据库引擎头节点将对应的写入确认返回至请求者(例如,至从其接收写入请求的客户端),如在770中。注意在一些实施方案中,如果在预定的时间段内不从存储系统接收写入确认,数据库引擎头节点(或更具体地,在数据库引擎头节点上的客户端侧存储服务驱动器)可被配置来确定所述确定的存储节点已经失效(或降级),或一些其他错误情况在存储系统中存在。也注意用于执行写入操作的图7所示的操作可响应接收写入请求在数据库系统中自动执行(例如,不用用户干预)。
从分布式数据库优化存储系统的角度来看,用于在数据库系统中执行写入操作的方法的一个实施方案通过图8中的流程图示出。如在810处所示,在这个实例中,所述方法可包括接收指向特定数据页面的重做日志记录的分布式数据库优化存储系统的节点,所述节点存储(但不是任何版本的特定数据页面本身)来自数据库引擎(例如,来自数据库头节点的客户端侧存储服务驱动器)或来自存储系统的另一客户端的所述特定数据页面。响应于接收重做日志记录,所述方法可包括存储系统节点将用于页面的重做日志记录写入至一个或多个磁盘(或至另一类型的持久存储介质),如在820中。例如,在不同实施方案中,存储系统节点可将重做日志记录附加至用于存储在特定磁盘上的特定数据页面的重做日志,或至存储在相同可用区中或两个或三个不同可用区中的每一个中的一个或多个磁盘上的此类重做日志的一些复制品中的任何一个。一旦重做日志记录的一个或多个副本已被成功写入(根据全系统的、具体应用的、或客户端指定的耐久性政策),所述方法也可包括存储系统节点将写入确认返回至数据库引擎(或存储系统的其他客户端),如在830中。注意在成功写入重做日志记录后的任何时间,存储系统节点可将写入确认返回至数据库引擎,不考虑重做日志记录是否已被应用至它在存储系统上指向的先前实体化版本的特定数据页面。
如这个实例所示,如果到了存储系统节点合并用于特定数据页面的一个或多个重做日志以便创建最新版本的特定数据页面(被示出为从840的正退出)的时间,所述方法可包括存储系统节点,所述存储系统节点将一个或多个重做日志记录应用至最近存储版本的特定数据页面,以便产生在它的当前状态下的新版本的特定数据页面,并且将新版本的特定数据页面写入至一个或多个磁盘(如在850中)。例如,合并操作可包括所有重做日志记录的应用,自从对最近实体化版本的特定数据页面的最后合并操作(和/或还未被应用至任何版本的特定数据页面)以后接收所述所有重做日志记录。在其他实施方案中,当前版本的特定数据页面可直接从一个或多个重做日志产生,例如,不用将它们应用至先前存储版本的特定数据页面。如本文描述的,在不同实施方案中,存在各种方式来确定何时合并用于给定数据页面的待定日志记录。例如,可能以规则(例如,周期的)的时间间隔触发用于数据页面的合并操作,响应于接收把数据页面作为目标的单个重做日志,响应于已经接收把数据页面作为目标的预定数目的重做日志记录、或把给定时间段内的数据页面作为目标的预定数目的重做日志记录,响应于接收把数据页面作为目标的读取请求,响应于崩溃恢复操作的开始,或根据任何其他合适的政策。
如图8所示,如果不是存储系统节点合并用于特定数据页面的重做日志记录(被示出为从840的负退出)的时间,但把特定数据页面作为目标的另一重做日志记录被接收(被示出为从860的正退出),所述方法可包括为附加的重做日志记录重复在820-860处示出的操作。在这个实例中,由于把特定数据页面作为目标的更多的重做日志记录由存储系统接收,存储系统节点可为每个附加的重做日志记录重复在820-860处示出的操作,并且根据一个或多个可应用的触发和/或政策,存储系统节点有时可合并用于特定数据页面的重做日志记录。这通过来自860至820的正退出的反馈,以及来自860至840的负退出的反馈在图8中示出。注意用于执行写入操作的图8所示的操作可响应于接收重做日志记录在存储系统中自动执行(例如,不用用户干预)。
注意在一些实施方案中,一些数据页面(例如,如果有的话很少被访问的数据页面)可能从不在存储器中产生(例如,通过合并操作)和/或持续。例如,在一些实施方案中,指向此类数据页面的任何重做日志记录可由一个或多个存储系统节点存储(例如,在存储器中持续),但这些重做日志记录可能不用于产生完全版本的那些数据页面,直到或除非对读取它们的请求被接收。在此类实施方案中,即使一种版本的此类数据页面产生(例如,响应于读取请求),它可能不在存储器中持续(例如,如果它不可能很快、经常或曾经被再次访问),但反而在它返回请求者后可被丢弃在任何点处。
在不同的实施方案中,各种不同的分配模型可被实施用于SSD。例如,在一些实施方案中,日志条目页面和物理应用页面可从与SSD装置关联的单个堆的页面分配。这个方法可具有留下由日志页面和数据页面消耗的相对数量的存储的优点,以便保持未指定的以及自动适应使用。它也可具有允许页面保持未准备的,直到它们随意不用准备地使用和重新目的化的优点。在其他实施方案中,分配模型可将存储装置划分成用于日志条目和数据页面的独立空间。一旦此类分配模型由图9中的框图示出以及在以下描述。
图9为示出根据一个实施方案的可将数据和元数据存储在分布式数据库优化存储系统的给定存储节点(或持久存储装置)上的方式的框图。在这个实例中,SSD存储空间900将SSD标头和其他固定的元数据存储在标记910的空间的部分中。它将日志页面存储在标记920的空间的部分中,并且包括被初始化和保留用于附加日志页面的标记930的空间。SSD存储空间900的一部分(被示出为940)被初始化,但未分配,并且另一空间部分(被示出为950)未被初始化以及未分配。最终,标记960的SSD存储空间900的部分存储数据页面。
在这个实例中,第一可用日志页槽被指示成915,并且最后使用的日志页槽(短暂的)被指示成925。最后保留的日志页槽被指示成935,并且最后可用日志页槽被指示成945。在这个实例中,第一使用的数据页槽(短暂的)被指示成965。在一些实施方案中,在SSD存储空间900内的这些元件(915、925、935、945和965)中的每一个的位置可由各自的指针来识别。
在图9所示的分配方法中,有效日志页面可被包装至平坦存储空间的开始中。在使用地址空间中较远的附加的日志页槽之前,由于被释放的日志页面而打开的孔可再用。例如,在最坏的情况下,第一n个日志页槽包含有效日志数据,其中n为已经同时存在的有效日志页面的最大数目。在这个实例中,有效数据页面可被包装至平坦存储空间的末端中。在使用地址空间中较低的附加的数据页槽之前,由于被释放的数据页面而打开的孔可再用。例如,在最坏的情况下,最后m个数据页面包含有效数据,其中m为已经同时存在的有效数据页面的最大数目。
在一些实施方案中,在日志页槽可变成潜在的有效日志页面条目组的部分之前,它可能需要被初始化至对于有效未来日志条目页面不可能为混乱的值。由于引退的日志页面具有足够的元数据以便对于新的有效日志页面为永不混乱的,对于循环的日志页槽这是含蓄真实的。然而,当存储装置被首先初始化时,或当潜在用于存储应用数据页面的空间被改造时,日志页槽可能需要在它们添加至日志页槽池之前被初始化。在一些实施方案中,再平衡/改造日志空间可能作为后台任务来执行。
在图9所示的实例中,当前日志页槽池包括在第一可用日志页槽(在915处)与最后保留的日志页槽(925)之间的区域。在一些实施方案中,这个池可安全增长至最后可用日志页槽(925),不用再初始化新的日志页槽(例如,通过持续对识别最后保留的日志页槽935的指针的更新)。在这个实例中,超过最后可用日志页槽(其由指针945识别),通过持续初始化的日志页槽,以及持续更新用于最后可用日志页槽的指针(945),所述池可增长至第一使用的数据页槽(其由指针965识别)。在这个实例中,被示出作为950的SSD存储空间900的先前未初始化和未分配的部分可被暂用以便存储日志页面。在一些实施方案中,通过持续对用于最后保留的日志页槽的指针(935)的更新,当前日志页槽池可向下收缩至最后使用的日志页槽(其通过指针来识别)的位置。
在图9所示的实例中,当前数据页槽池包括在最后可用日志页槽(其由指针945来识别)与SSD存储空间900的端部之间的区域。在一些实施方案中,通过持续对最后可用日志页槽的指针(945)的更新,数据页面池可安全增长至由最后保留的日志页槽的指针(935)识别的位置。在这个实例中,被示出为940的SSD存储空间900的先前未初始化但未分配的部分可被暂用以便存储日志页面。超过这个,通过持续对用于最后保留的日志页槽(935)和最后使用的日志页槽(945)的指针的更新,有效再分配SSD存储空间900的部分(被示出为930和940)以便存储数据页面而不是日志页面,所述池可安全增长至由最后使用的日志页槽的指针(925)识别的位置。在一些实施方案中,通过初始化附加的日志页槽和持续对最后可用日志页槽的指针(945)的更新,数据页槽池可安全向下收缩至由第一使用的数据页槽的指针(965)识别的位置。
在采用图9所示的分配方法的实施方案中,用于日志页面池和数据页面池的页面大小可被独立挑选,同时仍促进良好的堆积性能。在此类实施方案中,可能不存在有效日志页面链接至由应用数据形成的欺骗日志页面的可能性,并且可能区分损坏的日志与链接至还未写入的下一页面的有效日志尾部。在采用图9所示的分配方法的实施方案中,在启动时,直到由最后保留的日志页槽的指针(935)识别的位置的所有日志页槽可迅速和相继地被读取,并且整个日志索引可被再构造(包括推测的链接和顺序)。在此类实施方案中,由于可从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的长度超过用于合并操作的预先限定的阈值,根据全系统的、具体应用的或客户端指定的政策)、或由被客户端读取的用户页面来触发。
图10为示出根据一个实施方案的数据库卷1010的示例性配置的框图。在这个实例中,对应于各种地址范围1015(被示出作为地址范围1015a-1015e)中的每一个的数据被存储为不同的区段1045(被示出为区段1045a-1045n)。更具体地,对应于各种地址范围1015中的每一个的数据可被组织至不同的程度(被示出作为程度1025a-1025b,和程度1035a-1035h)中,并且这些程度中的每一个可包括在不同的保护组1030(被示出作为1030a-1030f)中,用或不用剥离(如被示出为带区集1020a和带区集1020b)。在这个实例中,保护组1示出擦除编码的使用。在这个实例中,保护组2和3以及保护组6和7代表彼此的镜像数据组,同时保护组4代表单个实例(非冗余的)的数据组。在这个实例中,保护组8代表组合其他保护组的多层保护组(例如,这可代表多区域保护组)。在这个实例中,带区集1(1020a)和带区集2(1020b)示出在一些实施方案中程度(例如,程度1025a和1025b)可如何被剥离至卷中。
更具体地,在这个实例中,保护组1(1030a)包括程度a-c(1035a-1035c),所述程度a-c(1035a-1035c)分别包括来自范围1-3(1015a-1015c)的数据,并且这些程度可映射至区段1-4(1045a-1045d)。保护组2(1030b)包括程度d(1035d),所述程度d(1035d)包括从范围4(1015d)剥离的数据,并且这个程度映射至区段5-7(1045e-1045g)。类似地,保护组3(1030c)包括程度e(1035e),所述程度e(1035e)包括从范围4(1015d)剥离的数据,并且被映射至区段8-9(1045h-1045i),以及保护组4(1030d)包括程度f(1035f),所述程度f(1035f)包括从范围4(1015d)剥离的数据,并且被映射至区段10(1045j)。在这个实例中,保护组6(1030e)包括程度g(1035g),所述程度g(1035g)包括从范围5(1015e)剥离的数据,并且被映射至区段11-12(1045k-1045l),以及保护组7(1030f)包括程度h(1035h),所述程度h(1035h)包括从范围5(1015e)剥离的数据,并且被映射至区段13-14(1045m-1045n)。
从数据库引擎的角度来看,用于在数据库系统中执行读取操作的方法的一个实施方案通过图11中的流程图示出。如在1110处所示,在这个实例中,所述方法包括数据库引擎头节点接收(例如,从数据库客户端)、指向特定数据页面的读取请求。所述方法也可包括数据库引擎头节点(或其特定部件)解析和/或优化读取请求,如在1120中。例如,在一些实施方案中,数据库引擎头节点可负责产生查询执行计划。如图11所示,如果特定数据页面驻留在数据引擎头节点的高速缓冲存储器中,被示出作为从1130的正退出,所述方法可包括数据库引擎头节点返回来自在它的高速缓冲存储器中发现的版本的特定数据页面的请求的数据,如在1135中。例如,在一些实施方案中,数据库引擎头节点可暂时将最近访问的数据页面的副本保持在它的高速缓冲存储器中,并且可响应于接收指向它们的写入请求而更新那些副本(例如,除了产生和将用于那些写入请求的重做日志记录传送至分布式数据库优化存储系统之外)。在一些此类实施方案中,如果被读取操作作为目标的特定数据页面驻留在高速缓冲存储器中,它可假定为最新版本的特定数据页面(例如,可假定把所述数据页面作为目标的所有重做日志记录已经被应用至存储在高速缓冲存储器中的版本的特定数据页面)。
如图11所示,如果特定数据页面不驻留在数据库引擎头节点的高速缓冲存储器中,被示出为从1130的负退出,所述方法可包括数据库引擎头节点(或更具体地,在数据库引擎头节点上的客户端侧存储服务驱动器)确定在存储特定数据页面的分布式数据库优化存储系统中的节点,以及将对应的读取请求发送至确定的存储系统节点,如在1140中。如图11所示,可能不存在数据库引擎头节点相对于写入请求采取的其他行动,直到(以及除非)数据库引擎头节点(或更具体地,在数据库引擎头节点上的客户端侧存储服务驱动器)从存储系统接收特定数据页面(在它的当前状态)。一旦数据引擎头节点(或更具体地,在数据库引擎头节点上的客户端侧存储服务驱动器)从确定的存储系统节点接收在它的当前状态下的特定数据页面(被示出为从1150的正退出),所述方法可包括数据库引擎头节点将请求的数据返回至请求者(例如,从其接收读取请求的客户端),如在1160中。例如,如果从确定的存储系统节点接收的版本的特定数据页面为把到目前为止的特定数据页面作为目标的所有重做日志记录(或可被应用同时维持数据库系统的事务性和一致性特性的至少所有的重做日志记录)已被应用至其的版本的特定数据页面,数据库引擎头节点可返回来自从确定的存储系统节点接收的版本的特定数据页面的请求的数据。注意在一些实施方案中,如果在预定的时间段内不从存储系统接收特定数据页面的当前副本,数据库引擎头节点(或更具体地,在数据库引擎头节点上的客户端侧存储服务驱动器)可被配置来确定所述确定的存储节点已经失效(或降级),或一些其他错误情况在存储系统中存在。也注意用于执行读取操作的图11所示的操作可响应于接收读取请求而在数据库系统中自动执行(例如,不用用户干预)。
从分布式数据库优化存储系统的角度来看,用于在数据库系统中执行读取操作的方法的一个实施方案通过图12中的流程图示出。如在1210处所示,在这个实例中,所述方法可包括在分布式数据库优化存储系统中的节点接收指向由存储系统节点存储的特定数据页面的读取请求。在不同的实施方案中,存储系统可从数据库引擎(例如,从数据库头节点的客户端侧存储服务驱动器),或从另一存储服务客户端接收读取请求。如这个实例所示,如果存储系统节点存储数据页面的最新副本(被示出为从1220的正退出),所述方法可包括存储系统节点返回它已经存储的数据页面的最新副本,如在1250中。例如,如果把到目前为止已被存储系统节点接收的特定块作为目标的所有重做日志记录(或可能被应用同时维持数据库系统的事务性和一致性特性的至少所有的重做日志记录)已经被应用至特定数据页面(例如,如果它们已经被合并以便创建当前版本的特定数据页面),存储系统节点在返回响应前可能不需要在用于特定数据页面的重做日志记录上执行附加的合并操作。
另一方面,如果存储系统节点不存储数据页面的最新副本(被示出为从1220的负退出),所述方法可包括存储系统节点从磁盘或另一持久存储装置检索特定数据页面的最近存储的副本,如在1230中,以及随后将在用于特定数据页面的一个或多个重做日志记录中指定的改变应用至特定数据页面的检索副本,以便产生特定数据页面的最新副本,如在1240中。例如,存储系统节点可应用至特定数据页面的检索副本和把特定数据页面作为目标的所有重做日志记录,所述所有重做日志记录到目前为止已被存储系统节点接收,但还未被应用至特定数据页面。一旦存储系统节点已经创建特定数据页面的最新副本,存储系统节点可将特定数据页面的最新创建的副本返回至数据库引擎(或其他存储系统客户端)作为数据页面的最新副本(如在1250中)。注意用于执行读取操作的图12所示的操作可响应于接收读取请求而在存储系统中自动执行(例如,不用用户干预)。
如先前指出的,保护组(PG)为代表由区段集形成的耐久性单元的抽象分布式实体。在一些实施方案中,保护组可代表卷内的一个或多个程度。保护组可暴露用于一个或多个程度的接口,并且可封装(或隐藏)一个或多个区段和关联的元数据。根据被配置用于保护组的耐久性政策,保护组可负责维持它暴露的程度的耐久性。在一些实施方案中,通过使用冗余区段以便持续程度数据,以及通过积极维持此类冗余,保护组可获得它所有的构成的程度的耐久性。保护组将程度读取/写入操作映射至基础区段上的方式对程度的用户可能是难懂的。可在不同的实施方案中采用不同的冗余策略,包括但不限于程度镜像、程度可擦除编码、和/或徐缓复制。
“镜像保护组”为其中构成区段中的每一个为单个程度的同步镜像副本的保护组。在这个模型中,如果改变在保护组内的所有受影响的同步镜像区段上已被使得耐用的,那么所述改变被认为是耐用的。保护组可在单个可用区内或在多个可用区上形成。例如,对于仅封装特定可用性区内的区段的保护组,所述保护组的可用性可直接捆绑至关联的可用性区的可用性。在一些实施方案中,区域保护组可封装在多个可用性区上的区段。在一些此类实施方案中,区域保护组可被实施作为对应的AZ保护组的集合,来自每个AZ的一个。
用于在包括保护组的分布式数据库优化存储系统中执行读取和写入操作的方法的一个实施方案由图13中的流程图示出。如在1310处所示,在这个实例中,所述方法包括数据库层的数据库引擎头节点接收(例如,从数据库客户端)指向数据库表格中的数据记录的写入请求。例如,写入请求可指定新的数据记录应被添加至数据库表格(或至其特定数据页面)或可指定对数据表格的特定数据页面中的现存数据记录的修改。响应于接收写入请求,所述方法可包括数据库引擎头节点(或更具体地,在数据库引擎头节点上的客户端侧存储服务驱动器)将重做日志记录(但不是写入请求指向的特定数据页面的副本)发送至存储所述请求指向的特定数据页面的分布式数据库优化存储系统的保护组中的两个或更多的存储节点,如在1320中。
如这个实例所示,直到数据库引擎头节点(或更具体地,在数据引擎头节点上的客户端侧存储服务驱动器)接收来自保护组中的法定数目的存储节点的写入成功完成的确认,数据库引擎头节点可等待从保护组中的法定数目的存储节点接收写入确认。这在图13中通过来自从1330至1330的输入的负退出的反馈来示出。一旦数据库引擎头节点已经从自保护组中的法定数目的存储节点接收写入确认(被示出作为从1330的正退出),所述方法可包括数据库引擎头节点将对应的写入确认返回请求者(例如,至数据库客户端),如在1340中。注意在一些实施方案中,如果在预定的时间段内不从保护组中的法定数目的存储节点接收写入确认,数据库引擎头节点(或更具体地,在数据库引擎头节点上的客户端侧存储服务驱动器)可被配置来确定在保护组中的一个或多个存储节点已经失效(或降级),或一些其他错误情况在存储系统中存在。
如图13所示,所述方法可包括(例如,在接收和响应写入请求后的某个时间点)数据库引擎头节点(或更具体地,在数据库引擎头节点上的客户端侧存储服务驱动器)接收指向特定数据页面的读取请求(如在1350中)。响应于接收读取请求,所述方法可包括数据库引擎头节点(或更具体地,在数据库引擎头节点上的客户端侧存储服务驱动器)将读取请求发送至存储特定数据页面的保护组中的两个或更多的存储节点(如在1360中)。
如这个实例所示,直到数据库引擎头节点(或更具体地,在数据引擎头节点上的客户端侧存储服务驱动器)从保护组中的法定数目的存储节点接收特定数据页面当前副本,数据库引擎头节点可等待从保护组中的法定数目的存储节点接收特定数据页面的当前副本。例如,在一些实施方案中,保护组中的一个或多个存储节点可能不存储特定数据页面的当前副本,并且可能必须通过在响应前将一个或多个未决定的重做日志记录应用至较早版本的特定数据页面(例如,在合并操作中)来创建特定数据页面的当前副本。这在图13中通过来自从1370至1370的输入的负退出的反馈来示出。一旦数据库引擎头节点已经从自保护组中的法定数目的存储节点接收特定数据页面的当前副本(被示出作为从1370的正退出),所述方法可包括数据库引擎头节点将数据页面的当前副本返回请求者(例如,至数据库客户端),如在1380中。注意在一些实施方案中,如果在预定的时间段内不从保护组中的法定数目的存储节点接收特定数据页面的当前副本,数据库引擎头节点(或更具体地,在数据库引擎头节点上的客户端侧存储服务驱动器)可被配置来确定在保护组中的一个或多个存储节点已经失效(或降级),或一些其他错误情况在存储系统中存在。也注意用于执行写入操作或用于执行读取操作的图13所示的操作可响应于接收这样做的请求而在数据库系统中自动执行(例如,不用用户干预)。
一些现存的数据库系统将所有的数据页面周期性地刷新至磁盘(例如,每五分钟检验指示所有页面一次)。在此类系统中,如果存在崩溃,系统可能必须重播大量的重做日志记录,以便重新创建当前版本的数据页面,自从上一次数据页面被刷新,许多改变指向所述当前版本的数据页面。例如,这可能为用于在大量改变持续指向的高速缓冲存储器中的热数据页面的情况,如其中每次进入顺序被接收在电子商务应用中时,序列编号增加的页面。代替一次检查指示存储在系统中的所有数据页面,在本文描述的系统中,检查指示可能在数据块(例如,数据页面)基础上,而不是在数据库或区段基础上执行。例如,在一些实施方案中,检查指示可在每个存储节点处执行,并且存储在特定存储节点上的每个数据页面可能被合并以便在存储节点上创建新版本的数据页面(例如,那个数据页面的检查点),仅当它被批准时(例如,当重做日志数目记录它自身的重做日志达到预定的数目)时。在此类实施方案中,数据库层可能根本不包括在检查指示中。反而,检查指示可为分布式处理(例如,后台处理),所述分布式处理为存储节点自身的责任。注意因为检查指示可能通过在存储层(其可在影响每个存储节点的前台和/或后台活动中具有可见性)上的后台处理来执行,在一些实施方案中,存储层(或其存储系统服务节点中的一个)可被配置来推迟用于特定存储点的检查指示操作,如果它被另一前台处理或后台处理严重加载。在一些实施方案中,推迟检查指示操作可能阻止检查指示不利地影响前台时延。
在一些实施方案中,各种存储器内的数据结构(如本文描述的那些)可能被需要用于区段以便运行。在一些实施方案中,这些存储器内的结构可能在启动(例如,在崩溃后)期间通过进行所有日志页面的完全扫描来建立。在一些实施方案中,这些存储器中的数据结构中的一些的周期检查点可能被执行以便减少在崩溃后的启动时间。
在一些现存的数据库系统中,数据库层可能需要以与接收改变相同的频率来将数据页面向外写入至存储层,否则,如果高速缓冲存储器充满还未被向外写入至存储层的弄脏页面,页面可能必须被刷新以便接收更多的改变,这将时延引入至系统中。相比之下,在本文描述的系统中,只要用于数据库引擎头节点的高速缓冲存储器中的数据页面的重做日志已经被传送至分布式存储系统(以及写入确定已被接收),数据库层可能将数据页面(其随时可通过存储层来再构造)从它的高速缓冲存储器驱逐。
在本文所述的系统的一些实施方案中,崩溃恢复、闪回、和时间点复原操作可能不需要重做日志或撤销日志的重播。反而,它们可包括建造一个实例、将当前卷LSN重新设置成合适的提交点、以及重新开始数据库服务。
在一些实施方案中本文描述的数据库系统可被缩放以便容纳比一些现存的数据库更大的数据库表格和/或更高的吞吐量,而不用忍受与先前数据库缩放方法关联的一些缺点(例如,根据复杂性和/或成本的缺点)。例如,在一些实施方案中,可能不存在对卷大小的实际限制,并且卷可以能够动态增长,而没有可用性损失或性能改变(例如,通过添加附加的区段保护组)。此外,假定写入流量散布在区段上,可使得IOPS事实上无边界。例如,在一些实施方案中,IOPS可能增加或减少而不影响当前运行的数据库的性能,任何必须的再剥离在后台中执行同时新的写入被转发至存储层。在此类实施方案中,可使得查询性能可预测和一致的,而不需要在备份操作或重新镜像期间冻结IO流量。反而,存储层可管理剥离、镜像和热管理,将这些责任从数据库层或管理员移除。
如本文所述,在被确认返回数据库层之前,可使得在存储层中的所有写入在持久介质上耐用。这可阻止在大规模电力事件上的逻辑破坏,并且在此类情况下可移除从备份复原的需要。在一些实施方案中,需要从备份复原的唯一时间可能为响应于顾客错误(例如,表格的意外删除,或类似的)。
在一些实施方案中,由于复制操作包含移动日志记录,并且非数据库,复制的性能影响可能远低于在其他数据库系统中。此外,在可用性区上的写入协调可能在存储层处执行,并且可能不需要使用用于同步复制的保留的数据库备用节点,当与现存的数据库系统比较时这可减少成本。
在各种实施方案中,本文所述的方法可通过硬件和软件的任何结合来实施。例如,在一个实施方案中,所述方法可由包括执行程序指令的一个或多个处理器的计算机系统来实施,所述程序指令存储在连接至处理器的计算机可读存储介质上。程序指令可被配置来实施本文所述的功能(例如,实施数据库服务/系统和/或本文所述的存储服务/系统的各种服务器和其他部件的功能)。
图14为示出根据各种实施方案的被配置来实施本文所述的数据库系统的至少一部分的计算机系统的框图。例如,在不同的实施方案中,计算机系统1400可被配置来实施数据库层的数据库引擎头节点、或独立分布式数据库优化存储系统的多个存储节点中的一个,所述独立分布式数据库优化存储系统存储数据库表格和代表数据库层的客户端的关联元数据。计算机系统1400可能是各种类型的装置中的任何一种,包括但不限于:个人计算机系统、台式电脑、膝上电脑或笔记本电脑、主机计算机系统、手持式计算机、工作站、网络计算机、消费装置、应用服务器、存储装置、电话、移动电话、或大体上任何类型的计算装置。
计算机系统1400包括通过输入/输出(I/O)接口1430连接至系统存储器1420的一个或多个处理器1410(其中的任何一个可包括多个核心,所述多个核心可为单线程的或多线程的)。计算机系统1400还包括耦接到I/O接口1430的网络接口1440。在各种实施方案中,计算机系统1400可为包括一个处理器1410的单一处理器系统,或包括若干处理器1410(例如两个、四个、八个或另一合适数量)的多处理器系统。处理器1410可为能够执行指令的任何处理器。例如,在各种实施方案中,处理器1410可为实施各种指令集架构(ISA)中任何一种架构的通用或嵌入式处理器,所述架构例如x86、PowerPC、SPARC、或MIPS ISA或任何其他合适ISA。在多处理器系统中,每一个处理器1410可通常但不一定实施相同的ISA。计算机系统1400也包括一个或多个网络通信装置(例如,网络接口1440),用于与其他系统和/或部件通过通信网络(例如,因特网、LAN等)通信。例如,在系统1400上执行的客户端应用程序可使用网络接口1440,以便与在单个服务器或一组服务器上执行的服务器应用程序通信,所述一组服务器实施本文所述的数据库系统的一个或多个部件。在另一实例中,在计算机系统1400上执行的服务器应用程序的实例可使用网络接口1440,以便与可能在其他计算机系统(例如,计算机系统1490)上执行的服务器应用程序(或另一服务器应用程序)的其他实例通信。
在所述的实施方案中,计算机系统1400也包括一个或多个持久的存储装置1460和/或一个或多个I/O装置1480。在各种实施方案中,持久存储装置1460可对应于磁盘驱动、磁带驱动、固态存储器、其他大容量存储装置、或任何其他持久存储装置。计算机系统1400(或分布式应用程序或在其上操作的操作系统)可如期望的将指令和/或数据存储在持久存储装置1460中,并且可按需检索存储的指令和/或数据。例如,在一些实施方案中,计算机系统1400可代管存储系统服务器节点,并且持久存储1460可包括附接至那个服务器节点的SSD。
计算机系统1400包括被配置来存储可由处理器1410访问的指令和数据的一个或多个系统存储器1420。在各种实施方案中,系统存储器1420可使用任何合适的存储器技术(例如,高速缓冲存储器、静态随机存取存储器(SRAM)、DRAM、RDRAM、EDO RAM、DDR 10RAM、同步动态RAM(SDRAM)、Rambus RAM、EEPROM、非暂时性/闪存类型的存储器、或任何其他类型的存储器中的一个或多个)来实施。系统存储器1420可包含程序指令1425,所述程序指令1425可由处理器1410执行以便实施本文所述的方法和技术。在各种实施方案中,程序指令1425可能以平台本地二进制、任何解译语言(如JavaTM字节代码)、或以任何其他语言(C/C++、JavaTM等)、或以其任何组合来编码。例如,在所示的实施方案中,程序指令1425包括程序指令,所述程序指令可执行以便实施数据库层的数据库引擎头节点、或独立分布式数据库优化存储系统的多个存储节点中的一个的功能性,所述独立分布式数据库优化存储系统在不同的实施方案中存储数据库表格和代表数据库层的客户端的关联元数据。在一些实施方案中,程序指令1425可实施多个独立客户端、服务器节点、和/或其他部件。
在一些实施方案中,程序指令1425可包括可执行以便实施操作系统(未示出)的指令,所述操作系统可为各种操作系统中的任何一种,如UNIX、LINUX、SolarisTM、MacOSTM、WindowsTM等。程序指令1425中的任何一个或所有可被提供作为可包括具有在其上存储的指令的非暂时性计算机可读存储介质的计算机程序产品、或软件,所述指令可用于编程计算机系统(或其他电子装置)以便根据各种实施方案执行进程。非暂时性的计算机可读的存储介质可包括用于存储机器(例如,计算机)可读的形式(例如软件、处理应用程序)的信息的任何机构。一般来说,非暂时性的计算机可访问的介质可包括计算机可读的存储介质或存储器介质,例如磁性介质或光学介质,例如经由I/O接口1430连接至计算机系统1400的磁盘或DVD/CD-ROM。非暂时性计算机可读存储介质还可以包括可作为系统存储器1420或另一类型的存储器被包括在计算机系统1400的一些实施方案中的任何易失性或非易失性介质,如RAM(例如,SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等。在其他实施方案中,程序指令可使用通过通信介质(如网络链接和/或无线链接)传达的光学、声学或其他形式的传播信号(例如,载波、红外线信号、数字信号等)来通信,如可通过网络接口1440执行的。
在一些实施方案中,系统存储器1420可包括可如本文所述配置的数据存储1445。例如,在不同时间和在各种实施方案中,如本文描述成由数据库层(例如,在数据库引擎头节点上)存储的信息(如事务日志、撤销日志、高速缓存的数据页面、或在执行本文所述的数据库层功能中使用的其他信息)可存储在数据存储1445中、或在一个或多个节点上的系统存储器1420的另一部分上、在持久存储1460中、和/或在一个或多个远程存储装置1470上。类似的,在不同时间和在各种实施方案中,如本文描述成由存储层存储的信息(例如,重做日志记录、合并的数据页面、和/或在执行本文所述的分布式存储系统功能中使用的其他信息)可存储在数据存储1445中、或在一个或多个节点上的系统存储器1420的另一部分上、在持久存储1460中、和/或在一个或多个远程存储装置1470上。一般而言,系统存储器1420(例如,系统存储器1420内的数据存储1445)、持久存储1460、和/或远程存储1470可存储数据块、数据块复制品、与数据块和/或它们的状态关联的元数据、数据块配置信息、和/或可在实施本文所述的方法和技术中使用的任何其他信息。
在一个实施方案中,I/O接口1430可被配置来协调处理器1410、系统存储器1420和系统中的任何外围装置之间的I/O流量,包括通过网络接口1440或其他外围接口。在一些实施方案中,I/O接口1430可执行任何必需协议、时序或其他数据转换以便将来自一个部件(例如,系统存储器1420)的数据信号转换成适合于由另一个部件(例如,处理器1410)使用的格式。在一些实施方案中,I/O接口1430可包括对于通过各种类型的外围总线附接的装置的支持,所述外围总线例如外围组件互连(PCI)总线标准或通用串行总线(USB)标准的变化形式。在一些实施方案中,I/O接口1430的功能可分成两个或更多个单独的部件中,例如北桥和南桥。另外,在一些实施方案中,I/O接口1430的一些或所有功能性,例如至系统存储器1420的接口,可直接并入处理器1410中。
例如,网络接口1440可被配置来允许数据在计算机系统1400与附接至网络的其他装置之间交换,所述其他装置如其他计算机系统1490(其可实施一个或多个存储系统服务器节点、数据库引擎头节点、和/或本文所述的数据库系统的客户端)。此外,网络接口1440可被配置来允许在计算机系统1400与各种I/O装置1450和/或远程存储1470之间的通信。输入/输出装置1450可在一些实施方案中包括一个或多个显示终端、键盘、小键盘、触摸屏、扫描装置、语音或光学识别装置,或适合于由一个或多个计算机系统1400输入或撷取数据的任何其他装置。多个输入/输出装置1450可存在于计算机系统1400中或可分布于计算机系统1400的不同节点上。在一些实施方案中,类似输入/输出装置可与计算机系统1400分开并且可经由有线或无线连接,例如网络接口1440来与包括计算机系统1400的分布式系统的一个或多个节点相互作用。网络接口1440通常可支持一个或多个无线网络协议(例如,Wi-Fi/IEEE 802.11、或另一无线网络标准)。然而,在各个实施方案中,网络接口1440可以支持经由任何合适的有线或无线通用数据网络(例如以太网网络类型)进行通信。另外,网络接口1440可以支持经由电信/电话网络(如模拟语音网络或数字光纤通信网络)、经由存储区域网络(如光纤信道SAN)或经由任何其他合适类型的网络和/或协议进行通信。在各种实施方案中,计算机系统1400可包括多于、少于、或不同于图14所示的那些的部件(例如,显示器、视频卡、音频卡、外围装置、其他网络接口,如ATM接口、以太网接口、帧中继接口等)。
注意本文所述的分布式系统实施方案中的任何一个,或它们的部件中的任何一个,可被实施作为一个或多个网络服务。例如,数据库系统的数据层内的数据库引擎头节点可呈现数据库服务和/或其他类型的数据存储服务,所述数据库服务和/或其他类型的数据存储服务对客户端采用文本所述的分布式存储系统,如网络服务。在一些实施方案中,网络服务可由被设计来支持通过网络的彼此协作的机对机相互作用的软件和/或硬件系统实施。网络服务可具有以机器可处理格式描述的接口,如网络服务描述语言(WSDL)。其他系统可能以由描述网络服务的接口的描述规定的方式与网络服务相互作用。例如,网络服务可限定其他系统可调用的各种操作,并且可限定特定的应用编程接口(API),当请求各种操作时,其他系统可能期望服从所述特定的应用编程接口(API)。
在各种实施方案中,通过使用包括与网络服务请求关联的参数和/或数据的消息,网络服务可被请求或调用。此类消息可根据特定的标记语言(如可延伸标记语言(XML))被格式化,和/或使用协议(简单对象访问协议(SOAP))来封装。为执行网络服务请求,网络服务客户端可装配包括所述请求的消息,以及使用基于因特网的应用层转移协议(如超文本传输协议(HTTP))将所述消息传达至对应于网络服务的可寻址端点(例如,统一资源定位符(URL))。
在一些实施方案中,网络服务可使用表述性状态转移(“RESTful”)技术而不是基于消息的技术来实施。例如,根据RESTful技术实施的网络服务可通过包括在HTTP方法(如PUT、GET或DELETE)内而不是封装在SOAP消息内的参数来调用。
鉴于以下条款,上述实施方案可更好地理解:
1.一种计算系统,其包括:
多个计算节点,其中的每一个包括至少一个处理器和存储器;
其中所述多个计算节点中的一个或多个被配置来实施数据库服务,并且其中所述数据库服务包括数据库引擎头节点;
其中所述多个计算节点中的两个或更多的其他节点被配置来实施分布式存储服务的服务器节点,所述分布式存储服务存储数据库表格的部分作为在一个或多个存储装置上的各自数据页面;
其中所述数据库引擎头节点被配置来:
从所述数据库服务的客户端接收指向数据库表格中的给定数据记录的写入请求,其中所述写入请求指定将对所述给定数据记录进行的修改;
产生代表将对所述给定数据记录进行的所述修改的重做日志记录;
将所述重做日志记录,但非包括所述给定数据记录的数据页面,发送至存储包括所述给定数据记录的版本的所述数据页面的所述分布式存储服务的特定服务器节点;
其中所述分布式存储服务的所述特定服务器节点被配置来:
从所述数据库引擎头节点接收所述重做日志记录;
将所述重做日志记录写入至一个或多个存储装置;
将所述重做日志记录被写入的确认返回至所述数据库引擎头节点;以及
在返回所述确认之后:
产生包括所述给定数据记录的当前版本的所述数据页面,其中为产生所述当前版本的所述数据页面,所述分布式存储服务的所述特定服务器节点被配置来将所述所接收的重做日志记录和代表对所述数据页面的修改的一个或多个其他重做日志记录应用至先前存储版本的所述数据页面;以及
将所述当前版本的所述数据页面写入至一个或多个存储装置。
2.如条款1所述的计算系统,
其中所述数据库引擎头节点被进一步配置来:
从数据库客户端接收对读取包括所述给定数据记录的所述数据页面的请求;以及
响应于接收对读取所述数据页面的所述请求,将用于当前版本的所述数据页面的请求发送至所述分布式存储服务的所述特定服务器节点。
3.如条款2所述的计算系统,
其中所述分布式存储服务的所述特定服务器节点被进一步配置来:
从所述数据库引擎头节点接收用于包括所述给定数据记录的所述当前版本的所述数据页面的所述请求;以及
响应于接收用于所述当前版本的所述数据页面的所述请求,将所述当前版本的所述数据页面返回至所述数据库引擎头节点。
4.如条款3所述的计算系统,其中响应于接收用于所述当前版本的所述数据页面的所述请求,产生所述当前版本的所述数据页面被执行。
5.如条款1所述的计算系统,
其中所述数据库引擎头节点包括用于所述分布式存储系统的客户端侧驱动器;以及
其中为将所述重做日志记录发送至所述分布式存储系统的所述特定服务器节点,所述客户端侧驱动器被配置来:
确定存储包括所述给定数据记录的版本的所述数据页面的所述分布式存储服务的所述特定服务器节点;以及
将所述重做日志记录发送至代表所述数据库服务的所述分布式存储系统的所述特定服务器节点。
6.一种系统,其包括:
一个或多个计算节点,其中的每一个包括至少一个处理器和存储器,其中所述一个或多个计算节点被配置来共同实施数据库服务,并且其中所述数据库服务包括数据库引擎头节点和针对分布式存储系统的接口;
其中所述数据库引擎头节点被配置来:
从所述数据库服务的客户端接收指向数据库表格中的给定数据记录的写入请求,其中所述写入请求指定将对所述给定数据记录进行的修改;
产生代表将对所述给定数据记录进行的所述修改的重做日志记录;
将所述重做日志记录,但非包括所述给定数据记录的数据页面,通过所述接口发送至存储包括所述给定数据记录的版本的所述数据页面的所述分布式存储服务的特定服务器节点;
通过所述接口接收所述重做日志记录已经被写入至所述分布式存储服务的确认;以及
将指示所述请求的写入已被执行的响应返回至所述数据库客户端。
7.如条款6所述的系统,其中所述数据库引擎头节点被进一步配置来:
从所述数据库服务的客户端接收对读取包括所述给定数据记录的所述数据页面的请求;以及
响应于接收对读取所述数据页面的所述请求:
通过所述接口将用于当前版本的所述数据页面的请求发送至所述分布式存储服务的所述特定服务器节点;
通过所述接口接收所述当前版本的所述数据页面;以及
将所述当前版本的所述数据页面返回至从其接收对读取所述数据页面的所述请求的所述客户端。
8.如条款7所述的系统,
其中所述数据库引擎头节点包括存储最近访问的数据页面的高速缓冲存储器;
其中,响应于确定当前版本的所述数据页面不存在于所述高速缓冲存储器中,所述数据库引擎头节点被配置来将用于所述当前版本的所述数据页面的所述请求发送至所述特定服务器节点。
9.如条款6所述的系统,
其中所述数据库引擎头节点包括存储最近访问的数据页面的高速缓冲存储器;
其中所述高速缓冲存储器存储包括所述给定数据记录的所述数据页面的副本;以及
其中所述数据库引擎头节点被进一步配置来将在所述写入请求中指定的所述修改应用至所述数据页面的所述高速缓存的副本中的所述给定数据记录。
10.如条款6所述的系统,其中所述数据库引擎头节点被进一步配置来:
在发送所述重做日志记录之前,确定所述分布式存储服务的所述特定服务器节点,所述分布式存储服务存储包括所述给定数据记录的版本的所述数据页面,其中确定所述特定服务器节点通过针对所述分布式存储系统的所述接口来执行。
11.如条款6所述的系统,其中所述数据库引擎头节点被进一步配置来:
从所述数据库服务的一个或多个客户端接收指向所述数据库表格的两个或更多的附加写入请求;以及
服务所述两个或更多的附加写入请求,其中服务所述两个或更多的附加写入请求包括施行把所述数据库表格作为目标的事务的原子性、隔离和一致性特性。
12.一种系统,其包括:
一个或多个计算节点,其中的每一个包括至少一个处理器和存储器,其中所述一个或多个计算节点被配置来共同实施分布式存储服务,所述分布式存储服务在代表所述分布式存储服务的客户端的一个或多个存储装置上存储数据块;
其中所述一个或多个计算节点中的给定的一个被配置来:
从所述客户端接收用于在所述给定计算节点上存储的特定数据块的更新记录,其中所述更新记录指定将对所述特定数据块进行的修改;
将所述更新记录写入至所述一个或多个存储装置中的一个或多个;以及
将所述更新记录被写入的确认返回至所述客户端,而不用等待当前版本的所述特定数据块产生或等待在所述更新记录中指定的所述修改被应用至所述特定数据块。
13.如条款12所述的系统,其中在返回所述确认之后,所述一个或多个计算节点中的所述给定的一个被进一步配置来:
取决于所述更新记录产生当前版本的所述特定数据块;以及
将所述当前版本的所述特定数据块写入至所述一个或多个存储装置中的一个或多个。
14.如条款13所述的系统,其中为产生所述当前版本的所述特定数据块,所述给定计算节点被配置来将所述更新记录应用至先前存储版本的所述特定数据块。
15.如条款14所述的系统,其中为产生所述当前版本的所述特定数据块,所述给定计算节点被进一步配置,以便将代表对所述特定数据块的修改的一个或多个其他更新记录应用至所述先前存储版本的所述特定数据块,所述一个或多个其他更新记录自从所述先前存储版本的所述特定数据块被写入后被接收。
16.如条款13所述的系统,其中为产生所述当前版本的所述特定数据块,所述给定计算节点被配置来执行后台处理,以便将所述更新记录和一个或多个其他更新记录应用至先前存储版本的所述特定数据块,同时前台进程接收把所述分布式存储服务存储的数据块作为目标的读取和写入请求。
17.如条款13所述的系统,
其中所述一个或多个计算节点中的所述给定的一个被进一步配置来从所述客户端接收把所述数据块作为目标的读取请求;以及
其中响应于接收所述读取请求,产生所述当前版本的所述特定数据块被执行。
18.如条款12所述的系统,
其中所述一个或多个计算节点中的另一个存储所述特定数据块;以及
其中所述一个或多个计算节点中的所述另一个被配置来:
从所述客户端接收用于所述特定数据块的所述更新记录;
将所述更新记录写入至所述一个或多个存储装置中的另一个;
将所述更新记录被写入的另一确认返回至所述客户端;以及
在返回所述另一确认之后:
产生当前版本的所述特定数据块,其中为产生所述当前版本的所述特定数据块,所述给定计算节点被配置来将所述所接收的更新记录应用至先前存储版本的所述特定数据块;以及
将所述当前版本的所述特定数据块写入至所述一个或多个存储装置中的另一个。
19.一种存储程序指令的非暂时性计算机可读存储介质,所述程序指令在一个或多个计算机上执行时致使所述一个或多个计算机执行以下操作:
接收包括把存储在分布式存储系统中的数据块作为目标的写入请求的查询,其中所述写入请求指定对所述数据块进行的修改;
产生代表将对所述数据块进行的所述修改的重做日志记录;
确定存储所述数据块的在所述分布式存储系统中的节点;
将所述重做日志记录,但非所述数据块的副本,发送至所述分布式存储系统中的所述确定的节点;以及
从所述分布式存储系统中的所述确定的节点接收所述重做日志记录已被写入至所述确定的节点上的存储装置的确认。
20.如条款19所述的非暂时性计算机可读存储介质,其中当在所述一个或多个计算机上执行时,所述程序指令进一步致使所述一个或多个计算机在所述产生重做日志前执行以下操作:
解析所述查询;以及
产生查询执行计划。
21.如条款19所述的非暂时性计算机可读存储介质,其中当在所述一个或多个计算机上执行时,所述程序指令进一步致使所述一个或多个计算机执行以下操作:
确定存储所述数据块的在所述分布式存储系统中的一个或多个其他节点,其中所述一个或多个其他节点为与所述确定的节点相同的保护组的一部分;以及
将所述重做日志记录,但非所述数据块的副本,发送至所述分布式存储系统中的所述一个或多个其他节点。
22.如条款21所述的非暂时性计算机可读存储介质,其中当在所述一个或多个计算机上执行时,所述程序指令进一步致使所述一个或多个计算机执行以下操作:
从所述保护组中的法定数目的节点接收所述重做日志记录已经被写入至所述法定数目的节点中的每个所述节点上的存储装置的确认;以及
响应于从所述法定数目的节点接收确认,将指示所述写入请求已经被提交的所述查询响应返回至从其接收所述查询的客户端。
23.如条款19所述的非暂时性计算机可读存储介质,其中从数据库服务接收所述查询。
24.一种存储程序指令的非暂时性计算机可读存储介质,所述程序指令在一个或多个计算机上执行时致使所述一个或多个计算机执行以下操作:
将包括数据库表格的数据记录的多个数据页面存储在一个或多个存储系统服务器节点上,每个节点包括一个或多个存储装置;
接收指向特定数据页面的重做日志记录;
将所述重做日志记录存储在所述存储装置中的一个或多个上;
确定合并操作被批准用于所述特定数据页面;
响应于所述确定:
执行用于所述特定数据页面的合并操作,其中执行所述合并操作包括将所述重做日志记录和一个或多个其他重做日志记录应用至先前产生的版本的所述特定数据页面,以便产生当前版本的所述特定数据页面;以及
将所述当前版本的所述特定数据页面存储至所述存储装置中的一个或多个。
25.如条款24所述的非暂时性计算机可读存储介质,其中当在所述一个或多个计算机上执行时,所述程序指令进一步致使所述一个或多个计算机执行以下操作:
接收指向所述特定数据页面的读取请求;以及
响应于接收所述读取请求,返回所述当前版本的所述特定数据页面。
26.如条款24所述的非暂时性计算机可读存储介质,其中合并操作被批准的所述确定包括确定指向所述特定数据页面的重做日志记录的数目超过用于合并操作的预定阈值,所述重做日志记录已被接收但还未被应用至所述特定数据页面。
27.如条款24所述的非暂时性计算机可读存储介质,其中合并操作被批准的所述确定包括确定节点或存储装置已经失效。
28.如条款24所述的非暂时性计算机可读存储介质,其中当在所述一个或多个计算机上执行时,所述程序指令进一步致使所述一个或多个计算机执行以下操作:
接收指向力另一数据页面的另一重做日志记录;
将所述另一重做日志记录存储在所述存储装置中的一个或多个上;
确定合并操作未被批准用于所述另一数据页面;以及
响应于所述确定,抑制执行用于另一数据页面的合并操作。
如在图中所示和本文所描述的各种方法表示方法的示例性实施方案。所述方法可在软件中、在硬件中、或在其组合中手动实施。任何方法的顺序可以改变,并且各个元素可以被添加、重新排序、组合、省略、修改等。
尽管已相当详细地描述了以上实施方案,但一旦完全了解以上公开内容,各种变化和修改对所属领域的技术人员将变为显而易见。旨在以下权利要求被解释成包含所有这些修改和变化,并且相应地,以上描述应视为具有说明性而非限制性意义。

Claims (15)

1.一种系统,包括:
一个或多个计算节点,其中的每一个包括至少一个处理器和存储器,其中所述一个或多个计算节点被配置为共同实施在一个或多个存储设备上存储数据块的分布式数据存储;
其中所述一个或多个计算节点中的一个计算节点被配置为:
接收以所述数据块中的一个为目标的读取请求;
识别存储在该计算节点上的指定要对目标数据块进行的修改的一个或多个更新记录;
把所述一个或多个更新记录应用于所述目标数据块的先前存储版本以生成所述目标数据块的当前版本;以及
响应于所述读取请求而返回所述目标数据块的当前版本。
2.如权利要求1所述的系统,其中所述一个计算节点还被配置为把所述目标数据块的当前版本写入到所述存储设备中的一个。
3.如权利要求1或2所述的系统,其中所述一个计算节点还被配置为:
从所述分布式数据存储的客户端接收所述一个或多个更新记录;以及
把所述一个或多个更新记录写入到所述一个或多个存储设备。
4.如权利要求3所述的系统,其中所述一个计算节点还被配置为向所述分布式数据存储的所述客户端返回所述一个或多个更新记录被写入到所述一个或多个存储设备的确认。
5.如权利要求1所述的系统,其中所述一个计算节点还被配置为:
接收以所述数据块中的一个不同数据块为目标的另一读取请求;
确定所述不同数据块的当前版本被存储在该计算节点上;
读取所述不同数据块的当前版本;以及
响应于所述另一读取请求而返回所述不同数据块的当前版本。
6.如权利要求5所述的系统,其中所述一个计算节点还被配置为在接收到以所述不同数据块为目标的所述另一读取请求之前生成所述不同数据块的当前版本。
7.如权利要求1所述的系统,其中所述数据块存储为基于网络的数据库服务存储的数据,其中所述一个或多个更新记录是从数据库服务的数据库头节点接收的一个或多个重做日志记录,所述数据库服务向数据库的客户端提供对数据库的访问。
8.一种方法,包括:
由实施分布式数据存储的多个节点中的第一节点接收以多个数据块中的一个为目标的读取请求;
由第一节点识别存储在第一节点上的指定要对目标数据块进行的修改的一个或多个更新记录;
由第一节点把所述一个或多个更新记录应用于所述目标数据块的先前存储版本以生成所述目标数据块的当前版本;以及
响应于所述读取请求而返回所述目标数据块的当前版本。
9.如权利要求8所述的方法,还包括把所述目标数据块的当前版本写入到用于第一节点的一个或多个存储设备。
10.如权利要求8或9所述的方法,还包括:
从所述分布式数据存储的客户端接收所述一个或多个更新记录;以及
把所述一个或多个更新记录写入到所述一个或多个存储设备。
11.如权利要求10所述的方法,还包括向所述分布式数据存储的所述客户端返回所述一个或多个更新记录被写入到所述一个或多个存储设备的确认。
12.如权利要求8所述的方法,还包括:
接收以所述数据块中的一个不同数据块为目标的另一读取请求;
确定所述不同数据块的当前版本被存储在该计算节点上;
读取所述不同数据块的当前版本;以及
响应于所述另一读取请求而返回所述不同数据块的当前版本。
13.如权利要求12所述的方法,还包括在接收到以所述不同数据块为目标的所述另一读取请求之前生成所述不同数据块的当前版本。
14.如权利要求8所述的方法,其中所述数据块存储为基于网络的数据库服务存储的数据,其中所述一个或多个更新记录是从数据库服务的数据库头节点接收的一个或多个重做日志记录,所述数据库服务向数据库的客户端提供对数据库的访问。
15.一种系统,包括:
一个或多个处理器;和
一个或多个存储器,所述一个或多个存储器存储程序指令,其中所述程序指令在由所述一个或多个处理器执行时实现日志结构化的存储节点,其中所述日志结构化的存储节点被配置为:
存储多个日志记录,其中所述多个日志记录中的每个描述在所述日志结构化的存储处存储的多个数据页中的数据页的相应改变;以及
接收以所述数据页中的一个为目标的读取请求;
响应于所述读取请求的接收:
把所述日志记录中的一个或多个应用于目标数据页的先前存储版本以生成所述目标数据页的当前版本;以及
响应于所述读取请求而返回所述目标数据页的当前版本。
CN201910182226.0A 2013-03-15 2014-03-11 具有数据库引擎和独立分布式存储服务的数据库系统 Active CN109933597B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910182226.0A CN109933597B (zh) 2013-03-15 2014-03-11 具有数据库引擎和独立分布式存储服务的数据库系统

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201361794572P 2013-03-15 2013-03-15
US61/794,572 2013-03-15
US14/201,493 US9514007B2 (en) 2013-03-15 2014-03-07 Database system with database engine and separate distributed storage service
US14/201,493 2014-03-07
CN201910182226.0A CN109933597B (zh) 2013-03-15 2014-03-11 具有数据库引擎和独立分布式存储服务的数据库系统
CN201480021079.4A CN105122241B (zh) 2013-03-15 2014-03-11 具有数据库引擎和独立分布式存储服务的数据库系统
PCT/US2014/023542 WO2014150538A1 (en) 2013-03-15 2014-03-11 Database system with database engine and separate distributed storage service

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201480021079.4A Division CN105122241B (zh) 2013-03-15 2014-03-11 具有数据库引擎和独立分布式存储服务的数据库系统

Publications (2)

Publication Number Publication Date
CN109933597A true CN109933597A (zh) 2019-06-25
CN109933597B CN109933597B (zh) 2024-01-30

Family

ID=51532995

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201480021079.4A Active CN105122241B (zh) 2013-03-15 2014-03-11 具有数据库引擎和独立分布式存储服务的数据库系统
CN201910182226.0A Active CN109933597B (zh) 2013-03-15 2014-03-11 具有数据库引擎和独立分布式存储服务的数据库系统

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201480021079.4A Active CN105122241B (zh) 2013-03-15 2014-03-11 具有数据库引擎和独立分布式存储服务的数据库系统

Country Status (8)

Country Link
US (4) US9514007B2 (zh)
EP (2) EP2973054B1 (zh)
JP (2) JP6346937B2 (zh)
KR (2) KR101764897B1 (zh)
CN (2) CN105122241B (zh)
AU (2) AU2014237083B2 (zh)
CA (2) CA2906415C (zh)
WO (1) WO2014150538A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111290714A (zh) * 2020-02-06 2020-06-16 北京百度网讯科技有限公司 数据读取方法和装置
CN111930692A (zh) * 2020-05-28 2020-11-13 武汉达梦数据库有限公司 一种基于日志解析同步的事务合并执行方法及装置
CN116414579A (zh) * 2023-02-21 2023-07-11 北京友友天宇系统技术有限公司 基于分布式群组通信实现的多副本间数据一致性的方法
WO2024051229A1 (zh) * 2022-09-05 2024-03-14 华为云计算技术有限公司 一种数据存储方法、装置及相关设备

Families Citing this family (128)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10614098B2 (en) 2010-12-23 2020-04-07 Mongodb, Inc. System and method for determining consensus within a distributed database
US11544288B2 (en) 2010-12-23 2023-01-03 Mongodb, Inc. Systems and methods for managing distributed database deployments
US10366100B2 (en) 2012-07-26 2019-07-30 Mongodb, Inc. Aggregation framework system architecture and method
US10262050B2 (en) 2015-09-25 2019-04-16 Mongodb, Inc. Distributed database systems and methods with pluggable storage engines
US10346430B2 (en) 2010-12-23 2019-07-09 Mongodb, Inc. System and method for determining consensus within a distributed database
US11615115B2 (en) 2010-12-23 2023-03-28 Mongodb, Inc. Systems and methods for managing distributed database deployments
US9881034B2 (en) 2015-12-15 2018-01-30 Mongodb, Inc. Systems and methods for automating management of distributed databases
US9805108B2 (en) 2010-12-23 2017-10-31 Mongodb, Inc. Large distributed database clustering systems and methods
US10713280B2 (en) 2010-12-23 2020-07-14 Mongodb, Inc. Systems and methods for managing distributed database deployments
US10997211B2 (en) 2010-12-23 2021-05-04 Mongodb, Inc. Systems and methods for database zone sharding and API integration
US10740353B2 (en) 2010-12-23 2020-08-11 Mongodb, Inc. Systems and methods for managing distributed database deployments
US8996463B2 (en) 2012-07-26 2015-03-31 Mongodb, Inc. Aggregation framework system architecture and method
US8572031B2 (en) 2010-12-23 2013-10-29 Mongodb, Inc. Method and apparatus for maintaining replica sets
US9740762B2 (en) 2011-04-01 2017-08-22 Mongodb, Inc. System and method for optimizing data migration in a partitioned database
US10977277B2 (en) 2010-12-23 2021-04-13 Mongodb, Inc. Systems and methods for database zone sharding and API integration
US10872095B2 (en) 2012-07-26 2020-12-22 Mongodb, Inc. Aggregation framework system architecture and method
US11544284B2 (en) 2012-07-26 2023-01-03 Mongodb, Inc. Aggregation framework system architecture and method
US11403317B2 (en) 2012-07-26 2022-08-02 Mongodb, Inc. Aggregation framework system architecture and method
US9514007B2 (en) 2013-03-15 2016-12-06 Amazon Technologies, Inc. Database system with database engine and separate distributed storage service
CN103729442B (zh) * 2013-12-30 2017-11-24 华为技术有限公司 记录事务日志的方法和数据库引擎
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US11399063B2 (en) * 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US10949401B2 (en) * 2014-06-25 2021-03-16 Vmware, Inc. Data replication in site recovery environment
US9473461B2 (en) * 2014-11-25 2016-10-18 International Business Machines Corporation Transparent tunneling architecture for a secured database
US10884869B2 (en) 2015-04-16 2021-01-05 Nuodb, Inc. Backup and restore in a distributed database utilizing consistent database snapshots
US9916338B2 (en) * 2015-04-24 2018-03-13 International Business Machines Corporation Managing data records
US10282364B2 (en) 2015-04-28 2019-05-07 Microsoft Technology Licensing, Llc. Transactional replicator
US10868665B1 (en) * 2015-05-18 2020-12-15 Amazon Technologies, Inc. Mitigating timing side-channel attacks by obscuring accesses to sensitive data
US10311229B1 (en) 2015-05-18 2019-06-04 Amazon Technologies, Inc. Mitigating timing side-channel attacks by obscuring alternatives in code
US10061852B1 (en) * 2015-05-19 2018-08-28 Amazon Technologies, Inc. Transparent proxy tunnel caching for database access
US10067969B2 (en) 2015-05-29 2018-09-04 Nuodb, Inc. Table partitioning within distributed database systems
US10180954B2 (en) 2015-05-29 2019-01-15 Nuodb, Inc. Disconnected operation within distributed database systems
US10496669B2 (en) 2015-07-02 2019-12-03 Mongodb, Inc. System and method for augmenting consensus election in a distributed database
US10423626B2 (en) 2015-09-25 2019-09-24 Mongodb, Inc. Systems and methods for data conversion and comparison
US10394822B2 (en) 2015-09-25 2019-08-27 Mongodb, Inc. Systems and methods for data conversion and comparison
US10846411B2 (en) 2015-09-25 2020-11-24 Mongodb, Inc. Distributed database systems and methods with encrypted storage engines
US10673623B2 (en) 2015-09-25 2020-06-02 Mongodb, Inc. Systems and methods for hierarchical key management in encrypted distributed databases
CN106855822A (zh) * 2015-12-08 2017-06-16 阿里巴巴集团控股有限公司 用于分布式事务处理的方法及设备
CN108701071B (zh) * 2015-12-16 2021-11-16 起元技术有限责任公司 高吞吐量、高可靠性的数据处理系统
US10152527B1 (en) * 2015-12-28 2018-12-11 EMC IP Holding Company LLC Increment resynchronization in hash-based replication
CN105760452B (zh) * 2016-02-04 2020-03-10 深圳市嘉力达实业有限公司 一种高并发海量数据的采集、处理和存储的方法及系统
JP6575675B2 (ja) * 2016-03-25 2019-09-18 富士通株式会社 中継装置、中継方法及び中継プログラム
US10387248B2 (en) 2016-03-29 2019-08-20 International Business Machines Corporation Allocating data for storage by utilizing a location-based hierarchy in a dispersed storage network
US11349922B2 (en) 2016-04-06 2022-05-31 Marvell Asia Pte Ltd. System and method for a database proxy
US10237350B2 (en) * 2016-04-06 2019-03-19 Reniac, Inc. System and method for a database proxy
US11157517B2 (en) * 2016-04-18 2021-10-26 Amazon Technologies, Inc. Versioned hierarchical data structures in a distributed data store
CN105897915B (zh) * 2016-05-23 2022-09-09 珠海格力电器股份有限公司 一种数据接收服务器、及数据处理系统
US10671496B2 (en) 2016-05-31 2020-06-02 Mongodb, Inc. Method and apparatus for reading and writing committed data
US10776220B2 (en) 2016-06-27 2020-09-15 Mongodb, Inc. Systems and methods for monitoring distributed database deployments
CN106897338A (zh) * 2016-07-04 2017-06-27 阿里巴巴集团控股有限公司 一种针对数据库的数据修改请求处理方法及装置
US10366106B2 (en) * 2016-12-09 2019-07-30 Sap Se Quorum-based replication of data records
US10783136B1 (en) * 2017-02-28 2020-09-22 Virtuozzo International Gmbh Management of garbage data in distributed systems
US10769034B2 (en) * 2017-03-07 2020-09-08 Sap Se Caching DML statement context during asynchronous database system replication
CN106951488B (zh) * 2017-03-14 2021-03-12 海尔优家智能科技(北京)有限公司 一种日志记录方法和装置
US10671639B1 (en) 2017-03-30 2020-06-02 Amazon Technologies, Inc. Selectively replicating changes to hierarchial data structures
US10860550B1 (en) 2017-03-30 2020-12-08 Amazon Technologies, Inc. Versioning schemas for hierarchical data structures
US10423342B1 (en) 2017-03-30 2019-09-24 Amazon Technologies, Inc. Scaling events for hosting hierarchical data structures
JP6896879B2 (ja) 2017-04-11 2021-06-30 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. システム、方法、可読媒体
US10909143B1 (en) * 2017-04-14 2021-02-02 Amazon Technologies, Inc. Shared pages for database copies
US10866868B2 (en) 2017-06-20 2020-12-15 Mongodb, Inc. Systems and methods for optimization of database operations
US11016990B2 (en) * 2017-08-02 2021-05-25 Salesforce.Com, Inc. Fencing out nodes in a distributed clustered system
CN110019066A (zh) * 2017-09-21 2019-07-16 阿里巴巴集团控股有限公司 数据库处理方法及装置、系统
CN110069505B (zh) * 2017-09-21 2021-12-24 张锐 离线数据处理方法及离线数据更新装置
US11914571B1 (en) 2017-11-22 2024-02-27 Amazon Technologies, Inc. Optimistic concurrency for a multi-writer database
US10725983B2 (en) 2017-12-29 2020-07-28 Huawei Technologies Co., Ltd. Systems and methods for database management using append-only storage devices
US10902016B2 (en) 2018-02-12 2021-01-26 Artem Shamsutdinov Autonomous interdependent repositories
CN110362547B (zh) * 2018-04-02 2023-10-03 杭州阿里巴巴智融数字技术有限公司 日志文件的编码、解析、存储方法和装置
CN108897634A (zh) * 2018-06-13 2018-11-27 郑州云海信息技术有限公司 一种linux操作系统日志容错方法及系统
US10764291B2 (en) 2018-09-04 2020-09-01 International Business Machines Corporation Controlling access between nodes by a key server
US11038698B2 (en) 2018-09-04 2021-06-15 International Business Machines Corporation Securing a path at a selected node
US10833860B2 (en) 2018-09-04 2020-11-10 International Business Machines Corporation Shared key processing by a host to secure links
US10833856B2 (en) 2018-09-04 2020-11-10 International Business Machines Corporation Automatic re-authentication of links using a key server
US11025413B2 (en) 2018-09-04 2021-06-01 International Business Machines Corporation Securing a storage network using key server authentication
US11038671B2 (en) 2018-09-04 2021-06-15 International Business Machines Corporation Shared key processing by a storage device to secure links
US11088829B2 (en) 2018-09-04 2021-08-10 International Business Machines Corporation Securing a path at a node
US10877868B2 (en) 2018-09-21 2020-12-29 Microsoft Technology Licensing, Llc Applying a log to storage segments
US11455292B2 (en) * 2018-09-21 2022-09-27 Microsoft Technology Licensing, Llc Brokering persisted and unpersisted log records
US11044312B2 (en) 2018-09-21 2021-06-22 Microsoft Technology Licensing, Llc Storage segment server covered cache
US10802926B2 (en) * 2018-09-21 2020-10-13 Microsoft Technology Licensing, Llc Accessing prior storage segment server state
CN110955653A (zh) * 2018-09-26 2020-04-03 阿里巴巴集团控股有限公司 一种数据页面的处理方法、装置、设备及计算机系统
GB201816837D0 (en) * 2018-10-16 2018-11-28 Microsoft Technology Licensing Llc Database management
US11106541B2 (en) * 2019-03-15 2021-08-31 Huawei Technologies Co., Ltd System and method for replicating data in distributed database systems
US11176004B2 (en) * 2019-04-01 2021-11-16 Sap Se Test continuous log replay
CN111797062B (zh) * 2019-04-09 2023-10-27 华为云计算技术有限公司 数据处理方法、装置和分布式数据库系统
CN110134665B (zh) * 2019-04-17 2021-05-25 北京百度网讯科技有限公司 基于流量镜像的数据库自学习优化方法及装置
US11100109B2 (en) 2019-05-03 2021-08-24 Microsoft Technology Licensing, Llc Querying data in a distributed storage system
CN110188140A (zh) * 2019-05-09 2019-08-30 广州视源电子科技股份有限公司 数据拉取方法、装置、存储介质和计算机设备
CN110213357B (zh) * 2019-05-22 2022-04-22 深圳壹账通智能科技有限公司 业务数据回退方法、装置、计算机设备和存储介质
US11288123B2 (en) * 2019-07-31 2022-03-29 Stratus Technologies Ireland Ltd. Systems and methods for applying checkpoints on a secondary computer in parallel with transmission
WO2019233500A2 (en) 2019-09-12 2019-12-12 Alibaba Group Holding Limited Log-structured storage systems
WO2019228571A2 (en) 2019-09-12 2019-12-05 Alibaba Group Holding Limited Log-structured storage systems
SG11202002732TA (en) 2019-09-12 2020-04-29 Alibaba Group Holding Ltd Log-structured storage systems
SG11202002363QA (en) 2019-09-12 2020-04-29 Alibaba Group Holding Ltd Log-structured storage systems
EP3695328A4 (en) 2019-09-12 2020-12-09 Alibaba Group Holding Limited NEWSPAPER STRUCTURE STORAGE SYSTEMS
EP3673376B1 (en) 2019-09-12 2022-11-30 Advanced New Technologies Co., Ltd. Log-structured storage systems
SG11202002588RA (en) * 2019-09-12 2020-04-29 Alibaba Group Holding Ltd Log-structured storage systems
US10942852B1 (en) 2019-09-12 2021-03-09 Advanced New Technologies Co., Ltd. Log-structured storage systems
SG11202002775RA (en) 2019-09-12 2020-04-29 Alibaba Group Holding Ltd Log-structured storage systems
CN112925473A (zh) * 2019-12-06 2021-06-08 阿里巴巴集团控股有限公司 数据存储方法、装置、设备及存储介质
CN111324665B (zh) * 2020-01-23 2023-06-27 阿里巴巴集团控股有限公司 一种日志回放方法及装置
US11966400B2 (en) 2020-02-18 2024-04-23 Sony Group Corporation Common database architecture to support largescale transactions and node archival on a MaaS platform
CN113010480B (zh) * 2020-03-26 2024-03-19 腾讯科技(深圳)有限公司 日志处理方法、装置、电子设备及计算机可读存储介质
US11561864B1 (en) 2020-03-26 2023-01-24 Amazon Technologies, Inc. Creating database clones at a specified point-in-time
CN111444147B (zh) * 2020-03-30 2023-05-12 上海达梦数据库有限公司 一种数据页创建方法、装置、终端设备及存储介质
US11341163B1 (en) 2020-03-30 2022-05-24 Amazon Technologies, Inc. Multi-level replication filtering for a distributed database
US11429595B2 (en) 2020-04-01 2022-08-30 Marvell Asia Pte Ltd. Persistence of write requests in a database proxy
US11625370B2 (en) 2020-04-07 2023-04-11 Vmware, Inc. Techniques for reducing data log recovery time and metadata write amplification
US11334277B2 (en) * 2020-04-07 2022-05-17 Vmware Inc. Issuing efficient writes to erasure coded objects in a distributed storage system with two tiers of storage
US11334276B2 (en) * 2020-04-07 2022-05-17 Vmware Inc. Using segment pre-allocation to support large segments
US11467746B2 (en) 2020-04-07 2022-10-11 Vmware, Inc. Issuing efficient writes to erasure coded objects in a distributed storage system via adaptive logging
US11556545B2 (en) * 2020-07-24 2023-01-17 Sap Se Disk based hybrid transactional analytical processing system
CN111880969A (zh) * 2020-07-30 2020-11-03 上海达梦数据库有限公司 存储节点恢复方法、装置、设备和存储介质
CN112084265A (zh) * 2020-09-11 2020-12-15 北京金山云网络技术有限公司 一种日志数据同步方法、装置、服务器及存储介质
CN112231119B (zh) * 2020-10-16 2024-01-30 广西科技大学 一种基于分布式的云管理系统数据中台服务设计方法
US11455219B2 (en) 2020-10-22 2022-09-27 Oracle International Corporation High availability and automated recovery in scale-out distributed database system
US11593352B2 (en) 2020-11-23 2023-02-28 Sap Se Cloud-native object storage for page-based relational database
EP4002148A1 (en) * 2020-11-23 2022-05-25 Sap Se Cloud-native object storage for page-based relational database
CN112346913B (zh) * 2020-12-01 2024-03-15 上海达梦数据库有限公司 数据恢复方法、装置、设备及存储介质
US11474719B1 (en) 2021-05-13 2022-10-18 Vmware, Inc. Combining the metadata and data address spaces of a distributed storage object via a composite object configuration tree
CN113282564B (zh) * 2021-07-24 2022-01-04 阿里云计算有限公司 数据存储方法、系统、节点和存储介质
CN113630273A (zh) * 2021-08-06 2021-11-09 百果园技术(新加坡)有限公司 账号注销系统、方法、设备及存储介质
US11853605B2 (en) 2021-09-17 2023-12-26 Micron Technology, Inc. Database persistence
CN113641424B (zh) * 2021-10-13 2022-02-01 北京安华金和科技有限公司 一种数据库操作的处理方法和系统
CN115118583B (zh) * 2022-06-29 2024-03-26 北京奇艺世纪科技有限公司 日志查询方法、装置、电子设备及计算机可读存储设备
CN117194566B (zh) * 2023-08-21 2024-04-19 泽拓科技(深圳)有限责任公司 多存储引擎数据复制方法、系统、计算机设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1653451A (zh) * 2002-05-10 2005-08-10 甲骨文国际公司 提供数据项的可用版本
CN101154234A (zh) * 2006-09-26 2008-04-02 国际商业机器公司 用于管理数据版本的系统和方法
CN102419764A (zh) * 2010-10-20 2012-04-18 微软公司 带有多版本化的数据库系统的分布式事务管理
US8266122B1 (en) * 2007-12-19 2012-09-11 Amazon Technologies, Inc. System and method for versioning data in a distributed data store

Family Cites Families (144)

* Cited by examiner, † Cited by third party
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
US5974425A (en) * 1996-12-17 1999-10-26 Oracle Corporation Method and apparatus for reapplying changes to a database
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
US6233585B1 (en) 1998-03-12 2001-05-15 Crossworlds Software, Inc. Isolation levels and compensating transactions in an information system
US6185577B1 (en) * 1998-06-23 2001-02-06 Oracle Corporation Method and apparatus for incremental undo
US9239763B2 (en) * 2012-09-28 2016-01-19 Oracle International Corporation Container database
JP3763992B2 (ja) 1999-03-30 2006-04-05 富士通株式会社 データ処理装置及び記録媒体
US6615219B1 (en) 1999-12-29 2003-09-02 Unisys Corporation Database management system and method for databases having large objects
US6631374B1 (en) 2000-09-29 2003-10-07 Oracle Corp. System and method for providing fine-grained temporal database access
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
JP2006516341A (ja) * 2003-01-17 2006-06-29 タシット ネットワークス,インク. 分散ファイルシステムを伴うストレージキャッシングの使用方法およびシステム
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 計算機システムおよびプログラム
US8799225B2 (en) 2003-11-05 2014-08-05 Lumigent Technologies, Inc. Process and system for auditing database activity
US7299378B2 (en) * 2004-01-15 2007-11-20 Oracle International Corporation Geographically distributed clusters
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
US7461101B2 (en) * 2004-07-13 2008-12-02 International Business Machines Corporation Method for reducing data loss and unavailability by integrating multiple levels of a storage hierarchy
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
US8688780B2 (en) 2005-09-30 2014-04-01 Rockwell Automation Technologies, Inc. Peer-to-peer exchange of data resources in a control system
EP1952283A4 (en) 2005-10-28 2010-01-06 Goldengate Software Inc DEVICE AND METHOD FOR GENERATING A REAL-TIME DATABASE DUPLICATE
US8156083B2 (en) * 2005-12-01 2012-04-10 Oracle International Corporation Database system that provides for history-enabled tables
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 日本電気株式会社 ストレージシステム及びデータ保護方法とプログラム
US7882064B2 (en) 2006-07-06 2011-02-01 Emc Corporation File system replication
US8069191B2 (en) 2006-07-13 2011-11-29 International Business Machines Corporation Method, an apparatus and a system for managing a snapshot storage pool
US8935206B2 (en) 2007-01-31 2015-01-13 Hewlett-Packard Development Company, L.P. Snapshots in distributed storage systems
US8370715B2 (en) 2007-04-12 2013-02-05 International Business Machines Corporation Error checking addressable blocks in storage
US8086650B1 (en) 2007-06-15 2011-12-27 Ipswitch, Inc. Method for transforming and consolidating fields in log records from logs generated on different operating systems
US8326897B2 (en) 2007-12-19 2012-12-04 International Business Machines Corporation Apparatus and method for managing data storage
EP2079020B1 (en) 2008-01-03 2013-03-20 Accenture Global Services Limited System amd method for automating ETL applications
US7979670B2 (en) 2008-01-24 2011-07-12 Quantum Corporation Methods and systems for vectored data de-duplication
US8296301B2 (en) 2008-01-30 2012-10-23 Commvault Systems, Inc. Systems and methods for probabilistic data classification
US8401994B2 (en) 2009-09-18 2013-03-19 Oracle International Corporation Distributed consistent grid of in-memory database caches
WO2009102425A1 (en) 2008-02-12 2009-08-20 Netapp, Inc. Hybrid media storage system architecture
US7747663B2 (en) 2008-03-05 2010-06-29 Nec Laboratories America, Inc. System and method for content addressable storage
US8229945B2 (en) 2008-03-20 2012-07-24 Schooner Information Technology, Inc. Scalable database management software on a cluster of nodes using a shared-distributed flash memory
US8074014B2 (en) 2008-03-31 2011-12-06 Microsoft Corporation Storage systems using write off-loading
US8266114B2 (en) 2008-09-22 2012-09-11 Riverbed Technology, Inc. Log structured content addressable deduplicating storage
US8341128B1 (en) 2008-05-09 2012-12-25 Workday, Inc. Concurrency control using an effective change stack and tenant-based isolation
US9104662B2 (en) 2008-08-08 2015-08-11 Oracle International Corporation Method and system for implementing parallel transformations of records
US9842004B2 (en) 2008-08-22 2017-12-12 Red Hat, Inc. Adjusting resource usage for cloud-based networks
EP2350837A4 (en) 2008-09-15 2012-10-17 Virsto Software Corp STORAGE MANAGEMENT SYSTEM FOR VIRTUAL MACHINES
US8255373B2 (en) 2008-10-24 2012-08-28 Microsoft Corporation Atomic multiple modification of data in a distributed storage system
US9996572B2 (en) * 2008-10-24 2018-06-12 Microsoft Technology Licensing, Llc Partition management in a partitioned, scalable, and available structured storage
US8229890B2 (en) 2008-12-15 2012-07-24 International Business Machines Corporation Opening document stored at multiple database replicas
US20100274750A1 (en) 2009-04-22 2010-10-28 Microsoft Corporation Data Classification Pipeline Including Automatic Classification Rules
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
US8595191B2 (en) 2009-12-31 2013-11-26 Commvault Systems, Inc. Systems and methods for performing data management operations using snapshots
US8392479B1 (en) 2009-09-14 2013-03-05 Symantec Corporation Method and apparatus for optimizing storage space allocation for computer data
US8255627B2 (en) 2009-10-10 2012-08-28 International Business Machines Corporation Secondary cache for write accumulation and coalescing
US8250213B2 (en) 2009-11-16 2012-08-21 At&T Intellectual Property I, L.P. Methods and apparatus to allocate resources associated with a distributive computing network
US20110145201A1 (en) * 2009-12-11 2011-06-16 Microsoft Corporation Database mirroring
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
US8589361B2 (en) * 2010-08-30 2013-11-19 Oracle International Corporation Reduced disk space standby
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
JP5672491B2 (ja) 2011-03-29 2015-02-18 ソニー株式会社 情報処理装置および方法、並びにログ収集システム
US9098470B2 (en) * 2011-05-23 2015-08-04 Microsoft Technology Licensing, Llc Versioned and hierarchical data structures and distributed transactions
US9519555B2 (en) * 2011-05-23 2016-12-13 Microsoft Technology Licensing, Llc Synchronous replication in a distributed storage environment
US8543538B2 (en) 2011-06-01 2013-09-24 Clustrix, Inc. Systems and methods for redistributing data in a relational database
US8554726B2 (en) 2011-06-01 2013-10-08 Clustrix, Inc. Systems and methods for reslicing data in a relational database
US9348883B2 (en) 2011-06-01 2016-05-24 Clustrix, Inc. Systems and methods for replication replay in a relational database
US8868492B2 (en) * 2011-06-15 2014-10-21 Oracle International Corporation Method for maximizing throughput and minimizing transactions response times on the primary system in the presence of a zero data loss standby replica
JP5405530B2 (ja) * 2011-06-27 2014-02-05 日本電信電話株式会社 分散データストアシステムおよび障害復旧方法
US9294564B2 (en) * 2011-06-30 2016-03-22 Amazon Technologies, Inc. Shadowing storage gateway
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
US8527462B1 (en) * 2012-02-09 2013-09-03 Microsoft Corporation Database point-in-time restore and as-of query
EP2829976A4 (en) * 2012-03-22 2015-11-11 Nec Corp DISTRIBUTED STORAGE SYSTEM, STORAGE CONTROL METHOD, AND PROGRAM
US9171020B2 (en) * 2012-04-30 2015-10-27 Sap Se Deleting records in a multi-level storage architecture
CN102768676B (zh) 2012-06-14 2014-03-12 腾讯科技(深圳)有限公司 一种格式未知文件的处理方法和装置
CN102737131B (zh) * 2012-06-21 2016-03-30 瑞典爱立信有限公司 一种针对数据库重做日志的处理方法及系统
US9229983B2 (en) * 2012-11-30 2016-01-05 Amazon Technologies, Inc. System-wide query optimization
US9304998B2 (en) * 2012-12-19 2016-04-05 Microsoft Technology Licensing, Llc Main-memory database checkpointing
US9514007B2 (en) 2013-03-15 2016-12-06 Amazon Technologies, Inc. Database system with database engine and separate distributed storage service
US9501501B2 (en) 2013-03-15 2016-11-22 Amazon Technologies, Inc. Log record management
US9317213B1 (en) 2013-05-10 2016-04-19 Amazon Technologies, Inc. Efficient storage of variably-sized data objects in a data store
US9208032B1 (en) 2013-05-15 2015-12-08 Amazon Technologies, Inc. Managing contingency capacity of pooled resources in multiple availability zones
US9305056B1 (en) 2013-05-24 2016-04-05 Amazon Technologies, Inc. Results cache invalidation
US9047189B1 (en) 2013-05-28 2015-06-02 Amazon Technologies, Inc. Self-describing data blocks of a minimum atomic write size for a data store
US9507843B1 (en) 2013-09-20 2016-11-29 Amazon Technologies, Inc. Efficient replication of distributed storage changes for read-only nodes of a distributed database
US9460008B1 (en) 2013-09-20 2016-10-04 Amazon Technologies, Inc. Efficient garbage collection for a log-structured data store
US9280591B1 (en) 2013-09-20 2016-03-08 Amazon Technologies, Inc. Efficient replication of system transactions for read-only nodes of a distributed database
US9582556B2 (en) 2013-10-03 2017-02-28 International Business Machines Corporation Automatic generation of an extract, transform, load (ETL) job
US9223843B1 (en) 2013-12-02 2015-12-29 Amazon Technologies, Inc. Optimized log storage for asynchronous log updates
US20150286701A1 (en) 2014-04-04 2015-10-08 Quantum Corporation Data Classification Aware Object Storage
US10803012B1 (en) * 2014-05-09 2020-10-13 Amazon Technologies, Inc. Variable data replication for storage systems implementing quorum-based durability schemes
US9600547B2 (en) 2014-05-30 2017-03-21 International Business Machines Corporation System and method of consuming and integrating with rest-based cloud and enterprise services
US11222036B1 (en) * 2015-12-15 2022-01-11 Amazon Technologies, Inc. Data warehouse access reporting
US10909091B1 (en) * 2016-11-23 2021-02-02 Amazon Technologies, Inc. On-demand data schema modifications
US11210184B1 (en) * 2017-06-07 2021-12-28 Amazon Technologies, Inc. Online restore to a selectable prior state for database engines
US11188501B1 (en) * 2017-08-15 2021-11-30 Amazon Technologies, Inc. Transactional and batch-updated data store search
US11010267B2 (en) * 2017-09-22 2021-05-18 Oracle International Corporation Method and system for automatic maintenance of standby databases for non-logged workloads
US10802766B2 (en) * 2017-09-29 2020-10-13 Oracle International Corporation Database with NVDIMM as persistent storage
US11256695B1 (en) * 2017-11-22 2022-02-22 Amazon Technologies, Inc. Hybrid query execution engine using transaction and analytical engines
US10725983B2 (en) * 2017-12-29 2020-07-28 Huawei Technologies Co., Ltd. Systems and methods for database management using append-only storage devices
US10990571B1 (en) * 2018-01-19 2021-04-27 Amazon Technologies, Inc. Online reordering of database table columns
US11250022B1 (en) * 2020-09-29 2022-02-15 Amazon Technologies, Inc. Offline index builds for database tables
US11397645B1 (en) * 2020-10-30 2022-07-26 Amazon Technologies, Inc. Storage volume snapshot object management
US20240037118A1 (en) * 2022-07-29 2024-02-01 Ronen Grosman Method, database host, and medium for database b-tree branch locking

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1653451A (zh) * 2002-05-10 2005-08-10 甲骨文国际公司 提供数据项的可用版本
CN101154234A (zh) * 2006-09-26 2008-04-02 国际商业机器公司 用于管理数据版本的系统和方法
US8266122B1 (en) * 2007-12-19 2012-09-11 Amazon Technologies, Inc. System and method for versioning data in a distributed data store
CN102419764A (zh) * 2010-10-20 2012-04-18 微软公司 带有多版本化的数据库系统的分布式事务管理

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111290714A (zh) * 2020-02-06 2020-06-16 北京百度网讯科技有限公司 数据读取方法和装置
CN111290714B (zh) * 2020-02-06 2023-09-05 北京百度网讯科技有限公司 数据读取方法和装置
CN111930692A (zh) * 2020-05-28 2020-11-13 武汉达梦数据库有限公司 一种基于日志解析同步的事务合并执行方法及装置
CN111930692B (zh) * 2020-05-28 2022-05-13 武汉达梦数据库股份有限公司 一种基于日志解析同步的事务合并执行方法及装置
WO2024051229A1 (zh) * 2022-09-05 2024-03-14 华为云计算技术有限公司 一种数据存储方法、装置及相关设备
CN116414579A (zh) * 2023-02-21 2023-07-11 北京友友天宇系统技术有限公司 基于分布式群组通信实现的多副本间数据一致性的方法

Also Published As

Publication number Publication date
US10698881B2 (en) 2020-06-30
US9514007B2 (en) 2016-12-06
JP2016511486A (ja) 2016-04-14
EP2973054A4 (en) 2016-12-07
US20230092908A1 (en) 2023-03-23
CA2906415A1 (en) 2014-09-25
WO2014150538A1 (en) 2014-09-25
AU2017203631B2 (en) 2019-02-07
AU2014237083B2 (en) 2017-03-02
CN105122241B (zh) 2019-03-29
KR101923334B1 (ko) 2018-11-28
JP2018152118A (ja) 2018-09-27
US20170083565A1 (en) 2017-03-23
KR20170091189A (ko) 2017-08-08
EP2973054A1 (en) 2016-01-20
US20200327114A1 (en) 2020-10-15
AU2014237083A1 (en) 2015-10-08
JP6661696B2 (ja) 2020-03-11
CN105122241A (zh) 2015-12-02
CA2906415C (en) 2019-01-15
CA3025369A1 (en) 2014-09-25
CA3025369C (en) 2021-08-24
US20140279929A1 (en) 2014-09-18
EP3327572B1 (en) 2020-11-04
KR20150122226A (ko) 2015-10-30
KR101764897B1 (ko) 2017-08-04
CN109933597B (zh) 2024-01-30
AU2017203631A1 (en) 2017-06-15
US11500852B2 (en) 2022-11-15
EP2973054B1 (en) 2018-05-09
EP3327572A1 (en) 2018-05-30
JP6346937B2 (ja) 2018-06-20

Similar Documents

Publication Publication Date Title
CN105122241B (zh) 具有数据库引擎和独立分布式存储服务的数据库系统
CN105210062B (zh) 用于分布式数据库系统的系统范围检查点避免
CN105190622B (zh) 用于分布式数据库系统的快速崩溃恢复
CN105190623B (zh) 日志记录管理
CN105190533B (zh) 原位快照
CN105324770B (zh) 有效读出副本
US10657008B2 (en) Managing a redundant computerized database using a replicated database cache
US9529682B2 (en) Managing contingency capacity of pooled resources in multiple availability zones
US10242050B2 (en) Database caching in a database system
US20180150397A1 (en) Distributed in-memory buffer cache system using buffer cache nodes
CN100485678C (zh) 将虚拟映射存入对象属性中的分布式基于对象的存储系统
CN100416508C (zh) 一种存储网络中的数据备份方法
US9699017B1 (en) Dynamic utilization of bandwidth for a quorum-based distributed storage system
CN105393243A (zh) 事务定序
CN103473251A (zh) 在使用处理器件的计算环境中提供使用选择性元组版本化的文件系统快照的方法和系统
CN107408132A (zh) 在列存储中的插入和点查询操作的有效性能
CN104903871B (zh) 虚拟磁带库系统
US11853319B1 (en) Caching updates appended to an immutable log for handling reads to the immutable log

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant