CN101268439B - 数据库片段克隆和管理 - Google Patents

数据库片段克隆和管理 Download PDF

Info

Publication number
CN101268439B
CN101268439B CN2006800296061A CN200680029606A CN101268439B CN 101268439 B CN101268439 B CN 101268439B CN 2006800296061 A CN2006800296061 A CN 2006800296061A CN 200680029606 A CN200680029606 A CN 200680029606A CN 101268439 B CN101268439 B CN 101268439B
Authority
CN
China
Prior art keywords
cloned sequence
fragment
time cloning
main
cloning fragment
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
CN2006800296061A
Other languages
English (en)
Other versions
CN101268439A (zh
Inventor
R·H·格伯
B·S·拉曼
J·R·汉密尔顿
J·F·路德曼
M·M·克里什纳
S·H·史密斯
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN101268439A publication Critical patent/CN101268439A/zh
Application granted granted Critical
Publication of CN101268439B publication Critical patent/CN101268439B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques

Landscapes

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

Abstract

提供数据库片段克隆和管理的机制与技术。诸如表、最原始数据或索引的数据库对象被划分成片段。每一片段被克隆以创建克隆片段,在操作上它们彼此是完全相同的。一个或多个克隆片段可被指定为主克隆片段用于执行数据操作,或者可被指定为次克隆片段用作备份。对每一片段的更新在主克隆片段上实现,且随后从主克隆片段传播到相应的次克隆片段。

Description

数据库片段克隆和管理
背景技术
数据库***一般用于高效地管理为可访问性而组织的信息。为确保可访问性,***可包括数据库的备份拷贝,以防原始拷贝损坏或丢失。用于数据库备份的一种通用技术是周期性地将整个数据库拷贝到计算机可读介质上。例如,信息***管理员可在每周末将数据库拷贝到盘或带上。尽管数据库的拷贝可用这种方式来保存,但拷贝整个数据库是耗时的,并且备份间隔之间的活动如果没有通过其它手段跟踪就会丢失。
数据库备份的另一技术涉及在不同计算机器上保存同一数据库的拷贝。如果数据库之一变成不可用,则在另一计算设备上的数据库的另一拷贝仍可访问。这类故障备份能确保数据库的可用性。然而,实时同步不同机器中整个数据库的多个拷贝是一个复杂而昂贵的过程。
在本领域中仍未找找出一种能在没有不适当的复杂性或者没有数据的不必要丢失的情况下确保数据库可用性的一种有效方法。
发明内容
下面提供本发明的简单概要,以便给读者提供基本的理解。本概要不是本发明的详尽概观,并且它不标识本发明的关键/重要元素或描绘本发明的范围。其唯一目的是以简化形式提供某些概念作为稍后提供的更具体的描述的一个序言。
本示例提供用于数据库片段(fragment)克隆和管理的机制与技术。数据库对象,诸如表、行集合、索引或表或索引的分区,被分割成片段。注意,行集合被视为表中的行或者索引中的条目的集合。术语行和记录实际上被视为相同。因而,行集合也等价于记录集。每个片段被克隆以创建克隆片段,在实质上,它们在操作上是彼此相同的。克隆片段之一可被指定为主克隆片段,用于执行数据库操作,而一个或多个克隆片段可被指定为次克隆片段,其目的是用作主片段克隆的备份。对每个片段的更新是在主克隆片段上实现的,随后从主克隆片段传播到相应的次克隆片段。
克隆片段能进入离线状态,变得不能更新。这种离线的不可用的克隆片段被定义为过时的克隆片段,因为在这种克隆片段中的数据在事务上对于相对应的主克隆片段不再是最新的。当过时的克隆片段返回在线状态时,克隆片段用包括在主克隆片段中的数据来刷新。在被刷新的同时,克隆片段可继续被更新。在刷新过程完成后,克隆片段立即变成符合被指定为主克隆片段的候选要求。
许多伴随的特征将通过以下结合附图考虑的详细描述参考而变得更容易理解。
附图说明
本描述将通过结合附图阅读的下列详细描述而被更好地理解,其中:
图1示出由数据库***管理的数据库对象的示例克隆数据结构。
图2示出数据库对象的示例克隆片段。
图3示出更新数据库对象的克隆片段的示例操作。
图4示出刷新与数据库对象相关联的过时的克隆片段的示例操作。
图5示出标识克隆片段的示例数据结构。
图6示出标识数据库对象的克隆片段中的记录的示例数据结构。
图7示出更新次克隆索引片段与次克隆数据片段的示例过程。
图8示出当刷新过时的克隆片段时的状态过程。
图9是具有克隆的数据库片段的示例数据库***。
图10示出更新数据库对象的示例过程。
图11示出刷新数据库对象的过时的克隆片段的示例刷新过程。
图12示出修改克隆更新标识符(CUID)的示例过程。
图13示出指派根据图12所示的过程所分配的CUID值的示例过程。
图14示出CUID值的示例传播路径。
图15示出实现所述***与方法的示例计算机设备。
图16示出一示例过程,用于传播与应用更新于一记录,并将旧的CUID值从主克隆片段传播到所有次克隆数据片段,也传播到包括该记录的拷贝的所有克隆索引片段。
图17示出作为图11所示的刷新过程的一部分的示例过程,用于使过时的克隆成为当前的克隆。
相同的参考数字用于指定附图中相同的部分。
具体实施方式
下面结合附图提供的详细描述旨在作为对当前示例的描述,而不是要表示可构造或使用当前示例的唯一形式。本说明书阐述示例的功能以及一系列用于构造和操作示例的步骤。然而,相同或等价功能和序列可通过不同示例来完成。
尽管当前示例在此被描述和例示为在数据库片段克隆与管理***中实现,但所述***是作为示例而非限制来提供的。如本领域的技术人员将明了的,当前示例适合应用于各种不同类型的数据库片段克隆和管理***。
图1示出由数据库***管理的数据库对象105的示例克隆数据结构100。数据库是信息的集合,这些信息以使数据库中所需数据片能被快速地选择和/或更新的方式来组织。数据库对象可以是整个数据库,也可以是数据库的任意部分。例如,数据库对象105可以是整个表、索引、行的集合(例如行集合)等等。
数据库对象105可划分为分区111-113。通常,数据库对象105是为了便利或性能原因而被划分的。例如,数据库对象105可包括与多个年份相关联的数据。数据库对象105可划分成分区111-113,其中每个分区与一特定的年份相关联。数据库对象105的划分分区是一个可选的步骤,可以在实际的实现中实现,也可以不实现。
数据库对象105的每个分区111-113(或整个未划分分区的对象105)一般划分成片段,如片段121-124。片段121-124是由数据库***在操作的基础上划分的数据库对象105的各部分。例如,片段121-124可被指派给不同的计算设备,使得与数据库对象105相关联的查询可由并行工作的计算设备通过片段121-124来执行。
数据库对象105中的片段进而被克隆以创建克隆片段。如图1所示,每一逻辑地划分的片段121-124被克隆,以产生示例克隆片段131、140-146。通常,数据库对象(或数据库对象的一个分区)的片段是通过将这样的对象分离成行(对于表)或索引条目(对于索引)的分立集合来创建的。在表的键上或索引上进行散列是完成这种分离的一个基础。行的集合有时称为行集合或者记录的集合。克隆片段将结合图2更详细地讨论。简言之,当正确地更新时,与数据库对象105的一特定片段相关联的克隆片段在操作上是相同的,因此克隆片段可方便地由数据库***使用。克隆片段的使用使得一个特定片段的两个或多个拷贝能够随时使用,诸如保持高水平的数据可用性,加速查询和其它数据库操作,执行负载平衡,等等。例如,为保持高水平的数据可用性,至少一个克隆片段可用作另一用于数据库操作的克隆片段的备份。为加速搜索,多个操作上相同的克隆片段可同时用于数据库查询。为执行负载平衡,不同但操作上相同的克隆片段的拷贝可基于工作负载状况而被激活。
图2示出数据库对象的示例克隆片段131-139。如图所示,克隆片段131-139可视为三个组151-153。每组克隆片段与数据库对象的特定片段有关。在每组中的克隆片段在操作上彼此相同地被创建。因而,当被适当更新时,每一克隆片段131-139能用于可应用于相应片段151-153的数据库操作。
在一实施例中,克隆片段131-139可配置为提供高水平的数据可用性。在此实施例中,来自151-153的每一组克隆片段可被指定为数据库操作的主克隆片段。该组中的其它克隆片段是用作方便可用的备份的次克隆片段。在图2中,克隆片段131,135和139示为主克隆片段,而其余的克隆片段被指定为次克隆片段。
为提供高水平的数据可用性,组中每一克隆片段可包括在不同设备中,使得如果一个设备故障,另一设备中的次克隆片段能非常快地代替故障设备中的克隆片段作为主克隆片段。例如,克隆片段131-133可各自被包括在独立的设备中,使得如果包括主克隆片段131的设备发生故障,次克隆片段132-133的任一个可被指定为主克隆片段。
管理克隆片段的数据库***可在克隆片段上执行各种操作。这些操作一般使用标准的数据库操作来执行,诸如数据操纵语言(DML)语句或其它结构化查询语言(SQL)语句。更新和刷新克隆片段的示例操作将结合图3和4更详细地讨论。在一个示例实现中,操作可包括:
1.创建克隆片段
克隆片段可创建为与数据库中的正常表或索引行集合没有区别。
2.删除克隆片段
克隆能象数据库中的行集合一样被删除。
3.完全初始化克隆片段的数据
克隆片段能被彻底从零开始初始化,以包含一个被载入克隆片段的新行集合。
4.传播数据变化到克隆片段
主克隆片段的变化被传播到一个或多个次克隆片段。传播随着对主克隆片段的更新在同一事务上下文中发生。
5.刷新过时的克隆片段
当克隆片段已经离线或者尚未从主克隆片段接收到更新的事务传播时,它被定义为过时的克隆片段。过时的克隆片段也能描述为陈旧的克隆片段。使过时的克隆回到在事务上与主片段克隆一致的过程称为刷新。
6.读克隆片段
克隆片段可以为了数据检索(表访问)或为了查找(索引访问)而被读取,就象正常表或索引被读取和访问一样。在此实现中,用户工作负载只从主克隆片段读取。使用该限制以简化避免***中不必要的死锁的机制。然而,如果死锁不是问题,或者通过给定***中的其它手段能够避免,则该限制可放宽。
7.更新克隆片段
用户工作负载更新主克隆片段,并且数据库***将这些变化传播和应用于相应于同一事务内的该主片段的次克隆。传播变化指将实质上相同的被应用于主克隆的DML操作应用于一个次克隆。
图3示出更新数据库对象的克隆片段131-139的示例操作300。数据库更新可包括任何类型的修改,诸如添加、删除和改变数据。当与数据库对象相关联的变化被确定时,数据库对象中需要更新的片段被标识。相应于被标识的片段的主克隆片段被更新。如图所示,操作301-303是分别更新主克隆片段131、135和139的操作。在主克隆片段131、135和139已经更新后,这些更新随后被传播到相应的次克隆片段。在图3中,操作311-313是更新相应于经更新的主克隆片段的次克隆片段的操作。
通常,操作301-303和313-313是经由***,更新和删除的标准数据库操作来实现的,它们实现DML语句语义。为实现一致性,更新主克隆片段的操作与更新相应于该主克隆片段的次片段的操作可配置为一个原子的操作集合。
图4示出刷新与数据库对象相关联的过时的克隆片段133的示例操作400。克隆片段是过时的,如果它已经不能执行与相应于该过时片段的数据库对象相关联的被传播的更新操作。例如,克隆片段133可能已经因各种原因而不能更新,如设备故障,丢失连接,***更新等等。为了可用,必须通过刷新过程使次克隆片段133回到与主克隆片段131在事务上一致的状态。
当克隆片段133返回在线并且变得能够执行更新操作时,克隆片段133基于包括在当前的主克隆片段(它包括所有当前和过去的更新)中的数据被刷新。例如,在图4中,用包括在主克隆片段131中的数据刷新克隆片段133来执行克隆刷新操作413。如此,克隆片段133就用在克隆片段133不可用时发生的更新来刷新了。为了效率,克隆刷新操作413能经由SQL删除操作移除过时的行和SQL***操作添加从主片段拷贝的新行来实现。这样一个实现使刷新操作能够经由与数据库***中正常的SQL语句执行所使用的执行路径相似的执行路径来管理而不增加额外的过程。
主克隆片段131的更新操作401在数据库对象的更新影响到相应于主克隆片段131的对象的一部分时发生。更新随后被传播到与主克隆片段131相关联的次克隆片段。如图4所示,次克隆片段132由与主克隆片段131相关联的操作411更新。更新克隆片段的需求可在刷新该克隆片段的同时发生。例如,对克隆片段133的更新可在克隆刷新操作413正在执行的同时发生。更新操作412能在克隆刷新操作413正在执行的同时在克隆片段133上执行。通常,用户的更新操作412是比克隆刷新操作413优先级更高的数据库操作。更新操作412和克隆刷新操作413可用各种方法和相对于彼此的时序来实现。例如,当必须更新时,在克隆片段133上的更新操作413可在克隆刷新413继续之前完成。而且,克隆刷新413被设计为同时最小化由针对任何给定的更新操作412进行锁定而引起的任何延迟的频率和时段。克隆刷新通过作为一系列小的事务批处理的运行来完成,这些批处理占用并保持锁定很短的时间间隔。操作412只更新已经由操作413刷新的过时克隆中的行或条目,或者更新在过时克隆离线时主克隆中保持不变的过时克隆中的行或条目。即,防止操作412更新过时克隆中过时的行。不允许传播的更新操作在过时克隆中的不一致行看上去象是最新。该限制在其中整行用更新412来传播的实现中可放宽。然而,性能原因倾向于不鼓励为所有DML操作传播整行的操作412,无论是否只有少数列值有变化。克隆刷新操作413的责任是把新的最新的行引入过时的克隆。
图4所示的刷新过时克隆片段的操作400使数据库***能够将过时的克隆片段刷新回与相应的主片段在事务上一致,同时使用标准数据库操作保持该主克隆的在线状态。使用标准的数据库操作,诸如那些表示DML语句的操作,允许将克隆刷新作为数据库***上额外的但标准的SQL语句负载来管理,而无需特殊的过程。操作400还允许刷新过时的克隆片段而不必专有地锁定整个片段也不必延长刷新过程从而需要追上刷新过程期间的更新,因为那些更新在刷新操作413进行的同时被继续应用。重要的是,操作400还使过时的次克隆片段能够有效地被更新,从而快速变得能够符合成为主克隆片段的要求。
在一示例实现中,克隆刷新操作413包括刷新操作的多个小的批处理。使用小的刷新操作批处理,避免大时间段地阻塞并发用户工作负载。因而,刷新过程以增量方式执行,允许过程与用户工作负载同时在线存在。
图4所示的克隆刷新操作413的多个实例能针对任何数据库对象的相同或不同片段内的过时克隆片段同时运行。即,这样的刷新操作是彼此独立的。
图5示出标识克隆片段500的示例数据结构511-514。数据结构500用于标识相应于数据库对象的克隆片段。在此例中,数据结构标识相应于与数据库相关联的表的克隆片段500。如图5所示,克隆片段500的标识符可包括表标识符511,分区标识符512,片段标识符513和克隆标识符514。表标识符511标识克隆片段500相对应的数据库对象(在此情形下为表)。数据库对象可为了便利或性能原因而被划分成分区以分离数据。分区标识符512标识克隆片段500相对应的分区。
管理数据库对象的数据库***被配置为自动地将数据库对象分离到片段中并克隆这些片段。片段标识符513标识克隆片段500相对应的数据库对象的特定片段。克隆标识符514标识与数据库对象的特定片段相关联的多个克隆片段中的克隆片段500。
图6示出标识数据库对象的克隆片段中的记录600的示例性数据结构611-612。克隆片段可包括数据库的记录(或索引条目)。例如,克隆片段可包括具体化为与数据库相关联的表的一部分中的行的记录。记录600中的数据结构611-612使克隆片段中的记录600和该记录的更新状态能够被标识。
如图6所示,记录600可包括克隆记录标识符611和克隆更新标识符612。克隆记录标识符611唯一地标识相应的表或索引内的记录600。索引记录中的克隆记录标识符用来自相应的克隆数据片段的更新来传播。用户定义的唯一键可用作克隆记录标识符或者可添加***定义的唯一键(或补充到用户定义的键),使得复合键足以唯一地用作克隆记录标识符。例如,片段标识符可为了提供附加的唯一性而添加到键。克隆更新标识符标识记录600的更新状态。在此示例实现中,克隆记录标识符611应当在给定表的上下文中是唯一的。随着时间过去对于一个给定的数据库对象,克隆更新标识符612仅必须相对于具有同一克隆记录标识符611的其它记录的更新状态,唯一地标识一个记录的更新状态。
在一实施例中,数据库***包括主克隆片段和次克隆片段,且克隆片段包括行。克隆记录标识符611和克隆更新标识符612可作为列包括在克隆片段的行中。克隆记录标识符611和克隆更新标识符612的列可包括在次克隆片段中,并且在次克隆片段在事务上是一致的时候,这些列可包括与它们在主克隆片段上所包括的相同的值。因而,克隆记录标识符611允许在主与次克隆片段之间映射行,而克隆更新标识符612允许验证这些行是否一致。
过时的克隆片段的刷新过程使用克隆记录标识符(CRID)和克隆更新标识符(CUID)来确定在克隆片段中的特定记录是否应当刷新。例如,过时的克隆片段中的记录可包括:
CRID=x和CUID=y
与过时的克隆片段相关联的主克隆片段中相应的记录可包括:
CRID=x和CUID=z
刷新过程使用CRID来标识过时的克隆片段中的每一记录并且在主克隆片段中定位相应的记录,如果它存在的话。刷新过程随后将过时的克隆片段中的每一这样的记录与主克隆片段中相应的记录比较,如果它存在的话,来确定过时的克隆片段中的记录是否应当被更新。
数据库对象的片段可以是任何类型的片段,诸如数据片段,索引片段,等等。对于索引片段,索引中的每一行通过将它的数据片段标识符作为索引键的一部分来存储以指明该行来自何处。索引本身不必知道基表片段的克隆中的哪一个是当前的主克隆。因为对于给定的片段存在一个主克隆片段,因此索引记录为访问目的可以在任何给定时间映射到特定的片段。因而,索引片段可包括分离的次行集合(或索引条目)的共存集合,它们指向表的不同片段。只要每个这样的次行集合与同一索引片段中的其它行集合分开来处理,则上述假设和技术继续有效。对于实现,锁定相应于任何特定基表片段的索引片段中的行,应当不导致对索引片段中其它行(它们不相应于该基表片段)的任何锁定。
索引片段可以与数据片段相似地克隆。为了更新传播,克隆索引片段作为基表片段的相同集合上的附加索引来处理。即,对所有克隆索引片段的更新直接从其上建立克隆索引片段的基表的主克隆数据片段传播。尽管有可能将更新从一个索引片段传播到另一个,但这个过程可引入一个附加的潜伏步骤。如果相应于给定数据片段中记录的给定索引片段中的索引条目集合作为次行集合来处理,则相应的主行集合实质上与基表片段相同。为了更新传播,索引片段的克隆中的每个次行集合因而独立于该同一克隆内的所有其它次行集合。
图7示出更新克隆索引片段和克隆数据片段的示例过程。如上所述,数据片段的最新(或当前)的次克隆片段实质上与给定数据片段的主克隆片段相同。同样,索引片段的最新次克隆片段实质上与该索引片段的主克隆片段相同。允许克隆索引片段包含指向在多于一个数据片段中的记录的索引条目。因此,克隆索引片段可从多于一个克隆数据片段接收被传播的更新。
图7中的示例示出索引片段I1,它包含引用两个不同数据片段D1和D2中的记录的索引条目。在此例中,主克隆索引片段I1.a 705和次克隆索引片段I1.b 706都直接从主克隆数据片段D1.a 702和主克隆数据片段D2.a 703两者接收被传播的更新。
数据片段与索引片段之间的映射代表一种被称为物理数据库设计的标准数据库操作。对于表的任何给定的被索引列,列值可基于索引的划分分区与划分片段定义来离散地映射到一个或多个索引片段。表和索引的划分分区定义可指定将记录分成集合的任何传统的数据库方法,例如,按照值的范围,值的散列或者经由循环指派(round-robin assignments)。***定义的划分片段定义是经由在表或索引的键上进行散列来完成的。然而,如果基于散列的划分片段以非常不成比例的数据偏斜方式来用行填充片段,则可以使用将行循环指派给片段的方法。
当克隆索引片段变得过时且需要刷新时,有两种可能的方法来完成刷新。如果主克隆索引片段存在,则过时的次克隆索引片段可直接从该主克隆索引片段来刷新。或者,过时的次克隆索引片段可直接从被索引的表的主克隆数据片段集合来刷新。在后一情形中,只有在主克隆数据片段中的那些记录被用于其键值映射到正被刷新的索引片段的刷新。
在一示例实现中,克隆更新标识符(CUID)值可在每个表的基础上保存。即,对于更新给定主克隆片段的DML语句,从专用于该片段的表的元数据中读取CUID值。由该语句更新的记录被指派该CUID值。当对这些记录的更新传播到次克隆片段时,所指派的新CUID也被传播。
在此示例实现中,随着时间过去,CUID值对于给定表是唯一的。当前的CUID值在描述给定表的元数据中事务上是持久的。
在CUID值命中从最大值回绕到最小值的点的时候,可使用各种技术让CUID值复位到一个一致的最小值。给定CUID值的字节范围(例如约6个字节),这种情形将在历史的时间尺度上发生。一种用于复位CUID值的简单技术是在表上加专用锁,并复位该表的主克隆片段中所有记录的CUID值为最小CUID值。然后,正常的更新传播机制将有效地复位次克隆片段中的CUID。
表的CUID值每次在表的片段变成离线时增加。该实现将在下面结合图12讨论。
其它CUID指派策略是可能的,但各自具有影响克隆刷新的基本技术的可能。例如,事务ID可用作CUID值的基础,但要求某种程度不利的克隆刷新技术,以便确保更新传播和正确地克隆刷新交互。明确地,在WaitForPropagation(等待传播)步骤(下面描述)中,基本克隆刷新技术将不得不等待所有当前活动的事务完成,而不是只等待所有当前DML语句完成。
一般而言,如果管理CUID值的技术能够满足下列要求,则可以实现:
a)对于在片段内使用的给定CRID值,在事务上一致的次克隆片段中由该CRID值标识的所有记录必须具有与在主克隆片段中由该CRID值标识的记录中的CUID值相同的CUID值。
b)对于给定的片段,如果CRID存在于过时的次克隆片段(在刷新前)中,也存在于主克隆片段中,则CUID仅当该行在主克隆片段中自次克隆片段变成过时起未更新过时才相同。
下面示出更新克隆片段的示例DML语句。示例DML语句包括:Sales.2004.1.a(克隆记录标识符(CRID):5和3)中使用CUID值为3更新的两个记录。
示例Sales.2004.1.a主克隆片段示于表1。
    CRID     CUID     其它列
    1     2     .....
    5     3     .....
    7     1     .....
    3     3     .....
    8     1     .....
表1.主克隆片段Sales.2004.1.a
在主克隆片段Sales.2004.1.a更新后,这些更新被传播并应用到次克隆片段Sales.2004.1.b,如表2所示。
Figure S2006800296061D00101
表2.主克隆片段Sales.2004.1.b
在给定时刻,可用片段具有一个主克隆片段(克隆刷新的潜在源)和N个次克隆(刷新的潜在目标)。其行在事务上与主克隆片段中相应行不一致的次克隆片段是陈旧或过时的克隆片段。过时克隆片段内的行(记录或索引条目)可以处于以下示例状态之一。术语“主行”指主克隆片段中的行。过时的克隆片段内的行可以是:
1.一致
主行在过时的次克隆片段离线时没有变化。或者,刷新过程已经更新了过时的次克隆片段中的行,它与相应的主行一致。次克隆片段中一致的行相应于主克隆片段中具有相同CRID和CUID值的行。
2.不一致
主行在过时的次克隆片段离线时被更新。在过时的次克隆片段中不一致的行相应于主克隆片段中具有相同CRID值的行,但具有不同的CUID值。
3.缺少
在过时的次克隆片段离线时,创建了新主行。过时的次克隆片段中缺少的行描述这样的情形:存在具有一CRID值的主行,在过时的次克隆片段中无具有该相同CRID值的相应行。
4.额外
在过时的次克隆片段离线时,主行被删除。过时的次克隆片段中额外的行描述这样的情形:过时的次克隆片段中存在具有一CRID值的行,主克隆片段中无具有该相同CRID值的相应行。
在刷新技术的早期阶段,过时克隆的不一致行的CRID捕捉到一个临时文件(StaleCloneCRIDs(过时克隆CRID))中。该临时文件具有一个列Stale_CRID,其值标识需要刷新的记录,例如不一致、缺少或额外的记录。在临时文件(StaleCloneCRIDs)的一实现中,可添加一个附加的列Batch_ID(批处理ID),并用一个值初始化它,该值简化了以许多小的递增的批处理操作方式访问StaleCloneCRIDs内分立的行集合的过程。
图8示出在刷新过时克隆片段时的状态过程。如图8所示,次克隆片段805从离线状态进行到预刷新(PreRefresh)状态。当过时克隆在预刷新状态时,可为了优化刷新操作的性能而对过时克隆应用一些操作。接着,次克隆片段805视为在线并且被设置在刷新中(InRefresh)状态。过时克隆片段在被刷新时保持处于刷新中状态。在此状态中,次克隆片段805可按从主克隆片段803传播的变化来更新。
在刷新过程已经执行后,次克隆片段805进入当前状态。一旦次克隆片段805进入当前状态,它就符合变成主克隆片段的要求了。
图11示出刷新数据库对象的过时克隆片段的示例刷新过程1100。
0.StaleCloneOnline(过时克隆在线)1150:
在框1102,当过时克隆是克隆刷新的目标时(例如,当它在离线之后变成可由***访问时),将它设置在预刷新状态。接着,在框1104,在克隆片段处于预刷新状态时,执行预扫描(pre-pass)优化。这样的优化被设计用于优化刷新过程1100的其余部分的后续性能。
1.EnableUpdatePropagation(启用更新传播)1160:
在框1106,将过时克隆片段标记为正处于刷新中状态。然后在框1108,启用从主克隆片段到过时的克隆片段的更新传播。将所传播的更新应用于过时的克隆片段可以是选择性的。例如,所传播更新的应用仅在那些记录已经被刷新或者可以确定为不需要刷新的时候执行。即,所传播的更新仅应用于其CUID值对于给定的CUID值符合主克隆片段中相应记录的CUID值的记录。在另一示例实现中,如果整行值由更新传播,则更新可以在克隆片段正在被刷新时被传播并应用于过时克隆片段的任何记录。
2.WaitForPropagation(等待传播)1110:
在下一框1110,刷新过程1100等待直到主克隆片段上的所有活动的DML语句已经开始向过时克隆片段传播更新为止。(或者使用一个等价的机制来确保对于主克隆片段的所有后续DML被一致地传播到过时的克隆片段。)框1110可以通过等待所有当前执行的DML语句结束来完成,由此保证任何新激活的DML语句传播更新至所有在线克隆片段,包括处于刷新中状态的过时克隆片段。
3.BuildStaleCloneCRIDs(建立过时克隆CRID)1112:
在框1112,在读确认(ReadCommitted)模式中,创建并初始化StaleCloneCRIDs临时表。保证StaleCloneCRIDs覆盖过时克隆片段中所有非最新的行(不一致,缺少和额外的行),但由于运行在读确认隔离模式中,StaleCloneCRIDs偶然会包括实际上一致的CRID行。在填充StaleCloneCRIDs临时表的一实现中,可在主克隆片段和过时克隆片段的相应克隆记录标识符(CRID)列上使用SQL外连接操作,其中相应的克隆更新标识符(CUID)列值不匹配或者为空(null)。下面的伪代码提供一个这样的外连接的示例。注意在此例中,将附加的Batch_Id列添加到StaleCloneCRIDs表,以提供一个可用于创建给定大小的刷新批处理的示例性基础。
SELECT
    (case when(p.crid不为空)then p.crid else c.crid end)as crid,
    IDENTITY(int,1,1)AS Batch_Id
into
    StaleCloneCRIDs
FROM
    (选择来自primary_fragment_clone(主片段克隆)的crid、cuid)as p
    FULL OUTER JOIN
    (选择来自stale_fragment_clone(过时片段克隆)的crid、cuid)as c
    ON(p.crid=c.crid)
where
    p.cuid<>c.cuid OR
    (p.crid为空)OR
    (c.crid为空)
4.MakeCurrent(使成为当前)1170:
图17示出了使过时克隆成为当前克隆的示例过程1170。过程1170是图11所示的示例刷新过程1100的一部分。
在框1114,初始化StaleCloneCRIDs临时表中Stale_CRIDs(过时CRID)的第一个小的批处理(BatchOfStaleCRIDs(过时CRID的批处理))。在框1114的一示例中,BatchOfStaleCRIDs定义为StaleCloneCRIDs临时表中其Batch_Id列值在参数值start_Id与end_Id之间的行的CRID。初始的实际start_Id value被设置为StaleCloneCRIDs临时表中最小的Batch_Id列值(例如,由IDENTITY(身份)功能用种子值1来初始化的Batch_Id)。初始的实际的end_Id值随后被设置为所需的BatchSize(批处理大小)的值。BatchSize值可以变化以完成不同的刷新目标。较小的BatchSize值能提供与正在进行的用户工作负载的较大并发性。较大的BatchSize值有可能放弃较好刷新性能。在判决框1116,进行检查以确定BatchOfStaleCRIDs是否为空。如果BatchOfStaleCRIDs为空,则刷新过程1100进行到框1118,并将被刷新的克隆片段标记为正在当前(Current)状态。处于当前状态的次克隆片段符合成为主克隆片段的要求。然后,过程1100在框1120退出。
如果在判决框1116,发现BatchOfStaleCRIDs不为空,则:
a.在框1122,在重复读(Repeated Read)模式中开始新的事务。
b.在框1124,在主克隆片段中由BatchOfStaleCRIDs标识的行上设置读锁。该步骤不是功能所要求的,但对于避免与所传播的更新发生可能的死锁的目的是重要的。
c.在框1126,在过时的克隆片段中由BatchOfStaleCRIDs中的CRID所标识的行被删除。下列伪代码描述从过时的克隆片段中删除陈旧的行的一个示例实现。start_Id和end_Id的实际值是早先在MakeCurrent过程1170(在框1114或框1132)中所设置的值。
delete from stale_fragment_clone
where exists (select*from  StaleCloneCRIDs as s
      where stale_fragment_clone.crid=s.crid and
      (s.Batch_Id在start_Id和end_Id之间))
d.在框1128,主克隆中由BatchOfStaleCRIDs标识的行被***到过时的克隆片段中。下面是从主片段将新行***过时的克隆片段的一个示例实现的示例伪代码描述。start_Id和end_Id的实际值是早先在MakeCurrent过程1170(在框1114或框1132)中设置的值。
insert into stale_fragment_clone
select*from primary_fragment_clone as p
where exists
     (select*from StaleCloneCRIDs as s
     where p.crid=s.crid and
     (s.Batcd_Id在start_Id和end_Id之间))
e.在框1130,事务被确认。
f.在框1132,来自StaleCloneCRIDs临时表的下一批CRID被标识为下一个BatchOfStaleCRIDs。start_Id和end_Id所使用的实际值各自增加所需BatchSize值。
g.刷新过程1100随后回到框1116。
如果在BatchOfStaleC则Ds的执行过程中发生错误,则事务中止并且刷新过程1100退出。
如果刷新过程1100没有成功结束,则过时的克隆片段移到预刷新状态(或者移到离线状态,如果对过时克隆片段的访问彻底丢失的话)。
示例的克隆片段刷新技术进行连续的正向过程,同时经由小而短的事务来最小化与现有工作负载的冲突。上述克隆刷新技术也可应用于克隆索引片段,就如应用于克隆数据片段一样。在一示例实现中,过时的次克隆索引片段可以从相应的主克隆索引片段来刷新。
如果基表片段的所有克隆数据片段变成离线,则每一索引片段中相应于该片段的行也实际上是离线的。当基表主克隆片段回到离线时,刷新技术在任何过时的表克隆数据片段上操作,也在任何过时的克隆索引片段上操作。在这点上,更新操作被传播到正被刷新的过时的次克隆索引与数据片段。同样,如果索引片段的所有克隆片段变成离线,则使用该索引片段的标识符访问路径将是离线的。过时的克隆索引片段在它再次变成可访问时经由克隆刷新而恢复。在一示例实现中,过时的克隆索引片段直接使用基表片段的行来刷新。然而,过时的次克隆索引片段也可从相应的主克隆索引片段来刷新。
上述数据库片段克隆和管理机制的性能可以通过下面讨论的示例优化来提高:
a)克隆刷新的预刷新步骤
在运行克隆刷新技术之前,可以在完全处于读确认模式的情况下运行相同的刷新技术(图11针对过程1100所述)。(例如,当在预刷新步骤期间运行时,过程1100的框1122在读确认模式中开始事务。)在缺少许多并行的更新时,该预扫描将清除克隆片段中的绝大多数行,留下少量不一致的行,并且有可能再引入少量不一致的行。这个思想是在完成该预扫描之后,在可重复读模式中的严格的刷新阶段(图17中的过程1170)将运行得快得多。较少的行将被锁定(由于较少的批处理)一个总的较短的时间段,因而增加了***的并发性。
当主克隆片段具有多个需要刷新的次克隆片段时,在所有次克隆片段上的刷新扫描(pass)可以彼此独立地运行。并行的程度可以基于克隆片段多快地回到在线来控制,并针对强加于***上的并发性命中的多少来折衷。
b)对于次克隆片段的故障的事务弹性
当对次克隆片段的传播的更新因***原因而失败时,克隆片段将被标记为离线。正在进行的事务的效果被直接保存在主克隆片段的行中。对于保存先前事务的效果的目的,不需要附加的未决工作队列。为便于错误处理,其更新正被传播的语句可被重新运行(roll back)。但如果对一个故障的次克隆片段的更新传播的失败对于语句的执行没有其它副作用,则这是没必要的。该语句的更新将已被应用于并保存在主克隆片段中。
c)对于主克隆片段的故障的事务弹性
当主克隆片段故障时,如果有一个在线且一致的次克隆片段可被立即指定为新主克隆片段,则访问该克隆片段的用户事务不必中止。然而,任何当前访问该发生故障的主克隆片段的语句将被重新运行。
d)克隆刷新弹性
如果对次克隆片段中的一个记录的克隆刷新更新因***原因而失败,则克隆刷新通过可从开始重启,重试当前活动的MakeCurrent批处理或者重做StaleCloneCRIDs的整个MakeCurrent处理过程。
图9是带有克隆的数据库片段的示例数据库***900。数据库***900一般包括多个计算设备911-914,用于分配工作负载和为访问数据库对象以及负载平衡提供可靠的可访问性。在示例数据库中的对象被划分成克隆片段,它们在计算设备911-914之间划分。如此,计算设备911-914能并发地在示例数据库的对象的不同部分上执行操作。计算设备911-914可用任何类型的数据库***来配置,如SQL服务器。
如图所示,计算设备911-914可包括主克隆片段923-926和次克隆片段934-937。在一实施例中,主克隆片段923-926由计算设备911-914用于执行有关生产性的任务,如添加,删除或修改数据库对象、查询、报表等等。次克隆片段934-937用作主克隆片段923-926的备份。
通常,在每一计算设备中的主克隆片段不相应于该设备中的次克隆片段。如果计算设备911-914之一发生故障,则另一计算设备能使用相应于由该故障设备管理的主片段的次克隆片段来接管操作。如此,数据库***900能确保数据库对象的片段保持可用,只要至少该片段的至少一个克隆保持可访问即可。
在另一实施例中,计算设备911-914可包括重叠的主克隆片段。如此,多个计算设备可在数据库对象的相同部分上执行操作,如查询。
图10示出更新数据库对象的示例过程1000。数据库对象可包括整个数据库的数据或数据库的一部分,如表,索引等等。更新可涉及一或多个片段的修改。在框1001,数据库对象的受更新影响的片段被标识,并且它们形成名为SetOfFragments(片段的集合)的集合,即用于过程1000的一个本地数据结构。在此集合中的每一元素最初被标记为未处理(这不改变实际的片段,只改变本地数据结构中的元素)。过程1000继续至判决框1002,其中作出集合SetOfFragments中是否仍存在未处理的元素的判断。如果否,则过程1000继续至终止框1012,其中过程终止。
返回到判决框1002,如果集合SetOfFragments中仍有未处理的元素,则过程1000继续至框1003,其中未处理的元素是从集合SetOfFragments获得的,并且这代表应当被更新的下一个片段。在框1004,确定相应的主克隆片段,并且主克隆片段内需要更新的记录的集合被标识,形成名为SetOfRecords(记录的集合)的集合,即用于过程1000的一个本地数据结构。在该集合中的每一元素最初被标记为未处理(这不改变实际的记录,只改变本地数据结构中的元素)。在判决框1005,作出集合SetOfRecords中是否仍存在任何未处理的元素的判断。如果否,过程100继续至框1006,其中集合SetOfFragments中的当前元素被标记为已处理(这不改变实际的片段,只改变本地数据结构中的元素)。过程1000随后回到判决框1002。
返回到判决框1005,如果在集合SetOfRecords中仍存在未处理的元素,则过程1000继续至框1007,其中从集合SetOfRecords获得一个未处理的元素。该元素代表应当更新的下一个记录。在框1008,获得该记录的CUID。(CUID值的维护与指派在本文其它地方参考图12和13进一步描述。)
过程1000继续至框1009,其中用新值以及新CUID更新该记录。在框1010,旧的CUID以及被更新的记录(包含新CUID)被传播至所有次克隆数据片段,以及传播至包含该记录的拷贝的所有主和次克隆索引片段。图16更详细地描述该框。
在更新已被传播和应用之后,过程1000继续至框1011,其中集合SetOfRecords中的当前元素被标记为已处理(这不改变实际记录,只改变本地数据结构中的元素)。过程1000随后回到判决框1005。
图12示出修改克隆更新标识符(CUID)的示例过程1200。过程1200可针对每一数据库对象实现,如数据库的表。在框1203,过程1200等待与表相关联的克隆片段的配置的变化。在判决框1205,作出一个克隆片段已经变成不可用的判断。如果克隆片段全部可用,则过程1200返回至框1203的等待状态。
返回到判决框1205,如果一个克隆片段已经变成不可用,则过程1200移到框1207,其中表的CUID值被增加。在框1209,表的新CUID值在事务上被持久化。
图13示出一个示例过程1300,用于指派根据图12所示的过程1200分配的CUID值。数据库***可被配置为执行过程1300用于在数据库上操作的语句。在框1302,过程准备对数据库执行一个新的语句。在判决框1304,作出新语句是否为DML语句的判断,它一般包括诸如在数据库中***,删除和修改项的操作。如果语句不是DML语句,则过程1300前进到框1320,其中对数据库执行非DML语句。然后,过程回到框1302。
返回判决框1304,如果语句是DML语句,则过程1300在框1306继续,其中读取正被更新的数据库表的CUID值。在框1308,将该CUID值与该DML语句相关联。在框1310,CUID值存储到由DML语句更新的每一主克隆片段的每一行中。在框1312,CUID值被存储到受DML语句的传播的更新影响的克隆片段的每一行或索引条目中。CUID值可通过对克隆数据和索引片段的更新来传播。CUID值的示例传播路径将结合图14讨论。当CUID值已经被传播时,过程1300返回至框1302。
图14示出CUID值的示例传播路径。在图14中,主克隆数据片段1403已经实现了DML语句中所包括的更新。如上所述,与DML语句相关联的CUID值存储在由主克隆数据片段1403中由DML语句更新的每一行中。主克隆数据片段1403可通过路径1411连同对次克隆数据片段1405的更新传播CUID值。具体地,与DML语句相关联的CUID值被指派给受更新传播影响的每一行。在一实现中,CUID值从主克隆数据片段分别通过路径1412和1413传播到主克隆索引片段1407和次克隆索引片段1409。在另一实现中,代替用路径1413传播CUID值,CUID值从主克隆索引片段1407通过路径1415传播至次克隆索引片段1409。
图16示出一个示例过程1600,用于将经更新的记录和旧的CUID值从主克隆片段传播至所有次克隆数据片段,以及传播至包含该记录的拷贝的所有克隆索引片段。这些接收传播的更新的克隆片段可以处于当前状态,或者处于刷新中状态。过程1600一般形成在本文另一部分描述的一个较大更新过程的一个步骤。在框1601,包含该记录的拷贝的所有次克隆数据片段以及克隆索引片段(包括主或次两者)被标识。这些克隆片段形成名为SetOfSecondaries(次(克隆片段)的集合)的集合,即用于过程1600的一个本地数据结构。在该集合中的每一元素最初被标记为未处理(这不改变实际的克隆片段,只改变本地数据结构中的元素)。过程1600继续至判决框1602,其中作出在集合SetOfSecondaries中是否仍有任何未处理的元素的判断。如果否,则过程1600继续到终止框1603,其中过程终止,并且包括过程1600为一个步骤的任何较大过程,随后继续至该较大过程的下一步骤。
返回到判决框1602,如果在集合SetOfSecondaries中仍有未处理的元素,则过程1600继续至框1604,其中从集合SetOfSecondaries获得一个未处理的元素。该元素代表应当被更新的下一个次克隆片段。该次克隆片段可以是次克隆数据片段,主克隆索引片段或者次克隆索引片段。在判决框1605,作出在次克隆片段中是否存在具有与主克隆片段的记录相同的CRID的记录并且其CUID要符合主克隆片段的旧的CUID值的判断。如果是,则过程1600继续至框1606,其中用新值和新CUID更新该记录。过程1600随后继续至框1609。
返回到判决框1605,如果没有找到匹配的记录,则过程1600继续至判决框1607,其中作出次克隆片段是否处于刷新中状态的判断。如果否,则在框1608,次克隆片段被标记为离线,因为它不再与主克隆片段一致。过程1600随后继续至框1609。
返回到判决框1607,如果次克隆片段处于刷新中状态,则过程1600继续至框1609,其中集合SetOfSecondaries中的当前元素被标记为已处理(这不改变实际的克隆片段,只改变本地数据结构中的元素)。过程1600随后回到判决框1602。
图15示出实现所述***和方法的示例计算机设备1500。在其大多数基本配置中,计算设备1500一般包括至少一个中央处理单元(CPU)1505和存储器1510。
取决于计算设备的确切配置和类型,存储器1510可以是易失性(如RAM),非易失性(如ROM,闪存等)或两者的组合。另外,计算设备1500也可具有另外的特征/功能。例如,计算设备1500可包括多个CPU。所述方法可用任何方式由计算设备1500中的任何处理单元来执行。例如,所述过程可由多个CPU并行地执行。
计算设备1500也可包括另外的存储(可移动和/或不可移动),包括但不限于羊绒或光盘或带。这样的另外的存储在图15中由存储1515例示。计算机存储介质包括用存储信息如计算机可读指令、数据结构、程序模块或其它数据的任何方法或技术实现的易失性与非易失性、可移动和不可移动的介质。存储器1510和存储1515都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM,ROM,EEPROM,闪存或其它存储器技术,CD-ROM,数字多功能盘(DVD)或其它光存储,磁带盒,磁带,磁盘存储或其它磁存储设备,或可用于存储信息并可由计算设备1500访问的任何其它介质。任何这样的计算机存储介质可以是计算设备1500的一部分。
计算设备1500也可包含允许该设备与其它设备通信的通信设备1540。通信设备1540是通信介质的一个示例。通信介质一般体现为在经调制的数据信号如载波或其它传输机制中的计算机可读指令、数据结构、程序模块或其它数据,并包括任何信息传递介质。术语“已调制的数据信号”指一种信号,其一或多个特征以将信息编码在该信号中的方式被设置或改变。作为示例,且非限制,通信介质包括有线的介质,如有线网络或直接线接连接,以及无线介质,如声音、RF、红外以及其它无线介质。在此使用的术语计算机可读介质或设备可读介质包括计算机存储介质和通信介质两者。所述方法可用任何形式如数据、计算机可执行指令等编码在任何计算机可读介质中。
计算设备1500也可具有输入设备1535如键盘、鼠标、笔、语音输入设备、触摸输入设备等。输出设备1530如显示器、扬声器、打印机等也可包括。所有这些设备在本领域是公知的并且不必详细讨论。
本领域的技术人员将认识到,用于存储程序指令的存储设备可分布在网络上。例如,远程计算机可存储描述为软件的过程的示例。本地或终端计算机可访问远程计算机并下软件的一部分或全部来运行程序。或者,本地计算机可按需下载软件的片断,或者在本地终端处执行一些软件指令而在远程计算机(或计算机网络)执行一些软件指令。本领域的技术人员将认识到,通过利用本领域技术人员已知的常规技术,软件指令的全部或一部分可由专用电路如DSP、可编程逻辑阵列等来携带。

Claims (26)

1.一种用于管理克隆的数据库片断的方法,包括:
标识与数据库对象相关联的主克隆片段,所述主克隆片段被选择用于与所述数据库对象相关联的数据库操作;
标识与所述主克隆片段相应的次克隆片段,所述次克隆片段相对于所述主克隆片段是过时的;以及
通过执行数据库操作来用所述主克隆片段中的数据刷新所述过时的次克隆片段;
其中,所述方法还包括:
响应于在更新期间所述过时的次克隆片段离线,保存所述主克隆片段中的更新;以及
在所述过时的次克隆片段返回到在线时,用所述保存的更新来刷新所述过时的次克隆片段。
2.如权利要求1所述的方法,其特征在于,所述用于刷新所述过时的次克隆片段的数据库操作包括增量地刷新所述过时的次克隆片段的操作的批处理。
3.如权利要求2所述的方法,其特征在于,所述用于刷新所述过时的次克隆片段的操作的批处理是结构化查询语言(SQL)操作。
4.如权利要求1所述的方法,其特征在于,还包括响应于在所述主克隆片段上执行的更新,在所述过时的次克隆片段正被刷新的同时更新所述次克隆片段。
5.如权利要求4所述的方法,其特征在于,所述更新所述次克隆片段的步骤还包括更新所述过时的次克隆片段的最新行,但不更新所述过时的次克隆片段的任何非最新行。
6.如权利要求1所述的方法,其特征在于,所述用所述保存的更新来刷新所述过时的次克隆片段的步骤还包括:
标识与包括在所述主克隆片段中的第一记录相关联的第一更新标识符;
标识与所述过时的次克隆片段中相应于所述第一记录的第二记录相关联的第二更新标识符;以及
至少部分基于对所述第一更新标识符与所述第二更新标识符的比较,确定具有相同克隆记录标识符的第一记录和第二记录是否一致。
7.如权利要求6所述的方法,其特征在于,所述用所述保存的更新来刷新所述过时的次克隆片段的步骤还包括如果所述第一和第二记录被确定为不一致,
用所述第一记录中的数据刷新所述第二记录;以及
将所述第一更新标识符的值指派给所述第二更新标识符。
8.如权利要求7所述的方法,其特征在于,还包括对包括在所述次克隆片段中的每一记录执行所述确定所述第一和第二记录为不一致、用所述第一记录中的数据刷新所述第二记录和将所述第一更新标识符的值指派给所述第二更新标识符的步骤。
9.如权利要求1所述的方法,其特征在于,所述用所述保存的更新来刷新所述过时的次克隆片段的步骤还包括在读确认模式中在所述次克隆片段上运行预刷新操作。
10.如权利要求9所述的方法,其特征在于,所述预刷新操作在相应于所述主克隆片段的其它次克隆片段上并行地运行。
11.如权利要求1所述的方法,其特征在于,所述刷新所述次克隆片段的数据库操作包括在所述次克隆片段中***、删除和更新记录的数据操纵语言(DML)操作。
12.如权利要求1所述的方法,其特征在于,所述主克隆片段是克隆数据片段或克隆索引片段中的至少之一。
13.如权利要求1所述的方法,其特征在于,所述过时的次克隆片段是克隆索引片段,并且所述过时的次克隆片段是由多个克隆数据片段刷新的,每一所述克隆数据片段与所述过时的次克隆片段中至少一个条目相关联。
14.一种用于为数据库提供克隆片段的方法,包括:
标识数据库对象的片段;
从所述标识的片段生成相应的克隆片段;
将所述克隆片段分配给一组计算设备;以及
将至少一个所述克隆片段指定为主克隆片段,以被配置为用于与所述数据库对象相关联的操作,而将其它相应的克隆片段指定为次克隆片段;
确定对所述数据库对象的所述被标识的片段的更新;
对所述主克隆片段执行所述更新;以及
将所述更新传播并应用于其它相应的次克隆片段;
其中,所述方法还包括:
响应于在更新期间所述次克隆片段离线,保存所述主克隆片段中的更新;以及
在所述次克隆片段返回到在线时,用所述保存的更新来刷新所述次克隆片段。
15.如权利要求14所述的方法,其特征在于,还包括:
将所述次克隆片段之一标识为不包括所述更新的过时的次克隆片段;以及
用所述主克隆片段中的数据刷新所述被标识的过时的次克隆片段。
16.如权利要求15所述的方法,其特征在于,所述用所述保存的更新来刷新所述次克隆片段的步骤是使用标准SQL数据库操作执行的。
17.如权利要求15所述的方法,其特征在于,还包括:
确定对所述被标识的片段的另一更新;
在所述主克隆片段上执行所述另一更新;以及
仅在所述另一更新之前所述过时的次克隆片段中的记录对于所述主克隆片段中的相应记录为最新的情况下,选择性地在所述过时的次克隆片段上执行所述另一更新。
18.如权利要求17所述的方法,其特征在于,所述选择性地执行步骤包括在所述已被刷新的过时的次克隆片段的一部分上执行所述另一更新。
19.如权利要求18所述的方法,其特征在于,还包括:
响应于确定所述过时的次克隆片段已经刷新,立即将所述被刷新的次克隆片段指定为符合成为主克隆片段的要求。
20.如权利要求15所述的方法,其特征在于,所述用所述保存的更新来刷新所述次克隆片段的步骤被实现为工作负载,以将少量记录锁定一段短时间间隔并与其它用户工作负载并发地运行。
21.如权利要求14所述的方法,其特征在于,还包括:
将多个所述次克隆片段标识为不包括所述更新的过时的次克隆片段;以及
用所述主克隆片段中的数据并行地刷新所述被标识的多个过时的次克隆片段。
22.如权利要求21所述的方法,其特征在于,所述多个过时的次克隆片段相应于共同的主克隆片段、不同的主克隆片段或不同的数据库对象中的至少一个。
23.如权利要求15所述的方法,其特征在于,所述克隆片段被生成为对数据库操作实质上相同。
24.一种用于交互计算设备的***中的计算设备的方法,所述计算设备包括与数据库对象相关联的数据,所述方法包括下列步骤:
标识所述数据库对象的一部分用于更新;
使用第一数据库操作更新与所述数据库对象的所述被标识部分相关联的主克隆片段;
标识与所述主克隆片段相关联的次克隆片段;以及
至少部分地基于包括在所述主克隆片段中的数据,使用与所述第一数据库操作相关联的第二数据库操作更新所述次克隆片段;
其中,所述方法还包括下述步骤:
响应于在更新期间所述次克隆片段离线,保存所述主克隆片段中的更新;以及
在所述次克隆片段返回到在线时,用所述保存的更新来刷新所述次克隆片段。
25.如权利要求24所述的方法,其特征在于,所述方法还包括下列步骤:
确定所述次克隆片段相对于所述主克隆片段是过时的;
使用所述主克隆片段中的数据刷新所述次克隆片段;以及
在所述次克隆片段正被刷新时,选择性地更新所述次克隆片段。
26.一种设备可执行方法,包括:
监视与数据库对象相关联的克隆片段,所述克隆片段包括主克隆片段与次克隆片段;
确定至少一个所述克隆片段已经变为不可用;
增加与所述数据库对象相关联的更新标识符;
在事务上持久化所述更新标识符;
标识与所述数据库对象相关联的DML语句,所述DML语句包括对所述数据库对象的更新;
将所述持久化的更新标识符与所述DML语句相关联;
在受所述DML语句影响的所述主克隆片段上实现所述更新;
在受所述更新影响的所述主克隆片段中的每一行内存储与所述DML语句相关联的所述更新标识符;
将所述更新与所述更新标识符传播至与所述受影响的主克隆片段相关联的所述次克隆片段;
在所述次克隆片段上存储所述更新标识符;
其中,所述方法还包括:
响应于在更新期间所述次克隆片段离线,保存所述主克隆片段中的更新;以及
在所述次克隆片段返回到在线时,用所述保存的更新来刷新所述次克隆片段。
CN2006800296061A 2005-08-19 2006-07-20 数据库片段克隆和管理 Active CN101268439B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/207,482 2005-08-19
US11/207,482 US7890508B2 (en) 2005-08-19 2005-08-19 Database fragment cloning and management
PCT/US2006/028346 WO2007024376A2 (en) 2005-08-19 2006-07-20 Database fragment cloning and management

Publications (2)

Publication Number Publication Date
CN101268439A CN101268439A (zh) 2008-09-17
CN101268439B true CN101268439B (zh) 2012-04-25

Family

ID=37768395

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800296061A Active CN101268439B (zh) 2005-08-19 2006-07-20 数据库片段克隆和管理

Country Status (15)

Country Link
US (1) US7890508B2 (zh)
EP (1) EP1915668B1 (zh)
JP (1) JP5259404B2 (zh)
KR (1) KR20080055795A (zh)
CN (1) CN101268439B (zh)
AU (1) AU2006284498B2 (zh)
BR (1) BRPI0615028A2 (zh)
CA (1) CA2615421A1 (zh)
IL (1) IL188664A (zh)
MX (1) MX2008002168A (zh)
NO (1) NO20080234L (zh)
NZ (2) NZ593162A (zh)
RU (1) RU2417426C2 (zh)
WO (1) WO2007024376A2 (zh)
ZA (1) ZA200800962B (zh)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5068062B2 (ja) * 2006-10-30 2012-11-07 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースを統合するためのシステム、方法、およびプログラム
US20080313136A1 (en) * 2007-06-13 2008-12-18 International Business Machines Corporation Method and apparatus for producing up-to-date query results from tables including data from a data warehouse
US20100057787A1 (en) * 2008-08-28 2010-03-04 International Business Machines Corporation Method, system, and computer program product for cloning of distributed and stateful systems
US8131700B2 (en) * 2008-09-25 2012-03-06 Microsoft Corporation Transitioning clone data maps and synchronizing with a data query
US20100082551A1 (en) * 2008-09-26 2010-04-01 Microsoft Corporation Data placement transparency for high availability and load balancing
US8626709B2 (en) * 2008-09-26 2014-01-07 Codefutures Corporation Scalable relational database replication
US20100082546A1 (en) * 2008-09-30 2010-04-01 Microsoft Corporation Storage Tiers for Database Server System
US8990161B1 (en) * 2008-09-30 2015-03-24 Emc Corporation System and method for single segment backup
JP5387015B2 (ja) * 2009-02-02 2014-01-15 株式会社リコー 情報処理装置、および情報処理装置の情報処理方法
US20100306591A1 (en) * 2009-06-01 2010-12-02 Murali Mallela Krishna Method and system for performing testing on a database system
EP2542986A4 (en) * 2010-03-05 2014-02-26 Hewlett Packard Development Co SYSTEM AND METHOD FOR ROWSET INSERTIONS
RU2016122623A (ru) * 2010-03-18 2018-11-29 НУОДиБи ИНК. Система управления базой данных
JP2012079100A (ja) * 2010-10-01 2012-04-19 Canon Inc ディスク制御装置及びディスク制御方法、並びにプログラム
US8832028B2 (en) 2011-08-25 2014-09-09 Oracle International Corporation Database cloning
WO2013083183A1 (en) * 2011-12-06 2013-06-13 Huawei Technologies Co., Ltd. Database with aging mechanism and method for managing a database
US9805107B2 (en) * 2011-12-09 2017-10-31 Telduráðgevin Sp/f Systems and methods for dynamic partitioning in a relational database
US8620924B2 (en) 2012-03-06 2013-12-31 International Business Machines Corporation Refreshing a full-text search index in a partitioned database
US10740323B1 (en) 2013-03-15 2020-08-11 Nuodb, Inc. Global uniqueness checking in distributed databases
US9501363B1 (en) 2013-03-15 2016-11-22 Nuodb, Inc. Distributed database management system with node failure detection
US11176111B2 (en) 2013-03-15 2021-11-16 Nuodb, Inc. Distributed database management system with dynamically split B-tree indexes
WO2014168913A1 (en) 2013-04-08 2014-10-16 Nuodb, Inc. Database management system with database hibernation and bursting
US10025673B1 (en) 2013-09-20 2018-07-17 Amazon Technologies, Inc. Restoring partitioned database tables from backup
US9632878B1 (en) 2013-09-20 2017-04-25 Amazon Technologies, Inc. Verification of database table partitions during backup
US9633051B1 (en) 2013-09-20 2017-04-25 Amazon Technologies, Inc. Backup of partitioned database tables
US10191690B2 (en) 2014-03-20 2019-01-29 Nec Corporation Storage system, control device, memory device, data access method, and program recording medium
US10025710B2 (en) 2014-04-30 2018-07-17 Walmart Apollo, Llc Pattern for integrating primary and secondary data stores in a sharded data domain
GB2532039B (en) 2014-11-06 2016-09-21 Ibm Secure database backup and recovery
US9460181B2 (en) 2015-01-23 2016-10-04 Servicenow, Inc. Distributed computing system with resource managed database cloning
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
US10747753B2 (en) 2015-08-28 2020-08-18 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US9390154B1 (en) 2015-08-28 2016-07-12 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US9529923B1 (en) 2015-08-28 2016-12-27 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US20180074967A1 (en) * 2016-09-09 2018-03-15 Sap Se Paging Mechanism for In-Memory Data Management System
LT3539026T (lt) 2016-11-10 2022-03-25 Swirlds, Inc. Būdai ir aparatas paskirstytajai duomenų bazei, apimančiai anonimines įvestis
KR102433285B1 (ko) 2016-12-19 2022-08-16 스월즈, 인크. 이벤트들의 삭제를 가능하게 하는 분산 데이터베이스를 위한 방법 및 장치
KR102348418B1 (ko) 2017-07-11 2022-01-07 스월즈, 인크. 네트워크 내의 분산 데이터베이스를 효율적으로 구현하기 위한 방법들 및 장치
EP3669286A4 (en) 2017-08-15 2021-06-23 NUODB Inc. DIVISION OF INDEX INTO DISTRIBUTED DATABASES
SG11202002308RA (en) 2017-11-01 2020-04-29 Swirlds Inc Methods and apparatus for efficiently implementing a fast-copyable database
RU2703961C1 (ru) * 2018-07-25 2019-10-22 федеральное государственное бюджетное образовательное учреждение высшего образования "Российский государственный университет им. А.Н. Косыгина (Технологии. Дизайн. Искусство)" Система репликации информации в базах данных
US11048692B2 (en) * 2019-04-02 2021-06-29 Sap Se Partition move in case of table update
CN110111203A (zh) * 2019-05-05 2019-08-09 北京阿尔山金融科技有限公司 业务数据的批量操作方法、装置及电子设备
CA3134691A1 (en) 2019-05-22 2020-11-26 Swirlds, Inc. Methods and apparatus for implementing state proofs and ledger identifiers in a distributed database
EP3896579A1 (de) * 2020-04-17 2021-10-20 Allianz Deutschland AG Verfahren zur integration und koordination von mess- und/oder steuersystemen
US11809591B1 (en) * 2023-02-22 2023-11-07 Snowflake Inc. Column hiding management system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5555404A (en) * 1992-03-17 1996-09-10 Telenor As Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas
US6694337B1 (en) * 2000-10-26 2004-02-17 Intel Corporation Synchronizing databases
CN1564990A (zh) * 2001-04-25 2005-01-12 诺基亚有限公司 数据库数据的同步

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4432057A (en) * 1981-11-27 1984-02-14 International Business Machines Corporation Method for the dynamic replication of data under distributed system control to control utilization of resources in a multiprocessing, distributed data base system
CA1307919C (en) * 1988-10-06 1992-09-29 Dean S. Liu Method and apparatus for making electrical heater pad
US5170480A (en) * 1989-09-25 1992-12-08 International Business Machines Corporation Concurrently applying redo records to backup database in a log sequence using single queue server per queue at a time
US5440727A (en) * 1991-12-18 1995-08-08 International Business Machines Corporation Asynchronous replica management in shared nothing architectures
JP2740105B2 (ja) * 1993-03-19 1998-04-15 日本電信電話株式会社 分散データベース制御方法
JP2708386B2 (ja) * 1994-03-18 1998-02-04 インターナショナル・ビジネス・マシーンズ・コーポレイション 同時更新及び複写手順を通して重複データベースを回復させる方法及び装置
JPH0877053A (ja) * 1994-09-08 1996-03-22 Nippon Telegr & Teleph Corp <Ntt> 複製データベース反映装置及び複製データベース反映方法
US6101497A (en) * 1996-05-31 2000-08-08 Emc Corporation Method and apparatus for independent and simultaneous access to a common data set
US5937414A (en) * 1997-02-28 1999-08-10 Oracle Corporation Method and apparatus for providing database system replication in a mixed propagation environment
US6209002B1 (en) * 1999-02-17 2001-03-27 Emc Corporation Method and apparatus for cascading data through redundant data storage units
US6539381B1 (en) * 1999-04-21 2003-03-25 Novell, Inc. System and method for synchronizing database information
JP4046893B2 (ja) * 1999-05-28 2008-02-13 富士通株式会社 データベース複写装置及びデータベース複写方法並びにデータベース複写プログラムを記録したコンピュータ読み取り可能な記録媒体
US6643669B1 (en) * 2000-03-14 2003-11-04 Telefonaktiebolaget Lm Ericsson (Publ) Method for optimization of synchronization between a client's database and a server database
JP2001290687A (ja) * 2000-04-04 2001-10-19 Nec Eng Ltd データ同期化制御方式
JP4895437B2 (ja) * 2000-09-08 2012-03-14 株式会社日立製作所 データベース管理方法およびシステム並びにその処理プログラムおよびそのプログラムを格納した記録媒体
US7164676B1 (en) * 2001-03-21 2007-01-16 Cisco Technology, Inc. Method and apparatus for a combined bulk and transactional database synchronous scheme
JP3714184B2 (ja) * 2001-03-29 2005-11-09 富士通株式会社 記憶装置のデータ領域間複写処理方法、及び記憶システム
US7373362B2 (en) * 2001-11-19 2008-05-13 Extended Systems, Inc. Coordinated synchronization
US6820180B2 (en) * 2002-04-04 2004-11-16 International Business Machines Corporation Apparatus and method of cascading backup logical volume mirrors
JP3991760B2 (ja) * 2002-04-26 2007-10-17 株式会社日立製作所 データベース管理方法および装置およびその処理プログラム
JP2003345640A (ja) * 2002-05-28 2003-12-05 Mitsubishi Electric Corp データベースバックアップシステム
GB0308264D0 (en) 2003-04-10 2003-05-14 Ibm Recovery from failures within data processing systems
JP4331970B2 (ja) * 2003-05-07 2009-09-16 株式会社日立製作所 データベースのスナップショット方法及びシステム
US20050149582A1 (en) * 2003-12-29 2005-07-07 Wissmann Joseph T. Method and system for synchronization of copies of a database
US20080126439A1 (en) * 2006-09-25 2008-05-29 International Business Machines Corporation Change verification in a configuration management database

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5555404A (en) * 1992-03-17 1996-09-10 Telenor As Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas
US6694337B1 (en) * 2000-10-26 2004-02-17 Intel Corporation Synchronizing databases
CN1564990A (zh) * 2001-04-25 2005-01-12 诺基亚有限公司 数据库数据的同步

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
同上.

Also Published As

Publication number Publication date
US20070043749A1 (en) 2007-02-22
WO2007024376A2 (en) 2007-03-01
WO2007024376A3 (en) 2007-11-29
US7890508B2 (en) 2011-02-15
RU2008106228A (ru) 2009-08-27
CA2615421A1 (en) 2007-03-01
NZ593162A (en) 2012-04-27
NO20080234L (no) 2008-03-14
IL188664A (en) 2014-02-27
NZ565641A (en) 2011-06-30
EP1915668B1 (en) 2018-07-04
JP5259404B2 (ja) 2013-08-07
AU2006284498B2 (en) 2011-04-14
MX2008002168A (es) 2008-04-22
KR20080055795A (ko) 2008-06-19
IL188664A0 (en) 2008-08-07
EP1915668A2 (en) 2008-04-30
RU2417426C2 (ru) 2011-04-27
ZA200800962B (en) 2009-05-27
CN101268439A (zh) 2008-09-17
EP1915668A4 (en) 2009-10-28
JP2009505281A (ja) 2009-02-05
AU2006284498A1 (en) 2007-03-01
BRPI0615028A2 (pt) 2011-05-03

Similar Documents

Publication Publication Date Title
CN101268439B (zh) 数据库片段克隆和管理
US7930271B2 (en) Method and apparatus for data processing
CN101221573B (zh) 将储存库还原到先前状态的方法
CN109947767A (zh) 多重租赁数据库***中的***共享类型
CN110147369A (zh) 多重租赁数据库***中的数据分离和写入重新定向
US20020198899A1 (en) Method and system of database management for replica database
CN110019215A (zh) 多重租赁数据库***中的键模式管理
JP4644684B2 (ja) 仮想化を用いるリモート・コピーの一貫性の維持(ストレージをコピーする方法およびシステム)
US8285677B2 (en) Method and apparatus for propagating tables while preserving cyclic foreign key relationships
AU2002212843A1 (en) Method and apparatus for data processing
WO2009017534A1 (en) Persistent query system for automatic on-demand data subscriptions from mobile devices
CN103714090A (zh) 多索引数据库事务处理方法及数据库
US20050071345A1 (en) Attribute partitioning for user extensibility
US6895487B2 (en) Methods for intra-partition parallelism for inserts
US20050154786A1 (en) Ordering updates in remote copying of data
CN100403269C (zh) 用于管理关于目标卷与源卷之间关系的信息的方法和***
CN108351801A (zh) 多版本移除管理器
US10409651B2 (en) Incremental workflow execution
JP2006040065A (ja) データ記憶装置およびデータ記憶方法
CN112069192B (zh) 具有所有权转移的多主
JP6247791B2 (ja) データベースシステム及びクエリ実行方法
US20030163451A1 (en) System and method for guaranteeing exactly-once updates to a data store
NZ537170A (en) Method and apparatus for data processing
NZ546247A (en) Method and apparatus for replicating a database

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150428

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150428

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.