CN110799948B - 针对时间点恢复数据库的数据集的系统和方法 - Google Patents

针对时间点恢复数据库的数据集的系统和方法 Download PDF

Info

Publication number
CN110799948B
CN110799948B CN201880043743.3A CN201880043743A CN110799948B CN 110799948 B CN110799948 B CN 110799948B CN 201880043743 A CN201880043743 A CN 201880043743A CN 110799948 B CN110799948 B CN 110799948B
Authority
CN
China
Prior art keywords
data
tenant
time
point
database
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
Application number
CN201880043743.3A
Other languages
English (en)
Other versions
CN110799948A (zh
Inventor
J·B·马丁
N·怀亚特
P·J·赫尔兰德
T·方哈内尔
T·钟
S·S·查特吉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shuo Power Co
Original Assignee
Shuo Power Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shuo Power Co filed Critical Shuo Power Co
Publication of CN110799948A publication Critical patent/CN110799948A/zh
Application granted granted Critical
Publication of CN110799948B publication Critical patent/CN110799948B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

提供了用于执行多租户数据库系统的第一租户的数据的时间点恢复的系统和方法。可以定位元数据以标识存储在数据库系统的不可变存储器中的第一租户的第一数据的档案版本。档案版本包括在第一时间点之前每个数据的最新提交版本。通过使用元数据,将恢复引用集映射到数据库系统的目标数据库实例中。当租户的所有现有数据都成为档案版本并且在该时间点之后提交的数据和记录的版本对目标数据库实例不可用时,可以执行映射。

Description

针对时间点恢复数据库的数据集的系统和方法
背景技术
应用程序或数据库系统的用户通常需要将其数据恢复到特定的时间点。当系统中部分用户数据损坏时,通常会发生这种情况。应用程序或数据库系统的用户可以请求此类系统的提供者将所有用户数据恢复到损坏之前的某个时间点。在典型的系统中,用户数据会恢复到发生损坏之前的大致时间点。通常,此大致时间点的恢复通常没有在损坏点检测之前的所有数据。
附图的简要说明
附图,其被包括以提供对所公开的主题的进一步理解,并入本说明书中并且构成本说明书的一部分。附图还示出了所公开的主题的实现,并且与详细描述一起解释了所公开的主题的实现的原理。并不试图比基本理解所公开的主题和实践该主题的各种方式所必需的更详细地示出结构细节。
图1A示出了根据所公开的主题的实现方式的执行多租户数据库系统的第一租户的数据的时间点恢复的示例方法。
图1B示出了根据所公开的主题的实现方式的执行多租户数据库系统的第一租户的数据的时间点恢复的另一示例方法。
图2示出了根据所公开的主题的实现方式的数据库系统中的记录的示例。
图3示出了根据所公开的主题的实现方式的示例系统,该示例系统用于使用虚拟化层来存储和检索用于时间点恢复的数据。
图4A至图4J示出了根据所公开的主题的实现方式的使用快照来插入数据并执行时间点恢复的示例系统和方法。
图5示出了根据所公开的主题的实施方式的计算机。
图6A-图6C示出了根据所公开的主题的实施方式的网络配置。
具体实施方式
由于应用程序和/或数据库系统的用户可能需要将数据集准确地恢复到过去的某个时间点,因此,所公开主题的实现方式提供了数据库系统中租户数据的时间点恢复,而不会影响在同一数据库中拥有数据的其他租户。通过将有关数据库的档案信息定位到包含期望的时间点之前的一组完整租户数据的数据库,可以将租户恢复到某个时间点。所公开的主题的实施方式在用于将租户数据恢复到特定时间点的当前系统上具有改进的粒度,而不影响同一数据库中的其他租户数据。
在应用程序和/或数据库系统的操作中,用户可能意识到他们的数据已被破坏,并可能要求应用程序和/或数据库服务供应商从他们先前的特定时间点开始对他们的数据进行访问。在一种情况下,用户可以请求将其所有数据恢复到损坏之前的时间点。在这种情况下,用户可能希望将其数据库恢复到以前的时间点,此后,他们可能会尝试调和检测到损坏后发生的更改。更常见的情况是,由于检测到损坏,用户不愿丢失更改。在这种情况下,用户可能会选择访问损坏前的数据,并对现有数据进行手动调节和校正,这可能会导致效率低下并且容易出错。
对于将多个租户托管到单个物理数据库中的应用程序和/或数据库供应商(例如,基于云的供应商),这两种情况通常都是不切实际的。租户通常需要数据库的高可用性,并且可能会发现除了瞬时中断以外的任何内容都是不可接受的,即使对于时间点恢复也是如此。如果多个租户存储在单个数据库中,则可能无法在不影响多个租户的情况下在现有数据库中将单个租户恢复到先前时间点。此外,将数据库的全部或部分恢复到单个时间点的过程可能会花费许多个小时,且在此期间无法处理新事务。
对于这种情况,一种常见的解决方案是为租户提供对以前版本的租户数据的有限访问权限。常规系统通常需要许多步骤来向租户提供其数据的时间点视图。必须找到足够的计算机资源来恢复包含租户数据的部分数据库,或在某些情况下是整个数据库。
常见过程可能始于损坏发生之前的完整数据备份。通常,还可以添加增量备份,以将租户数据恢复到完整备份后的后续时间点。然后将存档的事务日志(例如,重做日志等)应用于期望的时间点之前的最新的完全备份,以使数据库达到期望的时间点。可以生成截至该时间点的数据提取形式,并将其提供给租户。但是,此过程可能需要很长时间,具体取决于要恢复的数据库的大小和资源可用性,并且需要其他硬件。
所公开的主题的实施方式可以提供租户数据的时间点恢复。所公开的实施方式减少了现有系统的典型恢复操作的时间和资源,因为它们几乎可以在没有附加硬件(例如,服务器和/或其他计算设备、附加存储设备等)的情况下立即完成,并且它们不会影响在同一系统中具有数据的其他租户。所公开的实施方式还可以更容易地将租户数据恢复到特定时间点。
也就是说,在所公开的主题的实现方式中,数据可以被虚拟化并且可以被映射,从而消除了将数据库的租户数据带到特定时间点的日志重放的需要。扩展区引用(如以下详细描述)用于对数据库物理存储进行虚拟化访问。扩展区引用可以分为扩展区引用集。与数据库实例相关联的所有持久存储器都可以包含在单个扩展区引用集中。
所公开的主题的实现方式可以包括不可变存储器,诸如日志结构合并(LSM)树、以租户标识符为根的单个键空间以及通过使用具有指向存储在存储设备中的扩展区的扩展区引用的虚拟化技术。如本领域中理解的和如本文所使用的,“扩展区”是指通常在存储介质内连续的存储区域,其可以用于存储数据。扩展区可能是不可变的。即扩展区或扩展区中的单个数据在创建后可能不会被修改,从而与存储介质中的扩展区相关联的区域或数据不会被更新,但将来可能会被删除。扩展区引用可以用作对存储在物理存储器(例如,存储设备)中的物理扩展区的逻辑引用,并且可以用于对物理存储器进行虚拟化访问。
此外,除了使用扩展区和不变存储器外,数据的不同版本还可以存储在系统持久性存储中。可以通过为给定数据的每个事务使用时间戳或通过使用严格单调增加(或严格单调减少)的事务编号,以便可以跟踪创建或提交给定版本的数据到永久性存储的时间,并将其用于以后的虚拟时间点恢复。这样的时间戳或事务编号可以是与可以与该键一起被跟踪的并与键相关联的附加元数据。
将租户恢复到某个时间点可以通过查找有关数据库的档案信息来实现,该档案信息包含在期望的时间点之前的全套租户数据。如下所述,档案信息可以至少包括初始档案集,并且可以包括一个或更多个可用于将数据恢复到期望的时间点的增量档案集。将档案信息收集到恢复扩展区引用集中,其中每个扩展区引用都将最小键和最大键设置为边界范围,其中包括要恢复的租户数据的引用。例如,通过检查扩展区内的最新事务的时间点(或序列号)的扩展区的元数据,系统可以轻松确定哪些扩展区包括至少一个发生在期望的恢复时间点之前的事务,并且可以包含在时间点恢复中。
定位在初始档案集之后生成的扩展区引用,但是在目标时间点之前可能包含租户数据。档案集可以包括初始档案集和一个或更多个增量档案集,其中档案集可以是初始档案集和一个或更多个增量档案集的并集。扩展区引用(例如,每个定位的引用)可以被添加到恢复扩展区引用集,其具有与扩展区引用的档案集相同的最小和/或最大键映射。可以将扩展区引用(例如,每个定位的定位)设置为期望的恢复时间点。
恢复扩展区引用集可以映射到目标数据库。如果租户希望将所有现有数据替换为时间点数据,则将扩展区引用集映射到目标数据库,并删除现有的租户键范围。如果租户希望将时间点恢复显示为不同的数据集而不替换现有的租户数据,则可以将扩展区引用集映射到新的“沙箱”租户身份,如2016年11月8日提交的标题为“数据库系统中测试数据的形成和操纵(Formation and Manipulation of Test Data in a Database System)”的美国专利申请15345914中更详细描述的那样,该专利通过引用将其全部内容合并于此。
也就是说,可以在某个时间点为原始租户创建沙箱。存储在不可变存储器中的原始租户数据与原始租户标识符相关联。截至虚拟时间点恢复的时间点的原始租户数据可用于沙箱租户可访问的原始租户数据的快照。可以在不更改原始租户数据的情况下更改沙箱租户数据,并且可以在不更改沙箱租户数据的情况下更改原始租户数据。快照可以使原始租户数据可用于沙箱租户,以便沙箱租户可以以与原始租户数据的副本相同的方式访问原始租户数据,而无需复制基础数据。可以通过将沙箱租户标识符与原始租户数据的快照以及由沙箱租户在沙箱创建时间点之后创建的沙箱数据相关联,来在关联的授权用户(例如,被授权访问租户数据的用户)的请求下创建沙箱租户。由沙箱租户在沙箱创建时间点之后创建和/或修改的沙箱数据可能是原始租户无法访问的。在2016年11月8日提交的标题为“数据库系统中测试数据的形成和操纵(Formation and Manipulation of Test Data ina Database System)”的美国专利申请15345914中详细描述了创建沙箱以及创建和/或修改沙箱数据,该专利通过引用将其全部内容合并于此。
当数据库系统访问恢复的数据时,扩展区引用可以确定如何解释物理数据。对于已恢复的数据,某些扩展区引用可能包含对比租户指定的恢复时间点更新的数据的范围。过滤器(例如,下面将详细讨论的事务过滤器)可以用于限制可以呈现给数据库其余部分的物理数据。该数据库提供了截至某个时间点的数据的一致快照,例如该快照可以是提交时间戳。在对物理行进行限定时,使用过滤器通过扩展区引用进行的扫描具有快照条件。这允许在期望的时间点之后,查看跨期望的时间点的数据的时间点,而无需通过重播数据库事务日志来物理重建数据人工产品,直到它们在某个时间点为止。也就是说,通过使用过滤器,在进行虚拟时间点恢复之后发出的查询无法在期望的时间点之后看到数据。可以使用过滤器,以便看不到期望的时间点之后的数据。因为扩展区引用是可以跨越许多记录(例如,数十、数百、数千或数百万个记录等)的元数据对象,相比于扫描按时间排序的日志并将记录应用到期望的时间点,可以快速构造使用带过滤器的扩展区引用的虚拟时间点恢复。
在所公开的主题的实现方式中,从期望的时间点开始,恢复的租户数据在事务上是完全一致的,并且恢复租户不会对托管在同一数据库实例中的其他租户产生影响。
因为扩展区引用是可以跨越许多记录(例如,数千个记录、数百万个记录等)的元数据对象,所以与扫描按时间排序的日志并将记录应用到期望的时间点相比,使用带过滤器的扩展区引用的虚拟时间点恢复(如下至少结合图4A-图4J和图6A-图6C所详细描述的)可以被快速构造。因此,本文公开的实施方式可以允许在其上存储和操纵租户数据的基础计算机系统的更显著更有效的操作,以及减少执行时间点恢复所需的计算资源。
如下文详细描述,图1A-图1B示出了结合如图3-图6C所示的系统来执行数据的时间点恢复的示例方法。
图1A示出了根据所公开的主题的实施方式的执行多租户数据库系统的第一租户的数据的时间点恢复的示例方法10。如下面详细描述的,方法10可以与图3、图5和图6A-图6C中所示的系统结合使用。例如,可以使用图3所示的虚拟化层34和物理存储器36来存储和检索租户数据。租户可以使租户数据存储在与租户标识符相关联的不可变存储器中,例如图5中所示的第二计算机800的存储器810、图6A-6C的数据库系统1200a-d等。例如,数据库1200a可以包括一个或更多个物理服务器,和/或虚拟服务器可以包括应用程序1210、一个或更多个节点1220和存储器1260。节点1120可以包括内存1230、扩展区索引1240以及扩展区和扩展区引用的目录1250。存储器1260可以包括数据扩展区1270。目录1250可以具有指代连续存储区(例如,存储器1260)以存储数据的扩展区。目录1250的扩展区引用可以用作对存储在物理存储器(例如,存储器1260)中的物理扩展区的逻辑引用。即,可以将租户数据存储在存储器1260的数据扩展区1270中。存储器1260可以是共享存储系统。在一些实施方式中,一个或更多个节点可以通过不同的引用指向相同的数据范围。
租户数据(例如,存储在图6B中的存储器1260中)可以与元数据租户标识符和元数据(例如,可以存储在图6B的节点1120中)相关联,其中元数据租户标识符和元数据指示什么时候记录被创建并从数据库系统中删除。在所公开的主题的实施方式中,可能存在不时提交给数据库系统的不同版本的租户数据(例如,存储在图6B的数据范围1270中)。
在操作12中,数据库系统可以定位元数据以标识存储在不可变存储器中的租户的数据的档案版本。档案版本可以包括在特定时间点之前的每个数据的最新提交版本。也就是说,可以通过在期望的时间点之前定位有关包含完整客户数据集的数据库的档案信息,来将客户恢复到某个时间点。由于数据库系统的不可变存储器(例如,图5中所示的第二计算机800的存储器810、图6A-图6C所示的数据库系统1200a-d等)中的数据从未真正删除,因此档案信息可以是先前已写入的且不是当前租户数据的数据。
如下面详细描述的,可以将定位档案数据的该元数据收集到恢复扩展区引用设置操作中,其中每个扩展区引用设置最小键和最大键。设置这些键是为了定义要恢复的客户数据的限制。
在操作14中,数据库系统可以通过使用元数据将恢复引用集映射到数据库系统的目标数据库实例中。在操作14中,映射可以包括将租户的所有现有数据用作档案数据。在该时间点之后提交的数据版本可能不适用于目标数据库实例。
在一些实施方式中,将恢复引用集映射到目标数据库实例中可以包括恢复租户数据,以使该租户数据在特定时间点是事务上一致的。租户数据的恢复可能不会影响数据库系统的目标数据库实例中托管的其他租户。
结合图1A-图1B描述的虚拟时间点恢复方法,同时结合图3-图6C描述的数据库系统的内容,在多租户系统的情况下,记录可以被标识为键值对。可以在数据库中创建租赁,并且与租赁相关联的授权用户可以查看、访问和/或执行针对该租赁的操作。例如该值可以是关系数据库的表的行的内容,关系数据库的表中的行的标识或任何其他合适的值。键可以是记录的标识符,并且可以采用任何合适的形式,例如字母数字序列。键的某些部分可能会提供有关记录内容的信息。例如,键的一部分可以是租户标识符,其可以唯一地标识记录的内容所属的租户。键的其他部分可以标识,例如表号和行的标识,例如当记录的值为行的内容或表号、表上的索引号以及当值是行的标识时索引列的标识。
数据库系统(例如,图3所示的系统30或图6A-图6C所示的数据库1200a、1200b、1200c和/或1200d)可以将事务存储为给定记录的不可变版本。已经存储在服务器系统上的记录内容的不可变版本可能会保持不变,直到从服务器系统删除(如果有的话)为止。即,接收到的事务可以创建要存储在服务器系统中的记录的内容的新版本,而不是改变记录的内容。因此,本文公开的记录的多个版本(例如,具有不同内容的记录)可能具有除了事务标识符之外的相同键。对于给定记录的版本使用其他相同的键可以允许更改存储在关系数据库中的数据。因此,物理记录的每个版本可能都是不可变的;也就是说,它要么未被删除,要么在可能长达数月、数年或数十年的任意长时间内未被删除。例如,具有与该记录的较早版本相同的键(而不是事务版本标识符)的记录的较新版本,可以指示该记录的数据值发生变化(即,记录内容的变化)。或者,事务可以创建记录或删除记录(即,创建内容或删除内容)。可以通过插入“tombstone(墓碑)”(例如,标识要删除的数据的标记)来删除记录,并且在某个将来的时间点,可以写入新的扩展区,该扩展区不再包含由tombstone标记的记录。
可以在创建租户时制作时间戳或其他时间标识符。此后,租户数据可以通过基于时间戳之前存储的数据池中的键访问适当的版本,来解释时间戳之前的数据版本的主键请求。时间戳之后各个租户访问数据创建或更新的键将被解释,以便访问租户创建的适当数据。替代地,代替使用时间戳,数据库中的每个事务可以具有与之相关联的唯一事务编号,该事务编号对于每个后续事务单调增加,并且系统可以代替时间戳记最新创建的事务标识符。
图2示出了根据所公开的主题的实现方式的在数据库系统(例如,图3所示的系统30、图4A-图4J所示的系统50、图6A-图6C所示的数据库系统1200a-1200d)中使用的记录的示例。记录可以通过键空间(ks)、租户标识符、对象标识符(objectId)和/或对象键(ObjectKey)进行键入。如图2所示,该记录可以包括租户标识符、对象标识符和对象键。记录的键可以包括租户标识符、对象标识符和对象键。在所公开主题的实现方式中,键和/或值的长度可以是可变的。如上所述,可以根据提交时间,按键对公开的主题的实现方式中的数据扩展区进行排序,并在LSM树中按级别对其进行组织。如本文所公开的数据库系统可以具有不变存储器,其可以在关系数据库中使用,该关系数据库存储记录的持久内容,由租户标识符并通过使用持久存储器虚拟化所根植的单个键空间。持久存储器以由扩展区组成。扩展区通常是用于存储数据的连续区域。如上所述,扩展区可能是不可变的,并且可以通过键进行排序。
在所公开的主题的实施方式中,数据扩展区引用可以被组织为级别(例如,参见图4I其在界别0示出了扩展区E5,并且在级别1示出了扩展区E3和扩展区E4)。一个级别可以覆盖单个键范围,该范围可以分组为按键排序的数据扩展区引用。
减少和/或最小化组织数据的级别数可能会随着新数据的到来而增加数据的重写。每个级别可能具有最大尺寸阈值,并且级别大小可呈指数增加。当超过尺寸阈值时,可以由数据库系统(例如,图3的系统30、图4A-图4J的系统50和/或图6A-图6C所示的数据库系统1200a-1200d)执行合并操作,其中数据从级别N合并到级别N+1。
直到通过刷新操作使数据持久化,并且查询已移动到最新的持久性视图为止,才从数据库系统的存储器(例如,图6B-图6C中所示的内存存储器1230)中移出数据。例如,在刷新操作中,如图6B-图6C中所示将数据从内存存储器1230复制到存储器1260。即,在刷新操作中,一个或更多个扩展区从内存存储器1230移动到存储器1260(即,永久存储器)。对于特定的事务范围,这可以按键顺序进行。恢复信息可以被写入目录1250。该信息可以包括恢复开始点,其可以包括扩展区和片段偏移。恢复事务阈值可以是来自上次刷新操作的最高事务值。当已经将数据从内存存储器1230复制到存储器1260时,可以从内存存储器1230中移除复制的数据。
扩展区引用可以包括扩展区标识符、最小键、最大键、原始租户标识符、新租户标识符和过滤器(例如,事务过滤器)。扩展区引用可以包括扩展区标识符(ExtentId),该扩展区标识符标识此点所指向的物理扩展区。扩展区引用的最小键可以是扩展区引用可以访问的最小键值。最小键可以是范围中的最小键。扩展区引用的最大键可以是扩展区引用可以访问的最大键值。如果租户数据将被沙箱化,则原始租户标识符可以设置为指示生产租户。新的租户标识符可以是新的租户,以便在对租户数据进行沙箱处理时,将新的租户标识符设置为沙箱。扩展区引用可能具有事务过滤器,该事务过滤器可能对应于提交时间戳的最大值,该提交时间戳指示记录何时开始存在,以便扩展区引用可以在此扩展区中“看到”。如下所述,过滤器(例如,事务过滤器)和事务标识符可以用于指向虚拟时间点恢复时存储器中的期望数据。
扩展区引用可以用作对存储在物理存储器(例如,存储设备)中的物理扩展区的逻辑引用,并且扩展区引用可以对不可变存储器进行虚拟化访问。例如,如图3、图6B和图6C所示,并在下面详细描述,扩展区引用(例如图3中所示的扩展区引用35或图6C中所示的扩展区引用1252)可以是虚拟化层34的一部分,它指向物理存储36中的扩展区37。类似地,如图6B-图6C所示,目录1250的扩展区引用1252可以指向存储器1260的数据范围1270。扩展区引用的至少一部分(例如,图6C所示的扩展区引用1252)可以被分组为指向与数据库系统的数据库实例(例如,如图3所示的物理存储36中的扩展区引用37,或图6C中所示的存储器1260的数据扩展区1270内的扩展区)相关联的持久存储器的扩展区引用集(例如,是虚拟化层34的一部分)。扩展区引用集的每个扩展区引用可以包括最小键和最大键,以设置要恢复的租户数据的边界范围。例如,图6C中的每个扩展区引用1252包括边界范围(例如,要恢复的租户的边界范围)的“键开始”(可以是最小键)和“键结束”(可以是最大键)。图6B-图6C中所示的扩展区索引1240被标识为“1”,允许数据库系统1200a、1200b、1200c和/或1200d的节点1220访问租户数据(例如,在数据扩展区1270中)以用于要从存储器1260恢复的租户数据的边界范围。
在第一数据的档案信息(例如,初始档案集和/或一个或更多个增量档案集)之后可以定位扩展区引用。在此,档案信息包含第一时间点之前的租户数据。可以将每个定位的扩展区引用添加到具有相同的最小键和相同的最大键映射的恢复引用集。数据库系统可以访问恢复的租户数据。如下面结合至少图4F-图4J描述的,当至少一些扩展区引用在不可变存储器中包含比第一时间点新的数据的引用时,可以过滤要呈现的数据。
在一些实施方式中,图1A的方法10可以包括在第一时间点之前恢复租户,并且用在第一时间点或之前提交的数据来更新恢复的租户数据。下面还至少结合图4F-图4J详细描述了这一点。
图1B示出了根据所公开的主题的实现方式的执行多租户数据库系统的租户的数据的时间点恢复的另一示例方法。如全文中详细描述的,方法20可以与图3、图5和图6A-图6C所示的系统结合使用。类似于以上结合图1A描述的方法10,该方法20可以具有与租户标识符相关联的不可变存储器(例如,图5所示的第二计算机800的存储器810、图6A-图6C的数据库系统1200a-d等)中存储的租户数据。
方法20可以用于使用单个数据库来执行多租户数据库系统的租户的数据的时间点恢复,以支持多个租户实例。数据库系统可以将租户数据存储在不可变存储器中,并且可以从单个数据库提交或删除记录的版本。
在操作21中,指向当前扩展区的指针或指示要由数据库系统处理的数据的其他元数据,可以被切换为不可变存储器中的租户的档案数据。类似于以上讨论的过程,档案数据可以包括在特定时间点之前的每个数据的最新提交版本以及那些数据的任何先前版本。将客户恢复到某个时间点可以通过定位有关数据库的档案元数据信息来实现,该档案元数据信息指向或以其他方式将系统定向到期望的时间点之前的一组完整客户数据集。可以将指针切换到所定位的档案信息。档案数据可以是先前已经写入的数据,而不是租户的当前数据。为了检索档案数据,移动数据库指针以指向时间较早的事务(比当前时间更早以执行时间点还原操作),而忽略该时间之后发生的事务。这些指针为在某个时间点恢复的客户数据设置限制。
在操作22中,该方法可以限制对在某个时间点之前提交的第一租户的数据的数据库进行访问,同时该数据库能够处理其他租户的数据。
根据所公开的主题的实现方式,图3示出了用于插入和/或更新记录,和/或用于执行时间点恢复的示例系统,例如在图1A-图1B和图4A-图4J中描述的那些,并且在全文中进行了描述。系统30可以是单个计算设备,也可以包括多个连接的计算设备,并且例如可以是笔记本电脑、台式机、单个服务器、服务器集群、服务器场或分布式服务器系统、或者可以是虚拟计算设备或系统、也可以是物理和虚拟系统的任何适当组合。为了简单起见,未显示诸如处理器、短期存储和长期存储、操作系统以及许多数据库管理系统之类的组件。服务器系统30可以是计算系统和网络基础结构的一部分,或者可以以其他方式连接到计算系统和网络基础结构,包括较大的服务器网络,该服务器网络可以包括与服务器系统30类似的其他服务器系统。在一些实施方式中,系统30可以是图5所示的计算机600、中央组件700和/或第二计算机800。和/或图6A-图6C中所示的数据库系统1200a-1200d中的一个或更多个。
系统30的访问层32可以具有数据库存储引擎33,该数据库存储引擎33可以从计算机设备(例如,图5中所示的计算机600和/或第二计算机800)接收或完成关于数据的对数据库系统(例如,图5中所示的中央组件700和/或图6A-图6C中所示的数据库系统1200a-1200d)的查询和/或指令。该查询可以针对来自租户的特定数据,和/或可以是用于插入和/或更新租户的数据的指令。数据库存储引擎33可以是服务器系统30上的硬件和软件的任何合适的组合,用于接收对数据库系统的查询,以及检索与所接收的查询和/或指令有关的数据。
系统30可以包括虚拟化层34,其可以具有扩展区引用35。在一些实施方式中,扩展区引用35可以是图5所示的中央组件700和/或图6A-图6C中所示的数据库系统1200a-1200d的一部分。扩展区引用35可以是系统30上硬件和软件的任何适当组合,以用作数据库存储引擎33和物理存储器36之间的虚拟化层34(例如,如下面所述,扩展区可以存储为扩展区37的一部分)。物理存储器36可以是半导体存储器、固态驱动器(SSD)、硬盘驱动器、光学存储器、光学存储设备或任何其他合适的物理数据存储介质、或其某种组合。
图4A-图4J示出了根据所公开的主题的实施方式的示例系统50和使用快照来插入数据并执行时间点还原的方法。
系统50可以是数据库系统、服务器系统、云服务器系统等。系统50可以包括临时存储器100、持久存储器200和日志300。持久存储器200可以具有一个或更多个与其相关联的服务器和/或计算机(例如,图5中所示的计算机600和/或计算机800,和/或图6A-图6C中所示的数据库系统1200a-1200d)。临时存储器100可以是系统50上的硬件和软件的任何合适的组合,用于存储在“提交”或“刷新”操作之前的扩展区的数据键范围以将信息存储在持久存储器200中,持久存储器200可以是系统50上用于存储数据扩展区和数据扩展区引用的硬件和软件的适当组合。日志300可以是系统50上的硬件和软件的任意组合,用以保留系统50已处理的事务记录。
如图4A所示,插入操作101可以由系统50处理。在该示例中,键将包括个人ID(例如,Person1、Person2等)和事务标识符(x1,x2等),为了清楚起见省略了组织id(例如,租户)、表、行和其他公共键信息。在该示例中,可以将数据“Person1,100,x1”添加到临时存储器100中。第二插入操作102可以添加数据“Person2,100,x2”,数据“Person2,100,x2”可以存储在临时存储器100中。如图4A所示,日志300可以保留插入操作101和102的单独记录,作为事务x1和x2(其中x1和x2表示事务的顺序)。日志300的恢复点可以位于插入操作101、102的记录之前(即,如图4A所示,在具有事务标识符x1的日志记录之前)。
如图4B所示,系统50可以执行“刷新”操作以将插入操作101和102记录在持久存储器200中(例如,在日志结构化合并树的级别0处)作为包括事务x1和事务x2的E1(扩展区1)。即,刷新操作可以从临时存储器100中从插入操作101和102中将事务移除,并将它们作为E1的一部分存储在持久存储器200中的级别0处。系统50可以将日志300中的恢复点调整为在操作101、102之后的位置(即,在具有事务标识符x2的日志记录之后,如图4B所示)。
图4C示出了由系统50处理的额外的后续插入操作。插入操作103可以将数据“Person 3,100,x3”添加到临时存储器100,并且插入操作104可以将数据“Person4,100,x4”添加到临时存储器100。如图4C所示,恢复点可以处于操作101、102之后的位置(即,在具有事务标识符x2的日志记录之后)。插入操作103和104可以由日志300记录为第一后续事务x3和第二后续事务x4。
如图4D所示,系统50可以执行刷新操作以将插入操作103和104(即事务x3和x4)记录在持久存储器200中(例如,在级别0处)作为E2(扩展区2)。持久存储器200还包括来自插入操作101和102作为扩展区E1的一部分(例如,事务x1和x2)的数据。日志300中的恢复点可以由系统50调整为在操作103、104之后的位置(即,在具有事务标识符x4的日志记录之后,如图4D所示)。
如上所述,可以对持久存储器200中级别0的扩展区E1和E2执行合并操作,以形成持久存储器200中级别1的扩展区E3和E4,如图4E所示。日志300中的恢复点可以位于操作103、104之后的位置(即,在具有事务标识符x4的日志记录之后,如图4E所示)。尽管时间点恢复可以由系统50使用级别0扩展区执行,但是在某些实施方式中,如果将级别0扩展区合并为级别1扩展区,则系统50可以更有效地访问特定时间点,并获取租户数据的快照。即,与级别0相比,用以读取和/或搜索级别1的数据的信息可能更少,因此用于时间点恢复的数据可以更快地定位到恢复操作。
图4E示出了在持久存储器200中的级别1处作为范围E3和E4的合并的范围E1和E2。日志300示出了由系统50执行的插入操作的四个事务(即,x1、x2、x3和x4)。在图4E和图4F所示的示例中,可以在日志300中的事务x4完成时(与日志300中的恢复点一致)在该时间点获取租户数据的快照。租户数据的快照可以使得原始租户数据可被以与原始租户数据的副本相同的方式访问,而无需复制基础数据。
如图4F所示的事务x4的租户数据的快照中,扩展区E3可以具有与包括Person1的数据相关联的开始键,和与包括Person2的数据相关联的结束键。扩展区E3的第一事务可以是事务x1,并且扩展区E3的结束事务可以是事务x2。扩展区E4可以具有包含Person3的数据的开始键和包含Person4的数据的结束键。扩展区E4的第一事务可以是事务x3,并且扩展区E4的结束事务可以是事务x4。
图4G示出了在事务x4的时间点获取快照之后的插入操作。更新操作105可以将“Person3,200,x5”添加到临时存储器100以更新与Person3相关联的值(即200)。插入操作106可以将“Person5,100,x6”添加到临时存储器100。日志300中的恢复点可以位于操作103、104之后的位置(即,如图4G所示,在具有事务标识符x4的日志记录之后)。如图4H所示,日志300可以反映用于更新和插入操作105和106的新的x5和x6事务。如图4I所示,刷新操作可以由系统50执行以在持久存储器200的级别0处形成扩展区E5。E5可以包括“Person3,200,x5”和“Person5,100,x6”的事务。可以将日志300的恢复点调整为位于操作105、106之后的位置(即,如图4I所示,在具有事务标识符x6的日志记录之后)。
图4J示出了截至x5的时间点数据。扩展区E3可以具有与包含Person1的数据相关联的开始键和与包含Person2的数据相关联的结束键。扩展区E3的第一事务可以是事务x1,并且扩展区E3的结束事务可以是事务x2。扩展区E4可以具有包含Person3的数据的开始键和包含Person4的数据的结束键。扩展区E4的第一事务可以是事务x3,并且扩展区E4的结束事务可以是事务x4。扩展区E5可以具有包含Person 3的数据的开始键和包含Person 5的数据的结束键。扩展区E5的第一事务可能是x5,而结束事务可能是x5。
在一个实现方式中,为了执行从x5开始的时间点还原,可以使用在x4处获取的快照(例如,参见图4D),并且数据库系统可以从日志300重放更改,以恢复截至x5的时间点的数据。使用日志300,系统50可以将数据“Person3,200,x5”添加到临时存储器100中以更新与Person3相关联的值(即200),该值是与x5相关联的事务。系统50(或图6A-图6C所示的数据库系统1200a-1200d的节点1220)可以在x5的期望的时间点之前定位包含一组完整的租户数据的数据库的档案信息。将该信息收集到恢复扩展区引用集中(例如,可以是图6C所示的扩展区引用1252的一部分),其中每个扩展区引用都设置了要恢复到x5处的期望的时间点的租户数据的最小键和最大键。在将数据恢复到截至x5的时间点之后,x6事务(如图4H和4I所示)可能不再可用。
在另一个实施方式中,截至x4的快照可用于执行截至x5的虚拟时间点恢复。可以将范围E5的信息添加到x4快照提供的信息中,但是可以使用事务过滤器以便进行恢复截至事务x5,并且因此不包括事务x6(即,如图4I中所示的日志300)。系统50(或图6A-6C所示的数据库系统1200a-1200d的节点1220)可以定位在档案集之后生成的任何扩展区引用(例如,来自图4I的持久存储器200的扩展区引用E5,或者可以是图6C中所示的扩展区引用1252的一部分扩展区),但是可以包括在x5的目标时间点之前的租户数据。这些扩展区引用中的每一个都可以通过相同的最小键和最大键映射添加到恢复扩展区引用集中(例如,图6C的扩展区引用1252可以具有用于键开始和键结束的最小和最大键)。这些扩展区引用中的每一个都可以将扩展区引用的事务过滤器设置为期望的事务x5的恢复时间点。当数据恢复到截至x5的时间点时,x6事务(如图4H和4I所示)可能不再可用。
在此实现方式中,可能会收到将租户数据恢复到事务x5的时间点的请求。系统(例如,系统30、系统50、数据库系统1200a-1200d)可以在处理x5事务的时间之前定位数据库的最新快照(即,x4的快照)。数据库系统可以标识所定位的快照中的所有扩展区,其中可以包含用于租户的数据。这些扩展区可以由数据库系统添加到恢复扩展区引用集。
数据库系统可以定位在包含x5事务的快照之后但在包含x6事务的快照之前创建的所有扩展区。从所定位的一组扩展区中,数据库系统可以找到可能具有多达并包括租户的x5事务的数据的扩展区。根据这些扩展区,如果扩展区包括在期望的恢复时间点之后提交的租户的数据,则数据库系统可以设置最小键和最大键,并基于时间T设置事务过滤器(例如,范围包括x5事务之后的事务)。
也就是说,在所公开的主题的实现方式中,如图4A-图4J和图6A-图6C所示,可以通过在数据库系统的存储设备中定位档案信息来实现虚拟时间点恢复,该存储设备包含在期望的时间点之前的一组完整的租户数据。请注意,这不是从脱机数据源检索的数据,而是存储在与数据库关联的LSM存储器中的数据的早期版本。可以将该信息收集到恢复扩展区引用集中,其中每个扩展区引用为要恢复的租户数据设置最小键和最大键边界。可选地,数据库系统可以定位在档案集之后生成的任何扩展区引用(例如,至少包括初始档案集,并且可以包括一个或更多个增量档案集,这些增量档案集可用于将数据恢复到期望的时间点),但可能包含目标时间点之前的客户数据。对于档案集,可以在特定时间点(例如,每天在同一时间、每天两次、每小时等)在LSM树中制作数据的完整副本。对于恢复操作,完整副本可以位于目标时间点之前,并且可以定位完整副本中特定租户的数据(例如,初始档案集)。可以将一个或更多个增量档案集添加到初始档案集,以在期望的时间点到达数据状态。
这些扩展区引用中的每一个都可以使用相同的最小键和最大键映射范围添加到恢复扩展区引用集中。这些扩展区引用中的每一个都可以将扩展区引用的事务过滤器设置为期望的恢复时间点。由于数据库系统正在收集扩展区引用,因此不必创建数据副本。
可以将恢复扩展区引用集映射到目标数据库。如果希望用时间点数据替换所有现有数据,则可以将扩展区引用集映射到目标数据库,并且可以移除该时间点以外的数据的现有客户键范围。如果希望在不替换现有租户数据的情况下使虚拟时间点恢复显示为不同的数据集,则可以按照2016年11月8日提交的标题为“数据库系统中测试数据的形成和处理(Formation and Manipulation of Test Data in a Database System)”的美国专利申请15345914(例如,在第33-37段)中公开的方式将扩展区引用集映射到新的沙箱租户。
当访问恢复的数据时,扩展区引用可以确定如何解释所存储的数据。对于恢复的数据,某些扩展区引用可能包括对较指定还原时间点更新的数据的引用。扩展区引用的事务过滤器可能会限制可提供给数据库其余部分的数据。持久数据的每次扫描都有一个快照事务提交编号,该编号可以解释该扫描可见的数据。在对行进行限定时,通过具有事务过滤器的扩展区引用进行的扫描可以使用扫描的快照事务提交编号或扩展区引用的事务过滤器中的较小者作为事务可见性标准。这允许数据的时间点视图,而无需通过重放数据库事务日志(例如,图4I中所示的日志300)来重建数据产品,就像它们在时间点上一样。与扫描按时间顺序排列的日志并应用记录到期望的时间点相比,可以快速构造使用具有事务提交编号的扩展区引用的虚拟时间点恢复。
在所公开的主题的实现方式中,数据库系统(例如,系统30、数据库系统1200a-d等)基于预定义的保留窗口可以节省扩展区(例如,图6C中所示的扩展区1251和/或数据扩展区1270)和与扩展区有关的信息(例如,图6C中所示的元数据和/或扩展区引用1252)。例如,预定义的保留窗口可以是30天、60天、90天、120天等。如上所述,可以在特定的时间点(例如,每天在同一时间、每天两次、每小时等)在LSM树中制作数据的完整副本。对于恢复操作,完整副本可以位于目标时间点之前,并且可以定位完整副本中特定租户的数据(例如,初始档案集)。
存档数据可以包括将元数据(例如,扩展区1251、扩展区引用1252等)以及底层的引用的扩展区(例如,数据区段1270)保存在单独的存储位置中。单独的存储位置可以包括用于扩展区的档案存储系统和档案元数据存储数据库。
档案系统可以捕获以数据扩展区的形式进入目标数据库(例如,数据库系统1200a-1200d)的改变。在所公开的主题的实施方式中,可以通过刷新到持久存储器的扩展区(即,例如存储在例如存储器1260中的作为刷新操作的一部分的0级扩展区)来捕获改变。在所公开的主题的另一实施方式中,可以在扩展区流到LSM的最低级别时捕获它们。当LSM没有从LSM中删除取代的记录时,可能会发生这种情况,因为LSM正在生成新的扩展区作为从内存刷新到0级的一部分,或者作为合并的一部分。
在所公开的主题的实现方式中,数据库系统可以接收将租户的数据恢复到时间点T的请求。系统(例如,系统30、系统50、数据库系统1200a-1200d)可以在时间T之前定位数据库的最新快照S。数据库系统可以标识所定位的快照中的所有扩展区,这些扩展区可能包含租户的数据。这些扩展区可以由数据库系统添加到恢复扩展区引用集。
数据库系统可以定位在快照S之后但在快照S+1之前创建的所有扩展区。从所定位的一组扩展区中,数据库系统可以找到可能具有直到并包括租户的时间T(包括时间T)的数据的扩展区。根据这些扩展区,如果扩展区跨越时间,则数据库系统可以设置最小键和最大键,并基于时间T设置事务过滤器。
通过执行这些实现方式的时间点恢复操作,与传统的数据库恢复操作相比,本文公开的实施例可以最小化从日志文件(例如,日志300)的重放,或者可以最小化执行类似的资源密集型操作。也就是说,整篇公开的系统和方法可以提供存储租户数据的计算机系统(例如,图4A-图4E和图4G-图4I所示的系统50)的更有效的操作。这些公开的实现方式可以减少执行时间点恢复所需的计算资源。
可以在各种组件和网络架构中实现当前公开的主题的实现方式并与之一起使用。图5是适合于实现当前公开的主题的实现方式的示例计算机600。如本文中进一步详细讨论的,计算机600可以是多个计算机的网络中的单个计算机。如图5所示,计算机600可以与中央或分布式组件700(例如,服务器、云服务器、数据库、集群、应用服务器等)通信。中央组件700可以与诸如第二计算机800之类的一个或更多个其他计算机通信,该第二计算机可以包括存储设备810。第二计算机800可以是服务器、云服务器等。存储器810可以使用任何适当的易失性和非易失性物理存储介质的任何适当的组合,包括例如硬盘驱动器、固态驱动器、光学介质、闪存、磁带驱动、寄存器和随机存取存储器,或者等等,或其任何组合。
可以使用任何适当的文件系统或存储方案或层次结构以任何适当的格式将数据存储在例如存储器810中。例如,存储器810可以使用具有多个级别的日志结构合并(LSM)树来存储数据。此外,如果图4-图5中所示的系统是多租户系统,对于租户的数据库的每个实例,可以将存储器组织成单独的日志结构化合并树。也就是说,每个租户可能有单独的数据库(例如,LSM树)。或者,可以将特定服务器或系统上所有记录的内容存储在单个日志结构化的合并树中,在这种情况下,与记录的版本相关联的唯一租户标识符可以用于区分如本文所公开的每个租户的数据。较新的事务可以存储在树的最高级别或最高别,并且较旧的事务可以存储在树的较低级别。
可以为每台计算机隔离去往中央组件700和/或从中央组件700获得的信息,以使计算机600可以不与计算机800共享信息。可替代地,或此外,计算机600可以直接与第二计算机800通信。
计算机(例如,用户计算机、企业计算机等)600包括将计算机600的主要组件互连的总线610、例如中央处理器640、存储器670(通常是RAM,但也可以包括ROM、闪存RAM等)、输入/输出控制器680、用户显示器620(例如通过显示适配器的显示器或触摸屏)、用户输入接口660,该用户输入接口660可以包括一个或更多个控制器以及关联的用户输入或设备,例如键盘、鼠标、Wi-Fi/蜂窝无线电、触摸屏、麦克风/扬声器等,并且可以紧密耦合到I/O控制器680、固定存储器630(例如硬盘驱动器、闪存存储器)、光纤通道网络、SAN设备、SCSI设备等,以及可移动介质组件650用于控制和接收光盘、闪存驱动器等。
总线610使得能够在中央处理器640和存储器670之间进行数据通信,存储器670可以包括只读存储器(ROM)或闪存(均未示出)以及随机存储器(RAM)(未示出),如先前指出。RAM可以包括将操作系统和应用程序加载到其中的主内存。ROM或闪存可以包含除其他代码外的基本输入输出系统(BIOS),该系统控制基本硬件操作,例如与外围组件的交互。可以将驻留在计算机600上的应用程序存储在计算机可读介质上并通过计算机可读介质(例如硬盘驱动器(例如,固定存储器630)、光盘驱动器、软盘或其他存储介质650)进行访问。
固定存储器630可以与计算机600集成在一起,或者可以是分开的,并且可以通过其他接口访问。固定存储器630可以是存储区域网络(SAN)的一部分。网络接口690可以通过电话链接提供到远程服务器,通过互联网服务供应商(ISP)提供到Internet的直接连接,或者经由POP(出现点)或其他技术到Internet的直接网络链接到远程服务器的直接连接。网络接口690可以使用包括数字蜂窝电话连接、蜂窝数字分组数据(CDPD)连接、数字卫星数据连接等的无线技术来提供这种连接。例如,如图5所示,网络接口690可以使计算机能够经由一个或更多个局域网、广域网或其他网络与其他计算机和/或存储设备进行通信。
许多其他设备或组件(未显示)可以以类似方式连接(例如,数据高速缓存系统、应用服务器、通信网络交换机、防火墙设备、身份验证和/或授权服务器、计算机和/或网络安全系统等等)。相反,不需要存在图5中所示的所有组件来实践本公开。组件可以以不同于所示方式的方式互连。可以将实现本公开的代码存储在计算机可读存储介质中,例如存储器670、固定存储器630、可移动介质650中的一个或更多个、或存储在远程存储位置上。
图6A-图6C示出了根据所公开的主题的实现方式的示例性网络布置。在由云1202表示的网络中的不同节点处的四个单独的数据库系统1200a-d通过网络链接1204彼此通信并且与用户(未示出)通信。每个数据库系统1200可用于托管数据库的多个实例,其中每个实例仅可被特定租户(例如,与特定租户相关联的用户被授权访问租户的数据)访问。每个数据库系统都可以与存储区域网络(未显示)、负载平衡器和备份服务器以及防火墙、其他安全系统和身份验证系统一起组成计算机集群。系统1200中的任何一个的某些实例可以是生活或生产中的实例,其处理和提交从用户或从计算元件(未示出)接收的交易,以摄取并提供数据以存储在实例中。
一个或更多个数据库系统1200a-1200d可以随时为原始租户创建沙箱。例如,数据库系统可以在不替换现有租户数据的情况下接收到将时间点恢复显示为不同数据集的请求,然后可以将扩展区引用集映射到新的沙箱租户身份。该系统,例如1200c,可以包括至少一个存储设备,如在图5中所示。例如,该存储可以包括存储器670、固定存储器630、可移动介质650、包括在中央组件700和/或第二计算机800中的存储设备、和/或与数据库系统1200a-1200d中的一个或更多个相关联的一个或更多个存储设备。在另一个示例中,数据库系统1200a-1200c可以具有存储器1260,如图6B-图6C所示。存储器1260可以包括一个或更多个提供数据(例如,租户数据)的持久存储的存储设备。
图6B-6C示出了根据所公开的主题的实现方式的单独的数据库系统1200a、1200b、1200c或1200d。数据库系统1200a、1200b、1200c或1200d可以包括一个或更多个应用程序1210(如图6B所示),其可以使用来自节点1220和/或存储器1260的数据和/或信息,该数据和/或信息可以是一个或更多个存储设备。应用程序1210可以包括客户关系管理(CRM)应用程序等。可以包括一个或更多个服务器和/或虚拟服务器的节点1220可以包括内存存储器1230、扩展区索引1240以及扩展区和扩展区引用的目录1250。内存存储器1230可以存储由数据库系统1200a、1200b、1200c或1200d处理的最新事务。这些最新的事务可以例如在预定时间段被提交给存储器1260。扩展区索引1240以及扩展区和扩展区引用的目录1250在下面结合图6C讨论。存储器1260可以是一个或更多个存储设备,并且可以存储可以包括租户数据的数据扩展区1270。
图6C示出了根据所公开的主题的实现方式的用于单个数据库系统1200a、1200b、1200c或1200d的节点和存储器。节点1220可以包括内存存储器1230和扩展区引用1240,如上面结合图6B所讨论的。节点1120可以包括目录1250,该目录可以包括扩展区1251和扩展区引用1251。扩展区1251可以指代存储区域,并且可以包括扩展区标识符(Eid)。扩展区引用1252可以包括扩展区标识符(Eid)、键开始(Key start)和键结束(Key End)以及在LSM结构中用于扩展区引用的等级(level)。
可以将租户数据存储在与原始租户标识符相关联的至少一个存储设备的不可变存储器(例如,图6B-6C的存储器1260)中。原始租户数据可用于为时间点恢复操作创建快照。图5-图6C所示的系统的一个或更多个服务器可能会接收到将租户数据恢复到特定时间点的请求。包括在恢复请求中的键范围可以包括事务点,从该事务点中(例如,基于键范围)恢复时间点数据,或者可以引用时间戳或序列指示符。图5-图6C所示的系统中的一个或更多个服务器可基于指示用于租户的时间点恢复的数据的键的动态映射,接收来自至少一个存储设备(例如,与中央组件700、第二计算机800和/或数据库系统1200a-1200d的存储器1260相关联的存储设备)的沙箱租户的不可变存储器的数据。从快照时间点到期望的时间点恢复的数据的任何改变可以通过重放来自例如事务日志(例如,图4F中所示的日志300)的改变来实现。可替代地,可以应用交易过滤器来针对期望的时间点过滤事务数据以恢复租户数据。由执行的恢复操作产生的数据可以在不可变存储器中,例如与中央组件700、第二计算机800和/或数据库系统1200a-1200d中的一个或更多个的存储器1260相关联的存储设备。
图5-图6C所示的系统中的一个或更多个服务器可以接收针对至少一部分租户数据的恢复操作的请求(例如,来自图5中所示的计算机600等),并且可以对来自至少一个存储设备的不可变存储器的数据进行操作,以对租户数据执行时间点恢复操作。一个或更多个服务器从至少一个用于租户的存储设备接收来自不可变存储器(例如,图6B-6C中所示的存储器1260)的数据,并可以使用最接近期望的时间点的租户数据快照执行时间点恢复,并可以从日志或使用过滤器(例如事务过滤器)将更改重放到数据中以便在期望的时间点到达数据。
在一些实现方式中,图5-图6C中所示的一个或更多个服务器可以执行多租户数据库系统的租户的数据的时间点恢复。至少一个存储设备(例如,与中央组件700、第二计算机800和/或数据库系统1200a-1200d的存储器1260相关联的存储设备)可以存储租户数据。租户数据可以与元数据租户标识符和元数据相关联,该元数据标识符和元数据指示何时创建并从数据库系统中删除记录,并指示不时地提交给数据库系统的租户数据的不同版本。至少一个服务器(例如,计算机600、中央组件700、第二计算机800和/或数据库系统1200a-1200d的存储器1260)可以定位元数据以标识存储在存储设备中的租户数据的档案信息(例如,初始档案集,并且可以包括可用于将数据恢复到期望的时间点的一个或更多个增量档案集)。档案数据可以包括在恢复操作的期望的时间点之前的每个数据的最新提交版本。当将租户的所有现有数据替换为档案版本时,以及在该时间点之后提交的数据和记录的版本对数据库实例不可用时,至少一个服务器可以通过使用元数据将恢复引用集映射到数据库系统的目标数据库实例中。
至少一个服务器,如图5-图6C所示,可以将恢复引用集映射到目标数据库实例中,以将租户数据恢复为从第一时间点开始在事务上是一致的。将租户数据恢复到特定的时间点不会影响数据库系统的目标数据库实例中托管的其他租户。
扩展区引用可以对至少一个存储设备(例如,与中央组件700、第二计算机800和/或数据库系统1200a-1200d的存储器1260相关联的存储设备)进行虚拟化访问,以及扩展区引用的至少一部分被分组到扩展区引用集中,该扩展区引用集指向与数据库系统的数据库实例相关联的持久存储器。在图3中示出了该虚拟化的示例并且上面已经进行了描述。扩展区引用集的每个扩展区引用(例如,可以是扩展区引用1252的一部分)可以包括最小键和最大键,以设置要恢复的租户数据的边界范围。图5-图6C中所示的至少一个服务器可能会在第一时间点之前,定位包含租户数据的数据的档案版本之后生成的扩展区引用,并将每个定位的扩展区引用添加到具有相同最小键和相同的最大键映射的恢复引用集中。至少一个服务器可以访问恢复的数据,并且当至少一些扩展区引用中在不可变存储器中包含的数据的引用比第一时间点新时,服务器可以过滤要呈现的数据。
在一些实施方式中,至少一个服务器(例如,计算机600、中央组件700、第二计算机800和/或数据库系统1200a-1200d的节点1220)可以在第一时间点之前恢复租户,并使用在第一时间点或之前提交的数据更新恢复的租户数据。
在一些实现方式中,图5-图6C中所示的一个或更多个服务器可以使用用于支持多个租户实例的单个数据库来执行多租户数据库系统的第一租户的数据的时间点恢复。至少一个存储设备(例如,与中央组件700、第二计算机800和/或数据库系统1200a-1200d的存储器1260相关联的存储设备)可以存储租户数据。至少一个服务器(例如,计算机600、中央组件700、第二计算机800和/或数据库系统1200a-1200d的节点1220)可以从单个数据库提交或删除记录的版本,可以不时地创建记录,可以将数据库系统中的指针切换到至少一个存储设备中的第一租户的数据的档案版本,并且当数据库能够处理其他租户的数据的时间时,可以将对数据库的访问限制为在某个点之前提交的第一租户的数据。
所公开的主题的系统和方法可以用于单租户和/或多租户系统。多租户系统可以允许各种租户(例如可以是用户、用户组或组织)通过可以在各种租户之间通过服务器系统上的软件工具或实例访问服务器系统上自己的记录。每个租户的记录内容可以是包含该租户的数据库的一部分。多个租户的记录内容都可以一起存储在同一数据库中,但是每个租户只能访问属于该租户或由该租户创建的记录的内容。这可以允许数据库系统启用多租户,而不必将每个租户的记录内容分别存储在例如单独的服务器或服务器系统上。租户的数据库可以是例如关系数据库、层次数据库或任何其他合适的数据库类型。服务器系统上存储的所有记录可以以任何合适的结构存储,包括例如LSM树。
多租户系统可以在遍布整个网络的服务器系统上具有各种租户实例,并且每个节点处都有计算系统。每个租户的生活或生产数据库实例只能在一个计算机系统上处理其事务。用于处理该实例的事务的计算系统还可以为其他租户处理其他实例的事务。
更一般地,当前公开的主题的各种实现方式可以包括或以计算机实现的过程和用于实践那些过程的装置的形式来实现。实现方式也可以以计算机程序产品的形式来实现,该计算机程序产品具有包含以非暂时性和/或有形介质(例如,软盘、CD-ROM、硬盘驱动器、USB(通用串行总线)驱动器、或任何其他机器可读存储介质),其中,当将计算机程序代码加载到计算机中并由计算机执行时,计算机成为用于实践所公开主题的实现方式的设备。实现方式也可以以计算机程序代码的形式来实施,例如,无论是存储在存储介质中、加载到计算机中和/或由计算机执行,还是通过某种传输介质(诸如电线或电缆)、光学或电磁辐射进行传输,其中当将计算机程序代码加载到计算机中并由计算机执行时,计算机成为用于实践所公开主题的实现方式的设备。当在通用微处理器上实现时,计算机程序代码段将微处理器配置为创建特定的逻辑电路。在某些配置中,存储在计算机可读存储介质上的一组计算机可读指令可以由通用处理器实现,通用处理器可以将通用处理器或包含通用处理器的设备转换为专用处理器,该专用处理器配置为实现或执行指令。可以使用硬件来实现实现方式,该硬件可以包括以硬件和/或固件根据所公开主题的实现方式来实现全部或部分技术的处理器,例如通用微处理器和/或专用集成电路(ASIC),该硬件。处理器可以耦合到诸如RAM、ROM、闪存、硬盘或能够存储电子信息的任何其他设备的存储器。存储器可以存储适于由处理器执行以根据所公开的主题的实现方式执行技术的指令。
出于解释的目的,已经参考特定实施方式描述了前述描述。然而,以上说明性讨论并非旨在穷举或将所公开的主题的实施方式限制为所公开的精确形式。鉴于以上教导,许多修改和变化是可能的。选择和描述的实施方式用以解释所公开的主题的实施方式的原理及其实际应用,从而使本领域的其他技术人员能够利用那些实施方式以及具有各种修改的各种实施方式,以适合于预期的特定的用途。

Claims (14)

1.一种计算机化方法,用于执行多租户数据库系统的第一租户的数据的时间点恢复,其中租户数据存储在所述数据库系统的不可变存储器中,并且所述租户数据与元数据租户标识符和元数据相关联,所述元数据指示何时创建记录以及何时从所述数据库系统中删除记录,和指示不时地提交给所述数据库系统的租户数据的不同版本,所述方法包括:
定位元数据以标识存储在所述不可变存储器中的第一租户的第一数据的档案版本,其中所述档案版本包括在第一时间点之前的每个数据的最新提交的版本,但不使用单独的事务日志数据;以及
通过使用所述元数据将恢复引用集映射到所述数据库系统的目标数据库实例中,其中所述恢复引用集包括最小键和最大键,用于设置将要恢复到所述第一时间点的所述租户数据的边界范围,其中租户的所有现有数据都在此时间点要成为所述档案版本,以及其中在所述时间点之后提交的数据和记录的版本对所述目标数据库实例不可用。
2.根据权利要求1所述的方法,其中将所述恢复引用集映射到所述目标数据库实例包括:恢复租户数据以使得截至所述第一时间点所述租户数据在事务上是一致的。
3.根据权利要求2所述的方法,其中所述恢复租户数据不影响托管在所述数据库系统的所述目标数据库实例中的其他租户。
4.根据权利要求1所述的方法,还包括:
定位在所述第一数据的所述档案版本之后生成的扩展区引用,所述第一数据的所述档案版本包含在所述第一时间点之前的租户数据;以及
将每个已定位的所述扩展区引用添加到所述恢复引用集,所述恢复引用集具有相同的最小键和相同的最大键映射。
5.根据权利要求1所述的方法,还包括:
访问恢复的租户数据;以及
当所述恢复的租户数据的至少一些扩展区引用在所述不可变存储器中包含比所述第一时间点更新的数据的引用时,对将要呈现的所述数据进行过滤。
6.根据权利要求1所述的方法,还包括:
在第一时间点之前恢复所述租户;以及
使用在所述第一时间点或之前提交的数据更新所述恢复的租户数据。
7.一种计算机化方法,用于使用单个数据库来支持多个租户实例执行多租户数据库系统的第一租户的数据的时间点恢复,所述数据库系统将租户数据存储在不可变存储器中,所述数据库系统从所述单个数据库提交或删除记录的版本,以及所述数据库系统不时地创建记录,所述方法包括:
基于档案元数据信息定位期望的时间点之前的第一租户的档案数据,其中所述档案数据是先前写入的而不是所述第一租户的当前数据;
将所述数据库系统中的指针从所述第一租户的所述当前数据切换到所述不可变存储器中的所述第一租户的所述数据的所定位的档案版本,但不使用单独的事务日志数据;以及
限制所述数据库对在所述时间点之前提交的所述第一租户的所述数据进行访问,同时所述数据库能够处理其他租户的数据。
8.一种系统,用于执行多租户数据库系统的第一租户的数据的时间点恢复,所述系统包括:
至少一个存储设备,用于存储租户数据,其中所述租户数据与元数据租户标识符和元数据相关联,所述元数据指示何时创建记录以及何时从所述数据库系统中删除记录,和指示不时地提交给所述数据库系统的租户数据的不同版本;
至少一个服务器,用于定位元数据以标识存储在所述至少一个存储设备中的第一租户的第一数据的档案版本,但不使用单独的事务日志数据,其中所述档案版本包括在第一时间点之前的每个数据的最新提交的版本,以及通过使用所述元数据将恢复引用集映射到所述数据库系统的目标数据库实例中,其中所述恢复引用集包括最小键和最大键,用于设置将要恢复到所述第一时间点的所述租户数据的边界范围,其中在此时间点要用所述档案版本替换租户的所有现有数据,以及其中在所述时间点之后提交的数据和记录的版本对所述数据库实例不可用。
9.根据权利要求8所述的系统,其中所述至少一个服务器将所述恢复引用集映射到所述目标数据库实例,以将租户数据恢复为截至所述第一时间点在事务上是一致的。
10.根据权利要求9所述的系统,其中所述至少一个服务器恢复所述租户数据不影响托管在所述数据库系统的所述目标数据库实例中的其他租户。
11.根据权利要求8所述的系统,其中所述至少一个服务器:
定位在所述第一数据的所述档案版本之后生成的扩展区引用,所述第一数据的所述档案版本包含所述第一时间点之前的租户数据,以及
将每个定位的所述扩展区引用添加到所述恢复引用集,所述恢复引用集具有相同的最小键和相同的最大键映射。
12.根据权利要求8所述的系统,其中所述至少一个服务器:
访问所述恢复的数据,以及
当所述恢复的租户数据的至少一些扩展区引用在所述不可变存储器中包含比所述第一时间点更新的数据的引用时,对将要呈现的所述数据进行过滤。
13.根据权利要求8所述的系统,其中所述至少一个服务器:
在第一时间点之前恢复所述租户,以及
使用在所述第一时间点或之前提交的数据来更新所述恢复的租户数据。
14.一种系统,用于使用单个数据库来支持多个租户实例的多租户数据库系统的第一租户的数据的时间点恢复,所述系统包括:
至少一个存储设备,用于存储租户数据;以及
至少一个服务器,用于提交或从所述单个数据库删除记录的版本,不时地创建记录,基于档案元数据信息定位期望的时间点前的第一租户的档案数据,其中所述档案数据是先前写入的而不是所述第一租户的当前数据,将所述数据库系统中的指针从所述第一租户的当前数据切换到所述至少一个存储设备中的所述第一租户的所述数据的所定位的档案版本,但不使用单独的事务日志数据,以及限制所述数据库对某个时间点之前提交的所述第一租户的所述数据进行访问,同时所述数据库能够处理其他租户的数据。
CN201880043743.3A 2017-06-27 2018-06-26 针对时间点恢复数据库的数据集的系统和方法 Active CN110799948B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/634,796 US10592353B2 (en) 2017-06-27 2017-06-27 Systems and methods of restoring a dataset of a database for a point in time
US15/634,796 2017-06-27
PCT/US2018/039457 WO2019005766A1 (en) 2017-06-27 2018-06-26 SYSTEMS AND METHODS FOR RESTORING A DATA SET OF A DATABASE FOR A POINT IN TIME

Publications (2)

Publication Number Publication Date
CN110799948A CN110799948A (zh) 2020-02-14
CN110799948B true CN110799948B (zh) 2024-03-26

Family

ID=62976174

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880043743.3A Active CN110799948B (zh) 2017-06-27 2018-06-26 针对时间点恢复数据库的数据集的系统和方法

Country Status (7)

Country Link
US (2) US10592353B2 (zh)
EP (1) EP3646195B1 (zh)
JP (1) JP6995894B2 (zh)
CN (1) CN110799948B (zh)
AU (1) AU2018290758B2 (zh)
CA (1) CA3066255A1 (zh)
WO (1) WO2019005766A1 (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10592353B2 (en) * 2017-06-27 2020-03-17 Salesforce.Com, Inc. Systems and methods of restoring a dataset of a database for a point in time
US11416344B2 (en) * 2017-10-03 2022-08-16 Rubrik, Inc. Partial database restoration
US10901855B2 (en) * 2018-06-21 2021-01-26 International Business Machines Corporation On-demand multitenant data backup and restore
US11599423B1 (en) * 2018-09-04 2023-03-07 EMC IP Holding Company LLC Managing backup copies in a right-to-delete personal data environment
US11321294B2 (en) 2019-09-09 2022-05-03 Salesforce.Com, Inc. Database index repair
US11514015B2 (en) 2020-01-30 2022-11-29 Salesforce.Com, Inc. Reducing requests using probabilistic data structures
US11526474B2 (en) * 2020-01-30 2022-12-13 Salesforce.Com, Inc. Reducing requests using probabilistic data structures
US11593215B2 (en) * 2020-02-05 2023-02-28 EMC IP Holding Company LLC Method and system for generating immutable backups with configurable retention spans
US11467927B2 (en) 2020-04-17 2022-10-11 Netapp, Inc. Methods and systems for protecting multitenant databases in networked storage systems
US11216344B2 (en) 2020-05-13 2022-01-04 Rubrik, Inc. Real time database backup status indication and restore
US11483150B2 (en) 2020-06-01 2022-10-25 Salesforce.Com, Inc. Private key cache in secure enclave
US20220129445A1 (en) * 2020-10-28 2022-04-28 Salesforce.Com, Inc. Keyspace references
US11625386B2 (en) 2021-01-29 2023-04-11 Salesforce.Com, Inc. Fast skip list purge
US11741050B2 (en) 2021-01-29 2023-08-29 Salesforce, Inc. Cloud storage class-based variable cache availability
US11461181B2 (en) 2021-02-03 2022-10-04 Netapp, Inc. Methods and systems for protecting multitenant databases in networked storage systems
US11934378B2 (en) * 2021-03-11 2024-03-19 International Business Machines Corporation Recording changes to records whilst preserving record immutability
US11822535B2 (en) 2021-06-08 2023-11-21 Salesforce, Inc. Director-based database system for transactional consistency
US11989051B2 (en) 2021-06-08 2024-05-21 Salesforce, Inc. Time alignment in director-based database system for transactional consistency
US20230244569A1 (en) * 2022-01-28 2023-08-03 Pure Storage, Inc. Recover Corrupted Data Through Speculative Bitflip And Cross-Validation
CN114791907B (zh) * 2022-03-30 2023-01-06 北京柏睿数据技术股份有限公司 一种多租户共享数据的处理方法和系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102693169A (zh) * 2011-03-25 2012-09-26 国际商业机器公司 在多租户环境下恢复租户数据的方法、设备和数据库系统
CN103577457A (zh) * 2012-07-31 2014-02-12 国际商业机器公司 用于对多租户数据库进行操控的方法和系统
CN104160381A (zh) * 2012-03-08 2014-11-19 国际商业机器公司 多租户环境中租户特定数据集的管理
CN104216725A (zh) * 2013-06-04 2014-12-17 Sap欧洲公司 用于软件解决方案托管的存储库层策略调整
CN105074702A (zh) * 2013-02-28 2015-11-18 亚马逊科技公司 提供单租户和多租户环境的数据库系统
US9684570B1 (en) * 2012-12-19 2017-06-20 Salesforce.Com, Inc. Systems, methods, and apparatuses for fixing logical or physical corruption in databases using immutable LSM trees

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07244604A (ja) * 1994-03-04 1995-09-19 Nippon Telegr & Teleph Corp <Ntt> データベースオンライン復旧方法および装置
US8037345B1 (en) * 2010-03-31 2011-10-11 Emc Corporation Deterministic recovery of a file system built on a thinly provisioned logical volume having redundant metadata
US8977898B1 (en) * 2012-09-24 2015-03-10 Emc Corporation Concurrent access to data during replay of a transaction log
US9727598B2 (en) * 2012-12-19 2017-08-08 Salesforce.Com, Inc. Systems, methods, and apparatuses for fixing logical or physical corruption in databases using LSM trees
US9116737B2 (en) * 2013-04-30 2015-08-25 Vmware, Inc. Conversion of virtual disk snapshots between redo and copy-on-write technologies
US9552242B1 (en) * 2013-09-25 2017-01-24 Amazon Technologies, Inc. Log-structured distributed storage using a single log sequence number space
US9372743B1 (en) * 2013-09-30 2016-06-21 Emc Corporation System and method for storage management
US9612910B2 (en) * 2013-12-23 2017-04-04 Veritas Technologies Systems and methods for generating catalogs for snapshots
WO2016049584A1 (en) * 2014-09-26 2016-03-31 Oracle International Corporation System and method for transaction recovery in a multitenant application server environment
US9558078B2 (en) 2014-10-28 2017-01-31 Microsoft Technology Licensing, Llc Point in time database restore from storage snapshots
US20160117318A1 (en) * 2014-10-28 2016-04-28 Salesforce.Com, Inc. Facilitating dynamically unified system of record in an on-demand services environment
US9760449B2 (en) * 2015-09-16 2017-09-12 International Business Machines Corporation Restoring a point-in-time copy
US10108497B1 (en) * 2015-09-29 2018-10-23 EMC IP Holding Company LLC Point-in-time restore using SQL VDI incremental backup over SQL VSS snapshot backup and recover
US10193977B2 (en) * 2016-04-29 2019-01-29 Huawei Technologies Co., Ltd. System, device and process for dynamic tenant structure adjustment in a distributed resource management system
US10592353B2 (en) * 2017-06-27 2020-03-17 Salesforce.Com, Inc. Systems and methods of restoring a dataset of a database for a point in time

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102693169A (zh) * 2011-03-25 2012-09-26 国际商业机器公司 在多租户环境下恢复租户数据的方法、设备和数据库系统
CN104160381A (zh) * 2012-03-08 2014-11-19 国际商业机器公司 多租户环境中租户特定数据集的管理
CN103577457A (zh) * 2012-07-31 2014-02-12 国际商业机器公司 用于对多租户数据库进行操控的方法和系统
US9684570B1 (en) * 2012-12-19 2017-06-20 Salesforce.Com, Inc. Systems, methods, and apparatuses for fixing logical or physical corruption in databases using immutable LSM trees
CN105074702A (zh) * 2013-02-28 2015-11-18 亚马逊科技公司 提供单租户和多租户环境的数据库系统
CN104216725A (zh) * 2013-06-04 2014-12-17 Sap欧洲公司 用于软件解决方案托管的存储库层策略调整

Also Published As

Publication number Publication date
US10592353B2 (en) 2020-03-17
US20180373604A1 (en) 2018-12-27
AU2018290758B2 (en) 2020-08-06
EP3646195A1 (en) 2020-05-06
CA3066255A1 (en) 2019-01-03
US10901861B2 (en) 2021-01-26
US20200159628A1 (en) 2020-05-21
WO2019005766A1 (en) 2019-01-03
JP2020525925A (ja) 2020-08-27
AU2018290758A1 (en) 2019-12-19
CN110799948A (zh) 2020-02-14
JP6995894B2 (ja) 2022-01-17
EP3646195B1 (en) 2023-07-19

Similar Documents

Publication Publication Date Title
CN110799948B (zh) 针对时间点恢复数据库的数据集的系统和方法
US10956364B2 (en) Efficient data synchronization for storage containers
CN110799960B (zh) 数据库租户迁移的系统和方法
CN109952564B (zh) 数据库系统中测试数据的形成与操纵
US8965850B2 (en) Method of and system for merging, storing and retrieving incremental backup data
US9311193B2 (en) Method and system for backup and recovery
US11321192B2 (en) Restoration of specified content from an archive
US10565070B2 (en) Systems and methods for recovery of consistent database indexes
CN110799961B (zh) 在数据库中创建和删除租户的系统和方法
US20160092495A1 (en) Deleting tuples using separate transaction identifier storage
US10977143B2 (en) Mirrored write ahead logs for data storage system
US20230394010A1 (en) File system metadata deduplication

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
CB02 Change of applicant information

Address after: California, USA

Applicant after: Shuo Power Co.

Address before: California, USA

Applicant before: SALESFORCE.COM, Inc.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant