数据库破坏恢复系统和方法

文档序号:6567357阅读:232来源:国知局
专利名称:数据库破坏恢复系统和方法
技术领域
本发明一般涉及数据库管理系统,尤其涉及恢复系统和方法。
北旦 冃足
事务被假定为具有ACID性质。更具体地,事务应为原子、 一致、隔离且持 久的。数据库机制实施原子性、隔离性和持久性,即"AID"属性。用户编写的事 务代码负责一致性(即"C"),这意味着事务应采用之前的一致状态,并创建新 的一致状态来更新它。不幸的是,用户事务可能有缺陷而导致不一致、无效或破坏 的状态。
利用数据库系统的一个强有力的理由在于,它们允诺保卫它们所存储的数据 的完整性。数据库系统实现事务来提供原子性,其约定是全部执行或全部不执行, 从而防止部分事务执行,在部分事务执行中,例如旨在在帐户之间转帐的金额仅被 提取(withdrawal)或存入(credit)但不会执行两者。数据库系统实现重做恢复以 及强制的日志记录,使得一旦数据库响应接受事务更新的责任,这些更新即被保证 被包括在数据库状态中。换言之,更新是持久的。这样的系统也实现隔离性,使得 一个事务的作用不会干扰另一事务的作用,从而提供事务按顺序连续执行的假像。
然而,这些公知技术不能直接处理数据破坏的问题。 '
数据可因多种方式而被破坏。可破坏数据的一种方式是,磁盘或者灾难性地 或者因丢失比特的软故障而出现故障。这被称为介质故障,对其处理被称为介质恢 复。对于数据库系统提供介质恢复存在众多方法。例如,使用镜像或某种形式的 RAID (独立磁盘冗余阵列)的复制可提供足以重构破坏或坏数据的冗余度。更传 统地,数据库系统生成定期备份,即优化用于高速读写的特殊形式的副本(例如, 磁带备份)。由于事务可在备份之间执行和提交,因此介质恢复涉及加载备份(被 称为还原)并使用介质恢复日志来实施重做恢复。介质恢复日志是记录自进行备份 以来的所有事务更新的特殊日志。介质恢复日志可用于使被还原的备份前进。然而, 该过程是费力的且通常导致相当长时间的停止。
4尽管如此,介质恢复不直接处理错误事务的问题。错误事务造成的损害尤其 有害,因为不仅这些事务写入的数据破坏了,而且由随后读取该数据的所有事务写 入的数据同样破坏了。
用于消除因错误事务导致的数据破坏的一种技术基于上述介质恢复技术,其 中备份被还原,且利用介质恢复日志使数据库状态前进。然而,如果盲目应用,介 质恢复将仅重构破坏的数据。为了防止这种情况的发生,习惯上使介质恢复过程在 恢复数据库的当前状态之前暂停。更具体地,直到破坏事务执行之后才允许介质恢 复继续。这被称为时间点(point in time)恢复,而它的确移除了破坏事务的作用。
不幸的是,时间点恢复系统就使用成本及它对数据库、其用户以及负责管理
数据库的人员的影响而言是冒险的措施。时间点恢复因其引入当使用备份来还原数
据库并使用介质恢复日志来使数据库状态前进至刚好在破坏事务之前的所需时间
时的长时间停止而成本高昂。从而,这可严重地损害数据库的可用性。而且,在破
坏事务之后提交的所有事务被取消提交。在高性能事务应用中,这可导致数百甚至
数千事务被取消提交。这些事务随后以某种方式被重新提交以便执行,以限制破坏
引起的损害。这是非常艰巨的过程,至少部分是因为重新执行这些事务中的任一个 可导致与其原始执行不同的结果。
概述
以下呈现了本发明的简化概述以提供对本发明某些方面的基本理解。该概述 不是本发明的详尽概观。它不旨在标识本发明的重要/关键元素或描绘本发明的范 围。其唯一目的在于以简化的形式提供本发明的某些概念以作为稍后呈现的更详细 描述的序言。
简要描述,本发明涉及用于对抗破坏的系统和方法。根据本发明的一方面, 提供了急剧减少或消除破坏之后有效事务的取消提交或移除的系统和方法。更具体 地,可标识因缺陷或不正确事务导致的初始破坏数据项。该初始破坏数据项然后可 被用来确定派生的破坏数据项,后者因其对初始破坏数据项的依赖而是破坏的。根 据本发明的一方面,可维护日志来便于标识派生的破坏项。该日志除标识事务所写 或更新的数据项的通常记录以外,还可包括标识事务所读取的数据项的一个或多个 记录。然后可在数据存储中将初始和派生或依赖的破坏项标记为无效,以将其与有 效数据项区分开。
根据本发明的一方面,所提供的系统和方法允许针对带有无效数据的数据存储进行交互和事务处理。换言之,事务处理可继续而几乎不因生成破坏数据的破坏 或缺陷事务中断。
根据本发明的另一方面,可査询无效数据项来允许检査无效数据及对其可能 的更改。例如,可采用带有标识无效数据的特别关键字的SQL查询。
根据本发明的另一方面,可生成改正动作并将其应用于数据项及其依赖项以 使无效数据再次有效。
根据本发明的又一方面,可结合本发明的其它方面采用多版本或事务时间数 据库。事务时间数据库消除了在破坏检测之后对检索和安装备份数据库的需求,从 而急剧地增强了数据库系统对付破坏事务及其它方面的能力。
本发明的各方面提供显著减少被取消提交的事务的数目,尤其是在破坏之后 发生的有效事务的数目及其它方面的破坏恢复的改进。此外,用于利用事务时间数 据库来处理破坏数据的过程导致比当前常规时间点恢复的情况短得多的停止时间。
为了达到前述和相关目的,此处结合以下描述和附图描述了本发明的某些说 明性方面。这些方面指示可实现本发明的各种方式,它们均旨在由本发明所覆盖。 在结合附图考虑本发明的以下详细描述之后,本发明的其它优点和新颖的特征将是 显而易见的。
附图简述


图1是根据本发明的一方面的破坏恢复系统的框图。
图2是根据本发明的一方面的隔绝(quarantine)组件的框图。
图3是根据本发明的一方面的事务日志的框图。
图4a是与示例性破坏恢复系统相关联的数据存储和日志的图示。
图4b是与示例性破坏恢复系统相关联的数据存储和日志的图示。
图5是根据本发明的一方面的破坏恢复系统的框图。
图6是根据本发明的一方面的查询接口系统的框图。
图7是根据本发明的一方面的破坏恢复系统的框图。
图8是根据本发明的一方面的破坏恢复系统的框图。
图9是根据本发明的一方面便于破坏恢复的系统的框图。
图IO是根据本发明的一方面的破坏方法的流程图。
图11是根据本发明的一方面用于破坏恢复系统的支持方法的流程图。
图12是根据本发明的一方面与数据存储交互的方法的流程图。图13是根据本发明的一方面与破坏数据交互的方法的流程图。 图14是示出根据本发明的一方面的合适操作环境的示意性框图。 图15是本发明可与之交互的示例计算环境的示意性框图。
详细描述
现在参考附图描述本发明,在全部附图中,相同的参考标号指的是相同或相 应的元素。然而,应该理解,附图及其详细描述不旨在将本发明限制于所公开的具 体形式。相反,意图是覆盖落入本发明的精神和范围内的所有修改、等效方式和替 换方式。
如本申请中所使用的,术语"组件"和"系统"等指的是计算机相关的实体, 或者是硬件、硬件和软件的组合、软件或者是执行中的软件。例如,组件可以是, 但不限于,运行在处理器上的进程、处理器、对象、实例、可执行代码、执行的线 程、程序和/或计算机。作为说明,运行在计算机上的应用程序和该计算机本身均 可以是组件。 一个或多个组件可以驻留在进程和/或执行中的线程内,且组件可以 位于一台计算机上和/或分布在两台或多台计算机之间。
词语"示例性"此处被用来指用作示例、实例或说明。此处被描述为"示例 性"的任何方面和设计不必解释为较其它方面或设计更优选和有利。
而且,本发明可被实现为方法、装置或制品,它们使用标准程序设计和/或工 程技术来生产软件、固件、硬件或其任何组合,来控制计算机实现所公开的发明。 如此处所用的术语"制品"旨在包含可从任何计算机可读设备、载波或介质访问的 计算机程序。例如,计算机可读介质可包括,但不限于,磁性存储设备(例如,硬
盘、软盘、磁条…)、光盘(例如,紧致盘(CD)、数字多功能盘(DVD)…)、 智能卡和闪存设备(例如,卡、棒、键驱动器…)。另外,应该理解,可使用载波 来携带计算机可读电子数据,诸如在发送和接收电子邮件或者访问诸如因特网或局
域网(LAN)等网络中所使用的那些。当然,本领域的技术人员可以认识到,可 对此配置进行多种修改,而不背离本发明的范围或精神。
一开始转向图l,根据本发明的一方面描述了破坏恢复系统100。破坏恢复系 统100包括破坏检测组件110、隔绝组件120、事务日志组件130、和数据存储140。 数据破坏可以是物理和/或逻辑性的。例如,环境影响可引起更改一个或多个数据 项的软错误。除此以外或替换地,可能会执行产生非预期作用的事务。从而,破坏 检测组件UO可监控事务以及数据存储140。基于所接收的输入,组件110可检和/或便于检测一个或多个数据项的破坏。关于所检测数据破坏的身份和其它信息 可被转发给隔绝组件120。隔绝组件120可接收该初始的破坏数据项,并确定相关
的数据项。换言之,隔绝组件120可标识从初始破坏数据派生的附加数据项,例如
一事务读取破坏数据并利用这样的数据来生成并存储另一数据项。所存储的数据项
因其对破坏项的依赖也被视为破坏的。隔绝组件120可利用事务日志130以便于标 识相关破坏数据。事务日志130可以是驻留在计算机可读介质上的数据存储。日志 130可包括由每一事务读写的数据项。在标识初始破坏数据项和从其派生的破坏数 据项之后,隔绝组件120可将这些破坏数据项与数据存储140上的其余数据隔离。 数据存储140是诸如提供数据项的持久存储的数据库的制品或计算机可读介质。根 据本发明的一方面,数据存储140可以是如将在以下更详细描述的多版本或事务时 间数据库。根据本发明的一方面,破坏数据可经由隔绝组件120将破坏数据标记为 无效而与有效数据隔离。例如,隔绝组件120可在数据项头部或其它相关联的元数 据中将每一破坏数据项标记为无效。
转向图2,根据本发明的一方面描述了隔绝组件120。隔绝组件120从检测组 件110 (图1)接收对破坏事务的标识,确定依赖的数据项,并将破坏数据与有效 数据隔离。为便于这样的功能,隔绝组件120可包括闭包组件210和无效器组件 220。闭包组件210计算受破坏数据影响的事务所写入的所有数据的闭包。基本上, 这样的过程涉及计算C(D》,这指示数据存储中破坏的确切数据项或其版本。这可 按照初始破坏数据项或数据版本以及由读取破坏数据的一个或多个事务写入的项
或数据版本来表示。更具体地,这可被表示为c^rj =『0;,其中z;是现在破坏
的事务,而wav表示由?;写入的确切数据项。该计算可经由如以下所述的事务日
志来简化。而且,闭包组件210可考虑由已知破坏的事务写入然后由另一事务重写
的数据项。该值最初是破坏的,但当其由非已知为破坏的事务重写时再次变为有效。
一旦闭包组件210确定包括初始破坏项及从中派生的项目在内的所有破坏数据项 之后,这样的信息可被发送给无效器组件220。无效器组件220随后可通过将破坏 数据项标记为无效使其与其它项隔绝。例如,头部信息或与数据项相关联的元数据 可被标记以指示该数据项或其版本无效。这样的数据项因此对常规事务而言是不可 见的。从而,数据存储140 (图1)不必被关闭、加载备份、并前进至刚好在破坏 之前的时刻。而且,完全有效的事务不必被取消提交并随后重新提交以便执行。此 处,仅破坏的事务及相关联的数据项被取消提交。此外,数据存储不必被长期关闭 并使事务处理不可用。图3示出了根据本发明的一方面的事务日志130。事务日志130是包括关于事
务和数据项和/或版本的信息的存储。日志130可被存储在数据库或任何其它计算 机可读介质或制品上。如图3中所例示,事务日志130可包括一个或多个事务条目 310,它包括读记录320和/或写记录330。每个提交的事务可被记录在日志130中。 具体地,由事务读取的所有数据项或版本均被记录在读记录320中。此外,由事务 写入或更新的所有数据项或版本均在写或更新记录330中表示。
"ACID"事务中的"C"代表一致性,它是事务代码的责任。当事务完整执 行时,它固有地约定从一个一致的数据存储状态转移到另一状态。因此,如果事务 是错误的并破坏了数据存储的状态,则该事务的整体作用必然表现为破坏。从而, 事务或者破坏数据存储或者不破坏。
由于事务在整体上或者是破坏或者是一致的,包括其读写的事务的活动可被 作为整体对待。因此,不必记录和/或记住在事务内何时进行了读取。读取任何破 坏数据的事务将产生破坏更新,即使破坏数据是在更新进行之后读取的。试图区分 在读取破坏之前进行的更新与在这样的读取之后进行的更新根本不可能产生一致 的结果。从而,记住事务读取相对于事务更新何时进行是不重要的。这允许将关于 事务的所有读取信息合并到刚好可在事务提交之前写入的单个日志记录。如果日志 记录太大而难以容易地管理,则日志记录可被分成多个记录。或者,可利用单个读 曰志记录。
应注意到,不是所有的读取均需被记录在日志130中。在使用生理日志操作 的恢复方法中,这些操作将改变的数据归档,但在所有的情况中均假定改变的数据 在被写之前被读取。因此,不必在读取日志记录中包括对更新的数据的读取。仅需 要包括未由事务更新的数据的读取。对更新数据的读取已经经由其更新或写日志记 录被记入日志。
回到图1,根据本发明的一方面,数据存储组件140可以是事务时间和多版本 数据库。事务时间数据库存储数据库的所有之前状态并使之可访问。每一事务执行 均产生一新的数据库状态。因此,要保存大量状态。然而,由于事务一般仅改变数 据库状态中非常小的一部分,大多数数据可在众多状态之间共享。基本上,每一数 据库更新产生正被改变的数据的新版本。每一这样的版本可随后用该事务的时间加 上时戳。对这种数据库的一种查询是要求数据库正值某个所选时间的状态的"正值 (as of)"查询。通过定位具有该(as is)时间前最近时戳的数据来答复该查询。 有可能为该数据构造一个基于时间的索引,该索引将査询引导至构成数据库状态正值所请求的时间的状态的确切数据。
因为事务时间数据库包含数据库的所有之前的状态,所以它可提供备份的功 能。换言之,它提供数据库的之前状态,如常规所做可利用介质恢复日志从该状态 起使状态前进以便重构当前的数据库状态。然而,该"备份"无需还原过程,因为 过去的状态总是在线。因此,立即避免了长时间地停止可用性。该方法的附加优点 在于可利用诸如"正值"査询和其中要求某个时间段上数据库中某些记录的历史的 时间行进査询等各种时间查询来査询"备份"。
应该清楚,与常规备份一样,也可使用事务时间数据库备份来提供"时间点" 恢复,从而极大地减少由于数据破坏而导致的停止持续时间。这可通过移除在破坏 发生之后引入的所有数据版本来完成。然而,它本身就减少取消提交事务的数目而 言没有任何作用。
此处描述的本发明的各方面提供了用于通过将事务读取记入日志等来减少取 消提交的事务的数目的系统和方法。而且,被破坏的数据项可被移除,或至少使其 不为正常查询可见。这些革新以及将事务时间数据库用作备份的结果是从破坏提供 恢复的停止时间期限几乎被消除,且取消提交的事务数目被减少到读取被破坏数据 的确切数目,这通常是巨大的减少。
如上所述,事务时间数据库存储数据的多个版本,每一版本由一时戳标识。 当事务执行时,为其执行向其分配时戳。事务的时戳可与事务的串行化顺序一致。 事务的时戳可被存储在事务所写的数据的各个版本中以确切标识其版本何时成为
当前版本。^r"表示由r写入的数据的确切版本,即以事务时戳标出的具体版本。
对可串行化的事务,该同一时戳标识了由事务读取的数据的版本,换言之,即由事 务时戳表示的当前"正值"时间的版本。
对其它形式的并发控制,所读取数据版本的时间可有所不同。不必在所有情 况中均确切标识哪一版本是所读取的版本。例如,在快照隔离中,该时间是事务的
起始时间。对其中读取不一定可重复的二度(degree two)事务而言,可能存在用 于标识所读取数据版本的若干时戳。在所有情况中,使用i O)来表示由事务r读 取的数据的确切版本。用于表示所读取的数据版本的次数应小心地记录以精确定义 R(T)。
回到图2,记得采用闭包组件210来计算由受到破坏数据影响的事务所写入的 所有数据的闭包。该过程涉及计算QD5入它表示数据库中破坏的数据的确切版本。 这可借助初始破坏的数据版本和由读取破坏数据的事务所写入的数据版本来表示。以下数学表达式定义了在数据库上执行的示例性闭包计算的各方面
qt山=^tj,其中j;是已知破坏的事务。
公式A
c(t;),+1 = c(rc), u |/ (r,+,)门c(rc),),其中7;+,具有时戳ra(z;.+,),且
不存在事务z;使得ra(z;.) < ) < re(7;+1)且^(r」)门c(rc), ^ 。
公式B
c(7;) = c(7;);,使得不存在r川,使rs(r》〈re(r川)且i (7;.+,)nc(7;)j 一
公式c
根据本发明的一方面,数据存储140 (图i)也可以是常规数据库。应注意到,上述同一计算可用于通过仅移除版本标识来标识常规数据库中潜在破坏的数据。这实质上将数据项的所有破坏版本折叠成当前数据库中存在的数据的单个破坏实例。只要仅考虑的事务是在破坏事务之后执行的事务,该计算也将有效。它可用于避免取消提交未受初始破坏影响的事务。
为便于澄清和理解,将参考图4a和4b讨论破坏的示例。作为示例而非限制,如图4a的示例400a所提供的,假定存在事务时间数据库410,它具有破坏数据以及与之相关联的事务日志420。在该示例中,数据库410包括四个数据项即变量,W、 X、 Y和Z,以及每一项的多个版本。每一项在时间O具有初始值,即\¥=10,X=20, Y=30,以及《=40。事务日志420包括包含所读的数据项和所写数据项的事务列表。第一事务标识在时间1 (Tl)处,读取了 X在时间0的版本(XQ),并创建了时间1 (Tl)处的新版本(X,),使得X的新值为21。在时间2 (T2)处,执行读取W的初始值(WQ)和Y的初始值(Yo)并写入W的新版本(W2)的事务。日志继续直到时间6 (T6)。假定时间Tl处的第一事务被确定为破坏的。从而,其写设置(X,)是破坏的,并经由阴影示出。隔绝组件120 (图1和2)的闭包组件210 (图2)进行的分析可指示,时间3 (T3)处的事务3也是破坏的,因为它读取X,并写入新值X3。如以水平带状线所示,这可由无效器组件220 (图2)标记为破坏的。此外,时间5 (T5)处的事务5读取事务3所写的X3,因此它的写Z5也是破坏的并在此处以带状线标记。最后,时间6 (T6)处的事务6读取Z5,并写入W6,从而,W在时间6 (T6)处的版本也是破坏的,并以带状线标记。
在数据被破坏的版本被标记为无效之后,系统允许事务处理恢复。这样的执行的效果应如写入无效数据的事务从未执行一样。即,意图是"取消提交"产生无效项的事务,并移除其效果。因此,当读取数据项^的无效版本[/^刀时,系统忽视该版本,并在时间上向后扫描^的版本,查找有效的前一个版本。这即是所返回的^值。
概念上,d之前未被破坏的版本的时间范围延及包括连续跟随d被破坏版本之
后的所有时间的范围。这在图4b中使用以上图4a的示例示出以便澄清。当被破坏
的数据被标记时,作用是逻辑上移除这些版本。这意味着,实际上,前进的数据项
即变量的值为W二12、 X = 20、 Y=34以及Z二40。以此理解,可利用数据库状态,在原位留下标记为无效的数据版本以便归档该破坏,这将是非常有用的能力。
当更新被执行时,引入并写入每一数据项的新的且有效的版本。该版本可用作为例如在事务提交时分配给事务的时间的起始时间加上时戳。当读取更新事务时,它们可读取未被破坏的前任,从而被更新的是未破坏的前任。
转向图5,示出了根据本发明的一方面的破坏恢复系统500。类似于图l的系统100,系统500可包括破坏检测组件110、隔绝组件120、事务日志130和数据存储140。如前所述,破坏检测组件110可检测和/或便于检测初始破坏事务和/或数据项,并将标识信息传输给隔绝组件120。隔绝组件120接收该信息,并利用其以及来自事务日志130的数据来确定是否存在因其对初始破坏的依赖也被破坏的任何数据项。此外,隔绝组件120随后可通过在数据存储140中将破坏数据标记为无效而将破坏数据与有效数据隔绝。除这些组件以外,恢复系统500可包括查询组件510。查询组件510用于接收和执行关于有效以及无效数据项的查询。允许对破坏数据的显式查询将是非常有用的。例如,这样的数据可被检查,甚至有可能对其更改使其再次有效。可通过使查询组件进行诸如特别指定破坏数据等的SQL查询的查询来读取破坏数据。例如,SQL选择语句可包括特殊的"无效"属性,它指定仅满足其它查询约束的无效数据应被返回,或者为查询的目的,无效数据应如其有效一般被对待。利用查询组件510对数据存储140执行查询当然是有用的,尤其当目的在于理解数据库所进行的所有活动,如审计员或管理员通常需要做的那样。
图6示出了根据本发明的一方面的查询接口系统600。查询接口系统600可以是用户或应用程序与图5的查询执行组件510之间的接口。从而,系统600可对应于应用程序编程接口 (API)。接口系统600可包括两个组件,即査询接口组件610和数据存储接口组件620。査询接口组件610用于从用户、应用程序或其它实体处接收查询。此外,应注意和理解,査询接口组件610可接收涉及无效或破坏数据的查询。例如,它可接收特别指定应返回无效数据的SQL查询,或者査询可指定基于有效和无效数据或单独由有效数据生成结果。数据存储接口 620从查询接口组件610接收査询,并随后将查询结果提供回查询接口组件610。数据存储接口 620可与查询组件或査询执行引擎交互以检索提供回查询接口组件610的结果。
图7示出了根据本发明的一方面的破坏恢复系统700。恢复系统700可包括破坏检测组件IIO、隔绝组件120、事务日志130、数据存储140、补偿组件710。如关于系统100 (图1)和500 (图5)所述的,破坏检测组件IIO可检测初始事务和/或相关联的数据破坏,并将标识破坏的信息提供给隔绝组件120。隔绝组件120在事务日志130中所存储的信息的帮助下可确定因对初始破坏的依赖而派生的附加破坏。此外,隔绝组件120随后可通过标记数据存储140中的无效或破坏数据来隔离破坏与有效的数据。补偿组件710单独或与用户输入结合可提供用于分析所标记的被破坏数据、生成并应用补偿动作以弥补破坏的机制。以此方式,可使无效数据有效。而且,应理解,补偿组件710可利用包括但不限于神经网络、贝叶斯网络、专家或知识系统的智能和/或自适应系统和方法来推断改正的动作。作为示例,银行帐户可因记入了错误的提取而被破坏。这可导致帐户平衡变为负,且在向银行帐户所有者发送的报告中估算了费用。补偿组件710可为该被破坏的项目创建并应用改正动作,包括但不限于,重新执行随后的事务,从而避免帐户负平衡以及对费用的估算的两者,并生成示出该问题已被改正的新报告。
图8示出了根据本发明的一方面的破坏恢复系统800。类似于系统100、 500和700,系统800可包括存储数据项的数据存储140、检测初始破坏的破坏检测组件IIO、以及存储事务信息的日志组件130。此外,系统800可包括隔绝组件120,它从检测组件IIO和事务日志130接收或检索输入,标识与初始破坏有关的所有被破坏的项,并在数据存储140上将它们标记或隔绝为无效。而且,系统800也包括执行组件810。执行组件810可在数据存储140上执行或处理事务。此外,执行组件810可例如利用一个或多个锁定(例如,经由锁定管理器(未示出))和时戳来实现并发控制系统和方法,以确保遵循被称为可串行性的事务处理的基本性质。执行组件810也可便于在包括一个或多个无效数据项或其版本的数据库上执行事务。根据本发明的一个方面,执行组件810可如写入无效数据的事务从未执行那样地处理事务。使用事务时间数据库,设法在无效数据上执行的事务将在数据之前的有效版本上执行。根据本发明的另一方面,执行组件810可重新执行被取消提交的事务以改正无效数据。因此, 一个或多个破坏事务及相关联的数据项无需暂停执行组件810进行的事务处理。
图9示出了根据本发明的一方面便于破坏恢复的系统900。系统900可通过维
13护事务日志130来为前述恢复系统提供支持机制。系统900可包括事务分析组件910、日志组件920和事务日志130。事务分析组件910可评估事务及其影响的数据项。更具体地,分析组件910可例如在提交时确定,事务读了哪些数据项,事务入了哪些数据项。该信息然后可被提供给日志组件920。日志组件920通信耦合于事务分析组件910,并维护事务日志130。事务日志130可以是数据存储或其它计算机可读介质。日志130可记录事务事件。对每一事务,可存在归档由事务读取的数据项的读日志记录以及归档所写数据项的写或更新日志记录。在从事务分析组件910接收信息之后,日志组件920可将事务信息写入事务日志130。
应理解,某些数据存储应用程序(例如,事务应用程序)将在改变数据库状态的小部分之前进行大得多的广泛读取。这可导致读日志记录的大小变得非常大。此外,在事务执行直到读日志被写入的提交时刻之前期间记住该信息所需的数据结构的大小同样可能非常大。 一般难以处理大量资源。每一资源应被明确标识。维护这样的数据结构并不困难,但它可能会对数据存储和数据存储管理器施加压力,这增加了所涉及的成本。
前述问题,即非常大量的资源的问题,不是本发明将读取记入日志所独有的。当事务需要锁定资源以提供事务隔离时,也会发生该问题。从而,本发明可按照类似方式处理这样的问题,即通过引入多粒度资源。本发明可利用如为锁定所使用的用于标识资源的相同或相似的分层结构。使用锁定资源分层结构的一个明显的优点在于,可立即了解资源牵制(containment)如何被定义的,且拥有确定何时资源使用发生冲突或交叉的方式。因此,本发明可确定何时事务读取了破坏数据,甚至何时资源以不同的粒度级别描述。
传统的锁定资源分层结构通常至少包括表、页和记录。当事务利用了过多小粒度资源时,粒度从精细粒度改变成较大粒度。该方案可适于本发明将事务读取的数据项的身份记入日志的技术。可在该过程中采用锁定管理器,锁定管理器可以作为如此处所定义的该术语的组件。例如,当保持读锁定直到事务结束时,所读取的所有数据项均被锁定管理器有效地记住。在提交时,当从这些资源释放读锁定时,本发明可同时在日志中记录这些资源标识符。
有时,读锁定不被保持到事务结束,例如当执行二度事务时。在这种情况中,锁定管理器资源"锁定阻塞"可被留在锁定管理器冲突表中,将锁定模式从"读"(共享)改为"已读",只要涉及冲突它就如根本不存在锁定一般被对待。这允许
这样的事务采用相同策略以便用该事务所读取的所有资源的标识符来填充事志。
关于若干组件之间的交互描述了前述系统。此外,为清楚和简明起见,提供并描述了多个系统以强调本发明的一方面。应理解,这样的系统可包括其中指定的那些组件、指定组件中的某些、和/或在其它系统中指定的附加组件。例如,破坏恢复系统可包括查询组件、补偿组件、以及执行组件或其任何组合。此外,应注意到, 一个或多个组件可被组合成单个组件以提供聚集的功能,或可被分成若干子组件。组件也可与此处未特定描述但为本领域的技术人员所知的一个或多个其它组件交互。
此外,如本领域的技术人员所理解的,以上公开的系统和以下公开的方法的各个部分可包括基于人工智能或知识的组件、子组件、进程、装置或机制(例如,支持向量机、神经网络、专家系统、贝叶斯置信网络、模糊逻辑、数据融合引擎、分类器...)或由其组成。这样的组件及其它可自动化所执行的某些机制或进程,从而使系统和方法的部分更适应且更高效。例如,可采用基于人工智能的组件来便于检测数据破坏。可利用这样的组件来单独检测数据破坏,或补充例如由管理员进行的对数据破坏的手动标识。除此以外或对此替换,可釆用基于人工智能的系统、方法等来便于在检测数据破坏之后生成和/或应用补偿动作。
考虑上述示例性系统,参考图10-13的流程图将更好地理解根据本发明实现的方法。为说明的简明性起见,方法被示为并描述为一连串的块,可以理解和领会,本发明不受块顺序的限制,如根据本发明,某些块可按照不同的顺序出现和/或与此处所示和所述的其它块并发。而且,不是所有示出的块均是实现根据本发明的方法所必需的。
此外,还应理解,后文中以及本说明书全文中公开的方法能够被存储在制品上,以便于将这样的方法传输和传送给计算机。如此处所使用的,术语制品旨在包括可从任何计算机可读设备、载波或介质访问的计算机程序。
转向图10,根据本发明的一方面描述了破坏方法1000。方法1000提供用于对付破坏的过程。在1010处,标识初始破坏的数据项。用户或管理员可手动、利用基于人工智能、知识的系统和方法或其某种组合来自动标识破坏数据项。作为示例,当作出事务是破坏的诸如不正确地向帐户借记的判断之后,数据项可被标识为破坏的。在1020处,确定从初始破坏的数据项派生的数据项。例如,如果事务读取破坏的数据项,并基于该读取写入或更新第二数据项,则第二数据项也因其对初始破坏项的依赖而是破坏的。为便于标识这些派生的破坏项,可査阅事务日志,事
15务日志为每一事务标识所读取和更新的数据项。在1030处,初始和派生的破坏数据项均可被标记为无效的。例如,数据项头部或元数据可被如此标记。例如,它们
可具有或为真或为假的布尔变量"valid (有效)"。如果它为假,则该数据无效。
图11是根据本发明的一方面的破坏恢复系统的支持方法1100。在1110处,接收或标识事务,其中该事务包括对一个或多个数据项的操作。在1120处,将操作记入计算机可读介质中。例如,事务读操作可被记入在标识由事务所读取的数据项的读记录中。类似地,事务的写或更新操作可被记入在特别标识由该事务所写入的数据项的写或更新记录中。该事务日志随后可被用来标识依赖于破坏事务或数据项的各个数据项。
图12示出了根据本发明的一方面与数据存储交互的方法1200。在1210处,接收查询。查询可指定要检索的无效数据。例如,查询可以是带有指示应考虑无效数据的特别关键字的SQL Select (选择)查询。在1220处,根据所指定的査询返回所选无效数据。方法1200因此允许探测无效数据。这对便于检查这样的数据并可能更改它以使其再次有效而极其有用。
图13是示出与破坏数据交互的方法1300的流程图。如上所述,能够标识和最终改正无效数据是非常有用的。方法1300指定一个这样的过程。在1310处,标识破坏数据项。这样的项可例如通过在数据存储中查询标记为无效的数据项来被标识。例如,数据项可根据不正确向帐户借记的破坏事务而被识别为无效。在1320处,可对数据项应用改正动作以改正该项或使其有效化。在以上呈现的示例中,这样的改正动作可以是执行向帐户存入不正确借记的金额的事务。应理解,这是简化的示例,取决于破坏的严重性和范围,本发明可提供复杂得多的改正动作。此外,可采用基于人工智能和知识的系统和方法以及其它自适应系统和方法来自动生成和应用改正动作。
为了提供本发明的各方面的上下文,图14和15以及以下讨论旨在提供对可在其中实现本发明的各个方面的合适的计算环境的简要、 一般的描述。尽管在运行
在一台或多台计算机上的计算机程序的计算机可执行指令的一般上下文中描述了本发明,但本领域的技术人员可以认识到,本发明也可结合其它程序模块实现。一般而言,程序模块包括例程、程序、组件、数据结构等,它们执行特定任务和/或实现特定抽象数据类型。而且,本领域的技术人员可以理解,本发明的方法可以使用其它计算机系统配置来实现,包括单处理器、多处理器计算机系统、小型计算设备、大型计算机、以及个人计算机、手持式计算设备、基于微处理器或可编程消费者电子产品等。本发明的所示方面也可以在分布式计算环境中实现,其中任务由通过通信网络连接的远程处理设备来执行。然而,即使不是本发明的全部方面,也有某些方面可在单机计算机上实现。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
参考图14,用于实现本发明各方面的示例性环境1400包括计算机1412。计算机1412包括处理单元1414、系统存储器1416和系统总线1418。系统总线1418将包括但不限于系统存储器1416的系统组件耦合至处理单元1414。处理单元1414
可以是任何各种可用的处理器。也可以使用双微处理器和其它多处理器体系结构作为处理单元1414。
系统总线1418可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线或外部总线、和/或使用各种可用的总线体系结构中的任一种的局部总线,可用的总线体系结构包括,但不限于,11位总线、工业标准体系结构(ISA)、微通道体系结构(MCA)、扩展的ISA (EISA)、智能驱动器电子接口 (IDE) 、 VESA局部总线(VLB)、外围部件互连(PCI)、通用串行总线(USB)、高级图形接口 (AGP)、个人计算机存储卡国际协会总线(PCMCIA)以及小型计算机系统接口 (SCSI)。
系统存储器1416包括易失性存储器1420和非易失性存储器1422。基本输入/输出系统(BIOS)包含有助于诸如启动时在计算机1412中元件之间传递信息的基本例程,它通常存储在非易失性存储器1422中。作为说明,而非限制,非易失性存储器1422可以包括只读存储器(ROM)、可编程ROM (PROM)、电可编程ROM (EPROM)、电可擦除ROM (EEPROM)或闪存。易失性存储器1420可以包括用作外部高速缓存的随机存取存储器(RAM)。作为说明,而非限制,RAM以多种形式可用,诸如同步RAM (SRAM)、动态RAM (DRAM)、同步DRAM(SDRAM)、双倍数据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链路DRAM (SLDRAM)以及直接Rambus RAM (DRRAM)。
计算机1412也包括可移动/不可以移动、易失性/非易失性计算机存储介质。例如,图14例如示出磁盘存储1424。磁盘存储1424包括,但不限于,如磁盘驱动器、软盘驱动器、磁带驱动器、Jaz驱动器、Zip驱动器、Ls-100驱动器、闪存卡或记忆棒的设备。另外,磁盘存储1424可以包括独立或与其它存储介质结合的存储介质,包括但不限于,诸如光盘ROM设备(CD-ROM) 、 CD可记录驱动器(CD-R驱动器)、CD可重写驱动器(CD-RW驱动器)或数字多功能盘ROM驱
17动器(DVD-ROM)等的光盘驱动器。为了便于将磁盘存储设备1424连接至系统 总线1418, 一般使用诸如接口 1426等可移动或不可移动接口。可以理解,图14描述了作为用户和在合适的操作环境1410中描述的基本计 算机资源之间的中介的软件。这样的软件包括操作系统1428。可被存储在磁盘存 储1424上的操作系统1428用来控制和分配计算机系统1412的资源。系统应用程 序1430通过存储在系统存储器1416或者磁盘存储1414上的程序模块1432和程序 数据1434利用了操作系统1428执行的资源管理。可以理解,本发明可以使用各种 操作系统或操作系统的组合来实现。用户通过输入设备1436向计算机1412输入命令或信息。输入设备1436包括, 但不限于,诸如鼠标、跟踪球、指示笔等定点设备、触摸垫、键盘、麦克风、操纵 杆、游戏手柄、圆盘式卫星天线、扫描仪、TV调谐器卡、数码相机、数码摄像机、 网络摄像头等。这些和其它输入设备经由接口端口 1438通过系统总线1418连接至 处理单元1414。接口端口 1438包括,例如串行端口、并行端口、游戏端口和通用 串行总线(USB)。输出设备1440使用某些与输入设备1436相同类型的端口。从 而,例如,USB端口可以用于向计算机1412提供输入,并向输出设备1440输出 来自计算机1412的信息。提供输出适配器1442来示出,存在如显示器(例如,平 板和CRT)、扬声器和打印机以及其它需要专用适配器的输出设备1440的某些输 出设备1440。作为说明而非限制,输出适配器1442包括提供输出设备1440和系 统总线1418之间的连接手段的显卡和声卡。应该注意,诸如远程计算机1444等其 它设备和/或设备系统同时提供输入和输出能力两者。计算机1412可使用至一台或多台远程计算机,诸如远程计算机1444的逻辑 连接在网络化环境中操作。远程计算机1444可以是个人计算机、服务器、路由器、 网络PC、工作站、基于微处理器的装置、对等设备或其它常见网络节点等,且通 常包括上文相对于计算机1412描述的许多或所有元件。为简明起见,对于远程计 算机1444仅示出存储器存储设备1446。远程计算机1444通过网络接口 1448被逻 辑连接至计算机1412,并且然后通过通信连接1450被物理地连接。网络接口 1448 包括诸如局域网(LAN)和广域网(WAN)的通信网络。LAN技术包括光纤分布 式数据接口 (FDDI)、铜线分布式数据接口 (CDDI)、以太网/IEEE 802.3、令牌 环/正EE 802.5等。WAN技术包括,但不限于,点对点链路、如综合业务数字网 (ISDN)及其变型的电路交换网络、分组交换网络和数字用户线(DSL)。通信连接1450指的是用来将网络接口 1448连接至总线1418的硬件/软件。尽管为说明清楚,将通信连接1450示为位于计算机1412内,然而通信连接1450也 可以在计算机1412外部。仅为示例的目的,连接至网络接口 1448所必需的硬件/ 软件包括内部和外部技术,诸如包括常规电话级调制解调器、线缆调制解调器和 DSL调制解调器等的调制解调器、ISDN适配器以及以太网卡。图15是本发明可与之交互的示例计算环境1500的示意性框图。系统1500包 括一个或多个客户机1510。客户机1510可以是硬件和/或软件(例如,线程、进程、 计算设备)。系统1500也包括一个或多个服务器1530。服务器1530也可以是硬 件和/或软件(例如,线程、进程、计算设备)。例如,服务器1530可以容纳例如 通过使用本发明来执行转换的线程。客户机1510和服务器1530之间的一种可能的 通信可以是适于在两个或多个计算机进程之间传输的数据包的形式。系统1500包 括可以被用来便于客户机1510和服务器1530之间通信的通信架构1550。客户机 1510可操作地连接至可用来存储对客户机1510本地的信息的一个或多个客户机数 据存储1560。类似地,服务器1530可操作地连接至可被用来存储对服务器1530 本地的信息的一个或多个服务器数据存储1540。以上描述的包括本发明的示例。当然,不可能为描述本发明而描述每个可想象 的组件或方法的组合,但是本领域的普通技术人员可以认识到,本发明的众多其它 组合和排列是可能的。从而,本发明旨在包括落入所附权利要求书精神和范围内的 所有这样的变更、修改和变型。而且,就在详细描述或权利要求书中使用的术语"包 括"、"具有"和"含有"而言,当被用作权利要求书中的过渡词时,这样的术语旨在类似于解释术语"包含"的方式是包含性的。
权利要求
1. 一种数据存储破坏恢复系统,包括破坏检测组件,便于在数据存储中标识初始破坏数据项;以及隔绝组件,接收所述破坏项,从日志标识依赖数据项,并在所述数据存储中隔绝所述初始破坏数据项和从所述破坏项中派生的数据项。
2. 如权利要求l所述的系统,其特征在于,所述隔绝组件包括计算由受到所 述破坏数据影响的事务所写入的所有数据的闭包的闭包组件。
3. 如权利要求2所述的系统,其特征在于,所述隔绝组件包括将破坏数据项 标记为无效的无效器组件。
4. 如权利要求3所述的系统,其特征在于,所述无效数据项对事务而言不可见。
5. 如权利要求4所述的系统,其特征在于,还包括便于检索和/或查看破坏数 据的查询组件。
6. 如权利要求3所述的系统,其特征在于,所述无效数据项被从所述数据存 储中移除。
7. 如权利要求l所述的系统,其特征在于,所述日志为每一事务标识所读取 和/或写入的数据项
8. 如权利要求7所述的系统,其特征在于,所述由事务读取的数据项被合并 到事务在提交之前刚写入的单个日志记录中。
9. 如权利要求7所述的系统,其特征在于,数据项是由在锁定管理器中所使 用的资源标识符所标识的并以这些标识符记录在所述日志上的多粒度项目,所述隔 绝组件标识其中具有读写冲突的事务中的读锁定涉及先前事务中的破坏数据的破 坏依赖项,因为这样的事务读取了破坏数据而且随后又写入破坏数据。
10. 如权利要求l所述的系统,其特征在于,还包括 事务分析组件,接收事务并确定所述事务与之交互的数据项;以及 日志组件,从所述分析组件接收关于所述事务与之交互的所述数据项的信息,并将所述信息存储到计算机可读介质。
11. 如权利要求10所述的系统,其特征在于,所述日志组件将不与更新操作 相关联的读取记入日志,只要更新包括对数据项的读和写两个操作时,即可从更新曰志确定自更新操作的读取。
12. —种数据破坏恢复系统,包括 用于标识初始破坏数据项的装置;用于标识从所述初始破坏数据项派生的破坏数据项的装置;以及 用于在事务时间数据库中将所述被破坏的数据项版本标识为无效的装置。
13. 如权利要求12所述的系统,其特征在于,还包括用于针对具有无效版本 的所述数据库处理事务的装置以及用于査询无效数据项版本的装置的至少其中之
14. 一种计算机实现的数据破坏方法,包括 标识初始破坏数据项;标识从所述初始破坏数据项派生的破坏项;以及 在多版本数据存储上将所述破坏数据项标记为无效的。
15. 如权利要求14所述的方法,其特征在于,还包括在日志中为事务记录数 据项读取和写入。
16. 如权利要求15所述的方法,其特征在于,标识派生的破坏数据项包括计 算由受所述初始破坏数据影响的事务所写入的所有数据项的闭包。
17. 如权利要求14所述的方法,其特征在于,还包括在所述数据存储上查询无效数据d
18. 如权利要求14所述的方法,其特征在于,还包括在包括已被无效且被忽 视的破坏数据的所述数据存储上执行事务。
19. 如权利要求18所述的方法,其特征在于,在无效项版本上执行事务包括 采用所述项的之前有效的版本。
20. 如权利要求14所述的方法,其特征在于,还包括在所述数据存储上执行补偿所述破坏或无效数据的事务。
全文摘要
本发明关于数据存储破坏恢复。更具体地,本发明涉及用于以防止从数据库中取消提交或移除有效或一致事务的方式来标识破坏数据的系统和方法。这可至少部分地通过将事务读取的数据项的身份记入日志来实现。此外,本发明允许采用多版本(或事务时间)数据库来显著减少因破坏事务及相关联的破坏数据项引起的任何停工时间或数据库不可用。从而,无需安装备份,且仅由原始破坏事务和读取破坏数据的事务进行的更新需要被取消提交或移除。
文档编号G06F12/00GK101506766SQ200680015361
公开日2009年8月12日 申请日期2006年4月14日 优先权日2005年5月10日
发明者D·B·洛美特, R·S·巴佳 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1