CN110083656B - 日志记录管理 - Google Patents
日志记录管理 Download PDFInfo
- Publication number
- CN110083656B CN110083656B CN201910124320.0A CN201910124320A CN110083656B CN 110083656 B CN110083656 B CN 110083656B CN 201910124320 A CN201910124320 A CN 201910124320A CN 110083656 B CN110083656 B CN 110083656B
- Authority
- CN
- China
- Prior art keywords
- log
- database
- log records
- records
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003860 storage Methods 0.000 claims abstract description 355
- 238000000034 method Methods 0.000 claims abstract description 100
- 230000015654 memory Effects 0.000 claims description 48
- 230000008859 change Effects 0.000 claims description 26
- 238000007726 management method Methods 0.000 description 31
- 230000008569 process Effects 0.000 description 26
- 238000013138 pruning Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 19
- 230000004044 response Effects 0.000 description 17
- 238000012545 processing Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 14
- 230000002085 persistent effect Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 12
- 238000005457 optimization Methods 0.000 description 11
- 238000013403 standard screening design Methods 0.000 description 10
- 239000008186 active pharmaceutical agent Substances 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 230000009466 transformation Effects 0.000 description 7
- 230000004927 fusion Effects 0.000 description 6
- 238000011084 recovery Methods 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000002829 reductive effect Effects 0.000 description 5
- 239000007787 solid Substances 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 4
- 239000003292 glue Substances 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000010076 replication Effects 0.000 description 4
- 239000002253 acid Substances 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000002955 isolation Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 230000008685 targeting Effects 0.000 description 3
- ZYSAHMPRXHPPAK-JKWCDDFISA-N [3-[(1e,3e,9e)-8-(2-aminoethyl)-10-(3-ethyl-6-oxo-2,3-dihydropyran-2-yl)-5,8-dihydroxy-7-phosphonooxydeca-1,3,9-trienyl]cyclohexyl] 6-methyloctanoate Chemical compound C1C(OC(=O)CCCCC(C)CC)CCCC1\C=C\C=C\C(O)CC(OP(O)(O)=O)C(O)(CCN)\C=C\C1C(CC)C=CC(=O)O1 ZYSAHMPRXHPPAK-JKWCDDFISA-N 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 238000009420 retrofitting Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000000739 chaotic effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000945 filler Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000011551 log transformation method Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 125000006239 protecting group Chemical group 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000009987 spinning Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002459 sustained effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000009966 trimming Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及日志记录管理。提供了一种方法,包括:把日志的各日志记录组存储在日志结构数据存储的多个不同存储节点处;针对所述日志的区间确定所述不同存储节点处的各日志记录组之间的一个或多个差异;对所述各日志记录组执行一个或多个操作以生成调和了所述一个或多个差异的所述日志的所述区间的版本;以及把所调和的所述日志的所述区间的所述版本存储在所述不同存储节点中的一个或多个处。
Description
本申请是申请日为2014年3月12目的、名称为“日志记录管理”的发明专利申请No.201480025925.X的分案申请。
技术领域
本公开涉及日志记录管理。
背景技术
在一些情况下,软件堆栈的各种部件的分布可提供(或支持)容错性(例如,通过复制)、较高耐久性、和较不昂贵的解决方案(例如,通过使用许多较小的、较不昂贵的部件,而不是较少大型的、昂贵的部件)。然而,在历史上数据库已经是至少服从分布的软件堆栈的部件。例如,可能难以分布数据库同时仍确保期望它们提供的所谓ACID特性(例如,原子性、一致性、隔离性、和耐久性)。
尽管大部分现存的相关数据库未被分布,使用两个常用模型中的一个来“向外扩展”(与通过仅采用较大单片系统的“向上扩展”相反)一些现存的数据库:“无共享”模型和“共享磁盘”模型。一般来说,在“无共享”模型中,接收的查询分解成数据库碎片(其中的每一个包括查询部件),这些碎片被发送至不同的计算机节点用于查询处理,并且在它们返回前收集和集合结果。一般来说,在“共享磁盘”模型中,群集中的每个计算机节点访问相同的基础数据。在采用这个模型的系统中,必须非常小心以便管理高速缓存一致性。在这两个模型中,在多个节点(包括单机数据库实例的所有功能性)上复制大型、单片数据库,并且添加“胶合”逻辑以便将它们缝合在一起。例如,在“无共享”模型中,胶合逻辑可提供分配器的功能性,所述分配器使查询细分、将它们发送至多个计算机节点、以及随后组合结果。在“共享磁盘”模型中,胶合逻辑可用来将多个节点的高速缓存融合在一起(例如,以便管理在高速缓存层处的一致性)。部署这些“无共享”和“共享磁盘”数据库系统可能花费较大,并且维持起来较复杂,以及它们可能过度服务许多数据库使用情况。
附图说明
图1为示出根据一个实施方案的数据库软件堆栈的各种部件的框图。
图2为示出根据一些实施方案的服务系统架构的框图,所述服务系统架构可被配置来实施基于网络服务的数据库服务。
图3为示出根据一个实施方案的数据库系统的各种部件的框图,所述数据库系统包括数据库引擎和独立分布式数据库存储服务。
图4为示出根据一个实施方案的分布式数据库优化存储系统的框图。
图5为示出根据一个实施方案的数据库系统中的独立分布式数据库优化存储系统的使用的框图。
图6为示出根据一个实施方案的可将数据和元数据存储在分布式数据库优化存储系统的给定节点上的方式的框图。
图7为示出根据一个实施方案的数据库容量的示例性配置的框图。
图8为示出用于在基于网络服务的数据库服务中形成和/或使用快照的方法的一个实施方案的流程图。
图9为示出用于在基于网络服务的数据库服务中操纵日志记录的方法的一个实施方案的流程图。
图10为示出根据各种实施方案的被配置来实施数据库系统的至少一部分的计算机系统的框图,所述数据库系统包括数据库引擎和独立分布式数据库存储服务。
虽然在本文中通过列举若干实施方案和示意性附图的实例的方式描述了实施方案,本领域的技术人员应认识到,实施方案并不限于所描述的实施方案或附图。应理解,附图和对其的详细描述并非意图将实施方案限于所公开的特定形式,而是相反,其意图在于涵盖落入由所附权利要求书所界定的精神和范围内的所有修改、等同物以及替代方案。本文中使用的任何标题都仅用于组织目的,并且并不意图用于限制描述或权利要求书的范围。贯穿本申请所使用的词语“可以”是在许可的意义上(即意指具有可能性)、而非强制的意义上(即意指必须)使用。词语“包括(include/including/includes)”指示开放性关系并且因此意味着包括但不限于。类似地,词语“具有(have/having/has)”也指示开放性关系,并且因此意味着具有但不限于。本文使用的术语“第一”、“第二”、“第三”等用作它们后面的名词的标签,并且不暗示任何类型的排序(例如,空间、时间、逻辑等),除非这种排序另有明确说明。
各种部件可被描述为“被配置来”执行一个或多个任务。在这类情况下,“被配置来”是一般意味着“具有操作过程中执行一个或多个任务的结构”的宽泛叙述。因此,部件可被配置来执行任务,即使是部件当前并未执行所述任务时(例如,计算机系统可被配置来执行操作,即使是所述操作当前并未被执行时)。在一些情况下,“被配置来”可以是一般意味着“具有在操作过程中执行一个或多个任务的电路系统”的结构的宽泛叙述。因此,部件可被配置来执行任务,即使是所述部件当前并未开启时。一般而言,形成对应于“被配置来”的结构的电路系统可包括硬件电路。
为了方便描述,各种部件可被描述为执行一个或多个任务。这些描述应被理解为包括短语“被配置来”。叙述被配置来执行一个或多个任务的部件明确地意图不援引美国法典第35章第112条第六段对所述部件的解释。
“基于.”如本文所使用,此术语用于描述影响确定的一个或多个因素。此术语不排除可能影响确定的另外因素。也就是说,确定可仅仅是基于这些因素,或至少部分地基于这些因素。考虑短语“基于B确定A”。尽管B可能是影响A的确定的因素,但是这种短语不排除还基于C确定A。在其他例子中,可仅基于B来确定A。
本公开的范围包括本文公开的任何特征或特征的组合(明确地或含蓄地),或其任何概括,不管其是否缓解了本文所提出的任何或所有问题。因此,在本申请(或要求其优先权的申请)的审理过程中可以就特征的任何此类组合制定新的权利要求书。具体地,参考所附权利要求书,来自从属权利要求的特征可与独立权利要求的特征相组合,并且来自相应独立权利要求的特征可以任何适当的方式不是仅仅以所附权利要求书中列举的具体组合来组合。
具体实施方式
本文公开快照产生的各种实施方案。本文实施方案中的各种实施方案可包括维持多个日志记录的数据库服务的分布式存储系统。日志记录可与由数据库服务存储的数据的相应改变相关联。本文实施方案中的各种实施方案可包括产生快照的分布式存储系统,所述快照可用于读取截至对应于所述快照的状态时的数据。产生快照可包括产生指示日志记录中的特定一个的特定日志识别符(例如,日志序列号、时间戳记等)的元数据。在一些实施方案中,元数据还可指示快照识别符。所公开的快照产生技术可在不读取、复制或写入数据页面以作为快照产生的一部分的情况下被执行。
本文还公开日志记录操纵的各种实施方案。本文实施方案中的各种实施方案可包括接收多个日志记录的数据库服务的分布式存储系统。本文实施方案中的各种实施方案还可包括在分布式存储系统的多个存储节点之中存储多个日志记录的分布式存储系统。本文实施方案中的各种实施方案还可包括转化多个日志记录的分布式存储系统。转化可包括修剪、裁剪、简化、融合,和/或以其他方式删除、合并或增加记录等转化。
本说明书首先描述被配置来实施所公开的快照操作(例如,创建、删除、使用、操纵等)和日志记录操纵技术的示例性基于网络服务的数据库服务。示例性基于网络服务的数据库服务的描述中包括示例性基于网络服务的数据库服务的各个方面,如数据库引擎和独立分布式数据库存储服务。本说明书随后描述用于快照操作和日志记录操纵的方法的各种实施方案的流程图。接下来,本说明书描述可实施所公开的技术的示例性系统。在整个说明书中提供各种实例。
在一些实施方案中,本文中描述的系统可实施网络服务,所述网络服务使得客户端(例如,订阅者)能够在云计算环境中操作数据存储系统。在一些实施方案中,数据存储系统可为高度可缩放的和可扩展的企业级数据库系统。在一些实施方案中,查询可指向横跨多个物理源分布的数据库存储,并且数据库系统可在所需的基础上扩大或缩小。在不同实施方案中,数据库系统可在各种类型和/或组织的数据库模式下有效工作。在一些实施方案中,客户端/订阅者可能以许多方式(例如,通过到数据库系统的SQL接口以交互方式)提交查询。在其他实施方案中,外部应用和程序可使用到数据库系统的开放数据库连接(ODBC)和/或Java数据库连接(JDBC)驱动器接口来提交查询。
更具体地,在一些实施方案中,本文描述的系统可实施面向服务的数据库架构,在所述数据库架构中单个数据库系统的各种功能部件固有地分布。例如,不是将多个完整的和单片的数据库实例(其中的每一个可包括外来功能性,如应用服务器、搜索功能性、或超过需要用来提供数据库的核心功能的其他功能性)捆绑在一起,这些系统可将数据库的基本操作(例如,查询处理、事务管理、高速缓存和存储)组织成可单独和独立缩放的层。例如,在一些实施方案中,本文所描述的系统中的每个数据库实例可包括数据库层(其可包括单个数据库引擎头节点和客户端侧存储系统驱动器)、和独立分布式存储系统(其可包括共同执行在现有系统的数据库层中常规执行的操作中的一些的多个存储节点)。
如本文更详细描述的,在一些实施方案中,数据库的一些最低水平操作(例如,备份、复原、快照、恢复、日志记录操纵和/或各种空间管理操作)可从数据库引擎卸载至存储层,并且分布在多个节点和存储装置上。例如,在一些实施方案中,不是数据库引擎对数据库表格(或其数据页面)应用改变以及随后将修改的数据页面发送至存储层,对存储的数据库表格(或其数据页面)的改变的应用可为存储层本身的责任。在此类实施方案中,可将重做日志记录而不是修改的数据页面发送至存储层,在其之后重做处理(例如,应用重做日志记录)可稍微徐缓地并且以分布式方式执行(例如,通过后台处理)。在一些实施方案中,崩溃恢复(例如,从存储的重做日志记录重建数据页面)也可由存储层执行,以及也可由分布式(并且在一些情况下徐缓的)后台处理执行。
在一些实施方案中,因为只有重做日志(以及未修改的数据页面)被发送至存储层,在数据库层与存储层之间可存在比现有数据库系统中更少的网络流量。在一些实施方案中,每个重做日志可大约为它指定改变的对应数据页面大小的十分之一。注意从数据数据库层和分布式存储系统发送的请求可为异步的,并且多个此类请求可同时在发送中。
一般来说,在被给予数据片之后,数据库的基本要求为它可最终交还回那个数据片。为此,数据库可包括若干不同部件(或层),其中的每一个执行不同的功能。例如,传统数据库可被认为具有三个层:用于执行查询解析、优化和执行的第一层;用于提供事务性、恢复和耐久性的第二层;以及在本地附接的磁盘上或在网络附接的存储区上提供存储的第三层。如以上指出的,对缩放传统数据库的先前尝试通常已包含复制数据库的所有三层,以及在多个机器上分布那些复制的数据库实例。
在一些实施方案中,本文描述的系统可不同于传统数据库中的来划分数据库系统的功能性,并且可在多个机器上仅分布功能部件的子集(不是完整的数据库实例)以便实施缩放。例如,在一些实施方案中,面向客户端的层可被配置来接收请求,所述请求指定存储和检索什么数据,但未指定如何存储和检索所述数据。这个层可执行请求解析和/或优化(例如,SQL解析和优化),而另一层可负责查询执行。在一些实施方案中,第三层可负责提供结果的事务性和一致性。例如,这个层可被配置来施行一些所谓的ACID特性,具体地,把数据库作为目标的事务的原子性、维持数据库内的一致性、以及确保把数据库作为目标的事务之间的隔离。在一些实施方案中,第四层随后可负责在存在各种故障的情况下提供存储的数据的耐久性。例如,这个层可负责改变日志、从数据库崩溃恢复、管理对基础存储容量的访问和/或在基础存储容量中的空间管理。
现在转向附图,图1为示出根据一个实施方案的数据库软件堆栈的各种部件的框图。如这个实例中示出的,数据库实例可包括多个功能部件(或层),其中的每一个提供数据库实例功能性的一部分。在这个实例中,数据库实例100包括查询解析和查询优化层(被示作110)、查询执行层(被示作120)、事务性和一致性管理层(被示作130)、和耐久性和空间管理层(被示作140)。如以上指出的,在一些现存数据库系统中,缩放数据库实例可包含复制整个数据库实例一次或多次(包括图1中示出的所有层),以及随后添加胶合逻辑以便将它们缝合在一起。在一些实施方案中,本文描述的系统反而可将耐久性和空间管理层140的功能性从数据库层卸载至独立存储层,并且可在存储层中的多个存储节点上分布那个功能性。
在一些实施方案中,本文描述的数据库系统可保持图1所示的数据库实例的上半部的大部分结构,但可重新分布用于对存储层的备份、复原、快照、恢复、和/或各种空间管理操作的至少部分的责任。当与用来提供可缩放数据库的先前方法相比时,以这种方式重新分布功能性以及在数据库层与存储层之间紧密连接日志处理可改善性能、增加可用性和降低成本。例如,由于只有重做日志记录(其在大小上比实际数据页面小很多)可在节点上运送或在写入操作的时延路径内持续,所以可简化网络和输入/输出带宽要求。此外,数据页面的产生可在每个存储节点上独立地后台完成(如前台处理允许的),而不阻塞进入的写入操作。在一些实施方案中,使用日志结构化、非重写的存储可允许备份、复原、快照、时间点恢复、和容量增长操作被更有效地执行,例如,通过仅使用元数据操纵而不是移动或复制数据页面。在一些实施方案中,存储层也可承担复制代表客户端的在多个存储节点上存储的数据(和/或与所述数据关联的元数据,如重做日志记录)的责任。例如,数据(和/或元数据)可本地(例如,在单个“可用区”内,在所述单个“可用区”中存储节点集合在它自身的物理不同的、独立的基础结构上执行)复制和/或在单个区域或不同区域中的可用区上复制。
在各种实施方案中,本文描述的数据库系统可支持用于各种数据库操作的标准或定制的应用编程接口(API)。例如,API可支持用于创建数据库、创建表格、更改表格、创建用户、删除用户、在表格中插入一个或多个行、复制值、从表格内选择数据(例如,查询表格)、取消或中止查询、创建快照和/或其他操作。
在一些实施方案中,数据库实例的数据库层可包括数据库引擎头节点服务器,所述数据库引擎头节点服务器接收来自各种客户端程序(例如,应用)和/或订阅者(用户)的读取和/或写入请求,随后解析它们并且发展执行计划以便实施关联的数据库操作。例如,数据库引擎头节点可发展对获得用于复杂的查询和连接的结果有必要的步骤系列。在一些实施方案中,数据库引擎头节点可管理在数据库系统的数据库层与客户端/订阅者之间的通信,以及在数据库层与独立分布式数据库优化存储系统之间的通信。
在一些实施方案中,数据库引擎头节点可负责从端部客户端通过JDBC接口或ODBC接口来接收SQL请求,以及负责本地执行SQL处理和事务管理(其可包括锁定)。然而,并非在本地产生数据页面,数据库引擎头节点(或其各种部件)可产生重做日志记录,并且可将它们运送至独立分布式存储系统的适当节点。在一些实施方案中,用于分布式存储系统的客户端侧驱动器可在数据库引擎头节点上代管,并且可负责将重做日志记录路由至存储那些重做日志记录指向的区段(或其数据页面)的存储系统节点(或多个节点)。例如,在一些实施方案中,每个区段在形成保护组的多个存储系统节点上可为镜像的(或否则被形成为耐用的)。在此类实施方案中,客户端侧驱动器可记录在其上存储每个区段的节点,并且当接收客户端请求时,可将重做日志路由至在其上存储区段的所有节点(例如,异步地和基本上同时并行)。一旦客户端侧从保护组中的存储节点的写入群体接收返回的确认(其可指示重做日志记录已被写入至存储节点),它就可将请求的改变的确认发送至数据库层(例如,至数据库引擎头节点)。例如,在其中通过使用保护组使得数据耐用的实施方案中,数据库引擎头节点可能不能够提交事务,除非客户端侧驱动器从足够的存储节点实例接收回复以便构成写入群体。类似地,对于指向特定区段的读取请求,客户端侧驱动器可将读取请求路由至在其上存储所述区段的所有节点(例如,异步地和基本上同时并行地)。一旦客户端侧驱动器从保护组中的存储节点的读取群体接收请求的数据,它可将请求的数据返回至数据库层(例如,至数据库引擎头节点)。
在一些实施方案中,数据库层(或更具体地,数据库引擎头节点)可包括在其中临时保持最近访问的数据页面的高速缓冲存储器。在此类实施方案中,如果接收将保持在此类高速缓冲存储器中的数据页面作为目标的写入请求,除了将对应的重做日志记录运送至存储层之外,数据库引擎可对保持在它的高速缓冲存储器中的数据页面的复制应用改变。然而,不同于在其他数据库系统中,保持在这个高速缓冲存储器中的数据页面可能从不被刷新至存储层,并且它可在任何时候被抛弃(例如,在用于最近应用至高速缓存的复制的写入请求的重做日志记录已被发送至存储层和被确认之后的任何时候)。在不同实施方案中,高速缓冲存储器可实施任何的各种锁定机构,以便通过每次最多一个写入者(或多个读取者)控制访问高速缓冲存储器。然而注意在包括此类高速缓冲存储器的实施方案中,高速缓冲存储器可能未分布在多个节点上,但对于给定数据库实例可仅存在于数据库引擎头节点上。因此,可能不存在要管理的高速缓存相干性或一致性问题。
在一些实施方案中,数据库层可支持在系统中使用同步或异步读取复制品,例如,在读取请求可被路由至其的数据库层的不同节点上的数据只读副本。在此类实施方案中,如果用于给定数据库表格的数据库引擎头节点接收指向特定数据页面的读取请求,那么它可将请求路由至这些只读副本中的任何一个(或特定的一个)。在一些实施方案中,数据库引擎头节点中的客户端侧驱动器可被配置来通知这些其他节点关于高速缓存的数据页面的升级和/或失效(例如,以便提示它们使它们的高速缓冲存储器无效,在其之后它们可从存储层请求更新的数据页面的更新副本)。
在一些实施方案中,在数据库引擎头节点上运行的客户端侧驱动器可暴露针对存储层的专用接口。在一些实施方案中,它也可暴露针对一个或多个其他部件(例如,其他数据库引擎或虚拟计算服务部件)的传统iSCSI接口。在一些实施方案中,在存储层中用于数据库实例的存储可被模制成单个卷,所述单个卷可在大小上增长而不受限制,并且可具有不限数目的与它关联的IOPS。当创建卷时,可用具体大小、用具体的可用性/耐久性特性(例如,指定它被如何复制)、和/或与它关联的IOPS速率(例如,峰值和持续的)来创建它。例如,在一些实施方案中,各种不同的耐久性模型可被支持,并且用户/订阅者可以能够为它们的数据库表格基于它们的耐久性、性能和成本目标来指定一些复制副本、区、或区域、和/或复制是同步的还是异步的。
在一些实施方案中,客户端侧驱动器可维持关于卷的元数据,并且可将异步请求直接发送至对实现读取请求和写入请求有必要的每个存储节点,而不需要在存储节点之间的附加跳跃。例如,在一些实施方案中,响应对数据库表格进行改变的请求,客户端侧驱动器可被配置来确定实施用于目标数据页面的存储的一个或多个节点,以及路由指定对那些存储节点的改变的重做日志记录。存储节点随后可在将来的某个时刻负责将在重做日志记录中指定的改变应用至目标数据页面。由于返回客户端侧驱动器的写入被确认,所以客户端侧驱动器可提前在其处卷为耐用的点,并且可确认返回数据库层的提交。如先前指出的,在一些实施方案中,客户端侧驱动器可能从不将数据页面发送至存储节点服务器。这不仅可简化网络流量,还可移除对检查点或后台写入线程的需要,所述检查点或后台写入线程在先前的数据库系统中约束前台处理吞吐量。
在一些实施方案中,许多读取请求可由数据库引擎头节点高速缓冲存储器服务。然而,由于大规模的故障事件可能太常见而不允许仅在存储器中复制,写入请求可能需要耐久性。因此,本文描述的系统可被配置来最小化重做日志记录写入操作的成本,所述重做日志记录写入操作在前台延时路径中,通过将存储层中的数据存储实施成两个区域:小型仅附加的日志结构化区域,当从数据库层被接收重做日志记录时将其写入至其中;以及较大区域,在所述较大区域中日志记录合并在一起以便后台创建新版本的数据页面。在一些实施方案中,可维持存储器中结构用于每个数据页面,所述每个数据页面指向用于那个页面的最后重做日志记录、反向链接日志记录,直到实体化数据块被引用。这个方法可提供用于混合的读取-写入工作负荷的良好性能,包括在其中大量高速缓存读取的应用中。
在一些实施方案中,因为对用于重做日志记录的日志结构化数据存储的访问可包括一系列连续的输入/输出操作(不是随机输入/输出操作),做出的改变可被紧密包装在一起。还应注意,与在其中对数据页面的每个改变导致对持久数据存储的两个输入/输出操作(一个用于重做日志,并且一个用于修改的数据页面本身)的现存系统相比,在一些实施方案中,通过基于重做日志记录的接收来合并在分布式存储系统的存储节点处的数据页面,本文描述的系统可避免这个“写入放大”。
如先前指出的,在一些实施方案中,数据库系统的存储层可负责取得数据库快照。然而,因为存储层实施日志结构化存储,取得数据页面(例如,数据块)的快照可包括记录与最近应用至数据页面/数据块的重做日志记录关联的时间戳(或与合并多个重做日志记录以便创建新版本的数据页面/数据块的最近操作关联的时间戳),和阻止先前版本的页面/块的无用数据收集以及直到记录的时间点的任何随后日志条目。在这类实施方案中,取得数据库快照可能不需要如当采用远离卷备份策略时将需要的读取、复制或写入数据块。在一些实施方案中,对快照的空间要求可为最小的,由于仅修改的数据将需要附加的空间,但用户/订阅者可以能够选择除活动数据集之外他们想要保持多少附加空间用于在卷上的快照。在不同的实施方案中,快照可为离散的(例如,每个快照可提供对截至具体时间点时的数据页面中的所有数据的访问)或连续的(例如,每个快照可提供对存在于两个时间点之间的数据页面中的所有版本的数据的访问)。在一些实施方案中,回复至先前的快照可包括记录日志记录以便指示所有的重做日志记录和数据页面(由于快照为无效的和可无用数据收集的),以及在快照点后丢弃所有数据库高速缓存条目。在此类实施方案中,由于存储系统将在逐块基础上如请求的和后台在所有节点上对数据块应用重做日志记录,就像它在正常的向前读取/写入处理中做的,所以不需要向前滚动。从而可使得崩溃恢复并行和分布在节点上。图8和图9描述关于快照创建、使用和/或操纵的另外细节。
图2中示出可被配置来实施基于网络服务的数据库服务的服务系统架构的一个实施方案。在所示的实施方案中,一些客户端(被示作数据库客户端250a-250n)可被配置来通过网络260与网络服务平台200互相作用。网络服务平台200可被配置来与数据库服务210、分布式数据库优化存储服务220和/或一个或多个其他虚拟计算服务230的一个或多个实例相互作用。注意其中给定部件的一个或多个实例可存在,可使得本文中对那个部件的引用为单数的或复数的。然而,任何一种形式的使用不意图排除另一种。
在各种实施方案中,图2所示的部件可直接在计算机硬件内实施,如可由计算机硬件直接执行或间接执行的指令(例如,微处理器或计算机系统),或使用这些技术的组合。例如,图2的部件可由包括一些计算节点(或简单地,节点)的系统来实施,所述计算节点中的每一个可类似于图10所示的和以下描述的计算机系统实施方案。在各种实施方案中,给定服务系统部件(例如,数据库服务的部件或存储服务的部件)的功能性可由特定节点来实施或可分布在若干节点上。在一些实施方案中,给定节点可实施多于一个服务系统部件(例如,多于一个数据库服务系统部件)的功能性。
一般来说,客户端250可包含可被配置来通过网络260向网络服务平台200提交网络请求的任何类型的客户端,所述网络请求包括用于数据库服务的请求(例如,产生快照的请求等)。例如,给定客户端250可包括适当版本的网络浏览器,或可包括被配置来作为延伸执行或在由网络浏览器提供的执行环境内执行的插件模块或其他类型的代码模块。可替代地,客户端250(例如,数据库服务客户端)可包含应用程序,如数据库应用程序(或其用户接口)、媒体应用程序、办公室应用程序、或可使用持久存储资源以便存储和/或访问一个或多个数据库表格的任何其他应用程序。在一些实施方案中,此类应用程序可包括足够的协议支持(例如,用于适当版本的超文本传输协议(HTTP)),用于产生和处理网络服务请求,而不必要地实施用于所有类型的基于网络的数据的完整浏览器支持。就是说,客户端250可为被配置来直接与网络服务平台200相互作用的应用程序。在一些实施方案中,客户端250可被配置来根据表述性状态转移(REST)类型的网络架构、基于文件或基于消息的网络服务架构、或另一适当的网络服务架构产生网络服务请求。
在一些实施方案中,客户端250(例如,数据库服务客户端)可被配置来向其他应用程序以对这些应用程序透明的方式提供对基于网络服务的数据表格存储的访问。例如,客户端250可被配置来与操作系统或文件系统集成,来提供根据本文所描述的存储模型的适当变体的存储。然而,操作系统或文件系统可呈现针对应用程序的不同存储接口,如文件、目录和/或文件夹的常规文件系统层级。在此类实施方案中,应用程序可能不需要被修改以便使用图1的存储系统服务模型。反而,对网络服务平台200的介接的细节可通过客户端250和代表在操作系统环境内执行的应用程序的操作系统或文件系统来协调。
客户端250可通过网络260将网络服务请求(例如,快照请求、快照请求参数、读取请求、复原快照等)传达至网络服务平台200以及从网络服务平台200接收响应。在各种实施方案中,网络260可包含对在客户端250与平台200之间建立基于网络的通信有必要的联网的硬件和协议的任何适当组合。例如,网络260通常可包含共同实施因特网的各种电信网络和服务提供者。网络260也可包括专用网络(如局域网(LAN)或广域网(WAN))以及公用无线网络或专用无线网络。例如,给定的客户端250和网络服务平台200可分别被供应在具有其自身内部网络的企业内。在此类环境中,网络260可包括对在给定客户端250与因特网之间以及在因特网和网络服务平台200之间建立联网链接有必要的硬件(例如,调制解调器、路由器、交换器、负载均衡器、代理服务器等)和软件(例如,协议堆栈、会计软件、防火墙/安全软件等)。注意在一些实施方案中,客户端250可使用专用网络而不是公用因特网来与网络服务平台200通信。例如,客户端250可被供应在与数据库服务系统相同的企业内(例如,实施数据库服务210和/或分布式数据库优化存储服务220的系统)。在此类情况下,客户端250可通过专用网络260(例如,可使用基于因特网的通信协议但不可公共访问的LAN或WAN)与平台200通信。
一般来说,网络服务平台200可被配置,以便实施被配置来接收和处理网络服务请求(如对访问数据页面(或其记录)的请求)的一个或多个服务端点。例如,网络服务平台200可包括被配置来实施特定端点的硬件和/或软件,以使得指向那个端点的基于HTTP的网络服务请求被适当地接收和处理。在一个实施方案中,网络服务平台200可被实施作为服务器系统,所述服务器系统被配置来从客户端250接收网络服务请求,并且将它们转发至实施数据库服务210、分布式数据库优化存储服务220和/或另一虚拟计算服务230的系统的部件用于处理。在其他实施方案中,网络服务平台200可被配置成一些异构系统(例如,处于集群拓扑),所述异构系统实施负载平衡和被配置来动态管理大规模的网络服务请求处理负载的其他请求管理特征。在各种实施方案中,网络服务平台200可被配置来支持REST类型的或基于文件(例如,基于SOAP)类型的网络服务请求。
除起到用于客户端的网络服务请求的可寻址端点的作用之外,在一些实施方案中,网络服务平台200可实施各种客户端管理特征。例如,平台200可协调网络服务(包括存储资源)的客户端使用的测量和计数,如通过追踪请求客户端250的身份、客户端请求的数目和/或频率、被存储或检索的代表客户端250的数据表格(或其记录)的大小、由客户端250使用的总存储带宽、由客户端250请求的存储类别、或任何其他可测量的客户端使用参数。平台200也可实施财务账目和计费系统,或可维持使用数据的数据库,所述使用数据的数据库可由用于客户端使用活动的报告和计费的外部系统查询和处理。在某些实施方案中,平台200可被配置来收集、监视和/或集合各种存储服务系统操作度量,如反映从客户端250接收的请求的速率和类型、由此类请求利用的带宽、用于此类请求的系统处理时延、系统部件利用(例如,网络带宽和/或存储服务系统内的存储利用)、由请求导致的错误的速率和类型、存储的和请求的数据页面或其记录的特性(例如,大小、数据类型等)的度量、或任何其他适当的度量。在一些实施方案中,此类度量可由系统管理员使用以便调谐和维持系统部件,而在其他实施方案中,此类度量(或此类度量的相关部分)可暴露于客户端250,以便使得此类客户端能够监视它们使用数据库服务210、分布式数据库优化存储服务220和/或另一虚拟计算服务230(或实施那些服务的基础系统)。
在一些实施方案中,平台200也可实施用户认证和访问控制程序。例如,对于访问特定数据库表格的给定网络服务请求,平台200可被配置来查明与请求关联的客户端250是否被授权访问特定数据库表格。平台200可确定此类认证,例如通过相对于与特定数据库表格关联的凭据评估身份、密码或其他凭据,或相对于用于特定数据库表格的访问控制列表评估对特定数据库表格的请求的访问。例如,如果客户端250不具有足够的凭据来访问特定数据库表格,平台200可例如通过将指示错误情况的响应返回至请求客户端250来拒绝对应的网络服务请求。通过数据库服务210、分布式数据库优化存储服务220和/或其他虚拟计算服务230,各种访问控制政策可被存储作为访问控制信息的记录或列表。
注意尽管网络服务平台200可代表通过其客户端250可访问实施数据库服务210的数据库系统的特征的主接口,但它不需要代表针对此类特征的唯一接口。例如,可与网络服务接口不同的替代性API可用于允许提供数据库系统的企业内部客户端绕开网络服务平台200。注意在本文描述的许多实例中,分布式数据库优化存储服务220可在计算系统内或向客户端250提供数据库服务的计算系统或企业系统内,并且不可暴露于外部客户端(例如,用户或客户端应用程序)。在此类实施方案中,内部“客户端”(例如,数据库服务210)可在本地网络或专用网络上访问分布式数据库优化存储服务220,被示出为在分布式数据库优化存储服务220与数据库服务210之间的实线(例如,通过直接在实施这些服务的系统之间的API)。在此类实施方案中,在存储代表客户端250的数据库表格中使用分布式数据库优化存储服务220对那些客户端可为透明的。在其他实施方案中,分布式数据库优化存储服务220可通过网络服务平台200暴露于客户端250,以便为除了依靠数据库服务210的那些应用程序外的应用程序提供数据库表格或其他信息的存储用于数据库管理。这在图2中通过网络服务平台200与分布式数据库优化存储服务220之间的虚线示出。在此类实施方案中,分布式数据库优化存储服务220的客户端可通过网络260(例如,在因特网上)访问分布式数据库优化存储服务220。在一些实施方案中,虚拟计算服务230可被配置来从分布式数据库优化存储服务220(例如,通过直接在虚拟计算服务230与分布式数据库优化存储服务220之间的API)接收存储服务,来存储在执行计算服务230中使用的代表客户端250的对象。这在图2中通过虚拟计算服务230与分布式数据库优化存储服务220之间的虚线示出。在一些情况下,平台200的计数和/或凭证服务对于内部客户端(如管理客户端)或在同一企业内的服务部件之间可能为不必要的。
注意在各种实施方案中,不同的存储政策可由数据库服务210和/或分布式数据库优化存储服务220来实施。此类存储政策的实例可包括耐久性政策(例如,指示将被存储的数据库表格(或其数据页面)的实例数目和在其上它们将被存储的不同节点数目的政策)和/或负载平衡政策(其可在不同的节点、卷和/或磁盘上分布数据库表格或其数据页面,试图均衡请求流量)。此外,通过各种服务中的一个,可对不同类型的存储项目应用不同的存储政策。例如,在一些实施方案中,分配式数据库优化存储服务220可为重做日志记录实施比为数据页面更高的耐久性。
图3为示出根据一个实施方案的数据库系统的各种部件的框图,所述数据库系统包括数据库引擎和独立分布式数据库存储服务。在这个实例中,数据库系统300包括用于若干数据库表格中的每一个的各自数据库引擎头节点320和分布式数据库优化存储服务310(其对数据库系统的客户端可能是或可能不是可见的,所述客户端被示出为数据库客户端350a-350n)。如这个实例所示,数据库客户端350a-350n中的一个或多个可通过网络360(例如,这些部件对于数据库客户端350a-350n可为网络可寻址的和可访问的)来访问数据库头节点320(例如,头节点320a、头节点320b、或头节点320c,其中的每一个为各自数据库实例的部件)。然而,可由数据库系统采用以便存储代表数据库客户端350a-350n的一个或多个数据表格(以及重做日志记录和/或与其关联的其他元数据)的数据页面以及执行如本文所述的数据库系统的其他功能的分布式数据库优化存储服务310在不同的实施方案中对于存储客户端350a-350n可能是或可能不是网络可寻址的或可访问的。例如,在一些实施方案中,分布式数据库优化存储服务310可能以对存储客户端350a-350n不可见的方式来执行各种存储、访问、改变日志、恢复、日志记录操纵和/或空间管理操作。
如先前指出的,每个数据库实例可包括单个数据库引擎头节点320,所述单个数据库引擎头节点320接收来自各种客户端程序(例如,应用程序)和/或订阅者(用户)的请求(例如,快照请求等),随后解析它们,优化它们并且发展执行计划以便实施关联的数据库操作。在图3所示的实例中,数据库引擎头节点320a的查询解析、优化和执行部件305可执行用于查询的这些功能,所述查询从数据库客户端350a接收并且把数据库引擎头节点320a为部件的数据库实例作为目标。在一些实施方案中,查询解析、优化和执行部件305可将查询响应返回至数据库客户端305a,所述查询响应可包括写入确认、请求的数据页面(或其部分)、错误消息、和/或其他响应(在适当情况下)。如这个实例所示,数据库引擎头节点320a也可包括客户端侧存储服务驱动器325,所述客户端侧存储服务驱动器325可将读取请求和/或重做日志记录路由至在分布式数据库优化存储服务310内的各种存储节点,从分布式数据优化存储服务310接收写入确认,从分布式数据库优化存储服务310接收请求的数据页面,和/或将数据页面、错误消息、或其他响应返回至查询解析、优化和执行部件305(其反过来可将它们返回至数据库客户端350a)。
在这个实例中,数据库引擎头节点320a包括在其中最近访问的数据页面可被暂时保持的数据页面高速缓冲存储器335。如图3所示,数据库引擎头节点320a也可包括事务和一致性管理部件330,所述事务和一致性管理部件330可负责在数据库头节点320a为部件的数据库实例中提供事务性和一致性。例如,这个部件可负责确保数据库实例的原子性、一致性和隔离特性以及指向数据库实例的事务。如图3所示,数据库引擎头节点320a也可包括事务日志340和撤销日志345,所述事务日志340和撤销日志345可由事务和一致性管理部件330采用,以便追踪各种事务状态以及将不提交的事务的任何本地高速缓存的结果向后滚动。
注意图3所示的其他数据库引擎头节点320中的每一个(例如,320b和320c)可包括类似的部件并且可执行用于查询的类似功能,所述查询由数据库客户端350a-350n中的一个或多个接收,并且指向它为部件的各自数据库实例。
在一些实施方案中,本文描述的分布式数据库优化存储系统可在各种逻辑卷、区段和页面中组织数据用于一个或多个存储节点上存储。例如,在一些实施方案中,每个数据库表格由逻辑卷代表,并且每个逻辑卷在存储节点集合上被分割。依存在存储节点中的特定一个上的每个区段包含一组连续块地址。在一些实施方案中,每个数据页面存储在区段中,以使得每个区段存储一个或多个数据页面的集合和用于它存储的每个数据页面的改变日志(也被称为重做日志)(例如,重做日志记录的日志)。如本文详细描述的,存储节点可被配置来接收重做日志记录(其在本文中也被称为ULR),以及合并它们来创建新版本的对应数据页面和/或附加日志记录或替换日志记录(例如,徐缓地和/或响应于对数据页面的请求或数据库崩溃)。在一些实施方案中,根据可变的配置(其可由客户端指定,所述客户端被代表的数据库表格被维持在数据库系统中),数据页面和/或改变日志在多个存储节点上可为镜像的。例如,在不同实施方案中,根据默认配置、具体应用的耐久性偏好、或具体客户端的耐久性偏好,数据日志或改变日志的一个、两个或三个副本可存储在一个、两个或三个不同的可用区或区域中的每一个中。
如本文使用的,以下术语可用于描述根据各种实施方案的通过分布式数据库优化存储系统进行的数据的组织。
卷:卷为代表存储系统的用户/客户端/应用程序理解的高度耐用的存储单元的逻辑概念。更具体地,卷为对用户/客户端/应用程序显示成对数据库表格的各种用户页面的写入操作的单个一致有序目志的分布式存储。每个写入操作可被编码在用户日志记录(ULR)中,所述用户日志记录(ULR)代表对卷内的单个用户页面的内容的逻辑、有序突变。如以上指出的,ULR在本文中也可被称为重做日志记录。每个ULR可包括唯一识别符(例如,逻辑序列号(LSN)、时间戳记等)。应指出,唯一识别符可以是单调递增的并且对日志记录中的特定一个是唯一的。还应指出,在分配至日志记录的识别符的序列中可存在间隙。例如,在LSN实例中,LSN 1、4、5、6和9可分配至五个相应日志记录,而LSN 2、3、7和8未被使用。每个ULR可持续至形成保护组(PG)的在分布式存储中的一个或多个同步区段,以便为ULR提供高耐久性和可用性。卷可提供用于可变大小的连续字节范围的LSN类型的读取/写入接口。
在一些实施方案中,卷可包括多个程度,通过保护组使得每个耐用。在此类实施方案中,卷可代表由变异连续的卷程度序列组成的存储单元。指向卷的读取和写入可映射至对构成的卷程度的对应的读取和写入中。在一些实施方案中,卷的大小可通过从卷末端添加或移除卷程度来改变。
区段:区段为分配至单个存储节点的耐久性受限的存储单元。更具体地,区段为具体固定大小的数据字节范围提供有限的最大努力耐久性(例如,为存储节点的持久的、但非冗余的单个故障点)。在一些情况下,这个数据可为用户可寻址数据的镜像,或在各种实施方案中,它可为其他数据,如卷元数据或可擦除的编码比特。给定区段可恰好依存在一个存储节点上。在存储节点内,多个区段可依存在每个SSD上,并且每个区段可被限制于一个SSD(例如,区段可能不横跨多个SSD)。在一些实施方案中,可能不需要区段来占据SSD上的连续区域;宁可在每个SSD中存在描述由每个区段拥有的区域的分配映射。如以上指出的,保护组可包括在多个存储节点上散布的多个区段。在一些实施方案中,区段可提供用于固定大小(其中大小在创建时被限定)的连续字节范围的LSN类型的读取/写入接口。在一些实施方案中,每个区段可通过区段UUID(例如,区段的通用唯一识别符)来识别。
存储页面:存储页面为通常具有固定大小的存储器块。在一些实施方案中,每个页面为具有由操作系统限定的大小的存储器块(例如,虚拟存储器、磁盘、或其他物理存储器的),并且在本文中也可被称为术语“数据块”。更具体地,存储页面可为一组连续扇区。它可用作SSD中的分配单元,以及日志页面中对于其存在标头和元数据的单元。在一些实施方案中,以及在本文描述的数据库系统的情况下,术语“页面”或“存储页面”可指具有由数据库配置限定的大小的类似块,所述大小通常可为2的倍数,如4096、8192、16384或32768字节。
日志页面:日志页面为用于存储日志记录(例如,重做日志记录或撤销日志记录)的一种类型的存储页面。在一些实施方案中,日志页面在大小上可等于存储页面。每个日志页面可包括标头,所述标头包含关于那个日志页面的元数据(例如,识别它属于的区段的元数据)。注意日志页面为组织单元,并且可能不必须为包括在写入操作中的数据单元。例如,在一些实施方案中,在正常向前处理期间,写入操作可一次一个扇区地写入至日志尾部。
日志记录:日志记录(例如,日志页面的单独元件)可具有若干不同的类别。例如,由存储系统的用户/客户端/应用程序创建和理解的用户日志记录(ULR)可用于指示对卷中的用户数据的改变。由存储系统产生的控制日志记录(CLR)可包含用于追踪元数据(如当前无条件的卷耐用LSN(VDL))的控制信息。在一些实施方案中,空日志记录(NLR)可用作填料,以便填充日志扇区或日志页面中的未用空间。在一些实施方案中,在这些类别中的每一个内可存在各种类型的日志记录,并且日志记录类型可对应于需要被调用以便解释日志记录的功能。例如,一种类型可使用具体的压缩格式来代表压缩格式的用户页面的所有数据;第二类型可代表用于用户页面内的字节范围的新值;第三类型可代表对被解释成整数的字节序列的增量操作;以及第四类型可代表在页面内将一个字节范围复制到另一位置。在一些实施方案中,日志记录类型可由GUID(不是由整数或枚举)来识别,所述GUID可简化版本控制和发展,特别用于ULR。
有效负载:日志记录的有效负载为针对一个或多个特定类型的日志记录的数据或参数值。例如,在一些实施方案中,可能存在大部分(或所有的)日志记录包括,并且存储系统本身理解的一组参数或属性。这些属性可为与扇区大小相比可能为相对小的常用日志记录标头/结构的部分。此外,大部分日志记录可包括针对那个日志记录类型的附加的参数或数据,并且这个附加信息可被认为是那个日志记录的有效负载。在一些实施方案中,如果用于特定ULR的有效负载大于用户页面大小,它可由绝对ULR(AULR)来替换,所述绝对ULR的有效负载包括用于用户页面的所有数据。这可使得存储系统能够对等于用户页面大小的ULR的有效负载的大小施行上限。
注意当将日志记录存储在区段日志中时,在一些实施方案中,有效负载可连通日志标头一起存储。在其他实施方案中,有效负载可存储在独立位置中,并且到在其中存储有效负载的位置的指针可与日志标头一起存储。在另一些实施方案中,有效负载的一部分可存储在标头中,并且有效负载的剩余物可存储在独立位置中。如果整个有效负载与日志标头一起存储,这可被称为带内存储;否则存储可被称为带外的。在一些实施方案中,大部分大型AULR的有效负载可带外存储在日志冷区(其在以下描述)中。
用户页面:用户页面为用于特定卷的字节范围(固定大小的)和其对准,所述特定卷对存储系统的用户/客户端为可见的。用户页面为逻辑概念,并且在特定用户页面中的字节可能或可能不原样存储在任何存储页面中。用于特定卷的用户页面的大小可独立于用于那个卷的存储页面的大小。在一些实施方案中,用户页面大小可被每卷配置,并且在存储节点上的不同区段可具有不同的用户页面大小。在一些实施方案中,用户页面大小可被约束成多个扇区大小(例如,4KB),并且可具有上限(例如,64KB)。另一方面,存储页面大小对于整个存储节点可为固定的,并且可能不改变除非存在对基础硬件的改变。
数据页面:数据页面为用于存储压缩形式的用户页面数据的一种类型的存储页面。在一些实施方案中,存储在数据页面中的每个数据片与日志记录关联,并且每个日志记录可包括到数据页面内的扇区(也被称为数据扇区)的指针。在一些实施方案中,数据页面可能不包括除由每个扇区提供的之外的任何嵌入式元数据。在数据页面中扇区之间可能不存在关系。反而,到页面中的组织可仅作为到区段的数据分配的间隔尺寸的表达存在。
存储节点:存储节点为在其上存储节点服务器代码被部署的单个虚拟机器。每个存储节点可包含多个本地附接的SSD,并且可提供网络API用于访问一个或多个区段。在一些实施方案中,各个节点可在活动列表上,或在降级列表上(例如,如果它们缓慢响应或另外被损坏,但未完全不能用)。在一些实施方案中,客户端侧驱动器基于观测的性能可帮助(或负责)将节点分类成活动的或降级的,用于确定它们是否以及何时应被替换,和/或用于确定何时和如何在各个节点中重新分布数据。
SSD:如本文指出的,术语“SSD”可指如通过存储节点可见的本地块存储卷,不考虑由那个存储卷采用的存储类型,例如,磁盘、固态驱动、电池支持的RAM、NVMRAM装置(例如,一个或个NVDIMM)、或另一类型的持久存储装置。SSD不必要直接映射至硬件。例如,单个固态存储装置可能分成多个本地卷,其中在不同的实施方案中,每个卷被分裂成多个区段以及在多个区段上剥离,和/或单个驱动可仅为容易管理而分成多个卷。在一些实施方案中,每个SSD可在单个固定位置处存储分配映射。这个映射可指示特定区段拥有的那些存储页面,以及这些页面中的哪些为日志页面(与数据页面相对)。在一些实施方案中,存储页面可被提前分配至每个区段,以使得向前处理可能不需要等待分配。在新分配的存储页面由区段使用之前,可能需要使得对分配映射的任何改变耐用。
分布式数据库优化存储系统的一个实施方案由图4中的框图示出。在这个实例中,数据库系统400包括分布式数据库优化存储系统410,所述分布式数据库优化存储系统410通过互连460与数据库引擎头节点420通信。如在3所示的实例中,数据库引擎头节点420可包括客户端侧存储服务驱动器425。在这个实例中,分布式数据库优化存储系统410包括多个存储系统服务器节点(包括被示出为430、440、和450的那些),其中的每一个包括用于数据页面的存储和用于它存储的区段的重做日志,以及被配置来执行各种区段管理功能的硬件和/或软件。例如,每个存储系统服务器节点可包括被配置来执行任何或所有的以下操作中的至少一部分的硬件和/或软件:复制(本地,例如在存储节点内)、合并重做日志以便产生数据页面、快照(例如,创建、复原、删除等)、日志管理(例如,操纵日志记录)、崩溃恢复、和/或空间管理(例如,用于区段)。每个存储系统服务器节点也可具有在其上可存储代表客户端(例如,用户、客户端应用程序、和/或数据库服务订阅者)的数据块的多个附接的存储装置(例如,SSD)。
在图4所示的实例中,存储系统服务器节点430包括数据页面433、区段重做日志435、区段管理功能437、和附接的SSD 471-478。再次注意标签“SSD”可能或可能不指固态驱动,但更通常地可能指本地块存储卷,不考虑它的基础硬件。类似地,存储系统服务器节点440包括数据页面443、区段重做日志445、区段管理功能447、和附接的SSD481-488;并且存储系统服务器节点450包括数据页面453、区段重做日志455、区段管理功能457、和附接的SSD 491-498。
如先前指出的,在一些实施方案中,扇区为在SSD上的对齐单元,并且可为在SSD上可被写入而没有所述写入将仅被部分完成的风险的最大大小。例如,用于各种固态驱动和旋压介质的扇区大小可为4KB。在本文所述的分布式数据库优化存储系统的一些实施方案中,每个以及每一个扇区可在所述扇区开始处包括64比特(8字节)CRC,不考虑扇区为其一部分的较高水平实体。在此类实施方案中,这个CRC(每次当从SSD读取扇区时,其可生效)可在检测破坏中使用。在一些实施方案中,每个和每一个扇区也可包括“扇区类型”字节,其值将所述扇区识别成日志扇区、数据扇区、或未初始化的扇区。例如,在一些实施方案中,为0的扇区类型字节值可指示扇区未初始化。
在一些实施方案中,在分布式数据库优化存储系统中的每个存储系统服务器节点可实施在节点服务器的操作系统上运行的一组处理,所述处理管理与数据库引擎头节点的通信,例如,以便接收重做日志、送回数据页面等。在一些实施方案中,写入至分布式数据块优化存储系统的所有数据块可备份到长期存储和/或档案存储(例如,在远程键值耐用备份存储系统中)。
图5为示出根据一个实施方案的数据库系统中的独立分布式数据库优化存储系统的使用的框图。在这个实例中,一个或多个客户端进程510可将数据存储至由数据库系统维持的一个或多个数据库表格,所述数据库系统包括数据库引擎520和分布式数据库优化存储系统530。在图5所示的实例中,数据库引擎520包括数据库层部件560和客户端侧驱动器540(其用于分布式数据库优化存储系统530与数据库层部件560之间的接口)。在一些实施方案中,数据库层部件560可执行功能(如由图3的查询解析、优化和执行部件305以及事务和一致性管理部件330执行的那些),和/或可存储数据页面、事务日志和/或撤销日志(如由图3的数据页面高速缓冲存储器335、事务日志340和撤销日志345存储的那些)。
在这个实例中,一个或多个客户端进程510可将数据库查询请求515(其可包括把存储在一个或多个存储节点535a-535n上的数据作为目标的读取和/或写入请求)发送至数据库层部件560,并且可从数据库层部件560接收数据库查询响应517(例如,包括写入确认和/请求的数据的响应)。包括对写入数据页面的请求的每个数据库查询请求515可被解析和优化,以便产生可被发送至客户端侧驱动器540用于随后路由至分布式数据库优化存储系统530的一个或多个写入记录请求541。在这个实例中,客户端侧驱动器540可产生对应每个写入记录请求541的一个或多个重做日志记录531,并且可将它们发送至分布式数据库优化存储系统530的存储节点535中的具体的一些。分布式数据库优化存储系统530可将用于每个重做日志记录531的对应写入确认532返回至数据库引擎520(具体至客户端侧驱动器540)。客户端侧驱动器540可将这些写入确认传递至数据库层部件560(作为写入响应542),所述数据库层部件560随后可将对应的相应(例如,写入确认)发送至一个或多个客户端进程510作为数据库查询响应517中的一个。
在这个实例中,包括对读取数据页面的请求的每个数据库查询请求515可被解析和优化,以便产生可被发送至客户端侧驱动器540用于随后路由至分布式数据库优化存储系统530的一个或多个读取记录请求543。在这个实例中,客户端侧驱动器540可将这些请求发送至分布式数据库优化存储系统530的存储节点535中的具体的一些,并且分布式数据库优化存储系统530可将请求的数据页面533返回至数据库引擎520(具体至客户端侧驱动器540)。客户端侧驱动器540可将返回的数据页面发送至数据库层部件560作为返回数据记录544,并且数据库层部件560随后可将数据页面发送至一个或多个客户端进程510作为数据库查询响应517。
在一些实施方案中,各种错误和/或数据损失消息534可从分布式数据库优化存储系统530发送至数据库引擎520(具体至客户端侧驱动器540)。这些消息可从客户端侧驱动器540传递至数据库层部件560作为错误和/或损失报告消息545,并且随后连同(或代替)数据库查询响应517至一个或多个客户端进程510。
在一些实施方案中,分布式数据库优化存储系统530的API531-534和客户端侧驱动器540的API 541-545可将分布式数据库优化存储系统530的功能性暴露至数据库引擎520,犹如数据库引擎520为分布式数据库优化存储系统530的客户端。例如,数据库引擎520(通过客户端侧驱动器540)可通过这些API写入重做日志记录或请求数据页面,以便执行(或促进其性能)由数据库引擎520和分布式数据库优化存储系统530的组合实施的数据库系统的各种操作(例如,存储、访问、改变日志、恢复、和/或空间管理操作)。如图5所示,分布式数据库优化存储系统530可在存储节点535a-535n上存储数据块,所述存储节点535a-535n中的每一个可具有多个附接的SSD。在一些实施方案中,分布式数据库优化存储系统530可通过应用各种类型的冗余方案为存储的数据块提供高耐久性。
注意在各种实施方案中,在图5中,在数据库引擎520与分布式数据库优化存储系统530之间的API调用和响应(例如,API 531-534)和/或在客户端侧驱动器540与数据库层部件560之间的API调用和响应(例如,API 541-545)可在安全代理连接(例如,由网关控制面管理的一个)上执行,或可在公共网络上,或可替代地在专用通道(如虚拟专用网络(VPN)连接)上执行。到本文所述的数据库系统的部件和/或在其之间的这些和其他API可根据不同的技术(包括但不限于,简单对象访问协议(SOAP)技术和表述性状态转移(REST)技术)来实施。例如,这些API可能,但不必须被实施作为SOAP API或RESTful API。SOAP为用于在基于网络的服务的情况下用于交换信息的协议。REST为用于分布式超媒体系统的构造风格。RESTful API(其也可被称为RESTful网络服务)为使用HTTP和REST技术实施的网络服务API。本文描述的API在一些实施方案中可用各种语言(包括但不限C、C++、Java、C#和Perl)中的客户端库来包装,以便支持与数据库引擎520和/或分布式数据库优化存储系统530的合并。
如以上指出的,在一些实施方案中,数据库系统的功能部件可在由数据库引擎执行的那些与在独立、分布式、数据库优化存储系统中执行的那些之间划分。在一个具体实例中,响应于接收来自客户端进程(或其线程)的对将某物插入至数据库表格中(例如,通过将记录添加那个数据块来更新单个数据块)的请求,数据库引擎头节点的一个或多个部件可执行查询解析、优化、和执行,以及可将查询的每个部分发送至事务和一致性管理部件。事务和一致性管理部件可确保没有其他客户端进程(或其线程)试图同时修改相同的行。例如,事务和一致性管理部件可负责确保这个改变自动地、一致地、耐久地以及以隔离的方式在数据库中执行。例如,事务和一致性管理部件可与数据库引擎头节点的客户端侧存储服务驱动器一起工作,以便产生将被发送至分布式数据库优化存储服务中的一个节点的重做日志记录,以及将它发送至分布式数据库优化存储服务(连同响应于其他客户端请求产生的其他重做日志),以一个顺序和/或用确保ACID特性满足这个事务的定时。在接收重做日志记录(其也可被称为更新记录)后,对应的存储节点可更新数据块,并且可更新用于所述数据块的重做日志(例如,指向数据块的所有改变的记录)。在一些实施方案中,数据库引擎可负责产生用于这个改变的撤销日志,并且也可负责产生用于撤销日志的重做日志记录,其都可本地(在数据库层中)用于确保事务性。然而,不同于常规数据库系统,本文描述的系统可将对数据块应用改变的责任转移至存储系统(不是在数据库层应用它们以及将修改的数据块运送至存储系统)。此外,如本文在图8-9所述,在各种实施方案中,快照操作和/或日志操纵同样可由存储系统执行。
在不同的实施方案中,各种不同的分配模型可被实施用于SSD。例如,在一些实施方案中,日志条目页面和物理应用页面可从与SSD装置关联的单个堆的页面分配。这个方法可具有留下由日志页面和数据页面消耗的相对数量的存储的优点,以便保持未指定的以及自动适应使用。它也可具有允许页面保持未准备的,直到它们随意不用准备地使用和重新目的化的优点。在其他实施方案中,分配模型可将存储装置划分成用于日志条目和数据页面的独立空间。一旦此类分配模型由图6中的框图示出以及在以下描述。
图6为示出根据一个实施方案的可将数据和元数据存储在分布式数据库优化存储系统的给定存储节点(或持久存储装置)上的方式的框图。在这个实例中,SSD存储空间600将SSD标头和其他固定的元数据存储在标记610的空间的部分中。它将日志页面存储在标记620的空间的部分中,并且包括被初始化和保留用于附加日志页面的标记630的空间。SSD存储空间600的一部分(被示出为640)被初始化,但未分配,并且另一空间部分(被示出为650)未被初始化以及未分配。最终,标记660的SSD存储空间600的部分存储数据页面。
在这个实例中,第一可用日志页槽被指示成615,并且最后使用的日志页槽(短暂的)被指示成625。最后保留的日志页槽被指示成635,并且最后可用日志页槽被指示成645。在这个实例中,第一使用的数据页槽(短暂的)被指示成665。在一些实施方案中,在SSD存储空间600内的这些元件(615、625、635、645和665)中的每一个的位置可由各自的指针来识别。
在图6所示的分配方法中,有效日志页面可被包装至平坦存储空间的开始中。在使用地址空间中较远的附加的日志页槽之前,由于被释放的日志页面而打开的孔可再用。例如,在最坏的情况下,第一n个日志页槽包含有效日志数据,其中n为已经同时存在的有效日志页面的最大数目。在这个实例中,有效数据页面可被包装至平坦存储空间的末端中。在使用地址空间中较低的附加的数据页槽之前,由于被释放的数据页面而打开的孔可再用。例如,在最坏的情况下,最后m个数据页面包含有效数据,其中m为已经同时存在的有效数据页面的最大数目。
在一些实施方案中,在日志页槽可变成潜在的有效日志页面条目组的部分之前,它必须被初始化至对于有效未来日志条目页面不可能为混乱的值。由于引退的日志页面具有足够的元数据以便对于新的有效日志页面为永不混乱的,对于循环的日志页槽这是含蓄真实的。然而,当存储装置被首先初始化时,或当潜在用于存储应用数据页面的空间被改造时,日志页槽必须在它们添加至日志页槽池之前被初始化。在一些实施方案中,再平衡/改造日志空间可能作为后台任务来执行。
在图6所示的实例中,当前日志页槽池包括在第一可用日志页槽(在615处)与最后保留的日志页槽(625)之间的区域。在一些实施方案中,这个池可安全增长至最后可用日志页槽(625),不用再初始化新的日志页槽(例如,通过持续对识别最后保留的日志页槽635的指针的更新)。在这个实例中,超过最后可用日志页槽(其由指针645识别),通过持续初始化的日志页槽,以及持续更新用于最后可用日志页槽的指针(645),所述池可增长至第一使用的数据页槽(其由指针665识别)。在这个实例中,被示出作为650的SSD存储空间600的先前未初始化和未分配的部分可被暂用以便存储日志页面。在一些实施方案中,通过持续对用于最后保留的日志页槽的指针(635)的更新,当前日志页槽池可向下收缩至最后使用的日志页槽(其通过指针来识别)的位置。
在图6所示的实例中,当前数据页槽池包括在最后可用日志页槽(其由指针645来识别)与SSD存储空间600的端部之间的区域。在一些实施方案中,通过持续对最后可用日志页槽的指针(645)的更新,数据页面池可安全增长至由最后保留的日志页槽的指针(635)识别的位置。在这个实例中,被示出为640的SSD存储空间600的先前未初始化但未分配的部分可被暂用以便存储日志页面。超过这个,通过持续对用于最后保留的日志页槽(635)和最后使用的日志页槽(645)的指针的更新,有效再分配SSD存储空间600的部分(被示出为630和640)以便存储数据页面而不是日志页面,所述池可安全增长至由最后使用的日志页槽的指针(625)识别的位置。在一些实施方案中,通过初始化附加的日志页槽和持续对最后可用日志页槽的指针(645)的更新,数据页槽池可安全向下收缩至由第一使用的数据页槽的指针(665)识别的位置。
在采用图6所示的分配方法的实施方案中,用于日志页面池和数据页面池的页面大小可被独立挑选,同时仍促进良好的堆积性能。在此类实施方案中,可能不存在有效日志页面链接至由应用数据形成的欺骗日志页面的可能性,并且可能区分损坏的日志与链接至还未写入的下一页面的有效日志尾部。在采用图6所示的分配方法的实施方案中,在启动时,直到由最后保留的日志页槽的指针(635)识别的位置的所有日志页槽可迅速和相继地被读取,并且整个日志索引可被再构造(包括推测的链接和顺序)。在此类实施方案中,由于可从LSN排序约束推断一切,在日志页面之间可能不需要存在明确的链接。
在一些实施方案中,区段可包括三个主要部分(或区):包含热日志的一个、包含冷日志的一个、以及包含用户页面数据的一个。区不必要为SSD的连续区域。它们宁可以存储页面的间隔尺寸来散布。此外,可能存在用于每个区段的根页面,所述每个区段存储关于所述区段的元数据和它的性能。例如,用于区段的根页面可存储用于区段的用户页面大小、区段中的用户页面数目、热日志区的当前开始/头部(其可能以刷新数目的形式记录)、卷纪元、和/或访问控制元数据。
在一些实施方案中,热日志区可从客户端接受新的写入,如同它们由存储节点接收。指定来自先前版本的页面的以Δ形式的用户/数据页面改变的两个Δ用户日志记录(DULR),以及指定完全用户/数据页面的内容的绝对用户日志记录(AULR)可被完全写入日志中。日志记录可添加至这个区中,以近似它们被接收(例如,它们不是通过LSN来分类)以及它们可横跨日志页面的顺序。日志记录可为自描述的,例如,它们可包含它们自身的大小的指示。在一些实施方案中,在这个区域中未执行无用数据收集。相反,在所有需要的日志记录已经被复制至冷日志后,可通过从日志开始截断来改造空间。每次扇区被写入时,在热区中的日志扇区可用最近已知的无条件的VDL来注释。有条件的VDL CLR可在它们被接收时被写入至热区中,但仅最近写入的VDL CLR可能为有意义的。
在一些实施方案中,每次新的日志页面被写入时,它可被分配一个刷新数目。刷新数目可被写入作为每个日志页面内的每个扇区的部分。当比较两个日志页面时,刷新数目可用于确定哪个日志页面稍后被写入。刷新数目可单调增加,并且范围至SSD(或存储节点)。例如,一组单调增加的刷新数目在SSD上的所有区段之间(或在存储节点上的所有区段)共享。
在一些实施方案中,在冷日志区中,日志记录可能以它们的LSN增长顺序来存储。在这个区中,AULR可能不必被顺序存储,取决于它们的大小。例如,如果它们具有大的有效负载,所述有效负载的全部或一部分可存储在数据区中,并且它们可指向它们的数据被存储在数据区中的地方。在一些实施方案中,在冷日志区中的日志页面每次可一整页面地被写入,不是扇区接着扇区地。因为在冷区中的日志页面每次被整个页面地写入,用于其所有扇区中的刷新数目不相同的冷区中的任何日志页面可被认为是不完全写入的页面并且可被忽略。在一些实施方案中,在冷日志区中,DULR可以能够横跨日志页面(直到两个日志页面的最大值)。然而,AULR可能不能够跨越日志扇区,例如,以使得合并操作在单个原子写入中将能够用AULR来替换DULR。
在一些实施方案中,冷日志区通过从热日志区复制日志记录来填充。在此类实施方案中,仅其LSN小于或等于当前无条件的卷耐用LSN(VDL)的日志记录可为符合条件的以便被复制到冷日志区。当将日志记录从热日志区移动至冷日志区时,一些日志记录(如许多CLR)可能不需要被复制因为它们不再是必须的。此外,可在这个点处执行用户页面的一些附加合并,其可简化所需的复制数量。在一些实施方案中,一旦给定热区日志页面已被完全写入,并且不再是最新的热区日志页面,以及在热区日志页面上的所有ULR已被成功复制到冷日志区,所述热区日志页面可被释放和再使用。
在一些实施方案中,无用数据收集可在冷日志区中进行,以便改造由废弃日志记录占据的空间,例如,不再需要存储在存储层的SSD中的日志记录。例如,当存在用于相同用户页面的随后AULR,以及由日志记录代表的版本的用户页面不再被需要在SSD上保留时,日志记录可变成废弃的。在一些实施方案中,通过合并两个或更多的邻近日志页面以及用更少的新日志页面来替换它们,所述更少的新日志页面包含来自它们替换的日志页面的所有非废弃的日志记录,无用数据收集进程可改造空间。新的日志页面可被分配大于它们替换的日志页面的刷新数目的新的刷新数目。在这些新的日志页面的写入完成后,替换的日志页面可被添加至空闲页面库。注意在一些实施方案中,可能不存在使用任何指针的日志页面的任何明确链接。反而,日志页面的序列可通过在那些页面上的刷新数目来含蓄地确定。每当日志记录的多个副本被发现时,在日志页面中存在的具有最高刷新数目的日志记录可被认为是有效的,并且其他的可被认为是废弃的。
在一些实施方案中,例如,因为在数据区(扇区)内管理的空间的间隔尺寸可不同于数据区(存储页面)外的间隔尺寸,可能存在一些存储残片。在一些实施方案中,为使得这个存储残片在控制下,所述系统可追踪由每个数据页面使用的扇区的数目,可优先从几乎完整的数据页面分配,并且可优先无用数据收集几乎空的数据页面(如果它仍为相关的,其可需要将数据移动至新的位置)。注意在一些实施方案中,被分配至区段的页面可能在所述三个区中被重定意图。例如,当被分配至区段的页面被释放时,它可保持与那个区段关联持续某个时间段,并且随后可在那个区段的三个区中的任何一个中使用。每个扇区的扇区标头可指示所述扇区属于的区。一旦页面中的所有扇区为空闲的,所述页面可返回在区上共享的常用空闲存储页面池。这个空闲存储页面共享在一些实施方案中可简化(或避免)存储残片。
在一些实施方案中,本文描述的分布式数据库优化存储系统可在存储器中维持各种数据结构。例如,对于在区段中存在的每个用户页面,用户页面表格可存储比特,所述比特指示这个用户页面是否为“清除的”(即它是否包括所有零点)、来自用于页面的冷日志区的最新日志记录的LSN、以及来自用于页面的热日志区的所有日志记录的位置的阵列/列表。对于每个日志记录,用户页面表格可存储扇区数目、那个扇区内的日志记录偏移、将在那个日志页面内读取的扇区的数目、第二日志页面(如果日志记录跨越日志页面)的扇区数目、以及将在那个日志页面内读取的扇区的数目。在一些实施方案中,用户页面表格也可存储来自冷日志区的每个日志记录的LSN,和/或用于最新的AULR(如果它在冷日志区)的有效负载的扇区数目的阵列。
在本文描述的分布式数据库优化存储系统的一些实施方案中,LSN索引可存储在存储器中。LSN索引可将LSN映射至冷日志区内的日志页面。假设在冷日志区中的日志记录被分类,它可能将包括每个日志页面一个条目。然而,在一些实施方案中,每个非废弃的LSN可存储在索引中,并且映射至对应的扇区数目、偏移、和用于每个日志记录的扇区的数目。
在本文描述的分布式数据库优化存储系统的一些实施方案中,日志页面表格可存储在存储器中,并且日志页面表格可在冷日志区的无用数据收集期间使用。例如,日志页面表格可识别哪些日志记录为废弃的(例如,哪些日志记录可被无用数据收集),以及多少空闲空间在每个日志页面上可用。
在本文描述的存储系统中,程度可为代表可与其他程度组合(连结的或剥离的)以便代表卷的高耐用存储单元的逻辑概念。可通过单个保护组中的成员关系使得每个程度耐用。程度可给LSN类型的读取/写入接口提供具有在创建时限定的固定大小的连续字节子范围。对程度的读取/写入操作可通过包含的保护组映射至一个或多个合适的区段读取/写入操作中。如本文使用的,术语“卷程度”可指用于代表卷内的具体字节子范围的程度。
如以上指出的,卷可包括多个程度,每个程度由包括一个或多个区段的保护组代表。在一些实施方案中,指向不同程度的日志记录可具有交错的LSN。为改变直到特定LSN的卷以便(使其)为耐用的,可能需要直到那个LSN的所有日志记录为耐用的,无论它们属于的程度。在一些实施方案中,客户端可追踪还未被使得耐用的突出日志记录,并且一旦直到具体LSN的所有ULR被使得耐用,它可将卷耐用LSN(VDL)消息发送至卷中的保护组中的一个。VDL可被写入至用于保护组的所有同步镜像区段。这有时被称为“无条件VDL”,并且它可周期性地持续至各种区段(或更具体地,至各种保护组)连同在所述区段上发生的写入活动。在一些实施方案中,无条件VDL可存储在日志扇区标头中。
在各种实施方案中,可在区段上执行的操作可包括写入从客户端接收的DULR或AULR(其可包括将DULR或AULR写入至热日志区的尾部,以及随后更新用户页面表格)、读取冷用户页面(其可包括定位用户页面的数据扇区,以及返回它们而不需要应用任何附加的DULR)、读取热用户页面(其可包括定位用于用户页面的最近AULR的数据扇区,以及将任何随后的DULR应用至用户页面,在返回它前),用AULR替换DULR(其可包括合并用于用户页面的DULR以便创建替换应用的最后DULR的AULR)、操纵日志记录等。如本文描述的,合并为将DULR应用至较早版本的用户页面以便创建稍后版本的用户页面的进程。因为(直到另一DULR被写入)在合并前写入的所有DULR可能不需要按需读取和应用,合并用户页面可帮助简化读取时延。通过使得旧的AULR和DULR为废弃的(假定不存在需要日志记录为当前的快照),它也可帮助改造存储空间。在一些实施方案中,合并操作可包括定位最近的AULR,以及依次应用任何随后的DULR而不跳过DULR中的任何一个。如以上指出的,在一些实施方案中,合并可能不在热日志区内执行。反而,它可在冷日志区内执行。在一些实施方案中,当日志记录从热日志区复制至冷日志区时,合并也可被执行。
在一些实施方案中,合并用户页面的决定可由用于页面的未决定的DULR链的大小(例如,如果DULR的长度超过用于合并操作的预先限定的阈值,根据全系统的、具体应用的或客户端指定的政策)、或由被客户端读取的用户页面来触发。
图7为示出根据一个实施方案的数据库卷710的示例性配置的框图。在这个实例中,对应于各种地址范围715(被示出作为地址范围715a-715e)中的每一个的数据被存储为不同的区段745(被示出为区段745a-745n)。更具体地,对应于各种地址范围715中的每一个的数据可被组织至不同的程度(被示出作为程度725a-725b,和程度735a-735h)中,并且这些程度中的每一个可包括在不同的保护组730(被示出作为730a-730f)中,用或不用剥离(如被示出为带区集720a和带区集720b)。在这个实例中,保护组1示出擦除编码的使用。在这个实例中,保护组2和3以及保护组6和7代表彼此的镜像数据组,同时保护组4代表单个实例(非冗余的)的数据组。在这个实例中,保护组8代表组合其他保护组的多层保护组(例如,这可代表多区域保护组)。在这个实例中,带区集1(720a)和带区集2(720b)示出在一些实施方案中程度(例如,程度725a和725b)可如何被剥离至卷中。
更具体地,在这个实例中,保护组1(730a)包括程度a-c(735a-735c),所述程度a-c(735a-735c)分别包括来自范围1-3(715a-715c)的数据,并且这些程度可映射至区段1-4(745a-745d)。保护组2(730b)包括程度d(735d),所述程度d(735d)包括从范围4(715d)剥离的数据,并且这个程度映射至区段5-7(745e-745g)。类似地,保护组3(730c)包括程度e(735e),所述程度e(735e)包括从范围4(715d)剥离的数据,并且被映射至区段8-9(745h-745i),以及保护组4(730d)包括程度f(735f),所述程度f(735f)包括从范围4(715d)剥离的数据,并且被映射至区段10(745j)。在这个实例中,保护组6(730e)包括程度g(735g),所述程度g(735g)包括从范围5(715e)剥离的数据,并且被映射至区段11-12(745k-7451),以及保护组7(730f)包括程度h(735h),所述程度h(735h)包括从范围5(715e)剥离的数据,并且被映射至区段13-14(745m-745n)。
现在转向图8,在各种实施方案中,数据库系统400可被配置来创建、删除、修改和/或以其他方式使用快照。尽管图8的方法可被描述为由日志结构化存储系统如分布式数据库优化存储系统410的各种部件(例如,存储系统服务器节点430、440、450等)执行,但是在一些情况下所述方法不需要由任何特定部件执行。例如,在一些情况下,根据一些实施方案,图8的方法可由一些其他部件或计算机系统执行。或者,在一些情况下,数据库系统400的部件可以与图4的实例中所示不同的方式组合或存在。在各种实施方案中,图8的方法可由分布式数据库优化存储系统的一个或多个计算机执行,所述计算机中的一个被示出为图10的计算机系统。图8的方法被示出为用于快照创建、删除、修改、使用等的方法的一种示例性实现方式。在其他实现方式中,图8的方法可包括另外的或比所示少的框图。
在810,可维持多个日志记录,每个日志记录与由数据库服务存储/维持的数据的相应改变相关联。在各种实施方案中,由日志记录描写的改变可由数据库服务的分布式数据库优化存储系统的存储系统服务节点430存储。如本文所描述,在一个实施方案中,日志记录可由分布式数据库优化存储系统从数据库服务的数据库引擎头节点接收。在其他实施方案中,日志记录可从独立于数据库服务的分布式数据库优化存储系统的另一部件接收。
在一个实施方案中,如本文所描述,每个日志记录可与相应识别符、如顺序排序的识别符(例如,日志序列号(“LSN”))相关联。日志记录可与它们被被接收时的相应LSN相关联,或存储系统可按照给定日志记录被接收的顺序向其分配LSN。
多个日志记录所对应于的数据可以是单个数据页面(例如,图4的数据页面433、443或453)或多个数据页面。考虑其中多个日志记录包括具有LSN 1-4的四个日志记录的情景。在一个实例中,LSN 1-4中的每一个可涉及数据页面A。或者,在另一实例中,LSN 1和LSN3可涉及数据页面A并且LSN 2和LSN 4可涉及数据页面B。应指出,在实例中,每个特定日志记录可与单个用户/数据页面相关联(例如,LSN 1-页面A、LSN 2-页面B等)。
应指出,在各种实施方案中,日志记录可以分布式方式存储在各个节点上,如图4的存储系统服务器节点430、440和450。在一些实施方案中,日志记录的单个副本可存储在单个节点处,或在其他实例中,单个副本可存储在多个节点处。从上文的四个日志记录实例继续,具有LSN 1的日志记录可存储在节点430和节点440两者处,具有LSN 2的日志记录可存储在节点430处,并且具有LSN 3和LSN 4的日志记录可存储在所有三个节点430、440和450处。在这种实例中,并非所有各个节点和/或镜像可随整组日志记录保持最新。如图9处所描述,日志记录操纵可被执行来便于调和存储在各个节点处的日志记录之间的不同。
在一些实施方案中,给定日志记录被存储的位置(例如,哪个或哪些节点)可由数据库引擎头节点确定并且可以作为提供至分布式数据库优化存储系统的路由信息被包括。可替代地或另外地,分布式数据库优化存储系统可确定哪个或哪些节点存储给定日志记录。在一个实施方案中,由分布式数据库优化存储系统做出的这种确定可以是为了通过在各个节点之中大约成比例地分布日志记录来使性能最大化。在一个实施方案中,由分布式数据库优化存储系统做出的这种确定可取决于日志记录的重要性。例如,重要(例如,频繁被访问)的数据页面的AULR可存储在多个节点处,而与不那么重要的数据页面相关联的DULR可仅存储在单个节点处。
如本文所描述,日志记录可包括DULR和AULR。在各种实施方案中,应用程序、数据库服务、和/或数据库服务(或其他部件)的用户可确定是否创建数据页面的给定改变的DULR或AULR。例如,数据库服务可确保给定数据页面的每十个日志记录中的至少一个是AULR。在这种实例中,如果给定数据页面的连续九个日志记录是DULR,那么数据库服务可指定下一个日志记录为AULR。
此外,在各种实施方案中,卷中的每个数据页面可能需要AULR。因此,对于数据页面的第一写入,日志记录可以是AULR。在一个实施方案中,作为系统初始化的一部分,每个数据页面可被写入至一定值(例如,全零)以将数据页面初始化为AULR。全零AULR可足以使得数据页面的后续写入可以是DULR。
如820处所示,可产生快照。在各种实施方案中,产生快照可包括产生指示特定日志记录的日志识别符(例如,LSN)的元数据。在一些实例中,也可产生指示其他特定日志记录的一个或多个其他日志识别符的元数据。指示日志记录的日志识别符的这类元数据可指示那些特定日志记录将被保留(例如,不删除或无用数据收集)以用于那个快照(直到那个快照被删除或替换)。
在一些实施方案中,所产生的元数据还可指示快照识别符。示例性快照识别符可包括与快照相关联的序列号、名称、时间中的一个或多个。例如,特定快照可被称作SN1和/或可具有GMT 2005年12月22日14:00.00(确切地下午2点)的时间戳。
在各种实施方案中,与快照相关联的元数据可用于防止一个或多个日志记录被无用数据收集。例如,元数据可指示取决于与快照相关联的日志记录/LSN而需要再创建给定页面的一个或多个日志记录。因此,元数据可确保可取决于与快照相关联的LSN产生数据页面。
在各种实施方案中,元数据可存储在多种不同位置中。例如,元数据可存储在每个日志记录内并且可指示那个相应日志记录的保护免于无用数据收集的状态。例如,如果对于特定快照,具有LSN 2、LSN 3和LSN 4的日志记录不应被无用数据收集,那么与LSN 2、LSN3和LSN 4处的日志记录相关联的元数据应指示LSN 2、LSN 3和LSN4处的日志记录不应被无用数据收集。如另一实例,快照元数据可存储在更高水平的分布式数据库优化存储系统处(例如,在区段、卷、或日志记录水平、或其他地方等),并且可指示多个日志记录的无用数据收集状态。在这种实例中,元数据包括对应于根据快照应被保留的日志记录的LSN列表。应指出,在取得后续快照时,将被保留的日志记录可改变。因此,对应于日志记录中的特定一个的元数据也可改变。例如,LSN 2、LSN 3和LSN 4可不再需要被保留以用于未来的快照。因此,在这种实例中,元数据可被修改以使得其不再指示对应于LSN 2、LSN 3和LSN 4的日志记录应被保留。
在一个实施方案中,元数据可明确地指示哪些日志记录不是可无用数据收集的,或相反地它可指示快照类型(在下文中描述)连同对应于快照的特定LSN。在这种实施方案中,分布式数据库优化存储系统的无用数据收集进程可从快照类型和特定LSN确定哪些日志记录是并且哪些日志记录不是可无用数据收集的。例如,无用数据收集进程可确定与特定LSN相关联的日志记录以及那个数据页面的在时间上回溯直到先前AULR的每个DULR不是可无用数据收集的。
在各种实施方案中,快照可特定于特定数据页面,或者它可特定于多个数据页面(例如,区段、卷)。
在一个实施方案中,如本文所描述,元数据可指示快照的类型(例如,快照是连续的还是离散的快照)。快照的类型可在元数据中被直接指示,或者它可被间接指示(例如,被指示为不可无用数据收集的日志记录可指示快照是连续的还是离散的)。例如,连续快照可指示不可无用数据收集的一组日志记录,而离散快照可指示不可无用数据收集的不同(例如,更小)组日志记录。在一些情况中,连续和离散快照可具有指示相同组日志记录的元数据。例如,对于在对应于AULR的时间点取得的数据页面的快照,连续和离散快照都可具有指示仅AULR应受保护免于无用数据收集的元数据。
连续快照可用于将数据复原至连续快照的时间与先前时间(例如,最近AULR)之间的每个时间点。相比之下,离散快照可重复用于将数据复原至截至快照的时间点时的状态。例如,考虑以下数据页面(AULR)的实例,其中那个数据页面之后有三个Δ日志记录,随后是新版本的数据页面(AULR)以及那个新版本的数据页面的再三个Δ日志记录。使用快照复原数据在本文被用来描述在不复制先前版本的数据的情况下读取截至快照时的数据。如果离散快照在所有条目(两个AULR和所有六个DULR)之后的时间点取得,那么可被指示为不可无用数据收集的日志条目包括新版本的数据页面以及那个数据页面之后的三个日志条目。如果连续快照从当前快照时间点到第一版本的数据页面的时间点取得,那么可被指示为不可无用数据收集的日志条目包括第一数据页面以及所有六个日志记录。应指出,中间实例化块(例如,新版本的数据页面(AULR))可不被指示为不可无用数据收集,因为它可用第一版本的数据页面和前三个日志记录重新创建。应指出,在此实例中,连续快照可用于将数据页面复原至日志记录存在时的任何时间点,而离散快照可用于将数据页面复原至快照的时间点与快照之前的最近AULR之间的每个时间点。
在一些实施方案中,产生快照可在无需如当采用离卷备份策略(off-volumebackup strategy)时将需要的另外读取、复制或写入数据块的情况下执行。因此,可原位产生快照,使得快照产生可不需要取得数据的备份。应指出,可能出现其中数据也存储在其他地方的数据的备份,但是这种事件可在快照产生进程之外执行。例如,客户端可请求将数据的多个副本存储在独立存储位置中。
如830处所示出,数据可被复原至对应于快照的状态。例如,如果用户丢弃了表格但是想要找回表格,快照可用于读取/复原数据(例如,数据页面、区段、卷等),使得表格再次可用。应指出,读取/复原快照可包括丢失在快照的时间点之后执行的一些数据/工作,并且可不包括创建先前版本的数据的副本以作为读取/复原进程的一部分。
将数据复原至对应于快照的状态可包括将日志记录中的一个或多个(包括元数据中所指示的特定日志记录)应用至先前版本的数据。先前版本的数据可以是AULR的形式或它可以是DULR的形式(如应用至AULR和/或DULR之前的一个或多个DULR)。
在一些实施方案中,将一个或多个日志记录应用至先前版本的数据可作为数据库服务的后台处理来执行。在一个实施方案中,将日志记录应用至先前版本的数据可分布在数据库服务的各个节点上。在一个实施方案中,将日志记录应用至先前版本的数据可在那些各个节点上并行执行。
如840处所示出,在复原至特定快照之后,与晚于与快照相关联的时间的时间相关联的一个或多个日志记录可被指示为可无用数据收集。例如,如果对于具有在LSN 3处取得的快照的数据页面存在具有LSN 1-6的日志记录,那么在复原在LSN 3处取得的快照之后,LSN 4-6可被指示为可无用数据收集或者可仅将不可无用数据收集指示去除(从而使得它们可无用数据收集)。因此,即使在LSN 6处取得第二快照,在从LSN 3复原快照之后,在LSN6处取得的快照可不再处于原位,使得对应于在LSN 6处取得的快照的日志记录的保护可不再有效。或者,在一个实施方案中,第二快照可即使当复原至先前快照时仍旧被保留。
在各种实施方案中,无用数据收集可以是允许改造用于存储日志记录的空间用于未来的其他日志记录(或用于其他数据)的后台处理。无用数据收集可散布在各个节点上,使得无用数据收集可作为并行的分布式进程发生。通过无用数据收集进程改造可包括删除一个或多个日志记录。这些要删除的日志记录可通过无用数据收集进程基于元数据中所指示的特定日志记录和/或可基于快照的类型来确定。或者,在其中每个受保护日志记录在元数据中被明确地指示的一个实施方案中,那么无用数据收集进程可仅删除在元数据中未被指示受保护的日志记录。
在一些实施方案中,可至少部分地基于快照合并多个日志记录。例如,对于给定数据页面,如果AULR存在于LSN 1处,DULR存在于LSN 2-8处并且离散快照在LSN 8处取得,那么可创建新AULR以替代LSN 8处的DULR,使得将来自LSN 2-8的日志记录中的每一个应用至LSN 1处的AULR。LSN 8处的新AULR随后可允许LSN 1-7处的日志记录可无用数据收集,从而腾出用于存储这些日志记录的空间。应指出,对于连续快照,合并可能不发生,以便维持复原至由连续快照覆盖的每一个时间点的能力。应指出,客户端可请求保留先前两天的连续快照,并且保留在那之前三十天的周期性(例如,每天两次、每天一次)离散快照。当连续快照落在先前两天的范围之外时,它可被转换成离散快照,并且可不再保留所转换的离散快照所不再需要的日志记录。
考虑其中对于第1-30天中的每一天存在每天一次的离散快照并且从第30天到第32天存在连续快照的实例。在第33天,客户端可不再需要从第30天到第31天的连续快照,因为它不再在最近的两天时间段之内。因此,可将从第30天到第31天的连续快照转换成离散快照。为了将从第30天到第31天的连续快照的一部分转换成离散快照,可修改元数据以使得那个时间点的离散快照所不再需要的日志记录可被指示为可无用数据收集(或者不再被指示为不可无用数据收集)。按照同样的方式,也可删除和/或无用数据收集第1天的离散快照(假定第2天离散快照不取决于第1天的离散快照的日志记录),因为它不再落在最近两天之前的先前三十天的窗口之内。删除第1天的快照可包括修改和/或删除保护与第1天快照相关联的日志记录不被无用数据收集(除非后续快照需要)的元数据,使得那些记录随后是可无用数据收集的。应指出,如果第2天的离散快照取决于第1天的离散快照的日志记录,那么可在AULR中转换与第2天的离散快照相关联的一个或多个日志记录,使得可删除和/或无用数据收集第1天日志记录。
如本文所描述,图8的方法可应用于单个数据页面的数据或来自多个数据页面的数据。因此,在各种实施方案中,快照可用于从多个不同数据页面复原数据或将数据复原至单个数据页面。因此,快照的元数据可指示单个数据页面的一个或多个特定日志记录的一个或多个日志识别符或多个数据页面的多个日志记录的多个日志识别符。还应指出,在一些例子中,对应于用于单个数据页面的快照的元数据还可指示多个日志记录的多个日志识别符。例如,元数据可指示不应被无用数据收集(如如果快照对应于DULR)的多个日志记录。在这种实例中,元数据可指示(直接地或间接地)那个页面的在时间上回溯至最近AULR的每个DULR以及最近AULR不应被无用数据收集。
与通过读取、复制和写入数据块备份数据来执行快照的系统对照,所公开的原位快照技术可在使用更少IO和网络资源方面改善系统的性能。并且因为这些性能改善,所公开的技术可提供较少的系统的用户(例如,将系统用于前台活动的那些)将可见的事务速率停顿或抑制。
现在转向图9,在各种实施方案中,数据库系统400可被配置来操纵(例如,转化、修改等)日志记录。尽管图9的方法可被描述为由日志结构化存储系统如分布式数据库优化存储系统410的各种部件(例如,存储系统服务器节点430、440、450等)执行,但是在一些情况下所述方法不需要由任何特定部件执行。例如,在一些情况下,根据一些实施方案,图9的方法可由一些其他部件或计算机系统执行。或者,在一些情况下,数据库系统400的部件可以与图4的实例中所示不同的方式组合或存在。在各种实施方案中,图9的方法可由分布式数据库优化存储系统的一个或多个计算机执行,所述计算机中的一个被示出为图10的计算机系统。图9的方法被示出为用于日志转化/操纵的方法的一种示例性实现方式。在其他实现方式中,图9的方法可包括另外的或比所示少的框图。例如,图9的方法可与图8的方法结合使用,使得图9的方法包括图8的方法的一个或多个块。
在910,可接收多个日志记录。例如,日志记录可由分布式数据库优化存储系统从数据库服务的数据库引擎头节点接收。如在图8处指出并且如本文所描述,每个日志记录可与相应日志序列识别符相关联,并且可与由数据库系统存储的数据的相应改变相关联。还如本文所描述,日志记录可包括一个或多个AULR(也被称为基线日志记录),和/或一个或多个DULR。基线日志记录可包括一页数据,使得它包括所述页面的全部数据而不仅仅是所述数据的改变。相比之下,DULR可包括一页数据的改变而不是完整一页数据。
下面的段落描述用于描述日志记录范围的示例性符号。单括号()和方括号[]指示一定范围内的开放(排他性)和闭合(包括性)界限。如本文所描述,LSN可以是日志记录的顺序排序,使得0<=a<=b<=c<=d<=e。LSN t是代表尾部的特殊LSN,其从0开始并且随写入在卷上发生而持续增加。如本文所使用,日志区间是具有能够在给定基线LSN处的卷的情况下读取一个或多个目标LSN处的卷所必须的所有信息的日志记录的集合。在一个实施方案中,日志区间不包含所具有的LSN小于或等于基线LSN或大于最高目标LSN的任何日志记录。例如,如果在基线LSN‘a’处存在完整卷,并且日志区间是L(a;b],那么可在LSN‘b’处产生并读取所述卷。
随后使用示例性句法,日志区间可表示为L(<基线LSN>;<目标LSN组>]。在一个实施方案中,<基线LSN>可以是单个LSN(例如,‘0’或‘a’)。<目标LSN组>可以是单个LSN(例如,‘b’)、离散LSN的序列(例如,‘b,c’)、LSN的包括性范围(例如,‘c..d’)、或其组合(例如,‘b,c,d..e’)。包括性范围,如c..d指示足够的信息可供用于复原c与d之间的任何卷。根据示例性性句法,目标LSN大于或等于基线LSN。还根据示例性句法,日志区间的LSN以升序列出。
在各种实施方案中,日志区间中的记录可以是AULR和/或DULR的组合。日志区间可替代地可包括仅DULR或仅AULR。例如,日志区间可仅包括在基线与目标LSN之间被修改的用户页面的AULR。在各种实施方案中,不需要能够在目标LSN之外的LSN处产生各种版本的用户页面。例如,日志区间L(a;c]可不具有足够的信息来在LSNb(其中a<b<c)处产生用户页面。
假定卷的初始状态包括全零,L(0;a]形式的日志区间可表示LSN a处的卷。
本文所描述的日志区间符号指示包括多个数据/用户页面的卷的LSN。例如,考虑包括仅两个页面(x和y)的卷。具有LSN 1的日志记录可以是页面x的AULR并且具有LSN 2的日志记录可以是页面y的AULR。继续所述实例,具有LSN 3和LSN 5的日志记录可以是页面x的DULR并且具有LSN 4和LSN 6的日志记录可以是页面y的DULR。如果对页面y的读取请求进入,那么数据库服务可开始于LSN 2处的AULR(这是页面y的最近的AULR),并且在其上应用自LSN 4和LSN 6开始的改变。相似地,对于对页面x的读取请求,数据库服务将开始于LSN 1处的AULR,并且随后在将页面x返回至请求者之前应用自LSN 3和LSN 5处的日志记录开始的改变。
如920处所示出,可将多个日志记录存储在分布式数据库优化存储系统的存储节点之中。在一个实施方案中,给定日志记录可存储在分布式数据库优化存储系统的一个或多个存储节点处。在一个实施方案中,分布式数据库优化存储系统可确定给定日志记录将存储在其上的哪一个或多个存储节点上,或分布式数据库优化存储系统可从数据库引擎头节点接收指示给定日志记录将存储在其上的一个或多个存储节点的指令。应指出,在一些例子中,因为每个存储节点可能不是在给定时间存储相同的一个或多个日志记录,存储系统的一个或多个节点和/或镜像可能不随整组当前日志记录保持最新。
如930处所示出,可转化多个日志记录。如本文描述的示例性符号中所指示,可被转化的多个日志记录可包括两个或更多个日志区间。这两个或更多个日志区间可以是用于转化的操作数。下文中提供作为操作数的日志区间的各种实例(例如,L(a;c]、L(a;b,d]、L(a;b,c..e]等)。转化可以多种方式发生。例如,在一个实施方案中,转化多个日志记录可产生修改的多个日志记录。修改的多个日志记录可以是不同多个日志记录。不同多个日志记录与初始地维持的多个日志记录相比可在数量上较少、在数量上较大、或在数量上相等但在日志记录中的至少一个中有所不同。日志记录的转化可得到更有效的系统(例如,在存储空间、网络使用率等方面)。
在一个实施方案中,在具有多个节点和镜像的分布式系统中,节点和/或镜像中的一些可保持最新,而其中的一些则不保持最新。在这种实施方案中,转化多个日志记录可包括:确定存储节点中的一个不同节点处所维持的日志记录中存在的差异,以及调和各个节点处所维持的日志记录中的这些差异。调和日志记录中的差异可包括以日志记录的总的主日志的方式产生和/或重建修改的多个日志记录,总的主日志调和各个节点处所存储的各个日志记录。在一个实施方案中,随后可向各个节点和/或镜像提供主日志以使日志的内容同步(例如,通过替换未保持最新的日志)。或者,在一个实施方案中,可将主日志维持在特定节点上。那个主日志可被视为存储节点的主日志,直到下一次出现日志调和。
为了示出日志调和,考虑具有三个存储节点SN 1、SN 2和SN 3的简单实例。SN 1可存储具有识别符LSN 1、LSN 2和LSN 3的日志记录。SN 2可存储具有识别符LSN 3、LSN 4和LSN 5的日志记录,并且SN 3可存储具有识别符LSN 6的日志记录。转化日志记录可包括产生主日志记录,所述主日志记录包括LSN 1-6的一次例子而不是存储在SN 1和SN 2两处的LSN 3的两个例子。执行日志调和可包括将一个或多个日志操作应用至日志记录。示例性日志操作包括合并、裁剪、修剪、简化、融合和或以其他方式删除或增加日志记录。下文中更详细地描述这类示例性日志操作。
如本文所描述,在一个实施方案中,转化日志记录可包括合并多个日志记录。合并日志记录可包括将Δ日志记录转换成新基线日志记录。考虑数据页面x和y的实例,其中LSN1、LSN 2、LSN 15和LSN 16是相应AULR的识别符并且LSN 2-14是相应DULR的识别符。合并日志记录可包括将LSN 8的DULR转换成AULR。为了将LSN 8转换成AULR,可将自与LSN 8对应于相同数据页面(例如,数据页面y)的日志记录(包括LSN 8处的日志记录)开始的改变应用至那个数据页面的最近的AULR。例如,如果LSN 2对应于数据页面y的AULR并且LSN 4、LSN 6和LSN 8对应于数据页面y的DULR,那么将LSN 8处的DULR转换成AULR包括将LSN 4、LSN 6和LSN8处的日志记录的改变应用至LSN 2处的AULR。如本文所描述,在一定情况下,随后可无用数据收集或以其他方式删除LSN 2、LSN 4和LSN 6处的日志记录,而在其他情况下(例如,对于连续快照或其他依赖物的情况),可保留那些LSN、直到不再需要。
在各种实施方案中,多个日志记录可与可用于将数据复原至先前状态的至少一个快照(例如,根据图8的方法创建的快照)相关联。在这类实施方案中,转化多个记录可包括至少部分地基于快照无用数据收集日志记录中的一个或多个。例如,继续先前的合并实例,如果需要LSN 2、LSN 4和LSN 6以作为连续快照的一部分,那么对应于那些LSN的日志记录可以是不可无用数据收集的(并且可能并不首先被合并)。相比之下,如果不需要那些日志记录以作为快照的一部分,那么可对它们进行无用数据收集。例如,如果离散快照存在于LSN 2、LSN 4和LSN 6之后的LSN(例如,LSN 10)处,那么可需要LSN 2、LSN 4和LSN 6处的日志记录,因为LSN 8处的日志记录是AULR。因此,可无用数据收集LSN 2、LSN 4和LSN 6处的日志记录。
如本文所描述,转化日志记录可包括指示一个或多个日志记录是可无用数据收集的。在这种实例中,转化日志记录以指示一个或多个日志记录可无用数据收集可包括:产生和/或修改与那一个或多个日志记录相关联的元数据以指示那些日志记录是可无用数据收集的。
在一个实施方案中,转化日志记录可包括删除一个或多个日志记录。如本文所描述,删除日志记录可以是裁剪或修剪操作等操作的一部分。在一些实施方案中,删除日志记录可不同于无用数据收集,因为无用数据收集可作为后台处理被动地且惰性地执行,而删除可作为前台处理执行。
在一个实施方案中,转化日志记录可包括执行修剪操作以修剪多个日志记录。执行修剪操作可包括删除所具有的相应识别符(例如,LSN值)小于或小于等于目标识别符(例如,目标LSN)的值的一个或多个日志记录(和/或将其指示为可无用数据收集)。修剪操作可用于增加日志区间的基线LSN。应指出,相应识别符可根据时间顺序排序,因此在一些实施方案中,修剪可包括删除所具有的相应相关联时间在目标识别符的相关联时间之前的日志记录。
在一个实施方案中,用于操作的左变量可以是具有基线LSN B1的日志区段,并且右变量可以是有待去除的LSN的范围。因此,结果可以是具有在对应于目标LSN的时间点处开始的LSN的一个或多个日志记录。作为一个实例,考虑以下示例性修剪操作,其中‘-’表示修剪,L(a;c]-(a,b]=L(b;c]。因此,从(a;c]减去部分(a,b],产生新范围(b;c]。如以上所指出,单括号()可指示一定范围内的开放界限并且方括号[]可指示一定范围内的闭合界限。作为另一个修剪实例,考虑修剪操作L(a;b,d]-(a,c]。结果是L(c;d]。作为又一个修剪实例,考虑其中L(a;b,c..e]-(a,d]=L(d;e]的修剪操作。
因为修剪操作,可删除(或无用数据收集)所具有的LSN小于或等于新基线LSN的一个或多个日志记录。在一些实例中,原始日志区间可能可不包括要修剪的任何此类日志记录。在那些实例中,修剪操作可不使得日志区间的大小减小。
在一个实施方案中,转化日志记录可包括执行裁剪操作以裁剪多个日志记录。执行裁剪操作可包括删除所具有的相应识别符(例如,LSN值)大于或大于等于目标识别符(例如,目标LSN)的值的一个或多个日志记录(和/或将其指示为可无用数据收集)。裁剪操作可用于去除日志区间的尾部部分。类似于修剪操作,因为相应识别符可根据时间顺序排序,在一些实施方案中,裁剪可包括删除所具有的相应相关联时间在目标识别符的相关联时间之后的日志记录。
在一个实施方案中,用于裁剪操作的左变量可以是具有目标LSN T1的日志区间,并且右变量可以是新目标LSN T2,其中T2是T1的真子集。裁剪操作可去除LSN,使得所去除的LSN大于所保留的LSN。例如,对于{T1-T2}中的LSN L3,其中L2在T2中,以下条件可为真:L3>L2。
作为一个实例,考虑以下示例性裁剪操作,其中‘@’表示修剪,L(a;b,c]@[b]=L(a;b]。因此,从日志区间L(a;b,c]删除所具有的相应识别符大于目标识别符b的日志记录的部分。另一实例包括L(a;b..d]@[b..c]=L(a;b..c]。裁剪操作如同修剪操作的情况,原始日志区间可不包括要裁剪的任何此类日志记录。在那些实例中,裁剪操作可不使得日志区间的大小减小。
在一个实施方案中,转化日志记录可包括简化多个日志记录。简化操作可在不改变最高目标LSN的情况下简化日志区间中的一组目标LSN。因此,简化操作可以是与裁剪操作互补的操作。简化可不剪掉日志区间的头部或尾部,而是替代地可去除区间的中间部分。简化操作的实例将是去除快照的连续部分。例如,如果请求最近两天的连续快照并且请求最近30天的离散快照,那么一旦连续快照的一部分超过两天,就可去除一部分,从而产生一个或多个离散快照。
简化操作可由‘@@’表示。简化操作的左变量可以是具有目标LSN T1的日志区间,其中右变量是下一个LSN T2,其中T2是T1的真子集。T1中的最高LSN可等于T2中的最高LSN。作为实例,L(a;b..c]@@[c]可产生L(a;c]。作为另一实例,L(a;a..b,c..e]@@[b,d..e]可产生L(a;b,d..e]。应指出,可不要求删除日志记录以作为简化操作的一部分。在一些实例中,可能不要求删除一些日志记录以产生新目标LSN处的用户页面版本。可安全删除但不要求删除那些日志记录。那些日志记录可以被保留在原位和/或被惰性地无用数据收集。识别哪些日志记录可删除(例如,通过删除或无用数据收集)可基于所确定的多个日志记录之中的依赖性来确定。例如,某些DULR可取决于一个或多个先前DULR和/或一个先前AULR。因此,在一个实施方案中,可删除和/或无用数据收集可删除的且不具有取决于它的其他日志记录的日志记录,而可保持并且不删除或无用数据收集否则将可删除但具有取决于它的其他日志记录的日志记录。
应指出,在一些实施方案中,虽然有可能以一种灵活的方式增加基线LSN,但目标LSN的类似减小可能是不可获得的。例如,虽然L(a;c]可转化成L(b;c],但在一些实施方案中,它不可转化成L(a;b],因为L(a;c]可能遗失a与b之间的被b与c之间的AULR取代的一些日志记录。因此,L(a;c]可能缺少足够的信息来产生LSN b处的整个卷。日志区间中的新目标LSN组可能必须是先前目标LSN组的子集。例如,L(a;b..c]和L(a;a..c]可能不具有必要的信息来产生LSN b处的整个卷,但是可使用裁剪和简化操作转化成L(a;b]。
在一个实施方案中,转化日志记录可包括在融合操作中组合所述多个日志记录与另一多个日志记录。例如,融合操作可包括将两个邻近日志区间组合成单个日志区间,使得两个日志区间的目标LSN都得以保留。融合操作可由为‘+’表示。左变量可包括具有较低基线LSN B1的日志记录,其中最高目标LSN是T1。右变量可包括具有较高基线LSN B2的日志记录。在一些实施方案中,B2等于T1。一个示例性融合操作是L(a;b]+L(b;c]=L(a;b,c]。另一个示例性融合操作是L(a;b,c]+L(c;d,e]=L(a;b,c,d,e]。在各种实施方案中,可不删除日志记录以作为融合操作的一部分。
在一个实施方案中,如果无用数据收集在不保留任何快照的情况下执行,日志可由L(0;t]表示。如果不执行无用数据收集,日志可由L(0;0..t]表示。
用于表示LSN‘a’处的卷的记号可以是V[a]。V[0]可被假定为包括全零。在一个实施方案中,转化卷的日志记录可包括由‘*’表示的构成操作。在给定较低LSN处的卷以及对应于LSN间隙的日志区间的情况下,可创建较高LSN处的新的卷。左变量可以是LSN B处的卷,并且右变量可以是具有基线LSN B和单个目标LSN T的日志区间。在构成所需要的卷之前,可将具有多个目标LSN的日志区间裁剪和/或简化成感兴趣的单个LSN。实例包括V[a]*L(a;b]=V[b]。
在一个实施方案中,转化日志记录可包括对多个日志记录执行操作的组合。考虑从操作的组合导出的转化:{L(b;c],L(b;d]}→L(b;c,d]。这种转化可从如下的修剪和融合操作导出:L(b;d]-(b,c]=L(c;d]和L(b;c]+L(c;d]=L(B;c,d]。另一个示例性导出转化扩展先前实例:{L(a;c],L(b;d]}→L(b;c,d],其包括来自先前实例的修剪和融合并且还包括另外的修剪L(a;c]-(a,b]=L(b;c]。应指出,‘→’的使用在不示出操作细节的情况下表示一般转化。例如,{L1,L2}→{L3}在不示出执行转化的基础操作的情况下是从L1和L2到L3的转化。
在各种实施方案中,对多个日志记录执行多个操作的组合可便于快照操作(例如,作为如图8中的取得、复原、截断和/或删除快照的一部分)、或日志记录调和以及其他操作。以下是用于取得、复原和删除离散快照和连续快照的示例性组合。
对于组合操作以取得离散快照的实例,分布式存储系统的实况日志的初始状态可以是L(0;t]。可在尾部达到LSN a时取得快照,即L(0;a,t]。随后可在[a]处裁剪L(0;a,t],即L(0;a,t]@[a]=L(0;a]。可将L(0;a]复制到快照存储位置,所述快照存储位置可以是分布式存储系统之外的独立存储位置。可在尾部达到LSN b时取得另一快照,即L(0;a,b,t]。随后可根据L(0;a,b,t]-(0,a]修剪L(0;a,b,t],得出L(a;b,t)。随后可在[b]处裁剪L(a;b,t),即(L(a;b,)@[b]),得出L(a;b]。随后可将L(a;b]也复制到快照存储位置。
对于组合操作以复原离散快照的实例,考虑可在快照存储位置处获得的以下内容:L(0;a]、L(a;b]。可将L(0;a]和L(a;b]复制到复原目的地并且可根据L(0;a]+L(a;b]=L(0;a,b]将其融合。随后可根据L(0;a,b]@@[b]=L(0;b]简化融合区间。L(0;b]可以是要复原的所需快照并且可用于开始新的卷。
对于组合操作以删除旧的离散快照的实例,考虑以下初始实况日志状态L(0;a,b,t]。L(a;a,b,t]@@[b,t]=L(0;b,t]可用于删除a处的快照,并且L(0;a,b,t]@@[t]=L(0;t]可用于删除快照a和b两者。
对于组合操作以取得连续快照的实例,分布式存储系统的实况日志的初始状态可以是L(0;t],如同离散快照取得实例的情况。当尾部达到LSN a时,开始连续快照制作,如由L(0;a..t]指示。在尾部越过LSN b(b<t)之后,可通过[a..b]裁剪(@@)L(0;.a..t]以得到L(0;a..b]。随后可将L(0;a..b]复制到快照存储位置。在尾部越过LSN c(c<t)之后,L(0;a..t]@@[a..c]=L(0;a..c)。L(0;a..c)@@[b..c]=L(0;b..c]。随后可在(0,a]处修剪L(0;b..c]以得到L(b;b..c],随后可将L(b;b..c]复制到快照存储位置。当尾部达到LSN d时,可剥离连续快照:L(0,a..d,t]。
对于组合操作以复原连续快照的实例,考虑可在快照存储位置出获得的以下内容:L(0;a..b]和L(b;b..c]。可将L(0;a..b]和L(b;b..c]复制到复原目的地,在复原目的地处,两个日志区间可被融合在一起成为L(0;a..b]+L(b;b..c]=L(0;a..c]。如果针对LSN x(其中b<x<c)请求复原,那么可执行以下内容:L(0;a..c]@[a..x]=L(0;a..x]。随后可在[x]处简化(@@)结果,得出L(0;x]。所需快照可以是L(0;x]并且可用于开始新的卷。
考虑以下组合操作以删除所具有的实况日志的初始状态为L(0,a..d,t]的连续快照的实例。可通过[t]简化L(0,a..d,t]以删除整个连续快照,得出L(0;t](不具有保留快照的日志区间)。作为另一实例,可通过[a..c,t]简化L(0,a..d,t]以删除连续快照从c至d的一部分,得出L(0,a..c,t]。作为另一实例,可通过[c..d,t]简化L(0,a..d,t]以删除连续快照从a至c的一部分,得出L(0,c..d,t]。
考虑以下组合操作以截断所具有的实况日志的初始状态为L(0,a..t](其中c<t)的当前连续快照的实例。L(0,a..t]@@[c..t]=L(0;c..t],其可仅包含当前连续快照的最近一部分。
在各种实施方案中,数据库服务可从用户接收快照所在的时间帧、范围或窗口的请求,和/或可接收所请求快照的类型(例如,连续的或离散的)的指示。例如,用户可请求他们想要先前两天的连续快照以及想要先前三十天的离散快照。数据库服务随后可确定要对日志区间执行哪个日志记录操作(例如,修剪、简化、裁剪等)以满足用户的请求。继续所述实例,一旦连续快照的一部分超过两天之久,系统就可确定简化操作可适合于改造(例如,通过无用数据收集)用于不再需要的日志记录的空间。
在各种实施方案中,本文所述的方法可通过硬件和软件的任何结合来实施。例如,在一个实施方案中,所述方法可由包括执行程序指令的一个或多个处理器的计算机系统(例如,如图10中的计算机系统)来实施,所述程序指令存储在连接至处理器的计算机可读存储介质上。程序指令可被配置来实施本文所述的功能(例如,实施数据库服务/系统和/或本文所述的存储服务/系统的各种服务器和其他部件的功能)。
图10为示出根据各种实施方案的被配置来实施本文所述的数据库系统的至少一部分的计算机系统的框图。例如,在不同的实施方案中,计算机系统1000可被配置来实施数据库层的数据库引擎头节点、或独立分布式数据库优化存储系统的多个存储节点中的一个,所述独立分布式数据库优化存储系统存储数据库表格和代表数据库层的客户端的关联元数据。计算机系统1000可能是各种类型的装置中的任何一种,包括但不限于:个人计算机系统、台式电脑、膝上电脑或笔记本电脑、主机计算机系统、手持式计算机、工作站、网络计算机、消费装置、应用服务器、存储装置、电话、移动电话、或大体上任何类型的计算装置。
计算机系统1000包括通过输入/输出(I/O)接口1030连接至系统存储器1020的一个或多个处理器1010(其中的任何一个可包括多个核心,所述多个核心可为单线程的或多线程的)。计算机系统1000还包括耦接到I/O接口1030的网络接口1040。在各种实施方案中,计算机系统1000可为包括一个处理器1010的单一处理器系统,或包括若干处理器1010(例如两个、四个、八个或另一合适数量)的多处理器系统。处理器1010可为能够执行指令的任何处理器。例如,在各种实施方案中,处理器1010可为实施各种指令集架构(ISA)中任何一种架构的通用或嵌入式处理器,所述架构例如x86、PowerPC、SPARC、或MIPS ISA或任何其他合适ISA。在多处理器系统中,每一个处理器1010可通常但不一定实施相同的ISA。计算机系统1000也包括一个或多个网络通信装置(例如,网络接口1040),用于与其他系统和/或部件通过通信网络(例如,因特网、LAN等)通信。例如,在系统1000上执行的客户端应用程序可使用网络接口1040,以便与在单个服务器或一组服务器上执行的服务器应用程序通信,所述一组服务器实施本文所述的数据库系统的一个或多个部件。在另一实例中,在计算机系统1000上执行的服务器应用程序的实例可使用网络接口1040,以便与可能在其他计算机系统(例如,计算机系统1090)上执行的服务器应用程序(或另一服务器应用程序)的其他实例通信。
在所述的实施方案中,计算机系统1000也包括一个或多个持久的存储装置1060和/或一个或多个I/O装置1080。在各种实施方案中,持久存储装置1060可对应于磁盘驱动、磁带驱动、固态存储器、其他大容量存储装置、或任何其他持久存储装置。计算机系统1000(或分布式应用程序或在其上操作的操作系统)可如期望的将指令和/或数据存储在持久存储装置1060中,并且可按需检索存储的指令和/或数据。例如,在一些实施方案中,计算机系统1000可代管存储系统服务器节点,并且持久存储1060可包括附接至那个服务器节点的SSD。
计算机系统1000包括被配置来存储可由处理器1010访问的指令和数据的一个或多个系统存储器1020。在各种实施方案中,系统存储器1020可使用任何合适的存储器技术(例如,高速缓冲存储器、静态随机存取存储器(SRAM)、DRAM、RDRAM、EDO RAM、DDR 10RAM、同步动态RAM(SDRAM)、Rambus RAM、EEPROM、非暂时性/闪存类型的存储器、或任何其他类型的存储器中的一个或多个)来实施。系统存储器1020可包含程序指令1025,所述程序指令1025可由处理器1010执行以便实施本文所述的方法和技术。在各种实施方案中,程序指令1025可能以平台本地二进制、任何解译语言(如JavaTM字节代码)、或以任何其他语言(C/C++、JavaTM等)、或以其任何组合来编码。例如,在所示的实施方案中,程序指令1025包括程序指令,所述程序指令可执行以便实施数据库层的数据库引擎头节点、或独立分布式数据库优化存储系统的多个存储节点中的一个的功能性,所述独立分布式数据库优化存储系统在不同的实施方案中存储数据库表格和代表数据库层的客户端的关联元数据。在一些实施方案中,程序指令1025可实施多个独立客户端、服务器节点、和/或其他部件。
在一些实施方案中,程序指令1025可包括可执行以便实施操作系统(未示出)的指令,所述操作系统可为各种操作系统中的任何一种,如UNIX、LINUX、SolarisTM、MacOSTM、WindowsTM等。程序指令1025中的任何一个或所有可被提供作为可包括具有在其上存储的指令的非暂时性计算机可读存储介质的计算机程序产品、或软件,所述指令可用于编程计算机系统(或其他电子装置)以便根据各种实施方案执行进程。非暂时性的计算机可读的存储介质可包括用于存储机器(例如,计算机)可读的形式(例如软件、处理应用程序)的信息的任何机构。一般来说,非暂时性的计算机可访问的介质可包括计算机可读的存储介质或存储器介质,例如磁性介质或光学介质,例如经由I/O接口1030连接至计算机系统1000的磁盘或DVD/CD-ROM。非暂时性计算机可读存储介质还可以包括可作为系统存储器1020或另一类型的存储器被包括在计算机系统1000的一些实施方案中的任何易失性或非易失性介质,如RAM(例如,SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等。在其他实施方案中,程序指令可使用通过通信介质(如网络链接和/或无线链接)传达的光学、声学或其他形式的传播信号(例如,载波、红外线信号、数字信号等)来通信,如可通过网络接口1040执行的。
在一些实施方案中,系统存储器1020可包括可如本文所述配置的数据存储1045。例如,在不同时间和在各种实施方案中,如本文描述成由数据库层(例如,在数据库引擎头节点上)存储的信息(如事务日志、撤销日志、高速缓存的数据页面、或在执行本文所述的数据库层功能中使用的其他信息)可存储在数据存储1045中、或在一个或多个节点上的系统存储器1020的另一部分上、在持久存储1060中、和/或在一个或多个远程存储装置1070上。类似的,在不同时间和在各种实施方案中,如本文描述成由存储层存储的信息(例如,重做日志记录、合并的数据页面、和/或在执行本文所述的分布式存储系统功能中使用的其他信息)可存储在数据存储1045中、或在一个或多个节点上的系统存储器1020的另一部分上、在持久存储1060中、和/或在一个或多个远程存储装置1070上。一般而言,系统存储器1020(例如,系统存储器1020内的数据存储1045)、持久存储1060、和/或远程存储1070可存储数据块、数据块复制品、与数据块和/或它们的状态关联的元数据、数据块配置信息、和/或可在实施本文所述的方法和技术中使用的任何其他信息。
在一个实施方案中,I/O接口1030可被配置来协调处理器1010、系统存储器1020和系统中的任何外围装置之间的I/O流量,包括通过网络接口1040或其他外围接口。在一些实施方案中,I/O接口1030可执行任何必需协议、时序或其他数据转换以便将来自一个部件(例如,系统存储器1020)的数据信号转换成适合于由另一个部件(例如,处理器1010)使用的格式。在一些实施方案中,I/O接口1030可包括对于通过各种类型的外围总线附接的装置的支持,所述外围总线例如外围组件互连(PCI)总线标准或通用串行总线(USB)标准的改变形式。在一些实施方案中,I/O接口1030的功能可分成两个或更多个单独的部件中,例如北桥和南桥。另外,在一些实施方案中,I/O接口1030的一些或所有功能性,例如至系统存储器1020的接口,可直接并入处理器1010中。
例如,网络接口1040可被配置来允许数据在计算机系统1000与附接至网络的其他装置之间交换,所述其他装置如其他计算机系统1090(其可实施一个或多个存储系统服务器节点、数据库引擎头节点、和/或本文所述的数据库系统的客户端)。此外,网络接口1040可被配置来允许在计算机系统1000与各种I/O装置1050和/或远程存储1070之间的通信。输入/输出装置1050可在一些实施方案中包括一个或多个显示终端、键盘、小键盘、触摸屏、扫描装置、语音或光学识别装置,或适合于由一个或多个计算机系统1000输入或撷取数据的任何其他装置。多个输入/输出装置1050可存在于计算机系统1000中或可分布于计算机系统1000的不同节点上。在一些实施方案中,类似输入/输出装置可与计算机系统1000分开并且可经由有线或无线连接,例如网络接口1040来与包括计算机系统1000的分布式系统的一个或多个节点相互作用。网络接口1040通常可支持一个或多个无线网络协议(例如,Wi-Fi/IEEE 802.11、或另一无线网络标准)。然而,在各个实施方案中,网络接口1040可以支持经由任何合适的有线或无线通用数据网络(例如以太网网络类型)进行通信。另外,网络接口1040可以支持经由电信/电话网络(如模拟语音网络或数字光纤通信网络)、经由存储区域网络(如光纤信道SAN)或经由任何其他合适类型的网络和/或协议进行通信。在各种实施方案中,计算机系统1000可包括多于、少于、或不同于图10所示的那些的部件(例如,显示器、视频卡、音频卡、外围装置、其他网络接口,如ATM接口、以太网接口、帧中继接口等)。
注意本文所述的分布式系统实施方案中的任何一个,或它们的部件中的任何一个,可被实施作为一个或多个网络服务。例如,数据库系统的数据层内的数据库引擎头节点可呈现数据库服务和/或其他类型的数据存储服务,所述数据库服务和/或其他类型的数据存储服务对客户端采用文本所述的分布式存储系统,如网络服务。在一些实施方案中,网络服务可由被设计来支持通过网络的彼此协作的机对机相互作用的软件和/或硬件系统实施。网络服务可具有以机器可处理格式描述的接口,如网络服务描述语言(WSDL)。其他系统可能以由描述网络服务的接口的描述规定的方式与网络服务相互作用。例如,网络服务可限定其他系统可调用的各种操作,并且可限定特定的应用编程接口(APl),当请求各种操作时,其他系统可能期望服从所述特定的应用编程接口(API)。
在各种实施方案中,通过使用包括与网络服务请求关联的参数和/或数据的消息,网络服务可被请求或调用。此类消息可根据特定的标记语言(如可延伸标记语言(XML))被格式化,和/或使用协议(简单对象访问协议(SOAP))来封装。为执行网络服务请求,网络服务客户端可装配包括所述请求的消息,以及使用基于因特网的应用层转移协议(如超文本传输协议(HTTP))将所述消息传达至对应于网络服务的可寻址端点(例如,统一资源定位符(URL))。
在一些实施方案中,网络服务可使用表述性状态转移(“RESTful”)技术而不是基于消息的技术来实施。例如,根据RESTful技术实施的网络服务可通过包括在HTTP方法(如PUT、GET或DELETE)内而不是封装在SOAP消息内的参数来调用。
鉴于以下条款,上述内容可更好地理解:
1.一种系统,其包括:
多个存储节点,其中的每一个包括至少一个处理器和存储器,其中所述多个存储节点被配置来共同地实施数据库服务的分布式日志结构化存储系统,所述分布式日志结构化存储系统被配置来:
从所述数据库服务的一个或多个数据库引擎头节点接收多个日志记录,其中所述多个日志记录中的每一个与由所述数据库服务存储的数据的相应改变相关联,并且进一步与相应日志序列识别符相关联;
将所述多个日志记录存储在所述多个存储节点之中;并且
转化所述多个日志记录,其中所述多个日志记录包括作为用于所述转化的操作数的两个或更多个日志区间。
2.如条款1所述的系统,其中所述分布式日志结构化存储系统进一步被配置来:
确定所述多个日志记录中存储在所述多个存储节点中的第一存储节点处的第一日志记录与所述多个日志记录中存储在所述多个节点中的第二存储节点处的第二日志记录之间存在差异;
其中所述转化所述多个日志记录包括:调和所述第一日志记录与所述第二日志记录之间的所述差异。
3.如条款1所述的系统,其中所述转化所述多个日志记录包括:至少部分地基于所确定的所述多个日志记录之中的依赖性来确定所述多个日志记录中的一个或多个日志记录为可删除的。
4.一种方法,其包括:
由数据库服务的一个或多个计算机执行以下各项:
维持指示由所述数据库服务存储的数据的多个日志记录,其中每个日志记录与相应日志序列识别符相关联;以及
转化所述多个日志记录,其中所述多个日志记录包括作为用于所述转化的操作数的两个或更多个日志区间。
5.如条款4所述的方法,其还包括:
确定在至少一个方面上,所述多个日志记录中存储在所述数据库服务的第一存储节点处的第一日志记录不同于所述多个日志记录中存储在所述数据库服务的第二存储节点处的第二日志记录;
其中所述转化所述多个日志记录包括:调和所述第一日志记录和所述第二日志记录。
6.如条款4所述的方法,其中所述多个日志记录包括至少一个基线日志记录,其中所述基线日志记录包括一页所述数据。
7.如条款4所述的方法,其中所述多个日志记录包括至少一个Δ日志记录,其中所述Δ日志记录包括对一页所述数据的改变。
8.如条款4所述的方法,其中所述转化所述多个日志记录包括:将所述多个日志记录的Δ日志记录转换成新的基线日志记录。
9.如条款4所述的方法,其中所述多个日志记录与可用于将所述数据复原至先前状态的至少一个快照相关联,其中所述转化所述多个日志记录包括:至少部分地基于所述至少一个快照来无用数据收集所述日志记录中的一个或多个。
10.如条款4所述的方法,其中所述转化所述多个日志记录包括:指示所述多个日志记录中的一个或多个日志记录为可无用数据收集的。
11.如条款4所述的方法,其中所述转化所述多个日志记录包括:删除所述多个日志记录中的一个或多个日志记录。
12.如条款4所述的方法,其中所述转化所述多个日志记录包括执行修剪操作,其中所述执行所述修剪操作包括:删除所述多个日志记录中所具有的相应识别符所具有的值小于目标识别符的值的一个或多个日志记录。
13.如条款4所述的方法,其中所述转化所述多个日志记录包括执行裁剪操作,其中所述执行所述裁剪操作包括:删除所述多个日志记录中所具有的相应识别符所具有的值大于目标识别符的值的一个或多个日志记录。
14.如条款4所述的方法,其中所述转化所述多个日志记录包括:至少部分地基于所确定的所述多个日志记录之中的依赖性来确定所述多个日志记录中的一个或多个日志记录为可删除的。
15.如条款4所述的方法,其中所述转化所述多个日志记录包括:将所述多个日志记录与另外多个日志记录结合。
16.如条款4所述的方法,其中所述转化所述多个日志记录包括:作为快照操作的一部分对所述多个日志记录执行多个操作。
17.一种存储程序指令的非暂时性计算机可读存储介质,其中所述程序指令是计算机可执行的,以实施数据库服务的多个分布式日志结构化存储节点中的一个分布式日志结构化存储节点,其中所述分布式日志机构化存储节点被配置来:
存储多个日志记录,其中所述多个日志记录中的每一个与由所述多个分布式日志结构化存储节点存储的数据的相应改变相关联,并且进一步与相应识别符相关联;并且
转化所述多个日志记录,其中所述多个日志记录包括作为用于所述转化的操作数的两个或更多个日志区间。
18.如条款17所述的非暂时性计算机可读存储介质,其中所述转化所述多个日志记录包括:调和存储在所述分布式日志机构化存储节点处的第一日志记录与存储在所述多个分布式日志结构化存储节点中的另一个分布式日志结构化存储节点处的第二日志记录之间的差异。
19.如条款17所述的非暂时性计算机可读存储介质,其中所述转化所述多个日志记录包括执行修剪操作,其中所述执行所述修剪操作包括:删除所述多个日志记录中所具有的相应识别符所具有的值小于目标识别符的值的一个或多个日志记录。
20.如条款17所述的非暂时性计算机可读存储介质,其中所述转化所述多个日志记录包括:删除所述多个日志记录中所具有的相应识别符所具有的值大于目标识别符的值的一个或多个日志记录。
如在图中所示和本文所描述的各种方法表示方法的示例性实施方案。所述方法可在软件中、在硬件中、或在其组合中手动实施。任何方法的顺序可以改变,并且各个元素可以被添加、重新排序、组合、省略、修改等。
尽管已相当详细地描述了以上实施方案,但一旦完全了解以上公开内容,各种改变和修改对所属领域的技术人员将变为显而易见。旨在以下权利要求被解释成包含所有这些修改和改变,并且相应地,以上描述应视为具有说明性而非限制性意义。
Claims (13)
1.一种系统,包括:
至少一个处理器;和
存储器,用于存储程序指令,所述程序指令如果被执行则使得所述至少一个处理器执行一种方法,包括:
把日志的各日志记录组存储在日志结构数据存储的多个不同存储节点处,其中所述日志记录中的每个日志记录描述对由所述日志结构数据存储所存储的数据的相应改变;
针对所述日志的区间确定所述不同存储节点处的各日志记录组之间的一个或多个差异,其中所述各日志记录组描述相同数据在所述多个不同存储节点处的版本;
对所述各日志记录组执行一个或多个操作以生成调和了所述一个或多个差异的所述日志的所述区间的版本;以及
把所调和的所述日志的所述区间的所述版本存储在所述不同存储节点中的一个或多个处,其中把所调和的所述日志的所述区间的所述版本存储在所述不同存储节点中的一个或多个处包括同步所述不同存储节点处的所述各日志记录组以匹配所调和的所述日志的所述区间的所述版本。
2.如权利要求1所述的系统,其中对所述各日志记录组执行一个或多个操作包括融合来自所述各日志记录组中的一个或多个的、表示所述日志的所述区间的两个或更多个相邻部分的日志记录。
3.如权利要求1所述的系统,其中对所述各日志记录组执行一个或多个操作包括合并来自所述各日志记录组中的一个或多个日志记录组的两个或更多个日志记录,以生成与所述两个或更多个日志记录对应的数据页的新版本,其中所述日志描述存储在所述日志结构数据存储中的多个数据页的改变。
4.如权利要求1所述的系统,其中对所述各日志记录组执行一个或多个操作包括从所述各日志记录组中的一个或多个中减少表示所述日志的所述区间的内部部分的一个或多个日志记录。
5.如权利要求1至4中任一项所述的系统,其中把所调和的所述日志的所述区间的所述版本存储在所述不同存储节点中的一个或多个处包括把所调和的所述日志的所述区间的所述版本存储在所述不同存储节点中被识别为存储主日志的一个存储节点处。
6.如权利要求1至5中任一项所述的系统,其中所述方法还包括从数据库接收所述各日志记录组,其中所述日志描述代表所述数据库存储在所述日志结构数据存储处的数据的相应改变。
7.一种方法,包括:
把日志的各日志记录组存储在日志结构数据存储的多个不同存储节点处,其中所述日志记录中的每个日志记录描述对由所述日志结构数据存储所存储的数据的相应改变;
针对所述日志的区间确定所述不同存储节点处的各日志记录组之间的一个或多个差异,其中所述各日志记录组描述相同数据在所述多个不同存储节点处的版本;
对所述各日志记录组执行一个或多个操作以生成调和了所述一个或多个差异的所述日志的所述区间的版本;以及
把所调和的所述日志的所述区间的所述版本存储在所述不同存储节点中的一个或多个处,其中把所调和的所述日志的所述区间的所述版本存储在所述不同存储节点中的一个或多个处包括同步所述不同存储节点处的所述各日志记录组以匹配所调和的所述日志的所述区间的所述版本。
8.如权利要求7所述的方法,其中对所述各日志记录组执行一个或多个操作包括融合来自所述各日志记录组中的一个或多个的、表示所述日志的所述区间的两个或更多个相邻部分的日志记录。
9.如权利要求7所述的方法,其中对所述各日志记录组执行一个或多个操作包括合并来自所述各日志记录组中的一个或多个日志记录组的两个或更多个日志记录,以生成与所述两个或更多个日志记录对应的数据页的新版本,其中所述日志描述存储在所述日志结构数据存储中的多个数据页的改变。
10.如权利要求7所述的方法,其中对所述各日志记录组执行一个或多个操作包括从所述各日志记录组中的一个或多个中减少表示所述日志的所述区间的内部部分的一个或多个日志记录。
11.如权利要求7至10中任一项所述的方法,其中把所调和的所述日志的所述区间的所述版本存储在所述不同存储节点中的一个或多个处包括把所调和的所述日志的所述区间的所述版本存储在所述不同存储节点中被识别为存储主日志的一个存储节点处。
12.如权利要求7至11中任一项所述的方法,还包括从数据库接收所述各日志记录组,其中所述日志描述代表所述数据库存储在所述日志结构数据存储处的数据的相应改变。
13.一种存储程序指令的非暂态计算机可读存储介质,所述程序指令当由一个或多个计算设备执行时使所述一个或多个计算设备执行:
把日志的各日志记录组存储在日志结构数据存储的多个不同存储节点处,其中所述日志记录中的每个日志记录描述对由所述日志结构数据存储所存储的数据的相应改变;
针对所述日志的区间确定所述不同存储节点处的各日志记录组之间的一个或多个差异,其中所述各日志记录组描述相同数据在所述多个不同存储节点处的版本;
对所述各日志记录组执行一个或多个操作以生成调和了所述一个或多个差异的所述日志的所述区间的版本;以及
把所调和的所述日志的所述区间的所述版本存储在所述不同存储节点中的一个或多个处,其中把所调和的所述日志的所述区间的所述版本存储在所述不同存储节点中的一个或多个处包括同步所述不同存储节点处的所述各日志记录组以匹配所调和的所述日志的所述区间的所述版本。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910124320.0A CN110083656B (zh) | 2013-03-15 | 2014-03-12 | 日志记录管理 |
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361794612P | 2013-03-15 | 2013-03-15 | |
US61/794,612 | 2013-03-15 | ||
US14/201,509 US9501501B2 (en) | 2013-03-15 | 2014-03-07 | Log record management |
US14/201,509 | 2014-03-07 | ||
CN201910124320.0A CN110083656B (zh) | 2013-03-15 | 2014-03-12 | 日志记录管理 |
CN201480025925.XA CN105190623B (zh) | 2013-03-15 | 2014-03-12 | 日志记录管理 |
PCT/US2014/024759 WO2014151013A1 (en) | 2013-03-15 | 2014-03-12 | Log record management |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480025925.XA Division CN105190623B (zh) | 2013-03-15 | 2014-03-12 | 日志记录管理 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110083656A CN110083656A (zh) | 2019-08-02 |
CN110083656B true CN110083656B (zh) | 2024-04-12 |
Family
ID=51532987
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910124320.0A Active CN110083656B (zh) | 2013-03-15 | 2014-03-12 | 日志记录管理 |
CN201480025925.XA Active CN105190623B (zh) | 2013-03-15 | 2014-03-12 | 日志记录管理 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480025925.XA Active CN105190623B (zh) | 2013-03-15 | 2014-03-12 | 日志记录管理 |
Country Status (8)
Country | Link |
---|---|
US (2) | US9501501B2 (zh) |
EP (1) | EP2973062B1 (zh) |
JP (2) | JP6246315B2 (zh) |
KR (2) | KR101754926B1 (zh) |
CN (2) | CN110083656B (zh) |
AU (2) | AU2014235367B2 (zh) |
CA (1) | CA2906522C (zh) |
WO (1) | WO2014151013A1 (zh) |
Families Citing this family (90)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US9830234B2 (en) * | 2013-08-26 | 2017-11-28 | Vmware, Inc. | Distributed transaction log |
CN103729442B (zh) * | 2013-12-30 | 2017-11-24 | 华为技术有限公司 | 记录事务日志的方法和数据库引擎 |
US10387446B2 (en) * | 2014-04-28 | 2019-08-20 | International Business Machines Corporation | Merging multiple point-in-time copies into a merged point-in-time copy |
US9619506B2 (en) * | 2014-11-25 | 2017-04-11 | Sap Se | Method and system to avoid deadlocks during a log recovery |
CN104572415B (zh) * | 2014-12-23 | 2018-01-30 | 国云科技股份有限公司 | 一种适用于分布式系统的事务日志记录方法 |
CN104572475A (zh) * | 2015-01-30 | 2015-04-29 | 北京京东尚科信息技术有限公司 | 检查程序源码的方法和装置 |
US9940234B2 (en) * | 2015-03-26 | 2018-04-10 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
US10769125B2 (en) * | 2015-06-10 | 2020-09-08 | International Business Machines Corporation | Ordering records for timed meta-data generation in a blocked record environment |
US11087882B1 (en) * | 2015-10-21 | 2021-08-10 | C/Hca, Inc. | Signal processing for making predictive determinations |
CN106897281B (zh) | 2015-12-17 | 2020-08-14 | 阿里巴巴集团控股有限公司 | 一种日志分片方法和装置 |
US10372926B1 (en) * | 2015-12-21 | 2019-08-06 | Amazon Technologies, Inc. | Passive distribution of encryption keys for distributed data stores |
US10152527B1 (en) * | 2015-12-28 | 2018-12-11 | EMC IP Holding Company LLC | Increment resynchronization in hash-based replication |
US11468053B2 (en) | 2015-12-30 | 2022-10-11 | Dropbox, Inc. | Servicing queries of a hybrid event index |
US10296633B1 (en) * | 2016-03-23 | 2019-05-21 | Amazon Technologies, Inc. | Data storage management system |
KR101758558B1 (ko) * | 2016-03-29 | 2017-07-26 | 엘에스산전 주식회사 | 에너지 관리 서버 및 그를 갖는 에너지 관리 시스템 |
US10180788B2 (en) * | 2016-04-06 | 2019-01-15 | Sandisk Technologies Inc. | Data storage device having internal tagging capabilities |
US12106039B2 (en) | 2021-02-23 | 2024-10-01 | Coda Project, Inc. | System, method, and apparatus for publication and external interfacing for a unified document surface |
US11775136B2 (en) * | 2016-04-27 | 2023-10-03 | Coda Project, Inc. | Conditional formatting |
US10621058B2 (en) | 2016-04-29 | 2020-04-14 | Netapp Inc. | Moving a consistency group having a replication relationship |
US10346387B2 (en) * | 2016-06-13 | 2019-07-09 | Sap Se | Replication of log-structured data |
WO2018001495A1 (en) | 2016-06-30 | 2018-01-04 | Huawei Technologies Co., Ltd. | Systems and methods for managing databases |
US11188513B2 (en) * | 2016-07-06 | 2021-11-30 | Red Hat, Inc. | Logfile collection and consolidation |
US9852202B1 (en) | 2016-09-23 | 2017-12-26 | International Business Machines Corporation | Bandwidth-reduced coherency communication |
US10140054B2 (en) * | 2016-09-29 | 2018-11-27 | International Business Machines Corporation | Retrospective snapshots in log structured storage systems |
CN106557281A (zh) * | 2016-10-28 | 2017-04-05 | 武汉斗鱼网络科技有限公司 | 一种服务器日志的自动处理方法和系统 |
US20180121348A1 (en) * | 2016-10-31 | 2018-05-03 | Microsoft Technology Licensing, Llc | Automatic Garbage Collection for Distributed Storage |
US10909091B1 (en) * | 2016-11-23 | 2021-02-02 | Amazon Technologies, Inc. | On-demand data schema modifications |
US10162710B2 (en) * | 2016-11-28 | 2018-12-25 | Sap Se | Version space reconstruction during database initialization |
US10949310B2 (en) * | 2016-11-28 | 2021-03-16 | Sap Se | Physio-logical logging for in-memory row-oriented database system |
US10402389B2 (en) * | 2017-04-25 | 2019-09-03 | Sap Se | Automatic adaptation of parameters controlling database savepoints |
US10545995B2 (en) * | 2017-05-22 | 2020-01-28 | Sap Se | Validating query results during asynchronous database replication |
US10788998B2 (en) * | 2017-07-07 | 2020-09-29 | Sap Se | Logging changes to data stored in distributed data storage system |
CN107491529B (zh) * | 2017-08-18 | 2020-05-08 | 华为技术有限公司 | 一种快照删除方法及节点 |
US11914571B1 (en) | 2017-11-22 | 2024-02-27 | Amazon Technologies, Inc. | Optimistic concurrency for a multi-writer database |
CN109117345A (zh) * | 2018-09-05 | 2019-01-01 | 深圳市木瓜移动科技有限公司 | 日志监控方法及分布式数据系统 |
US11249899B2 (en) * | 2018-09-19 | 2022-02-15 | Cisco Technology, Inc. | Filesystem management for cloud object storage |
US11151101B2 (en) * | 2018-09-21 | 2021-10-19 | Microsoft Technology Licensing, Llc | Adjusting growth of persistent log |
CN109460318B (zh) * | 2018-10-26 | 2021-01-01 | 珠海市时杰信息科技有限公司 | 一种可回滚档案采集数据的导入方法、计算机装置及计算机可读存储介质 |
US11573927B1 (en) | 2018-10-31 | 2023-02-07 | Anaplan, Inc. | Method and system for implementing hidden subscriptions in a distributed computation system |
US11481378B1 (en) | 2018-10-31 | 2022-10-25 | Anaplan, Inc. | Method and system for servicing query requests using document-based metadata |
US11475003B1 (en) * | 2018-10-31 | 2022-10-18 | Anaplan, Inc. | Method and system for servicing query requests using dataspaces |
US11354324B1 (en) | 2018-10-31 | 2022-06-07 | Anaplan, Inc. | Method and system for servicing query requests using revisions maps |
US11580105B2 (en) | 2018-10-31 | 2023-02-14 | Anaplan, Inc. | Method and system for implementing subscription barriers in a distributed computation system |
US11403179B1 (en) * | 2018-12-13 | 2022-08-02 | Amazon Technologies, Inc. | Transactionally consistent point-in-time restore |
US11055184B2 (en) | 2018-12-19 | 2021-07-06 | Vmware, Inc. | In-place garbage collection of a sharded, replicated distributed state machine based on supersedable operations |
US10877881B2 (en) * | 2019-01-11 | 2020-12-29 | Vmware, Inc. | In-place garbage collection of a sharded, replicated distributed state machine based on mergeable operations |
US11803460B1 (en) * | 2019-02-27 | 2023-10-31 | Amazon Technologies, Inc. | Automatic auditing of cloud activity |
US11893041B2 (en) | 2019-05-15 | 2024-02-06 | International Business Machines Corporation | Data synchronization between a source database system and target database system |
US11487714B2 (en) | 2019-05-15 | 2022-11-01 | International Business Machines Corporation | Data replication in a data analysis system |
US11269925B2 (en) | 2019-05-15 | 2022-03-08 | International Business Machines Corporation | Data synchronization in a data analysis system |
CN110321383A (zh) * | 2019-05-20 | 2019-10-11 | 平安普惠企业管理有限公司 | 大数据平台数据同步方法、装置、计算机设备及存储介质 |
CN112015586B (zh) * | 2019-05-28 | 2024-04-26 | 华为云计算技术有限公司 | 一种数据重构计算的方法以及相关装置 |
CN110048900B (zh) * | 2019-05-29 | 2023-07-25 | 努比亚技术有限公司 | 日志管理方法、移动终端及计算机可读存储介质 |
CN110389937A (zh) * | 2019-07-26 | 2019-10-29 | 上海英方软件股份有限公司 | 一种基于数据库数据同步传输文件的方法及系统 |
CN110515907B (zh) * | 2019-08-16 | 2022-03-08 | 济南浪潮数据技术有限公司 | 一种分布式存储节点的数据同步方法及相关装置 |
US11403024B2 (en) * | 2019-08-28 | 2022-08-02 | Cohesity, Inc. | Efficient restoration of content |
WO2019228571A2 (en) | 2019-09-12 | 2019-12-05 | Alibaba Group Holding Limited | Log-structured storage systems |
EP3669268A4 (en) | 2019-09-12 | 2020-12-23 | Alibaba Group Holding Limited | NEWSPAPER STRUCTURE STORAGE SYSTEMS |
SG11202002614XA (en) | 2019-09-12 | 2020-04-29 | Alibaba Group Holding Ltd | Log-structured storage systems |
WO2019228570A2 (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 |
WO2019233500A2 (en) | 2019-09-12 | 2019-12-12 | Alibaba Group Holding Limited | Log-structured storage systems |
CN111183420B (zh) | 2019-09-12 | 2023-06-30 | 创新先进技术有限公司 | 日志结构存储系统 |
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 |
US11321354B2 (en) * | 2019-10-01 | 2022-05-03 | Huawei Technologies Co., Ltd. | System, computing node and method for processing write requests |
CN112835885B (zh) * | 2019-11-22 | 2023-09-01 | 北京金山云网络技术有限公司 | 一种分布式表格存储的处理方法、装置及系统 |
CN113010480B (zh) * | 2020-03-26 | 2024-03-19 | 腾讯科技(深圳)有限公司 | 日志处理方法、装置、电子设备及计算机可读存储介质 |
US11341163B1 (en) | 2020-03-30 | 2022-05-24 | Amazon Technologies, Inc. | Multi-level replication filtering for a distributed database |
CN111858490B (zh) * | 2020-07-22 | 2024-01-30 | 浪潮云信息技术股份公司 | 一种基于dbDedup的分布式数据库存储通信压缩方法 |
US11556545B2 (en) * | 2020-07-24 | 2023-01-17 | Sap Se | Disk based hybrid transactional analytical processing system |
CN111737090B (zh) * | 2020-08-25 | 2020-12-01 | 北京志翔科技股份有限公司 | 日志仿真方法、装置、计算机设备和存储介质 |
CN112084261B (zh) * | 2020-09-03 | 2024-05-10 | 上海达梦数据库有限公司 | 一种数据同步方法、系统、节点及存储介质 |
JP7458610B2 (ja) * | 2020-10-27 | 2024-04-01 | 株式会社日立製作所 | データベースシステム、及びクエリ実行方法 |
EP4016322A1 (en) * | 2020-12-21 | 2022-06-22 | Palantir Technologies Inc. | Data structure based on event compaction and read-offsets |
CN112732192B (zh) * | 2021-01-09 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种磁盘分布信息裁剪方法、系统、设备以及介质 |
US20240086095A1 (en) * | 2021-02-07 | 2024-03-14 | Alibaba Group Holding Limited | Data layout optimization for object-oriented storage engine |
US11782641B2 (en) * | 2021-06-09 | 2023-10-10 | International Business Machines Corporation | Backend aware virtualized storage |
CN113312194B (zh) * | 2021-06-10 | 2024-01-23 | 中国民航信息网络股份有限公司 | 一种业务数据采集方法及装置 |
CN113568940B (zh) * | 2021-08-04 | 2024-05-21 | 北京百度网讯科技有限公司 | 数据查询的方法、装置、设备以及存储介质 |
US12066914B2 (en) * | 2021-09-01 | 2024-08-20 | Micron Technology, Inc. | Internal resource monitoring in memory devices |
US11500870B1 (en) * | 2021-09-27 | 2022-11-15 | International Business Machines Corporation | Flexible query execution |
US20230177069A1 (en) * | 2021-12-08 | 2023-06-08 | Vmware, Inc. | Efficient journal log record for copy-on-write b+ tree operation |
TWI805231B (zh) | 2022-02-18 | 2023-06-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
TWI845896B (zh) | 2022-02-18 | 2024-06-21 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
TWI802279B (zh) | 2022-02-18 | 2023-05-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
CN114724276B (zh) * | 2022-04-12 | 2023-10-24 | 广州文远知行科技有限公司 | 一种多类型日志数据的处理方法、播放方法及相关设备 |
CN114969083B (zh) * | 2022-06-24 | 2024-06-14 | 在线途游(北京)科技有限公司 | 一种实时数据分析方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5892917A (en) * | 1995-09-27 | 1999-04-06 | Microsoft Corporation | System for log record and log expansion with inserted log records representing object request for specified object corresponding to cached object copies |
CN1454349A (zh) * | 2000-06-07 | 2003-11-05 | 处理存储器有限公司 | 主存储器事务处理系统中的高度并行日志和恢复操作的方法和系统 |
CN1784676A (zh) * | 2004-02-25 | 2006-06-07 | 微软公司 | 数据库数据恢复系统和方法 |
Family Cites Families (91)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03130842A (ja) | 1989-10-17 | 1991-06-04 | Toshiba Corp | データベースシステムの同時実行制御装置 |
DE69126066T2 (de) | 1990-06-29 | 1997-09-25 | Oracle Corp | Verfahren und Gerät zur Optimierung des Logbuchaufhebungsgebrauchs |
US5280612A (en) | 1991-11-26 | 1994-01-18 | International Business Machines Corporation | Multiple version database concurrency control system |
US5530850A (en) | 1993-10-25 | 1996-06-25 | International Business Machines Corporation | Data storage library array with log-structured file system which allows simultaneous write and garbage collection |
EP0675451A3 (en) | 1994-03-30 | 1996-12-04 | Siemens Stromberg Carlson | Distributed database architecture and system for managing a distributed database for development in an open network. |
US5870758A (en) | 1996-03-11 | 1999-02-09 | Oracle Corporation | Method and apparatus for providing isolation levels in a database system |
JPH10254748A (ja) | 1997-03-11 | 1998-09-25 | Fujitsu Ltd | 分散共有メモリ一貫性最適制御方法 |
US5907848A (en) | 1997-03-14 | 1999-05-25 | Lakeview Technology, Inc. | Method and system for defining transactions from a database log |
US7031987B2 (en) | 1997-05-30 | 2006-04-18 | Oracle International Corporation | Integrating tablespaces with different block sizes |
US6240413B1 (en) | 1997-12-22 | 2001-05-29 | Sun Microsystems, Inc. | Fine-grained consistency mechanism for optimistic concurrency control using lock groups |
US7930278B2 (en) * | 1998-02-13 | 2011-04-19 | Oracle International Corporation | Methods to perform disk writes in a distributed shared disk system needing consistency across failures |
US6233585B1 (en) | 1998-03-12 | 2001-05-15 | Crossworlds Software, Inc. | Isolation levels and compensating transactions in an information system |
US6317754B1 (en) * | 1998-07-03 | 2001-11-13 | Mitsubishi Electric Research Laboratories, Inc | System for user control of version /Synchronization in mobile computing |
JP3450786B2 (ja) * | 1999-03-05 | 2003-09-29 | ミツビシ・エレクトリック・リサーチ・ラボラトリーズ・インコーポレイテッド | 異なるデータファイルを調停する方法 |
JP3763992B2 (ja) | 1999-03-30 | 2006-04-05 | 富士通株式会社 | データ処理装置及び記録媒体 |
US6615219B1 (en) | 1999-12-29 | 2003-09-02 | Unisys Corporation | Database management system and method for databases having large objects |
US6631374B1 (en) | 2000-09-29 | 2003-10-07 | Oracle Corp. | System and method for providing fine-grained temporal database access |
CA2436517C (en) | 2000-10-09 | 2011-09-20 | Maximum Availability Limited | Method and apparatus for data processing |
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 |
US7209515B2 (en) | 2001-03-30 | 2007-04-24 | Science Applications International Corporation | Multistage reception of code division multiple access transmissions |
US6823964B2 (en) | 2001-05-17 | 2004-11-30 | Jlg Industries, Inc. | Fall arrest platform |
WO2003001382A1 (en) | 2001-06-25 | 2003-01-03 | Nokia Corporation | 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 |
US7305386B2 (en) | 2002-09-13 | 2007-12-04 | Netezza Corporation | Controlling visibility in multi-version database systems |
US7089253B2 (en) | 2002-09-13 | 2006-08-08 | Netezza Corporation | Computer method and system for concurrency control using dynamic serialization ordering |
US6976022B2 (en) | 2002-09-16 | 2005-12-13 | Oracle International Corporation | Method and mechanism for batch processing transaction logging records |
US8489742B2 (en) | 2002-10-10 | 2013-07-16 | Convergys Information Management Group, Inc. | System and method for work management |
US7308456B2 (en) | 2002-12-19 | 2007-12-11 | International Business Machines Corporation | Method and apparatus for building one or more indexes on data concurrent with manipulation of data |
US7010645B2 (en) | 2002-12-27 | 2006-03-07 | International Business Machines Corporation | System and method for sequentially staging received data to a write cache in advance of storing the received data |
US7937551B2 (en) | 2003-01-21 | 2011-05-03 | Dell Products L.P. | Storage systems having differentiated storage pools |
US7287034B2 (en) | 2003-05-08 | 2007-10-23 | Oracle International Corporation | On-demand multi-version data dictionary to support distributed applications |
US7328226B1 (en) | 2003-06-30 | 2008-02-05 | Symantec Operating Corporation | Coordinated distributed log-based snapshots in a multi-host environment |
US8799225B2 (en) * | 2003-11-05 | 2014-08-05 | Lumigent Technologies, Inc. | Process and system for auditing database activity |
JP2005276094A (ja) * | 2004-03-26 | 2005-10-06 | Hitachi Ltd | 分散ストレージ装置のファイル管理方法及び分散ストレージシステム並びにプログラム |
US7146386B2 (en) | 2004-03-29 | 2006-12-05 | Microsoft Corporation | System and method for a snapshot query during database recovery |
US20060020634A1 (en) | 2004-07-20 | 2006-01-26 | International Business Machines Corporation | Method, system and program for recording changes made to a database |
US7650356B2 (en) | 2004-08-24 | 2010-01-19 | Microsoft Corporation | Generating an optimized restore plan |
US7257689B1 (en) | 2004-10-15 | 2007-08-14 | Veritas Operating Corporation | System and method for loosely coupled temporal storage management |
US7403945B2 (en) | 2004-11-01 | 2008-07-22 | Sybase, Inc. | Distributed database system providing data and space management methodology |
US7814057B2 (en) | 2005-04-05 | 2010-10-12 | Microsoft Corporation | Page recovery using volume snapshots and logs |
US7716645B2 (en) | 2005-06-10 | 2010-05-11 | International Business Machines Corporation | Using atomic sets of memory locations |
US7873683B2 (en) | 2005-07-01 | 2011-01-18 | Qnx Software Systems Gmbh & Co. Kg | File system having transaction record coalescing |
US20070083570A1 (en) * | 2005-10-11 | 2007-04-12 | Fineberg Samuel A | File system versioning using a log |
US7885922B2 (en) | 2005-10-28 | 2011-02-08 | Oracle International Corporation | Apparatus and method for creating a real time database replica |
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 | ストレージ装置、及びストレージシステム |
JP2008003932A (ja) * | 2006-06-23 | 2008-01-10 | Sony Corp | データ記憶装置、データ記憶方法およびコンピュータプログラム |
US7882064B2 (en) | 2006-07-06 | 2011-02-01 | Emc Corporation | File system replication |
US8069191B2 (en) | 2006-07-13 | 2011-11-29 | International Business Machines Corporation | Method, an apparatus and a system for managing a snapshot storage pool |
US8935206B2 (en) | 2007-01-31 | 2015-01-13 | Hewlett-Packard Development Company, L.P. | Snapshots in distributed storage systems |
US8370715B2 (en) | 2007-04-12 | 2013-02-05 | International Business Machines Corporation | Error checking addressable blocks in storage |
US8086650B1 (en) * | 2007-06-15 | 2011-12-27 | Ipswitch, Inc. | Method for transforming and consolidating fields in log records from logs generated on different operating systems |
US8326897B2 (en) | 2007-12-19 | 2012-12-04 | International Business Machines Corporation | Apparatus and method for managing data storage |
US7979670B2 (en) | 2008-01-24 | 2011-07-12 | Quantum Corporation | Methods and systems for vectored data de-duplication |
US8401994B2 (en) | 2009-09-18 | 2013-03-19 | Oracle International Corporation | Distributed consistent grid of in-memory database caches |
US9134917B2 (en) | 2008-02-12 | 2015-09-15 | 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 |
US8266114B2 (en) | 2008-09-22 | 2012-09-11 | Riverbed Technology, Inc. | Log structured content addressable deduplicating storage |
US8341128B1 (en) | 2008-05-09 | 2012-12-25 | Workday, Inc. | Concurrency control using an effective change stack and tenant-based isolation |
US9104662B2 (en) | 2008-08-08 | 2015-08-11 | Oracle International Corporation | Method and system for implementing parallel transformations of records |
US9842004B2 (en) | 2008-08-22 | 2017-12-12 | Red Hat, Inc. | Adjusting resource usage for cloud-based networks |
US8255373B2 (en) * | 2008-10-24 | 2012-08-28 | Microsoft Corporation | Atomic multiple modification of data in a distributed storage system |
US8230228B2 (en) * | 2008-10-31 | 2012-07-24 | International Business Machines Corporation | Support of tamper detection for a log of records |
US8229890B2 (en) | 2008-12-15 | 2012-07-24 | International Business Machines Corporation | Opening document stored at multiple database replicas |
US8429134B2 (en) | 2009-09-08 | 2013-04-23 | Oracle International Corporation | Distributed database recovery |
EP2476039B1 (en) | 2009-09-09 | 2016-10-26 | SanDisk Technologies LLC | Apparatus, system, and method for power reduction management in a storage device |
US8392479B1 (en) | 2009-09-14 | 2013-03-05 | Symantec Corporation | Method and apparatus for optimizing storage space allocation for computer data |
US8255627B2 (en) | 2009-10-10 | 2012-08-28 | International Business Machines Corporation | Secondary cache for write accumulation and coalescing |
US8150808B2 (en) * | 2009-10-21 | 2012-04-03 | Delphix Corp. | Virtual database system |
US8250213B2 (en) | 2009-11-16 | 2012-08-21 | At&T Intellectual Property I, L.P. | Methods and apparatus to allocate resources associated with a distributive computing network |
US8396831B2 (en) | 2009-12-18 | 2013-03-12 | Microsoft Corporation | Optimistic serializable snapshot isolation |
US20110161496A1 (en) | 2009-12-28 | 2011-06-30 | Nicklin Jonathan C | Implementation and management of internet accessible services using dynamically provisioned resources |
CA2783370C (en) | 2009-12-31 | 2016-03-15 | Commvault Systems, Inc. | Systems and methods for performing data management operations using snapshots |
US8671074B2 (en) | 2010-04-12 | 2014-03-11 | Microsoft Corporation | Logical replication in clustered database system with adaptive cloning |
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 |
GB2484086A (en) | 2010-09-28 | 2012-04-04 | Metaswitch Networks Ltd | Reliability and performance modes in a distributed storage system |
US8910172B2 (en) | 2010-12-29 | 2014-12-09 | Symantec Corporation | Application resource switchover systems and methods |
US9348883B2 (en) | 2011-06-01 | 2016-05-24 | Clustrix, Inc. | Systems and methods for replication replay in a relational database |
US8554726B2 (en) | 2011-06-01 | 2013-10-08 | Clustrix, Inc. | Systems and methods for reslicing data in a relational database |
US8417669B2 (en) | 2011-06-01 | 2013-04-09 | Sybase Inc. | Auto-correction in database replication |
US8543538B2 (en) | 2011-06-01 | 2013-09-24 | Clustrix, Inc. | Systems and methods for redistributing data in a relational database |
US8868492B2 (en) | 2011-06-15 | 2014-10-21 | Oracle International Corporation | Method for maximizing throughput and minimizing transactions response times on the primary system in the presence of a zero data loss standby replica |
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 |
US9501501B2 (en) | 2013-03-15 | 2016-11-22 | Amazon Technologies, Inc. | Log record management |
-
2014
- 2014-03-07 US US14/201,509 patent/US9501501B2/en active Active
- 2014-03-12 CN CN201910124320.0A patent/CN110083656B/zh active Active
- 2014-03-12 CN CN201480025925.XA patent/CN105190623B/zh active Active
- 2014-03-12 CA CA2906522A patent/CA2906522C/en active Active
- 2014-03-12 JP JP2016501632A patent/JP6246315B2/ja active Active
- 2014-03-12 AU AU2014235367A patent/AU2014235367B2/en active Active
- 2014-03-12 KR KR1020157029771A patent/KR101754926B1/ko active IP Right Grant
- 2014-03-12 WO PCT/US2014/024759 patent/WO2014151013A1/en active Application Filing
- 2014-03-12 EP EP14770899.4A patent/EP2973062B1/en active Active
- 2014-03-12 KR KR1020177018193A patent/KR101926674B1/ko active IP Right Grant
-
2016
- 2016-11-21 US US15/357,908 patent/US10031813B2/en active Active
-
2017
- 2017-07-11 AU AU2017204760A patent/AU2017204760B2/en active Active
- 2017-11-14 JP JP2017218954A patent/JP6619406B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5892917A (en) * | 1995-09-27 | 1999-04-06 | Microsoft Corporation | System for log record and log expansion with inserted log records representing object request for specified object corresponding to cached object copies |
CN1454349A (zh) * | 2000-06-07 | 2003-11-05 | 处理存储器有限公司 | 主存储器事务处理系统中的高度并行日志和恢复操作的方法和系统 |
CN1784676A (zh) * | 2004-02-25 | 2006-06-07 | 微软公司 | 数据库数据恢复系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2018049652A (ja) | 2018-03-29 |
WO2014151013A1 (en) | 2014-09-25 |
US20170075767A1 (en) | 2017-03-16 |
KR101926674B1 (ko) | 2018-12-07 |
CN105190623B (zh) | 2019-03-19 |
US20140279920A1 (en) | 2014-09-18 |
KR20150132511A (ko) | 2015-11-25 |
CA2906522C (en) | 2018-02-27 |
KR101754926B1 (ko) | 2017-07-07 |
EP2973062A1 (en) | 2016-01-20 |
US9501501B2 (en) | 2016-11-22 |
JP6246315B2 (ja) | 2017-12-13 |
CA2906522A1 (en) | 2014-09-25 |
JP6619406B2 (ja) | 2019-12-11 |
AU2017204760A1 (en) | 2017-07-27 |
AU2014235367A1 (en) | 2015-10-08 |
AU2017204760B2 (en) | 2018-11-15 |
EP2973062A4 (en) | 2016-10-05 |
US10031813B2 (en) | 2018-07-24 |
CN110083656A (zh) | 2019-08-02 |
JP2016511495A (ja) | 2016-04-14 |
AU2014235367B2 (en) | 2017-04-13 |
KR20170081294A (ko) | 2017-07-11 |
EP2973062B1 (en) | 2022-07-06 |
CN105190623A (zh) | 2015-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110083656B (zh) | 日志记录管理 | |
US12038906B2 (en) | Database system with database engine and separate distributed storage service | |
AU2017239539B2 (en) | In place snapshots | |
US10198356B2 (en) | Distributed cache nodes to send redo log records and receive acknowledgments to satisfy a write quorum requirement | |
US10331655B2 (en) | System-wide checkpoint avoidance for distributed database systems | |
CN110209535B (zh) | 用于分布式数据库系统的快速崩溃恢复 | |
US9460008B1 (en) | Efficient garbage collection for a log-structured data store | |
US10303564B1 (en) | Reduced transaction I/O for log-structured storage systems | |
US10803012B1 (en) | Variable data replication for storage systems implementing quorum-based durability schemes |
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 |