CN105378725B - 虚拟数据库倒退 - Google Patents
虚拟数据库倒退 Download PDFInfo
- Publication number
- CN105378725B CN105378725B CN201480037247.9A CN201480037247A CN105378725B CN 105378725 B CN105378725 B CN 105378725B CN 201480037247 A CN201480037247 A CN 201480037247A CN 105378725 B CN105378725 B CN 105378725B
- Authority
- CN
- China
- Prior art keywords
- data base
- virtual data
- database
- time
- snapshot
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/256—Integrating or interfacing systems involving database management systems in federated or virtual 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/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
Abstract
一种数据库存储系统允许用户修改虚拟数据库的状态。数据库存储系统在相应目的地处提供相应虚拟数据库(VDB),该相应VDB具有在相应容器中存储的第一时间流。用户可以发送用于倒退VDB的请求。该请求标识VDB的时间流和与时间流关联的VDB的状态。数据库存储系统修改虚拟数据库以引用关联于与标识的时间流关联的VDB的快照的数据库块。数据库存储系统维护用于修改的VDB的新时间流。数据库存储系统也允许虚拟数据库被刷新成源数据库的状态。源数据库可以是在外部系统中存储的数据库或者在数据库存储系统内存储的虚拟数据库。
Description
技术领域
本发明总体上涉及数据库并且特别地涉及用于管理数据库的存储高效系统。
背景技术
数据库存储对组织而言关键的数据,并且因此形成组织的信息技术基础结构的重要部分。数据库软件经常是复杂的并且需要专家,例如,用于维护数据库软件的数据库管理员。另外,数据库存储大量信息。作为结果,用于执行若干数据库操作的常规技术非常缓慢。例如,出于开发和测试的目的,开发者和/或测试者需要数据库在它存在于特定时间点时的副本。提供这样的数据库仅如果在该时间点取得了数据库的适当备份才可以有可能。假设取得了适当备份,则经常要求数据库管理员采取适当步骤以将数据库恢复成需要的状态。另外,恢复操作可能花费很长时间。在与数据库管理员交互和使数据库被恢复时的总延迟可能显著。作为结果,开发者和/或测试者必须等待适当测试/开发数据库可用。这些延迟对于企业而言可能成本高,因为各种人员等待适当环境变成可用。另外,开发和测试过程中的延迟在修复问题时引起进一步的延迟,从而造成生产力损失。作为结果,用于提供与特定状态对应的数据库的副本的常规技术经常不胜任。
发明内容
各实施例通过将虚拟数据库(VDB)的状态修改成VDB的另一状态来对VDB执行倒退(rewind)操作。数据库存储系统存储源数据库的快照,这些快照代表源数据库的数据库块的时间点副本,从而使得跨各快照共享一个或者多个数据库块。数据库存储系统基于源数据库的快照的数据库块供应虚拟数据库。数据库存储系统维护用于虚 拟数据库的时间流,从而使得时间流包括从初始状态开始对虚拟数据库的改变的代表。对虚拟数据库的改变的代表包括在不同时间点取得的虚拟数据库的各快照,从而使得跨虚拟数据库的各快照共享一个或者多个数据库块。数据库存储系统接收用于将虚拟数据库倒退到虚拟数据库的先前状态的请求。该请求标识虚拟数据库的时间流和与标识的时间流关联的目标时间点。数据库存储系统通过修改虚拟数据库以引用与时间流关联的虚拟数据库的快照的各数据库块来倒退虚拟数据库。数据库存储系统维护用于倒退的虚拟数据库的新时间流,该新时间流代表由对倒退的虚拟数据库的后续更新引起的改变。
各实施例对VDB执行刷新操作以将VDB的状态修改成与VDB关联的源数据库的状态。数据库存储系统维护用于源数据库的时间流,每个时间流包括从源数据库的初始状态开始对源数据库的改变的代表。改变的代表包括在不同时间点取得的源数据库的各快照。数据库存储系统基于源数据库的快照的各数据库块供应虚拟数据库。数据库存储系统维护用于虚拟数据库的时间流。数据库存储系统接收用于将虚拟数据库刷新成由源数据库的时间流和时间流的目标时间点标识的源数据库的状态的请求。数据库存储系统通过修改虚拟数据库以引用与标识的时间流关联的源数据库的快照的各数据库块来刷新虚拟数据库。数据库存储系统维护用于刷新的虚拟数据库的新时间流,该新时间流代表由对刷新的虚拟数据库的后续更新引起的改变。
在这一发明内容和以下具体描述中描述的特征和优点不是囊括性的。许多附加特征和优点鉴于附图、说明书及其权利要求书而将为本领域普通技术人员所清楚。
附图说明
图1是图示了根据本发明的一个实施例的如何从生产数据库向数据库存储系统复制信息并且使用文件共享系统来将该信息供应为虚拟数据库的示图。
图2图示了根据一个实施例的允许虚拟数据库的远程供应的整个 系统环境。
图3是根据一些实施例的从生产数据库产生信息的存储高效副本以及供应虚拟数据库的系统的架构的示图。
图4a图示了根据一些实施例的虚拟数据库中存储的数据的结构。
图4b图示了根据一些实施例的在沿着时间流的各个时间点捕获虚拟数据库的与源数据库的改变对应的快照的过程。
图5a图示了根据一些实施例的用于将虚拟数据库倒退到用户指定的时间点的第一方式。
图5b图示了根据一些实施例的用于将虚拟数据库倒退到用户指定的时间点的第二方式。
图6图示了根据一些实施例的虚拟数据库退后(rollback)(或者倒退)的实例中的时间流的用户可见性。
图7图示了根据一些实施例的沿着时间流向后(例如,退后或者倒退)和向前(快进)移动虚拟数据库的过程。
图8图示了根据一些实施例的在虚拟数据库退后时的实时时钟和序列改变号(SCN)的改变。
图9a至图9b包括根据本发明的一个实施例的用于倒退或者退后虚拟数据库的过程的流程图。
图10a至图10g包括根据一些实施例的用于取回虚拟数据库快照、与VDB时间流交互和执行虚拟数据库倒退(或者退后)的图形用户界面的示例。
附图仅出于例示的目的而描绘本发明的各个实施例。本领域技术人员将从以下讨论容易地认识到可以运用这里所示的结构和方法的备选实施例而未脱离这里描述的本发明的原理。
具体实施方式
另外,以上提到的用于远程供应的方式允许对源数据库块(例如,生产数据库中的数据库块)的历史改变、更新或者修改按照存储和性能高效方式跨时间被保存为在各个时间点捕获的VDB快照。可选地 跨一个或者多个远程目标(例如,开发)环境重复被保存为VDB的快照的对源数据库的这些历史改变,从而允许用户重返VDB在目标的先前时间点的副本或者从该先前时间点取回该副本。这一重返VDB在在先时间点的副本的过程被称为VDB的退后或者倒退。
用于倒退VDB的一些方式包括从用户指定的在先时间点创建新虚拟数据库(例如,通过访问在数据库存储系统中存储的VDB的快照)并且允许用户访问新VDB和对新VDB做出改变。用于倒退VDB的这一方式遇到的问题是与原有VDB的逻辑标识不同的新逻辑标识(例如,新名称、新标识符以及所有VDB文件和关联的配置文件的新副本)的新VDB的创建造成存储和性能效率低。
因而,一些实施例提供了一种倒退或者退后数据库的方法,该方法无需在用户指定的在先时间点创建新VDB,而是需要创建与原有VDB关联的新时间流(在与先前VDB时间流相同的容器或者数据库存储系统中)。这一方式造成与包括从倒退点创建新VDB的方式比较的更快和更存储高效的VDB倒退操作。
虚拟数据库系统
在本发明的某些实施例中,基于生产数据库或者虚拟数据库在特定时间点的状态创建一个或者多个虚拟数据库。然后可以如希望的那样个别地访问和修改虚拟数据库。数据库包括在计算机中存储的用于计算机实施的应用使用的数据。数据库服务器是可以与数据库交互的计算机程序并且提供数据库服务,例如,对在数据库中存储的数据的访问。各实施例使用生产数据库的存储级快照或者生产数据库的克隆代替实时生产数据库来创建虚拟数据库。在通过完全引用而结合于此的、提交于2009年10月21日的第12/603,541号美国专利申请(现在被授权为美国专利8,150,808)中描述了虚拟数据库系统。
在一个实施例中,在各个时间(比如周期地)向存储系统复制来自生产数据库的信息。这支持重建用于这些不同时间点的与生产数据库关联的数据库文件。可以按照高效方式在存储系统中管理信息,从而使得仅如果必需则才产生信息的副本。例如,如果数据库的一部分 未从先前复制的版本改变,则无需复制该未改变的部分。针对时间点而被创建的虚拟数据库被存储为文件集合,该文件集合包含数据库的如在该时间点可用的信息。每个文件包括数据块集合和用于引用数据块的数据结构。
可以如对于数据库服务器而需要的那样在数据库服务器上通过创建与生产数据库在先前时间点的状态对应的用于生产数据库的数据库文件来创建虚拟数据库。使用文件共享机制来使与虚拟数据库对应的文件可用于数据库服务器,该文件共享机制将虚拟数据库链接到在存储系统上存储的适当数据块。使虚拟数据库可用于数据库服务器的过程被称为“供应(provisioning)”虚拟数据库。可以基于生产数据库在相同时间点的状态供应多个VDB。在另一方面,不同VDB可以基于相同生产数据库或者不同生产数据库的不同时间点状态。VDB也可以基于其它VDB。
已经在其上供应了虚拟数据库的数据库服务器可以从在存储系统上存储的文件读取和向这些文件写入。可以在不同文件之间共享数据库块,每个文件与不同VDB关联。特别地,如果对应虚拟数据库系统130仅读取数据库块中的信息而未向数据库块写入,则共享数据库块。在一个实施例中,虚拟数据库管理器375在必需时产生数据库块的副本。例如,特定数据库块可以由从相同数据库块读取的多个VDB共享。但是如果虚拟数据库系统130之一尝试向数据库块写入,则产生数据库块的分离的副本,因为写入操作使得该数据库块对于与该虚拟数据库系统130对应的VDB而言不同于它对于其它VDB。
图1图示了用于如何可以从生产数据库向数据库存储系统复制信息以及使用文件共享系统来将该信息供应为虚拟数据库的一个实施例。如以下进一步描述的,数据库存储系统100从一个或者多个生产数据库系统110取回与数据库关联的数据并且按照高效方式存储数据。数据库管理员用户接口140允许数据库管理员执行由数据库存储系统100支持的各种动作。
响应于来自管理员系统140的请求或者基于预定义的时间表,数 据库存储系统100可以向生产数据库系统110发送用于数据的请求150。生产数据库系统110通过发送在生产数据库中存储的信息作为数据流160来做出响应。数据库存储系统100接收由生产数据库系统110发送的数据160并且存储数据。数据库存储系统100例如通过保持已经改变的数据库块的版本并且重用尚未改变的数据库块来高效地存储信息。
为了创建虚拟数据库,数据库存储系统100创建文件,这些文件代表在给定的时间点的与生产数据库系统110对应的信息。数据库存储系统100使用文件共享系统120来向虚拟数据库系统130暴露170对应的文件。虚拟数据库系统130运行可以利用由数据库存储系统100暴露170的文件操作的数据库服务器。因此,按照存储高效方式对于给定的时间点为虚拟数据库系统130创建生产数据库的虚拟副本。
可以在各种工作流场景中使用VDB。图2图示了示例工作流场景,该工作流场景示出了根据一个实施例的对虚拟数据库的远程供应。存在存储数据库存储系统的两个站点。本地站点210a包括源数据库存储系统230a并且远程站点210b包括目标数据库存储系统230b。可以存在包括数据存储库220的一个或者多个源数据库系统215。源数据库系统215a包括数据存储库220a并且源数据库系统215b包括数据存储库220b。对源数据库系统215的数据存储库220的改变由源存储数据库系统100a周期地接收245并且存储在源数据存储库230a中。数据库系统240a可以在源数据库存储系统100a中创建虚拟数据库并且向VDB读取/写入260a。
向目标存储数据库系统100b传输250信息,该信息描述对源数据库存储系统100a中的数据的改变。这些包括自从上次从源数据库存储系统100a向目标存储数据库系统100b传输250数据起的改变的数据块。可以周期地或者基于预定的时间表传输250对源数据库存储系统100a中的数据的改变。数据库系统240b在目标数据库存储系统100b中创建虚拟数据库。允许数据库系统240b向VDB读取/写入 260b。
系统架构
图3示出了高级框图,该框图图示了适合用于从生产数据库产生信息的存储高效副本并且使用该信息来供应一个或者多个虚拟数据库的系统环境。系统环境包括数据库存储系统100和一个或者多个虚拟数据库系统130。图3中所示的系统如果必需则可以经由网络相互通信。图3并未图示可以使用的其它系统,例如,生产数据库系统110或者管理系统140。
数据库存储系统100取回在生产数据库系统110中可用的信息并且存储它。取回的信息包括数据库块,这些数据库块包括在数据库中存储的数据、事务日志信息、与数据库有关的元数据信息、与数据库的用户有关的信息等。取回的信息也可以包括与数据库关联的配置文件。例如,数据库可以使用销售商专属配置文件以指定包括与数据库关联的初始化参数的各种配置参数。
在存储系统数据存储库390中存储的数据可以被暴露给虚拟数据库系统130,从而允许虚拟数据库系统130将数据视为在生产数据库系统110中存储的生产数据库的副本。数据库存储系统100包括时间点副本管理器310、事务日志管理器320、接口管理器330、存储分配管理器365、文件共享管理器370、虚拟数据库管理器375、VDB时间流管理器325、VDB退后管理器335和存储系统数据存储库390。在备选实施例中,可以在数据库存储系统100中包括不同和/或附加模块。
时间点副本管理器310通过向销售商接口模块335发送用于取回在生产DB数据存储库350中存储的代表数据库的时间点副本(也被称为“PIT副本”)的信息的请求来与生产数据库系统110交互。时间点副本管理器310在存储系统数据存储库390中存储从生产数据库系统110获得的数据。由时间点副本管理器310取回的数据对应于从生产DB数据存储库350复制的数据库的数据库块(或者页面)。在用于从生产DB数据存储库350取回信息的第一PIT副本请求之后,后 续PIT副本请求可以仅需取回自从先前请求起的在数据库中改变的数据。在第一请求中收集的数据可以与在第二请求中收集的数据组合以重建与对于第二请求从生产DB数据存储库350取回数据的时间点对应的数据库的副本。
事务日志管理器320向生产数据库系统110发送用于取回在生产数据库系统110中存储的事务日志的部分的请求。在一些实施例中,向销售商接口模块335发送来自事务日志管理器320的请求。由事务日志管理器320从销售商接口模块335获得的数据被存储在存储系统数据存储库390中。在一个实施例中,用于事务日志的请求仅取回自从处理用于事务日志的先前请求起的在生产数据库系统110中的事务日志的改变。与由事务日志管理器320取回的事务日志组合的由时间点副本管理器310取回的数据库块可以用来重建与在产生时间点副本的时间之间以往的时间对应的在生产系统110中的数据库的副本。
存储分配管理器365提供保存从生产数据库系统110取回的数据的功能。例如,时间点副本管理器310可以调用存储分配管理器的API以保存从生成数据库系统110取回的数据块。存储分配管理器365保持跟踪可以从生产数据库系统110获得的每个数据块的各种版本。对于给定的时间点,可以请求存储分配管理器365提供在给定的时间点之前获得的数据块的最迟版本。存储分配管理器365也可以用于产生数据块的副本。如果出于只读目的而复制数据块,则存储分配管理器365仅分配用于保持引用现有数据块的指针的足够存储。然而,如果进行用于向复制的数据块写入的尝试,则存储分配管理器365分配用于产生数据块的实际副本的足够存储以避免更新原有数据块。
文件共享管理器370允许跨可以通过网络与数据库存储系统100连接的计算机共享在存储系统数据存储库390中存储的文件。文件共享管理器370使用文件共享系统120以用于共享文件。用于共享文件的系统的示例是网络文件系统(NFS)。用于共享文件的系统可以利用光纤信道存储区域网络(FC-SAN)或者网络附着存储(NAS)或者其组合和变型。用于共享文件的系统可以基于小型计算机系统接口 (SCSI)协议、因特网小型计算机系统接口(iSCSI)协议、光纤信道协议或者其它相似和有关协议。在一些实施例中,数据库存储系统100可以利用逻辑卷管理器。使用文件共享管理器370来共享在存储系统数据存储库390中存储的文件允许远程计算机(例如,虚拟数据库系统130)访问共享的文件中的数据。远程系统可以能够从由存储系统数据存储库390共享的文件读取和/或向该文件写入。在一个实施例中,在模仿给定的文件系统盘布局的格式(比如WINDOWS操作系统的被称为NTFS的文件系统或者UNIX文件系统(UFS))中组织文件。
虚拟数据库管理器375接收用于为虚拟数据库系统130创建虚拟数据库的请求。用于创建虚拟数据库的请求可以由数据库管理员使用管理系统140来发送并且标识生产数据库系统110、虚拟数据库系统130并且包括与虚拟数据库需要被创建到的时间点对应的以往时间点。虚拟数据库管理器375创建与正在创建的虚拟数据库对应的必需文件并且与虚拟数据库系统130共享文件。用于虚拟数据库系统130的数据库管理员可以不同于用于生产数据库系统110的数据库管理员。
VDB时间流管理器325维护对与虚拟数据库对应的一个或者多个时间流关联的信息的存储、更新和取回。VDB时间流管理器325存储描述沿着时间流的一个或者多个时间点的信息、与对VDB文件的更新或者修改关联的序列改变号和事务日志、文件在沿着时间流的时间点的子集的快照等。根据一个实施例,时间流的代表存储描述对源数据库或者VDB执行的改变的信息。在一个实施例中,按照存储高效方式存储改变。例如,在各种时间点存储源数据库或者VDB的数据的副本(或者快照),从而使得跨时间点副本共享一个或者多个数据库块。特别地,跨两个连续时间点副本共享未改变的数据库块并且在产生更新之前复制更新的数据库块。在一个实施例中,描述改变的信息也包括代表在捕获两个时间点副本之间的持续时间中产生的改变的事务日志。
VDB退后管理器335接收用于将VDB倒退或者退后到沿着时间流的用户指定的点的用户请求。VDB退后管理器335与VDB时间流管理器325对接以访问与虚拟数据库对应的时间流信息以便取回虚拟数据库在用户指定的时间点的代表。
虚拟数据库系统130包括数据库服务器360和VDB系统库380。数据库服务器360与数据库服务器345功能相似并且是提供用于管理在数据存储库350上存储的数据的数据库服务和应用编程接口(API)的计算机程序。由数据库服务器360管理的数据可以被存储在由数据库存储系统100使用文件共享系统120来共享的存储系统数据存储库390上。VDB系统库380包含用于处理由数据库存储系统100发送的请求的程序代码。在备选配置中,可以在虚拟数据库系统130中包括不同和/或附加模块。
创建虚拟数据库的时间点副本(这里被称为快照)
图4a指示如何产生存储高效副本以创建代表VDB的读取/写入文件结构。如图4中所示,结构410代表与生产数据库系统110上的数据库对应的文件。结构Fi和Gi分别代表在文件410中存储的数据库块(Fi指代F1、F2、F3、…,以及相似地,Gi指代G1、G2、G3、…)。箭头415代表在不同时间点Ti产生PIT副本的过程。在时间T0产生的第一PIT副本430需要复制数据库的所有必需数据库块。例如,F1i代表块Fi的副本并且块G1i代表块Gi的副本。在时间T1产生的PIT副本435仅复制自从上个PIT副本起改变的块并且与第一PIT副本比较可以复制少得多的数据。相似地,在时间T2,产生另一PIT副本440,该PIT副本440复制自从先前PIT副本435起改变的数据库块。
假设PIT副本440是对于图4中所示的配置而产生的最后PIT副本,为时间点T2创建VDB文件结构450。在创建结构450时,块V11、V12、…、V25可以被实施为指向存储数据的实际数据库块的指针。例如,V11代表块F1中的信息,并且由于在时间T1和T2产生的副本的期间从未更新块F1,所以V11指向F11。V12代表块F2中的信息,并且由于在时间T1更新了F2,所以V12指向块F22。相 似地,V13对应于在时间T2更新的块F3并且指向块F33。
由于图4中所示的结构450是读取/写入结构,所以允许虚拟数据库系统130从这些结构读取以及向它们写入。在虚拟数据库系统130向块Vij写入时,为数据库块分配空间并且向分配的空间复制对应的数据库块的数据。例如,如果虚拟数据库系统130向块V11写入,则分配空间并且向分配的块复制块F11。因此,块F11的原有副本被维护为只读副本并且允许虚拟数据库系统130向具体地为虚拟数据库系统130而创建的适当数据库块的副本写入。这可以被视为用于创建数据库块的副本的懒惰机制,该机制仅如果对应的虚拟数据库系统130向数据库块写入则才复制数据库块。由于虚拟数据库系统130向其写入的块的数目可以是与VDB关联的块的总数的一小部分,所以以上结构按照高度存储高效方式存储与VDB关联的数据。虚拟数据库系统130未向其写入的数据库块可以由若干虚拟数据库系统共享而未被复制用于具体虚拟数据库系统130。
作为创建虚拟数据库的时间点副本(或者快照)的另一示例,图4b图示了根据一些实施例的捕获(在沿着时间线或者时间流的各种时间点)与源数据库的改变对应的、虚拟数据库的快照的过程。
在图4b中示出了沿着时间线的时间进展,该时间进展示出了基于源数据库(例如,如以上参照图4a说明的生成数据库110)的数据库块的改变和在沿着时间流的一个或者多个时间点捕获的快照的对应的改变。如以上参照图4a说明的那样,源数据库的具体块的改变或者更新造成在数据库存储系统100中存储的对应的数据库块的改变。反言之,与源数据库的未更新或者修改的数据库块对应的在数据库存储系统100中存储的数据库块本身未被修改或者更新。
因而,如图4b中的时间流中所示,在时间T0捕获了快照(例如,快照1)。在时间T0或者在时间T0之前(例如,在捕获紧接地在先快照之后),更新或者修改醒目显示的源数据库块(例如,在源数据库块460-a的图示中)。因而,数据库存储系统接收修改的源数据库块并且存储它们(如图4b中所示);在时间T0捕获的快照因此1反 映与在捕获紧接地在快照1之前的快照之后出现的源数据库改变对应的改变。
随后,如图4b中的时间流中所示,在时间T1捕获快照2。在时间T0与时间T1之间更新或者修改的源数据库块如醒目显示的那样(例如,在源数据库块460-b的图示中);数据库存储系统100接收和存储与如在时间T1捕获的快照2中反映的修改的源数据库块对应的数据库块。
在时间T0与时间T1之间的事务日志470-a中反映在时间T0与时间T1之间出现的对VDB的修改。如以上参照图3说明的那样,事务日志可以用来重建与在捕获快照的时间之间(例如,在这一示例中,在时间T0与时间T1之间)的时间点对应的源数据库的副本。
另外,沿着图4b中所示时间流,在时间T1捕获快照2。在时间T0与时间T1之间更新或者修改的源数据库块如醒目显示的那样(例如,在源数据库块460-c的图示中);更新或者修改并且在时间T2捕获的VDB快照3中反映与修改的源数据库块对应的VDB文件。在时间T0与时间T1之间的事务日志470-b中反映在时间T1与时间T2之间出现的对VDB的修改,这些事务日志可以用来重建与时间T1与时间T2之间的时间点对应的源数据库的副本。
作为结果,可以按照存储和性能高效方式跨时间监视和保存对源数据库块(例如,生产数据库中的数据库块)的更新或者修改,并且跨远程目标(例如,开发)环境重复这些改变。时间流也用来代表对虚拟数据库进行的改变。
虚拟数据库的倒退或者退后
图5a图示了根据一个实施例的用于向用户指定的时间点倒退虚拟数据库的方式。如图5a中所示,虚拟数据库(例如,VDB 1)在沿着与虚拟数据库关联的时间流(例如,时间流1)的时间点基于对它的源数据库的更新经历修改或者更新(如以上参照图4a至图4b说明的那样)。如参照图4a至图4b说明的那样,在沿着时间流1的时间点的子集(例如,T0、T1和T2)捕获和存储虚拟数据库的快照和对虚 拟数据库的改变(对应于关联的源数据库的改变)。在一些实施例中,时间流代表对虚拟数据库的改变,例如,在虚拟数据库容器(例如,图5a中所示的容器1)中存储与虚拟数据库和事务日志关联的快照。
在一些实施例中,容器在数据库存储系统中存储数据库的代表,例如,VDB或者代表源数据库的dSource。容器可以包括与VDB或者dSource关联的一个或者多个时间流。因而,容器代表与VDB或者dSource关联的快照、事务日志和元数据。在一些实施例中,时间流代表在时间段内对数据源(例如,在外部系统或者另一VDB中存储的源数据库)的改变(例如,通过使用事务日志来存储快照和在快照之间的改变)。在一些实施例中,由于VDB可以在时间上回溯(例如,倒退VDB以将它的状态改变成VDB的先前状态)或者在时间上向前移动(例如,将VDB的状态修改成与用于倒退VDB的状态比较的沿着时间流的更新近状态;备选地,刷新以便将VDB状态更新成与源数据库对应的更新近状态),所以在容器中存储多个时间流。每个时间流与VDB的初始状态和在将VDB状态更新成初始状态之后对VDB产生的改变的代表关联。
在图5a中图示了根据一些实施例的用于倒退VDB的第一方式。响应于用于向在当前时间点之前的时间点(例如,向图5a中所示的退后点TRB)退后或者倒退虚拟数据库的用户请求,根据第一方式,数据库存储系统通过在希望的退后点基于原有VDB创建与原有VDB不同(例如,与VDB 1不同)的新VDB(例如,VDB 2)来模拟VDB退后。换而言之,在图5a中所示的示例中,通过基于在TRB的VDB 1在退后点TRB创建与VDB 1不同的VDB 2来模拟虚拟数据库的退后。在VDB 1的快照在退后点存在的情况下,基于VDB 1在TRB的快照创建VDB 2。在另一方面,如果VDB 1的快照在退后点TRB不存在(例如,如图5a中所示),则通过应用中间事务日志(例如,在T1与TRB之间)以在退后点重新创建VDB 1来基于VDB 1紧接地在退后点之前的快照(例如,在T1的VDB 1快照2)创建VDB 2。
为此,在一些实施例中,退后虚拟数据库的第一方式包括创建新 VDB容器(例如,容器2)、基于在最近在先快照的先前VDB创建新VDB(例如,基于在快照2的VDB 1创建VDB 2)以及创建在退后点始发(例如,在TRB开始)的新时间流(例如,时间流2)。在这样的实施例中,新VDB(例如,VDB 2)具有与原有VDB(例如,VDB 1)的逻辑身份不同的新逻辑身份(例如,新名称、新标识符以及所有VDB文件和关联的配置文件的新副本)。
图5b图示了根据一个实施例的用于向用户指定的时间点倒退虚拟数据库的另一方式。用于倒退数据库的这一方式包括将当前VDB的状态更新成在先前时间点出现的VDB的状态。因而,修改VDB的容器以改变VDB的状态,由此消除对于创建具有新逻辑身份的新VDB的需要。通过修改代表VDB的结构以指向与先前时间点对应的数据库块来改变VDB的状态。因而,在一些实施例中,用于倒退VDB的第二方式(例如,以下参照图5b描述的)提供与第一方式(例如,参照图5a描述的)比较的用于倒退虚拟数据库的更存储和时间高效的方式。
在一些实施例中,如图5b中所示,虚拟数据库(例如,VDB 1)基于沿着与虚拟数据库关联的时间流(例如,时间流1)的时间点对它的源数据库的更新经历修改或者更新。在沿着时间流1的时间点的子集(例如,T0、T1和T2)捕获和存储虚拟数据库和对虚拟数据库的改变(对应于关联的源数据库的改变)的快照。在一些实施例中,在虚拟数据库容器(例如,图5b中所示的VDB容器)中存储与虚拟数据库关联的快照(对应于源数据库的改变)和与时间流对应的信息。
响应于用于向在先时间点退后或者倒退VDB的用户请求,如图5b中所示,在第二方式中,数据库存储系统在同一容器内保持具有相同名称和标识符的相同VDB,也在同一容器内创建新时间流(例如,时间流2,这里备选地被称为“当前”时间流)并且从新时间流供应相同VDB(例如,VDB 1)。
为此,在一些实施例中,数据库存储系统暂时地关停VDB 1(例如,中止用户对VDB1的访问)、在同一容器内创建新时间流(例 如,容器1内的时间流2)、使目的地存储指向新时间流并且调出从新时间流(例如,从时间流2)供应的相同原有VDB(例如,VDB 1)。
换而言之,数据库存储系统在与在退后之前相同的、但是指向与标识的时间点对应的数据库块集合的目的地装配相同VDB文件(例如,与VDB 1对应的文件)。VDB的容器包括新时间流(即,变成“当前”时间流的时间流2而不是时间流1),并且沿着新时间流(时间流2)跟踪对VDB的改变(例如,通过捕获和维护VDB快照(比如在时间T3的快照4和在时间T4的快照5)以及在快照之间的事务日志文件)。
图6图示了根据一些实施例的虚拟数据库退后(或者倒退)的实例中的时间流的用户可见性(例如,在图形用户界面中)。参照用于倒退VDB的第二方式(例如,如以上参照图5b描述的),在一些实施例中,使旧或者母时间流(例如,如图5b和图6中所示的时间流1)的至少一部分在图形用户界面中对用户不可见。具体而言,使旧或者母时间流在退后点之后的部分对用户不可见。例如,参照图6,使母时间流(例如,时间流1)在TRB之后的部分在图形用户界面中对用户不可见。作为结果,在一些实施例中,向用户隐藏或者隐蔽事务日志文件和在母时间流上的退后点之后捕获的VDB的快照(例如,在沿着时间流1的时间T2捕获的快照3)。在其它实施例中,向用户提供与VDB关联的所有时间流并且允许用户将VDB的状态修改成沿着时间流中的任何时间流的任何状态。
在另一方面,新时间流(例如,如图6中所示的时间流2)被指明为“当前”时间流。沿着新或者当前时间流在同已容器(例如,容器1)中保存在退后点之后出现的对VDB的修改和更新(例如,考虑对源数据库的数据库块的改变)(例如,在时间T3捕获的快照4、在时间T4捕获的快照5以及描述在块之间的改变的事务日志文件)。
在母时间流上的共享的祖先改变(例如,在退后点之前的在母时间流上的改变或者更新)对用户可见,并且可选地表现为当前时间流的部分。例如,在退后点作为VDB快照和事务日志文件(例如,在 时间T0的快照1和在时间T1的快照2)捕获的在退后点之前沿着母时间流对VDB做出的改变或者更新对用户可见。
图7图示了根据一些实施例的沿着当前或者先前时间流向后(例如,退后或者倒退)和向前(例如,快进)移动虚拟数据库的过程。在一些实施例中,用于倒退虚拟数据库的第二方式(例如,如参照图5b说明的那样)附加地有益于使得用户能够按照存储和时间高效方式向后(以及向前)移向沿着当前或者先前时间流的任何时间点。作为特殊情况,在一些实施例中,允许用户通过将VDB移向在执行倒退之前不久的相应时间点、但是在相应时间流开始新时间流来高效地取消在先VDB倒退。
因而,为了使得用户能够沿着VDB向后和向前高效移向沿着当前或者在先时间流的任何时间点,数据库存储系统存储和保存所有时间流(当前和在先)以及与VDB关联的所有快照和(在快照之间的VDB更新和修改的)事务日志文件(例如,在同一容器中)。因而,数据库存储系统允许用户将VDB退后或者向前移向沿着保存的时间流中的任何保存的时间流的任何时间点(例如,通过如以上参照图4b和图5b描述的那样访问在容器中存储的快照并且可选地访问事务日志文件)。
例如,如图7中所示,时间流1记录随时间对VDB 1的连续改变和更新的历史。在沿着时间流1的时间点(例如,时间T0、时间T1和时间T2)捕获快照1、快照2和快照3。
在沿着时间流1的在时间T2之后的时间点,响应于用于将VDB 1退后到沿着时间流1的退后点1的用户请求,数据库存储系统获得VDB 1在退后点1的代表(例如,如参照图5b描述的那样)并且创建在退后点1始发的新时间流(时间流2)。数据库存储系统跟踪沿着时间流2在退后点1之后对VDB 1的改变和更新。因而,在沿着时间流2的时间点(例如,时间T3和时间T4)捕获快照4和快照5。容器1存储和保存先前时间流(例如,时间流1)以及关联的快照(例如,沿着时间流1捕获快照1、快照2和快照3)和事务日志。
相似地,响应于用于退后到退后点2的用户请求,数据库存储系统创建新时间流(时间流3)并且存储和保存沿着时间流3(在退后点2始发)对VDB 1的改变和更新(与快照和事务日志一起)。数据库存储系统100在容器1中存储当前和在先时间流、快照、事务日志。
另外,沿着相似线路,响应于用于将VDB 1退后到退后点3的用户请求,数据库存储系统100创建新时间流(时间流4)并且存储沿着时间流4(在退后点3始发)对VDB 1的进一步改变和更新(与快照和事务日志一起)。数据库存储系统在容器1中存储当前和在先时间流(时间流1、时间流2、时间流3和时间流4)、快照和事务日志。
虽然图7图示了将VDB退后到沿着时间流1的退后点,但是在实践中,数据库存储系统被配置为将VDB退后到沿着在容器中存储的任何先前或者当前时间流(例如,时间流1、时间流2、时间流3和时间流4)的一个或者多个退后点。
图8图示了根据一些实施例的在虚拟数据库退后的时间的实时时钟和系统改变号(SCN)的改变。在一些实施例中,数据库存储系统100维护计数器或者系统改变号(SCN)以保持跟踪在时间流之上对VDB的改变或者更新。因而,沿着时间流进展而递增系统改变号。相似地,在一些实施例中,并发地记录与对VDB的改变或者更新的时间对应的实时值,并且与用于改变或者更新的SCN一起保存这些实时值。例如,如图8中所示,沿着时间流1,系统改变号(SCN)从在实时1PM的SCN 100(对应于快照1)增加或者递增至在实时2PM的SCN 200(对应于快照2)、至在实时3PM的SCN 300(对应于快照3)
在VDB退后点,数据库存储系统100创建在退后点始发的新时间流;数据库存储系统将系统改变号(SCN)重置(例如,相对于当前值或者紧接地在退后之前的值递减)至比它在退后点的值裕度地更大的值(例如,至下一更高整数值)。在一些实施例中,SCN值和与对VDB的改变或者更新的时间对应的实时值被连续地递增而未在 VDB退后点重置。
例如,在图8中所示的图示中,参照时间流1或者母时间流,SCN在实时3:00PM具有在退后之前的值300。在向退后点TRB退后VDB之后不久,在创建当前时间流(例如,时间流2)时,SCN值被递减至值201(200的下一更高整数,在TRB的SCN值)但是实时连续地增加(例如,增加至4:00PM)而未被往回重置。在一些实施例中,通过打开重置日志来区分具有相同系统改变号的事务日志(例如,由此创建VDB的新化身)。
图9a至图9b示出了根据本发明的一个实施例的用于删除数据库存储系统中的数据库基础结构对象的过程900的流程图。如图9a中所示,数据库存储系统100在目标服务器处提供(910)虚拟数据库(VDB),该VDB具有:在容器(例如,图5b中所示的容器1)中存储的第一时间流(例如,图5b中所示的时间流1)、在沿着第一时间流的多个对应的时间值取得的多个快照(例如,如参照图5b说明的在时间T0的快照1、在时间T1的快照2、在时间T2的快照3)以及描述在对应的快照之间的改变的相应事务日志(例如,在时间T0与时间T1之间的事务日志470-a)。
数据库存储系统100从用户获得(915)用于取回相应VDB在沿着第一时间流的用户指定的时间值的代表(例如,如图5b中所示的VDB 1在沿着时间流1的退后时间TRB的代表)的请求。
响应于用户请求,在一些实施例中,数据库存储系统100暂时地中止(920)对相应VDB的用户访问。数据库存储系统100关于用户指定的时间值是否对应于沿着第一时间流的相应快照时间值(即,产生时间点副本的时间点)做出确定(925)。
响应于确定用户指定的时间值对应于沿着第一时间流的相应快照时间值,数据库存储系统100克隆(930)相应VDB在相应快照时间值的快照(例如,如图8中所示的在时间TRB的VDB 1快照2)以获得VDB在用户指定的时间值的代表。响应于确定用户指定的时间值不对应于沿着第一时间流的相应快照时间值,数据库存储系统100 克隆(940)相应VDB在紧接地在用户指定的时间值之前的相应快照时间值的快照(例如,如图5b中所示在紧接地在退后点TRB之前的时间T1的VDB 1快照2)。数据库存储系统100然后向从相应快照时间值到用户指定的时间值的快照克隆应用(950)事务日志,以获得用于VDB的数据块在用户指定的时间值的代表(例如,如图5b中所示的在时间T1至退后点TRB之间的事务日志)。这允许数据库存储系统100获得VDB在用户指定的时间值(例如,在图5b中所示的退后点TRB)的代表。
数据库存储系统100在相应容器内创建(960)第二时间流(例如,如图5b中所示的在容器1内的时间流2),该第二时间流在用户指定的时间值(例如,如图5b中所示的在时间值TRB)开始。数据库存储系统100关联(970)第二时间流与相应VDB。数据库存储系统100使相应目的地指向(980)指向第二时间流。数据库存储系统100在沿着第二时间流的相应目的地装配(990)并且带出相应VDB。
图10a至图10g包括根据一些实施例的用于取回虚拟数据库快照、与VDB时间流交互以及执行虚拟数据库倒退(或者退后)的图形用户界面的示例。
图10a图示了根据一些实施例的包括一个或者多个快照卡1002(例如,各自显示快照时间和系统改变号或者SCN)的图形用户界面的示例。图10a的图形用户界面还包括根据一些实施例的用于支持或者发起VDB倒退或者退后的用户交互图标(例如,倒退按钮1004)。
图10b图示了根据一些实施例的包括在快照卡之间的时间线(1006)的显示的图形用户界面的示例。在一些实施例中,可以显示多个时间线,一个时间线对应于VDB的每个时间流。用户可以选择任何时间流和时间流的时间点以指定用户想要将VDB倒退到的状态。
图10c至图10d图示了根据一些实施例的包括基于系统改变号或者SCN(例如,1008-a、图10c)和基于实时值(例如,1008-b、图10d)选择的在快照卡之间的用户选择的点的图形用户界面的示例。
图10e至图10g图示了根据一些实施例的包括响应于VDB倒退请求而显示的界面(1010a、图10e;1010-b、图10f)的图形用户界面的示例。图10e示出了请求用户确认倒退操作的用户界面。如果用户选择确认屏幕上的“是”,则数据库存储系统100继续倒退操作。图10f示出了用户界面,该用户界面图示了数据库存储系统100可以要求用户提供证书,例如,用户名和口令。这允许数据库存储系统100验证用户是否被授权执行倒退或者刷新操作。图10g示出了用户界面,该用户界面允许用户对VDB元数据做出修改以例如指定将在倒退/刷新VDB之前和之后执行的前脚本1030或者后脚本1035。在一个实施例中,前脚本可以关停与VDB关联的目标数据库服务器的任何过程并且后脚本可以重启目标数据库服务器的过程。
示出了与图10a至图10g中所示的用户界面相似的用户界面,这些用户界面允许用户基于源数据库的状态刷新VDB。源数据库本身可以是生产数据库系统110或者另一VDB。因而。源数据库的时间流被显示,从而允许VDB被刷新到源数据库的更新近时间点。
附加配置考虑
贯穿本说明书,多个实例可以实施被描述为单个实例的部件、操作或者结构。虽然一种或者多种方法的个别操作被图示和描述为分离的操作,但是可以并行地执行个别操作中的一个或者多个操作,并且未要求按照所示顺序执行操作。在示例配置中作为分离部件而被呈现的结构和功能可以被实施为组合的结构或者部件。相似地,作为单个部件而被呈现的结构和功能可以被实施为分离的部件。这些和其它变化、修改、添加以及改进落入这里的主题内容的范围内。
某些实施例在这里被描述为包括逻辑或者多个部件、模块或者机制。模块可以构成软件模块(例如,在机器可读介质上体现的代码)或者硬件模块。硬件模块是能够执行某些操作的有形单元并且可以用某种方式而被配置或者布置。在示例实施例中,一个或者多个计算机系统(例如,独立客户端或者服务器计算机系统)或者计算机系统的一个或者多个硬件模块(例如,处理器或者一组处理器)可以由软件 (例如,应用或者应用部分)配置为操作用于执行如这里描述的某些操作的硬件模块。
在各种实施例中,可以机械地或者电子地实施硬件模块。例如,硬件模块可以包括被持久地配置(例如,作为专用处理器,比如现场可编程门阵列(FPGA)或者专用集成电路(ASIC))为执行某些操作的专用电路装置或者逻辑。硬件模块也可以包括被软件暂时配置为执行某些操作的可编程逻辑或者电路(例如,如被为包含于通用处理器或者其它可编程处理器内)。将理解,用于机械地、在专用和持久地配置的电路装置中或者在暂时地配置的电路装置(例如,由软件配置)的判决可以由成本和时间考虑驱动。
因而,术语“硬件模块”应当被理解为包含有形实体(即,被物理地构造、被持久地配置(例如,硬接线)或者被暂时地配置(例如,编程)为以某种方式操作或者执行这里描述的某些操作的实体)。如这里所用,“硬件实施的模块”是指硬件模块。考虑其中暂时地配置(例如,编程)硬件模块的实施例,无需在任何一个时间时刻配置或者实例化硬件模块中的每个硬件模块。例如,在硬件模块包括使用软件而被配置的通用处理器时,通用处理器可以在不同时间被配置为相应的不同硬件模块。软件可以相应地配置处理器以例如在一个时间时刻构成特定硬件模块而在不同时间时刻构成不同硬件模块。
硬件模块可以向其它硬件模块提供信息和从其它硬件模块接收信息。因而,描述的硬件模块可以被视为被通信地耦合。在多个这样的硬件模块同时存在时,可以通过连接硬件模块的信号传输(例如,通过适当电路和总线)实现通信。在其中在不同时间配置或者实例化多个硬件模块的实施例中,可以例如通过在这样的硬件模块有权访问的存储器结构中存储和取回信息来实现在多个硬件模块之间的通信。例如,一个硬件模块可以执行操作并且在它被通信地耦合到的存储器设备中存储该操作的输出。又一硬件模块然后可以在以后时间访问存储器设备以取回和处理存储的输出。硬件模块也可以发起与输入或者输出设备的通信并且可以对资源(例如,信息汇集)操作。
这里描述的示例方法的各种操作可以至少部分地由被(例如,软件)暂时地配置或者被持久地配置为执行相关操作的一个或者多个处理器执行。无论是被暂时地还是持久地配置,这样的处理器可以构成操作用于执行一个或者多个操作或者功能的处理器实施的模块。这里所称的模块可以在一些示例实施例中包括处理器实施的模块。
相似地,这里描述的方法可以至少部分地由处理器实施。例如,方法的操作中的至少一些操作可以由一个或者多个处理器或者由处理器实施的硬件模块执行。操作中的某些操作的执行可以被分布于一个或者多个处理器之中,不是仅驻留在单个机器内而是跨越多个机器而被部署。在一些示例实施例中,一个或者多个处理器可以位于单个位置中(例如,家用环境、办公室环境内或者作为服务器群),而在其它实施例中,可以跨越多个位置分布处理器。
一个或者多个处理器也可以操作以支持在“云计算”环境中或者作为“软件即服务”(SaaS)执行相关操作。例如,操作中的至少一些操作可以由一组计算机(作为包括处理器的机器的示例)执行,这些操作经由网络(例如,因特网)并且经由一个或者多个适当接口(例如,应用程序接口(API))可访问。
操作中的某些操作的执行可以被分布于一个或者多个处理器之中,不是仅驻留在单个机器内而是跨越多个机器而被部署。在一些示例实施例中,一个或者多个处理器或者处理器实施的模块可以位于单个地理位置中(例如,家用环境、办公室环境或者服务器场内)。在其它示例实施例中,可以跨越多个地理位置分布一个或者多个处理器或者处理器实施的模块。
在对作为位或者二进制数字信号存储于机器存储器内的数据的操作的算法或者符号代表方面呈现本说明书的一些部分。这些算法或者符号代表是数据处理领域普通技术人员用来向本领域其他技术人员传达他们的工作实质的技术的示例。如这里所用,“算法”是促成希望的结果的操作自一致序列或者相似处理。在本文中,算法和操作涉及到对物理数量的物理操控。通常地但是并非必需地,这样的数量可 以采用能够由机器存储、访问、传送、组合、比较或者以别的方式操控的电、磁或者光信号的形式。主要地出于普遍用法的原因而使用诸如“数据”、“内容”、“位”、“值”、“元素”、“符号”、“字符”、“项”、“数”、“数值”等措辞来指代这些信号有时是便利的。然而,这些措辞仅为便利标记并且将与适当物理数量关联。
除非另有具体地陈述,这里使用诸如“处理”、“计算”、“运算”、“确定”、“呈现”、“显示”等措辞的讨论可以指代如下机器(例如,计算机)的动作或者过程,该机器操控或者变换在一个或者多个存储器(例如,易失性存储器、非易失性存储器或者其组合)、寄存器或者接收、存储、传输或者显示信息的其它机器部件内被代表为物理(例如,电子、磁或者光)数量的数据。
如这里所用,对“一个实施例”或者“实施例”的任何引用意味着结合该实施例描述的特定元素、特征、结构或者特性被包括在至少一个实施例中。短语“在一个实施例中”出现于说明书中的各处未必都指代相同实施例。
可以使用表达“耦合”和“连接”及其派生来描述一些实施例。应当理解,这些术语并未旨在于作为用于彼此的同义词。例如,可以使用术语“耦合”以指示两个或者更多元素相互直接物理或者电接触来描述一些实施例。在另一示例中,可以使用术语“耦合”以指示两个或者更多元素直接物理或者电接触来描述一些实施例。然而,术语“耦合”也可以意味着两个或者更多个元素并未相互直接接触,而是仍然相互配合或者交互。实施例在本文中不受限制。
如这里所用,术语“包括”、“具有”或者其任何其它变化旨在于覆盖非穷举性包括。例如,包括元素列表的过程、方法、物品或者装置未必仅限于那些元素,而是可以包括未明确地列举的或者这样的过程、方法、物品或者装置固有的其它元素。另外,除非相反明示,否则“或者”指代包括意义的或者而不是穷举意义的或者。例如,以下各项中的任一项满足条件A或者B:A为真(或者存在)并且B为假(或者不存在)、A为假(或者不存在)并且B为真以及A和B均为真 (或者存在)。
此外,运用对“一个/一种”的使用以描述这里的实施例的元素和部件。这样做仅为了方便并且给出本发明的一般意义。这一描述应当被解读为包括一个或者至少一个,并且单数除非明显的是它另有含义则也包括多个。
在阅读本公开内容时,本领域技术人员将理解用于如下系统和过程的更多附加备选结构和功能设计,该系统和过程用于从在存储管理器中存储的生产数据库的时间点副本创建虚拟数据库。因此,尽管已经图示和描述了特定实施例和应用,但是将理解,公开的实施例不限于这里公开的精确构造和部件。可以在这里公开的方法和装置的布置、操作和细节上做出本领域技术人员将清楚的各种修改、改变和变化而未脱离在所附权利要求中定义的精神和范围。
Claims (20)
1.一种用于倒退虚拟数据库系统的计算机实施的方法,所述方法包括:
在数据库存储系统中存储源数据库的多个快照,快照代表所述源数据库的数据库块的时间点副本,其中跨所述源数据库的快照共享一个或者多个数据库块;
基于所述源数据库的快照的数据库块供应虚拟数据库;
由所述数据库存储系统维护用于所述虚拟数据库的一个或者多个时间流,每个时间流代表从所述虚拟数据库的初始状态开始、对所述虚拟数据库的改变,改变的所述代表包括在不同时间点取得的所述虚拟数据库的快照,其中跨所述虚拟数据库的多个快照共享一个或者多个数据库块;
接收用于向所述虚拟数据库的先前状态倒退所述虚拟数据库的请求,所述请求标识所述虚拟数据库的时间流和与标识的所述时间流关联的目标时间点,
通过修改所述虚拟数据库以引用与所述时间流关联的所述虚拟数据库的快照的数据库块来倒退所述虚拟数据库,所述虚拟数据库的所述快照在所述目标时间点之前或者在所述目标时间点被保存;以及
维护用于倒退的所述虚拟数据库的新时间流,所述新时间流包括由对倒退的所述虚拟数据库的后续更新引起的改变的代表。
2.根据权利要求1所述的计算机实施的方法,其中所述先前状态是第一状态,用于倒退的所述请求是用于倒退的第一请求,所述目标时间流是第一时间流,所述时间点是第一时间点,所述虚拟数据库的所述快照是第一快照,所述方法还包括:
接收用于向所述虚拟数据库的第二状态进一步倒退所述虚拟数据库的第二请求,所述第二状态与所述虚拟数据库的第二时间流的第二目标时间点关联,
通过修改所述虚拟数据库以引用与所述第二时间流关联的所述虚拟数据库的第二快照的数据库块来再次倒退所述虚拟数据库,所述第二快照在所述第二目标时间点之前或者在所述第二目标时间点被保存。
3.根据权利要求1所述的计算机实施的方法,所述方法还包括:
在倒退所述虚拟数据库之前发送用于关停与所述虚拟数据库关联的过程的请求;以及
在倒退所述虚拟数据库之后发送用于重启所述过程的请求。
4.根据权利要求1所述的计算机实施的方法,其中所述虚拟数据库的时间流包括第一快照和第二快照,其中如果在保存所述第一快照的时间点与保存所述第二快照的时间点之间未修改数据库块,则所述第二快照与所述第一快照共享所述数据库块。
5.根据权利要求1所述的计算机实施的方法,还包括:
接收用于更新所述虚拟数据库的当前时间流的最迟快照的数据库块的数据的请求;以及
响应于接收到用于更新所述数据的所述请求,产生所述数据库块的副本并且更新所述数据库块的所述副本。
6.根据权利要求1所述的计算机实施的方法,其中时间流的改变的所述代表包括代表在两个快照之间对所述虚拟数据库的更新的事务日志,所述方法还包括:
响应于修改所述虚拟数据库以引用所述虚拟数据库的所述快照的数据库块,向修改的所述虚拟数据库应用一个或者多个事务日志以更新修改的所述虚拟数据库的所述状态以对应于所述目标时间点。
7.根据权利要求1所述的计算机实施的方法,其中用于向所述虚拟数据库的所述先前状态倒退所述虚拟数据库的所述状态的所述请求通过指定由所述虚拟数据库执行的更新的系统改变号来标识所述先前状态,所述更新与标识的所述时间流关联。
8.根据权利要求1所述的计算机实施的方法,其中用于向所述虚拟数据库的所述先前状态倒退所述虚拟数据库的所述状态的所述请求通过指定与所述虚拟数据库的标识的所述时间流关联的时间值来标识所述先前状态。
9.根据权利要求1所述的计算机实施的方法,其中所述虚拟数据库与多个时间流关联,并且其中接收用于将所述虚拟数据库的所述状态修改成所述虚拟数据库的所述先前状态的所述请求从所述多个时间流标识时间流。
10.根据权利要求1所述的计算机实施的方法,其中与由所述数据库存储系统供应的一个或者多个其它虚拟数据库共享所述虚拟数据库的一个或者多个数据库块。
11.一种用于将虚拟数据库系统刷新成源数据库系统的状态的计算机实施的方法,所述方法包括:
由数据库存储系统维护用于源数据库的一个或者多个时间流,每个时间流包括从所述源数据库的初始状态开始对所述源数据库的改变的代表,所述代表包括在不同时间点取得的所述源数据库的快照,其中跨所述源数据库的多个快照共享一个或者多个数据库块;
由所述数据库存储系统基于所述源数据库的快照的数据库块供应虚拟数据库;
维护用于所述虚拟数据库的一个或者多个时间流,每个时间流包括从所述虚拟数据库的初始状态开始对所述虚拟数据库的改变的代表,改变的所述代表包括在不同时间点取得的所述虚拟数据库的快照,其中跨所述虚拟数据库的多个快照共享一个或者多个数据库块;
接收用于将所述虚拟数据库刷新成所述源数据库的状态的请求,所述请求标识所述源数据库的时间流和所述时间流的目标时间点;
刷新所述虚拟数据库,包括修改所述虚拟数据库以引用与所述时间流关联的所述源数据库的快照的数据库块,所述快照在所述目标时间点之前或者在所述目标时间点被保存;以及
维护用于刷新的所述虚拟数据库的新时间流,所述新时间流包括由对刷新的所述虚拟数据库的后续更新引起的改变的代表。
12.根据权利要求11所述的计算机实施的方法,所述方法还包括:
在刷新所述虚拟数据库之前发送用于关停与所述虚拟数据库关联的过程的请求;以及
在刷新所述虚拟数据库之后发送用于重启所述过程的请求。
13.根据权利要求11所述的计算机实施的方法,其中所述虚拟数据库的时间流包括第一快照和第二快照,其中如果在保存所述第一快照的时间点与保存所述第二快照的时间点之间未修改数据库块,则所述第二快照与所述第一快照共享所述数据库块。
14.根据权利要求11所述的计算机实施的方法,还包括:
接收用于更新所述虚拟数据库的当前时间流的最迟快照的数据库块的数据的请求;以及
响应于接收到用于更新所述数据的所述请求,产生所述数据库块的副本并且更新所述数据库块的所述副本。
15.根据权利要求11所述的计算机实施的方法,其中时间流的改变的所述代表包括代表在两个快照之间对所述虚拟数据库的更新的事务日志,所述方法还包括:
响应于修改所述虚拟数据库以引用所述虚拟数据库的所述快照的数据库块,向修改的所述虚拟数据库应用一个或者多个事务日志以更新修改的所述虚拟数据库的所述状态以对应于所述目标时间点。
16.根据权利要求11所述的计算机实施的方法,其中用于刷新所述虚拟数据库的所述请求通过指定由所述源数据库执行的更新的系统改变号来标识所述源数据库的所述状态,所述更新与标识的所述时间流关联。
17.根据权利要求11所述的计算机实施的方法,其中用于刷新所述虚拟数据库的所述请求通过指定与所述源数据库的标识的所述时间流关联的时间值来标识所述源数据库的所述状态。
18.根据权利要求11所述的计算机实施的方法,其中所述源数据库是与多个时间流关联的虚拟数据库,并且其中接收用于刷新所述虚拟数据库的所述请求从所述多个时间流标识时间流。
19.根据权利要求11所述的计算机实施的方法,其中所述源数据库是在与所述源数据库系统不同的外部系统中存储的生产数据库。
20.一种用于倒退虚拟数据库系统的计算机实施的设备,所述设备包括:
用于在数据库存储系统中存储源数据库的多个快照的装置,快照代表所述源数据库的数据库块的时间点副本,其中跨所述源数据库的快照共享一个或者多个数据库块;
用于基于所述源数据库的快照的数据库块供应所述虚拟数据库的装置;
用于由所述数据库存储系统维护用于所述虚拟数据库的一个或者多个时间流的装置,每个时间流代表从所述虚拟数据库的初始状态开始对所述虚拟数据库的改变,改变的所述代表包括在不同时间点取得的所述虚拟数据库的快照,其中跨所述虚拟数据库的多个快照共享一个或者多个数据库块;
用于接收用于向所述虚拟数据库的先前状态倒退所述虚拟数据库的请求的装置,所述请求标识所述虚拟数据库的时间流和与标识的所述时间流关联的目标时间点,
用于通过修改所述虚拟数据库以引用与所述时间流关联的所述虚拟数据库的快照的数据库块来倒退所述虚拟数据库的装置,所述虚拟数据库的所述快照在所述目标时间点之前或者在所述目标时间点被保存;以及
用于维护用于倒退的所述虚拟数据库的新时间流的装置,所述新时间流包括由对倒退的所述虚拟数据库的后续更新引起的改变的代表。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361844376P | 2013-07-09 | 2013-07-09 | |
US61/844,376 | 2013-07-09 | ||
PCT/US2014/044176 WO2015006054A1 (en) | 2013-07-09 | 2014-06-25 | Virtual database rewind |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105378725A CN105378725A (zh) | 2016-03-02 |
CN105378725B true CN105378725B (zh) | 2017-08-04 |
Family
ID=52280459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480037247.9A Active CN105378725B (zh) | 2013-07-09 | 2014-06-25 | 虚拟数据库倒退 |
Country Status (8)
Country | Link |
---|---|
US (1) | US9396074B2 (zh) |
EP (1) | EP3019987B1 (zh) |
JP (1) | JP6050917B2 (zh) |
KR (1) | KR101693683B1 (zh) |
CN (1) | CN105378725B (zh) |
AU (1) | AU2014287633B2 (zh) |
CA (1) | CA2912468C (zh) |
WO (1) | WO2015006054A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10884869B2 (en) | 2015-04-16 | 2021-01-05 | Nuodb, Inc. | Backup and restore in a distributed database utilizing consistent database snapshots |
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 |
US10025528B2 (en) | 2016-01-20 | 2018-07-17 | Delphix Corporation | Managing transformations of snapshots in a storage system |
US11403192B1 (en) * | 2017-07-27 | 2022-08-02 | EMC IP Holding Company LLC | Enabling point-in-time recovery for databases that change transaction log recovery models |
US11163799B2 (en) * | 2019-10-29 | 2021-11-02 | Dell Products L.P. | Automatic rollback to target for synchronous replication |
US11275685B1 (en) | 2020-09-11 | 2022-03-15 | Kyndryl, Inc. | System and method of optimizing rollbacks |
CN112732489B (zh) * | 2021-01-11 | 2023-05-09 | 上海上讯信息技术股份有限公司 | 基于数据库虚拟化的数据脱敏的方法及设备 |
US20220398232A1 (en) * | 2021-06-14 | 2022-12-15 | Microsoft Technology Licensing, Llc | Versioned metadata using virtual databases |
CN113360476B (zh) * | 2021-06-21 | 2023-11-21 | 上海上讯信息技术股份有限公司 | 一种程序数据库虚拟化插拔的方法及设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6795966B1 (en) * | 1998-05-15 | 2004-09-21 | Vmware, Inc. | Mechanism for restoring, porting, replicating and checkpointing computer systems using state extraction |
CN102436490A (zh) * | 2010-10-28 | 2012-05-02 | 微软公司 | 多功能存储器内数据库恢复 |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1003103B1 (en) | 1993-06-03 | 2008-10-01 | Network Appliance, Inc. | Write anywhere file-system layout method and apparatus |
JP2000047919A (ja) * | 1998-07-30 | 2000-02-18 | Hitachi Ltd | 仮想データベースレプリケーションシステム |
US7120862B1 (en) * | 1998-12-01 | 2006-10-10 | Lucent Technologies Inc. | Method and apparatus for persistent access to Web resources using variable time-stamps |
US7072916B1 (en) | 2000-08-18 | 2006-07-04 | Network Appliance, Inc. | Instant snapshot |
US7373364B1 (en) | 2002-03-05 | 2008-05-13 | Network Appliance, Inc. | System and method for creating a point-in-time restoration of a database file |
US7225204B2 (en) | 2002-03-19 | 2007-05-29 | Network Appliance, Inc. | System and method for asynchronous mirroring of snapshots at a destination using a purgatory directory and inode mapping |
US7340489B2 (en) | 2002-04-10 | 2008-03-04 | Emc Corporation | Virtual storage devices |
US7107385B2 (en) | 2002-08-09 | 2006-09-12 | Network Appliance, Inc. | Storage virtualization by layering virtual disk objects on a file system |
US7457982B2 (en) | 2003-04-11 | 2008-11-25 | Network Appliance, Inc. | Writable virtual disk of read-only snapshot file objects |
JP4321705B2 (ja) * | 2003-07-29 | 2009-08-26 | 株式会社日立製作所 | スナップショットの取得を制御するための装置及び記憶システム |
US7409511B2 (en) | 2004-04-30 | 2008-08-05 | Network Appliance, Inc. | Cloning technique for efficiently creating a copy of a volume in a storage system |
US7334095B1 (en) | 2004-04-30 | 2008-02-19 | Network Appliance, Inc. | Writable clone of read-only volume |
US7334094B2 (en) | 2004-04-30 | 2008-02-19 | Network Appliance, Inc. | Online clone volume splitting technique |
US8732182B2 (en) * | 2004-12-02 | 2014-05-20 | Desktopsites Inc. | System and method for launching a resource in a network |
GB0428108D0 (en) | 2004-12-23 | 2005-01-26 | Ibm | Storage system with multiple copy targeting |
US7757056B1 (en) | 2005-03-16 | 2010-07-13 | Netapp, Inc. | System and method for efficiently calculating storage required to split a clone volume |
US7631021B2 (en) | 2005-03-25 | 2009-12-08 | Netapp, Inc. | Apparatus and method for data replication at an intermediate node |
US7539836B1 (en) | 2005-04-18 | 2009-05-26 | Netapp, Inc. | Method and system for configuring a data storage object |
US7822758B1 (en) | 2005-04-22 | 2010-10-26 | Network Appliance, Inc. | Method and apparatus for restoring a data set |
US8346726B2 (en) | 2005-06-24 | 2013-01-01 | Peter Chi-Hsiung Liu | System and method for virtualizing backup images |
US7590660B1 (en) | 2006-03-21 | 2009-09-15 | Network Appliance, Inc. | Method and system for efficient database cloning |
US8024762B2 (en) * | 2006-06-13 | 2011-09-20 | Time Warner Cable Inc. | Methods and apparatus for providing virtual content over a network |
US7587563B1 (en) | 2006-07-11 | 2009-09-08 | Network Appliance, Inc. | Method and system to make a read-only file system appear to be writeable |
US7856424B2 (en) | 2006-08-04 | 2010-12-21 | Apple Inc. | User interface for backup management |
US8311988B2 (en) | 2006-08-04 | 2012-11-13 | Apple Inc. | Consistent back up of electronic information |
US7827366B1 (en) | 2006-10-31 | 2010-11-02 | Network Appliance, Inc. | Method and system for providing continuous and long-term data protection for a dataset in a storage system |
WO2008121873A1 (en) | 2007-03-29 | 2008-10-09 | Vmware, Inc. | Synchronization and customization of a clone computer |
US8775663B1 (en) | 2007-04-25 | 2014-07-08 | Netapp, Inc. | Data replication network traffic compression |
US8010900B2 (en) | 2007-06-08 | 2011-08-30 | Apple Inc. | User interface for electronic backup |
US7877357B1 (en) | 2007-10-12 | 2011-01-25 | Netapp, Inc. | Providing a simulated dynamic image of a file system |
US7996636B1 (en) | 2007-11-06 | 2011-08-09 | Netapp, Inc. | Uniquely identifying block context signatures in a storage volume hierarchy |
US8532973B1 (en) | 2008-06-27 | 2013-09-10 | Netapp, Inc. | Operating a storage server on a virtual machine |
KR101024494B1 (ko) * | 2008-07-18 | 2011-03-31 | (주)디에프아이비즈 | 메타데이타를 이용한 변경 데이타 추출방법 |
US8037032B2 (en) | 2008-08-25 | 2011-10-11 | Vmware, Inc. | Managing backups using virtual machines |
US8280858B2 (en) | 2009-06-29 | 2012-10-02 | Oracle America, Inc. | Storage pool scrubbing with concurrent snapshots |
US8161077B2 (en) * | 2009-10-21 | 2012-04-17 | Delphix Corp. | Datacenter workflow automation scenarios using virtual databases |
US8150808B2 (en) * | 2009-10-21 | 2012-04-03 | Delphix Corp. | Virtual database system |
US20110289289A1 (en) * | 2010-05-20 | 2011-11-24 | Microsoft Corporation | Backup and restore of items using bounded checkpoint and log buffers in memory |
US8548944B2 (en) * | 2010-07-15 | 2013-10-01 | Delphix Corp. | De-duplication based backup of file systems |
US9461876B2 (en) * | 2012-08-29 | 2016-10-04 | Loci | System and method for fuzzy concept mapping, voting ontology crowd sourcing, and technology prediction |
-
2014
- 2014-06-25 CA CA2912468A patent/CA2912468C/en active Active
- 2014-06-25 WO PCT/US2014/044176 patent/WO2015006054A1/en active Application Filing
- 2014-06-25 JP JP2016525361A patent/JP6050917B2/ja active Active
- 2014-06-25 EP EP14823279.6A patent/EP3019987B1/en active Active
- 2014-06-25 AU AU2014287633A patent/AU2014287633B2/en active Active
- 2014-06-25 CN CN201480037247.9A patent/CN105378725B/zh active Active
- 2014-06-25 KR KR1020167003447A patent/KR101693683B1/ko active IP Right Grant
- 2014-07-07 US US14/324,485 patent/US9396074B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6795966B1 (en) * | 1998-05-15 | 2004-09-21 | Vmware, Inc. | Mechanism for restoring, porting, replicating and checkpointing computer systems using state extraction |
CN102436490A (zh) * | 2010-10-28 | 2012-05-02 | 微软公司 | 多功能存储器内数据库恢复 |
Also Published As
Publication number | Publication date |
---|---|
AU2014287633B2 (en) | 2017-06-15 |
AU2014287633A1 (en) | 2015-12-17 |
US20150019496A1 (en) | 2015-01-15 |
US9396074B2 (en) | 2016-07-19 |
JP6050917B2 (ja) | 2016-12-21 |
CN105378725A (zh) | 2016-03-02 |
WO2015006054A1 (en) | 2015-01-15 |
KR101693683B1 (ko) | 2017-01-06 |
EP3019987B1 (en) | 2019-01-09 |
CA2912468A1 (en) | 2015-01-15 |
EP3019987A1 (en) | 2016-05-18 |
CA2912468C (en) | 2018-08-21 |
KR20160030401A (ko) | 2016-03-17 |
EP3019987A4 (en) | 2017-01-18 |
JP2016526743A (ja) | 2016-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105378725B (zh) | 虚拟数据库倒退 | |
US11093139B1 (en) | Durably storing data within a virtual storage system | |
US11797197B1 (en) | Dynamic scaling of a virtual storage system | |
US20220019367A1 (en) | Migrating Data In And Out Of Cloud Environments | |
US20210019237A1 (en) | Data recovery in a virtual storage system | |
US20220083245A1 (en) | Declarative provisioning of storage | |
US20210279204A1 (en) | Verifying data has been correctly replicated to a replication target | |
US20220253254A1 (en) | Replication Between Virtual Storage Systems | |
CN107710215A (zh) | 在测试设施中的移动计算装置安全的方法和设备 | |
US11397749B2 (en) | Asynchronous replication of in-scope table data | |
Alapati | Expert Hadoop administration: managing, tuning, and securing spark, YARN, and HDFS | |
CN106062742A (zh) | 用于改进快照性能的系统和方法 | |
CN107003890A (zh) | 高效地提供虚拟机参考点 | |
CN105339903A (zh) | 恢复文件系统对象 | |
Eadline | Hadoop 2 Quick-Start Guide: Learn the Essentials of Big Data Computing in the Apache Hadoop 2 Ecosystem | |
O'reilly | Network storage: Tools and technologies for storing your company’s data | |
De Guise | Data protection: Ensuring data availability | |
US10079883B2 (en) | Primary device selection at operating system initialization | |
WO2023070025A1 (en) | Declarative provisioning of storage | |
US11341159B2 (en) | In-stream data load in a replication environment | |
Schulz | Software-Defined Data Infrastructure Essentials: Cloud, Converged, and Virtual Fundamental Server Storage I/O Tradecraft | |
Piper et al. | AWS Certified Solutions Architect Study Guide: Associate SAA-C01 Exam | |
Barot et al. | Hadoop Backup and Recovery Solutions | |
Bertucci et al. | SQL Server 2016 High Availability Unleashed (includes Content Update Program): SQL Serv 2016 High ePub _1 | |
Meiron et al. | Data analysis challenges |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |