用于使用WAL的数据库回滚的方法和设备与流程

文档序号:18090233发布日期:2019-07-06 10:43阅读:201来源:国知局
用于使用WAL的数据库回滚的方法和设备与流程

本文公开的本发明涉及数据库的取证分析的领域,且更具体地涉及用于使用预写式日志执行数据库到数据库的先前状态的回滚的方法和设备。

背景

通常,执行数据库恢复的需要在数据库系统出故障之后(例如在电源故障或系统崩溃之后)产生。为了保持被存储在数据库中的数据的完整性,数据库系统必须将数据库带回到在故障之前存在的最新的一致状态。如果例如系统崩溃出现在银行的两个账户之间的资金转移的中间,则合理的恢复方式将是将数据库重置回到它刚好在资金转移被发起之前所处于的状态,并接着然后再次重做转移。否则,银行可能不能够保证例如钱不被从账户之一提现,即使钱在崩溃之前从未到达另一账户。

除了上述内容以外,执行数据库恢复的需要还可由于其它原因而产生。一个这样的原因是,在取证分析中,其中恢复可能已经被自愿删除或修正的数据的需要有时是最重要的。当包含数据的文件被从例如硬盘驱动器删除或被在例如硬盘驱动器上修正时,操作系统通常只更新它的文件系统元数据,其中例如在硬盘驱动器上的特定文件的位置被存储。如果文件被删除,则元数据被更新,而文件的实际数据(如被写到硬盘驱动器的)维持原封不动。因此,即使文件系统元数据被更新或缺失,取证分析也可使用方法(例如数据雕刻),从而试图找出并读取已被删除或修正的文件的原始数据。数据雕刻(例如诸如模式搜索)的很多方法常常是复杂的并依赖于复杂的模型和试探法两者。除了散布的(或分段的)数据的不同的可能置换的数量常常很大的问题以外,方法还可能遭受结果并不总是被保证是正确的事实。数据雕刻方法可以以将来自几个不同的文件的几个片段一起拼凑成认为是单个文件的东西结束,因而产生错误的结果(错误肯定)。如果错误肯定的数量变得太大,则取证分析的工作变得很难且结果的可信度可能快速降低。

用于恢复数据库中的被(无意或)有意地删除或修正的数据的更可靠的方法可以是使用常常由很多数据库系统使用的日志记录功能。为了能够将数据库带回到先前状态(即执行数据库回滚),数据库系统可通过使用所谓的预写式日志(WAL)来记录在数据库上执行的动作(即:对数据库的改变)。当动作在数据库上即将发生时,使用WAL的数据库系统将不直接更新数据库。替代地,数据库系统将确定动作的结果并替代地将已经对数据库做出的改变记录到日志。在动作被执行的时间期间系统出故障的情况下,数据库将已经处于一致状态,且数据库系统可容易检查WAL以查看它在系统出现故障之前达到什么程度,并接着做出关于如何从那里继续进行的决定。为了使WAL不增长得太大,在WAL中的所记录的变化可在定期时机(例如在每个动作被成功地完成之后,或比因此如果想要的稀疏得多)或当被手动触发时被转移回到数据库。被称为检查点操作的这样的操作通常后面是WAL被重置,使得对随后的检查点的新改变从WAL的开头起被再次记录。

在US 8,683,262中公开了使用WAL以从系统故障恢复数据库的方法。在那里,首先过滤WAL,使得不相关的动作(例如以后被其它随后的动作变得无效的动作)被忽略,以便减小计算复杂度。使用经过滤的WAL,通过重放在经过滤的WAL中的剩余动作而将数据库从恢复状态转变到正常操作状态。因为所公开的方法的主要着眼点是在故障之后恢复数据库,所以可能产生其中该方法对取证分析有很少用处或没有用处的情况。

按照上文,因此需要用于使用WAL来执行数据库到数据库的先前状态的回滚的改进的、更灵活的、更可靠的和更适合用于取证分析的方法。

概述

本发明的目的因此是至少部分地满足上面规定的要求。本发明的这个和其它目的至少部分地被如在独立权利要求中限定的本发明满足,而优选的实施方式被在从属权利要求中阐述。本发明基于预写式日志可包含允许取证分析提取关于先前数据库状态的信息的信息的见识,其中先前状态的时间可相应于在WAL中的任何检查点(多个),以及其中可保证在一些情况中的所提取的先前状态是真实的先前状态(因此消除获得错误肯定的风险)。

在本发明的第一方面内,提供了用于将数据库回滚到数据库的先前状态的计算机实现的方法。数据库包含页面的第一集合,且数据库与预写式日志(WAL)相关,表示页面的第二集合的已修正内容的帧的集合可被记录到该预写式日志(WAL)内。如在本文使用的,数据库“页面”表示当存储数据库的内容时由数据库系统使用的数据的单位。如果被存储在数据库中的数据的大小超过单个页面的大小,则数据库数据将被分布在多个页面上并被存储在多个页面中,其中每个页面优选地具有固定大小。当做出对数据库的改变时,例如当信息被添加、更新或移除时,数据库系统可选择只将受影响的页面存储在WAL中,其中页面的已更新或已修正内容将被封装在“帧”中。帧可包含页面本身的已更新内容连同当阅读日志(例如诸如关于在数据库中的什么页面被更新的信息)时和当更新发生时可能有用的其它属性。在WAL中,在帧的集合中的每个帧因此表示相应的页面的已修正内容,且WAL还包含允许帧被按时间顺序排序的信息,使得WAL的读者可计算出帧被以什么顺序记录。

数据库还可与指示至少一个页面的已修正内容在至少一个检查点的集合处被从WAL转移到数据库的检查点信息相关,其中每个检查点相应于一个时间点,以及其中在帧的集合中的每个帧相应于所述检查点之一。如在本文使用的,“检查点”可由数据库系统本身发起,例如作为对WAL增长大于预定值的响应或例如作为对某个时间间隔的过去的响应。检查点还可由给出某个命令的用户或由计算机程序(或类似地,即访问数据库)发起。通常,检查点涉及通过将在WAL中的帧内找到的页面的最近(在时间上)修正的内容从WAL转移到数据库并其后执行WAL的“重置”使得WAL可由随后的更新来重写以便节省空间来更新数据库。检查点还可涉及只转移一些页面的已修正内容,而不执行WAL的这样的随后重置。后者的示例可涉及这样的情况:其中数据库的用户例如有对在WAL中的一个或多个帧的锁定。在这样的情况下,只有一些帧可被立刻转移到数据库,而其它帧将在以后的时间(如果有必要)被转移。如果数据库刚刚被创建或如果检查点操作还没有发生,则数据库的创建可视为检查点。为了确保在检查点操作期间只有页面的最近修正被转移到数据库,在WAL中的每个帧通常相应于某个检查点,且关于某个帧相应于哪个检查点的信息通常被包括在帧本身中。通常,只有相应于最新的检查点的帧将被考虑用于在新的检查点操作期间转移。

在第一方面中,该方法可包括选择在被记录到WAL的帧的集合中的特定帧的步骤。特定帧表示相应的特定页面的已修正内容并相应于按时间先后顺序在检查点信息中指示的至少一个检查点的集合中的零个或多于零个检查点之前的检查点。如果特定帧在零个检查点之前,则在最新的检查点操作之后特定帧被记录到WAL,且特定页面的已修正内容还没有被转移到数据库。如果特定帧在一个或多个检查点之前,则在最新的检查点之前帧被记录到WAL,且特定页面的已修正内容可能在先前检查点操作期间已经被转移到数据库。

该方法还可包括识别在帧的集合中的帧的第一子集使得第一子集包含特定帧和零个或多于零个按时间先后顺序在其前面的帧的步骤。如果该方法是恢复在某个特定的时间(此时特定帧被记录)数据库(部分地)看起来像什么,则关于什么比特定的时间更早发生的认识是需要的。这被反映,因为只有特定帧和在更早的时间被记录到WAL的帧被包括在帧的第一子集中。如果特定帧按时间先后顺序在最新的检查点后面,则帧的第一子集优选地被识别,使得它包含在特定帧前面的所述帧的集合中的帧的尽可能多的相应页面。如果特定帧在最新的检查点前面,则这还是真实的,但优选地有第一子集包含只相应于同一检查点的帧的附加的条件。这将进一步被结合附图2来论述。

该方法还可包括从页面的第一集合提取页面的第一子集的步骤。页面的这个子集可包含在页面的第一集合中找到的页面中的全部、一些或没有一个页面,这取决于例如特定的时间和它如何与在检查点信息中指示的最新的检查点有关。例如,如果特定页面的已修正内容比在页面的第一集合(在数据库中找到的)中的相应页面的内容老,则到包含特定页面的已修正内容的先前状态的回滚可能不要求在页面的第一集合中的特定的相应页面被包括在所提取的页面的第一子集中。

该方法可包括从帧的第一子集的相应页面提取页面的第二子集的步骤,且该方法还可包括执行数据库到包含特定页面的特定已修正内容的先前状态的回滚的步骤。回滚基于页面的第一子集的内容和页面的第二子集的已修正内容。

通过适当地选择帧和页面的相应子集并通过考虑到相应的帧(和页面内容)被记录到日志时的时间并通过将这些时间与当数据库被最后更新(即当检查点操作被最后执行时)的时间进行比较,可在回滚期间创建数据库的先前状态。这还将被结合图2进一步论述。

如在本文使用的,帧的集合可包含同一页面的很多已修正内容。作为示例,如果WAL包含表示第一页面的已修正内容的32个帧,则这些32个帧仍然被认为表示同一第一页面。

在一个示例实施方式中,特定帧可相应于按时间先后顺序在至少一个检查点的集合中的一个检查点之前的检查点。这样的帧在最新的检查点之前但在紧接着在最新的检查点之前的检查点之后被记录到WAL。如果在WAL中有相应于与特定帧相同的检查点并按时间先后顺序在特定帧之后并表示与特定页面相同的相应页面的已修正内容的帧,则特定页面的内容可以比当前在数据库中找到的相应页面的内容老。提取在最新的检查点之前的信息的可能性是有利的,因为可设想在数据库上的所执行的动作(包括在最新的检查点之前的动作)的延长的时间线。

在一个示例实施方式中,该方法还可包括在帧的集合中识别包含按时间先后顺序在特定帧后面的零个或多于零个帧的帧的第二子集的步骤,其中帧的第二子集相应于页面的第三子集。该方法可包括确定页面的第三子集包含不是页面的第二子集的部分的至少一个页面并指示先前状态不是真实的先前状态的步骤。从取证观点看,这样的实施方式是有利的,因为前面的信息可被至少部分地提取,以及因为取证分析可获知所提取的状态可以只部分地与数据库的先前状态相同。在另一示例实施方式中,该方法可包括确定页面的第三子集是页面的第二子集的子集并指示先前状态是真实的先前状态的步骤。取证分析可受益于获知关于所提取的信息与数据库的先前状态相同。

在一个示例实施方式中,特定帧可相应于按时间先后顺序在至少一个检查点的集合中的多于一个检查点之前的检查点。这样的帧在最新的检查点和紧接着在最新的检查点之前的检查点两者之前被记录到WAL。如果选择这样的特定帧,则可提取关于早几个检查点对数据库做出的变化的信息,且数据库如何已经被修正的较长时间线可因此被构造并从取证观点来看是有益的。

在另一示例实施方式中,该方法还可包括确定页面的第一集合包含不是页面的第二子集的部分的至少一个页面并指示先前状态不是真实的先前状态的步骤。即使真实的先前数据库状态可以不被创建,至少一些数据的取回也可以是有益的,且如果所述数据被标记为不是真实的先前状态,则甚至更是有利的。在另一示例实施方式中,该方法可包括以下步骤:确定页面的第一集合是页面的第二子集的子集并指示先前状态是真实的先前状态。

在本文中,“真实的先前状态”意指(重新)创建的状态与数据库在当特定帧被记录到WAL时的特定时间所处于的状态相同,以及在先前特定时间从数据库提取的信息将已经与使用本发明的第一方面的方法提取的信息相同。这包括特定页面的内容和数据库的所有其它页面的内容两者都与它们在特定时间的内容相同。

在一个示例实施方式中,数据库可以是SQLite数据库或其衍生型。SQLite常常用作在例如移动电话或平板计算机中的应用的数据库。因此,本发明可用于这样的设备的取证分析。

在一个示例实施方式中,可在WAL、共用的存储器文件中或在这两者的组合中找到检查点信息。

在一个示例实施方式中,允许帧按时间先后顺序被排序的信息可包括帧被以其写在WAL中的顺序、salt值、计数索引或其组合。

在本发明的第二方面中,提供了计算机程序产品。计算机程序产品包括具有当由具有处理能力的设备执行时适合于实施根据本发明的第一方面的方法的指令的计算机可读存储介质。

在本发明的第三方面中,提供了被配置成执行数据库到数据库的先前状态的回滚的设备。数据库包括页面的第一集合,且数据库与WAL相关,表示页面的第二集合的已修正内容的帧的集合已经被记录到该WAL内,其中每个帧表示相应页面的已修正内容。数据库还与指示在至少一个检查点的集合处至少一个页面的已修正内容被从WAL转移到数据库的检查点信息相关,其中每个检查点相应于时间点,以及其中在帧的集合中的每个帧相应于所述至少一个检查点之一。WAL还包括允许帧被按时间先后顺序排序的信息,且设备适合于访问数据库和与其相关的WAL和检查点信息。可通过网络、总线或任何其它适当的通信链路提供这样的访问。设备可包括存储器和处理器,其中存储器可用于临时或永久地存储WAL和检查点信息的至少一部分。处理器可被配置成当请求时选择在帧的集合中的特定帧,其中特定帧表示相应的特定页面的特定已修正内容,以及其中特定帧相应于按时间先后顺序在至少一个检查点的集合中的零个或多于零个检查点之前的检查点。处理器还可被配置成在帧的集合中识别包含特定帧和零个或多于零个按时间先后顺序在其前面的帧的帧的第一子集。处理器可被配置成从页面的第一集合提取页面的第一子集,且处理器还可从帧的第一子集的相应页面提取页面的第二子集。处理器可被配置成基于页面的第一子集的内容和页面的第二子集的已修正内容来执行数据库到包含特定页面的特定已修正内容的先前状态的回滚。

第二和第三方面可相应地体现到第一方面,且在第一方面的定义中提到的优点同样可适用于第二和第三方面。注意,本发明涉及(即使被在相互不同的权利要求中列举的)特征的所有组合。

附图的简要说明

现在将参考附图来更充分地描述本发明,在附图中:

图1a是包括页面的集合的数据库的示意图;

图1b是与数据库相关的预写式日志(WAL)和检查点信息的示意图;

图2是示例性数据库、WAL和检查点信息的示意图;

图3是根据示例实施方式的执行数据库到数据库的先前状态的回滚的方法的流程图;以及

图4是根据示例实施方式的用于执行数据库到数据库的先前状态的回滚的设备的框图。

除非明确地说明与之相反,否则附图只示出说明示例实施方式所必需的这样的元件,而其它元件为了清楚起见可被省略或仅仅被建议。

示例实施方式的详细描述

在图1a中示出数据库101的示意图。数据库的信息被存储为页面110a-110n的集合D={1,2,3,...,N},其中N≥1是相应于当前在该集合中的页面的数量的整数。如果例如更多的信息被添加到数据库101,则所需的页面110的数量可增加。同样,如果从数据库101移除信息或如果发出“清空(vacuum)”命令,则所需的页面110的数量可减少。一般而言,数据库101的页面110的数量是动态量,且由例如数据库系统负责记录什么信息将被在什么页面上找到。

为了反转在数据库101上执行的动作,当新动作被执行时,使用预写式日志(WAL)的数据库系统将不直接更新数据库。替代地,动作的结果将被记录在WAL中,且这样的WAL 102的示意图被显示在图1b中。当动作被在数据库101上执行时,数据库系统将决定数据库101的哪些页面110被动作影响。如果页面被影响,则数据库系统将把那个页面的已修正内容存储在帧中并将那个帧记录到WAL。图1b所示的WAL 102包括表示页面130的集合D′={P′1,...}的已修正内容的这样记录的帧120的集合S={F1,...},其中每个帧Fj(其中j≥1)120j表示相应页面P′j(其中P′j∈[1,L]以及L≥N)130j的已修正内容。

如果做出对在数据库101的某个页面上找到的信息的查询,则数据库系统可以检查WAL 102以查看某个页面的最近(修正)版本是否被在那里找到,而不是读取如在当前数据库101中找到的某个页面的内容。如果是这种情况,则数据库系统可替代地使用某个页面的这个已修正版本。如果WAL 102不包含某个页面的最近版本,则在数据库101本身中找到的页面被替代地使用。通过这么做,查询的结果将表示数据库的最近状态,即使实际数据库本身未被更新。如果引起数据库101的最近更新的动作将被反转,则数据库系统可忽略在WAL 102中找到的页面的最近(已修正)版本,并替代地使用在WAL 102中找到的同一页面的另一版本或在数据库101本身中的页面。

如果在数据库上执行越来越多的动作,则当越来越多的帧(表示相应页面的已修正内容)被记录到WAL 102时,WAL 102的大小将增长。为了防止WAL 102增长得太大,可执行被称为“检查点”操作的操作。在检查点操作期间,在WAL 102中找到的页面的已修正内容可被转移到数据库,且引起的动作可以变成永久性的。如果在检查点操作期间,在WAL 102中找到页面的最近(修正)版本,则那个页面的已修正内容将取代当前在数据库中找到的同一页面的内容。当完成检查点操作时,可“重置”WAL102,使得新帧可被添加到WAL 102的开始部分,重写在检查点操作发生之前记录的帧(如果有必要的话)。在数据库术语中,在WAL 102中的所记录的帧相应于在事务期间执行的动作,且在WAL 102中的帧可被标记为相应于“提交(commit)”操作,其中属于同一事务的动作被提交。WAL 102可以且常常确实包含相应于多个事务的帧。

为了使数据库系统知道哪些帧在例如最新的检查点操作之后被记录,数据库可与指示在检查点的集合C={c1,...,}处至少一个页面的已修正内容被从WAL 102转移到数据库101的检查点信息相关,其中每个检查点ck(k≥1)相应于时间点。通过使每个帧与在集合C中的相应的检查点相关(即每个帧Fj与检查点dj相关,其中dj∈C),例如数据库系统于是可以可能弄清楚在哪个检查点之后或在哪对检查点之间,特定的帧被记录,以及相应页面的已修正内容与例如当前在数据库101中的同一页面的内容比较是多么最近。每个检查点可被给予相应的唯一ID,且可在检查点操作和下一检查点操作之间的时间间隔期间在被记录到WAL 102的帧中指示唯一ID。当执行新的检查点操作时,改变唯一ID,且每个帧可因此与某个时间间隔相关联。通过考虑到帧以其被记录到WAL的顺序,与同一间隔相关联的帧可以被单独地按时间先后顺序进行排序。记录时间先后顺序的另一方式可包括将相应于当检查点操作被执行时的时间的时间戳给予每个检查点,以及通过将相应于当帧被记录到WAL 102时的时间的时间戳给予每个帧。通过比较时间戳,可建立时间先后顺序。

发明人已经认识到,即使WAL 102可以已经被重置,在比最新的检查点操作更早的检查点操作之后记录的帧也仍然可被留在WAL 102中,以及关于数据库的先前的状态的信息可因此被提取。

为了说明可如何执行数据库到数据库的先前状态的回滚的计算机实现的方法,可考虑下面的示例(参考图2)。具有总共N=4个页面的数据库最近经历下面的操作:

1)在检查点c3处,完成检查点操作,更新数据库并重置WAL。

2)页面1、2、1、3、3、4、1、4、3、3、2、4、1、2、3和1被更新(以给定的时间先后顺序)且相应页面的已修正内容被记录到WAL。

3)在时间上在c3之后的检查点c2处,完成另一检查点操作,更新数据库并重置WAL。

4)页面4、1、2、1、2、1、1、3、3、1和2被更新(以给定的时间先后顺序)且相应页面的已修正内容被记录到WAL。

5)在时间上在c2之后的检查点c1处,完成最终检查点操作,更新数据库并重置WAL。

6)页面2、1、1和3被更新(以给定的时间先后顺序)且相应页面的已修正内容被记录到WAL。

在已经经历上面列出的所有操作之后,在图2中示出数据库101和WAL 102的当前状态。数据库101包括页面的第一集合D={1,2,3,4},且WAL 102包括所记录的帧的集合S={F1,F2,...,F16},其中帧代表相应页面的第二集合D′={2,1,1,3,2,1,1,3,3,1,2,4,1,2,3,1}的已修正内容。因为第二操作涉及修正总共16个页面的内容,所以表示这些页面的已修正内容的一些帧仍然被留在WAL 102中。这是因为没有随后的操作涉及更新总共多于16个页面,这意味着16个页面中的一些没有被这样的随后操作重写。因为第四操作涉及修正总共11个页面的内容,所以一些相应的帧也仍然存在于WAL 102中,因为第六操作涉及修正仅仅4个页面的内容。在最新的检查点操作期间,数据库101被更新,使得数据库的第一页面110a的内容相应于在WAL 102中的帧F10中找到的页面的已修正内容(也就是说,F10→1)。此外,第二页面110b的内容相应于在帧F11中找到的页面的已修正内容(F11→2),以及第三页面110c的内容相应于在帧F9中找到的页面的已修正内容(F9→3)。数据库101的第四页面110d的内容未被在WAL102的帧中找到,但如上所述,第四页面110d在最新的检查点操作期间被更新,尽管相应的帧在随后的更新期间(例如在第六操作期间)自那以来已经被重写。

如在附图中所示的,在WAL 102中的每个帧相应于在检查点的集合C={c1,c2,c3}中的检查点,并且通过考虑相应于同一检查点的帧以其被记录在WAL 102中的顺序,可按时间先后顺序将帧排序。每个帧可包括例如相应于其相应的检查点的索引,且数据库101本身可包括对所最新执行的检查点操作的引用(例如SALT值),以便使数据库系统确定在WAL 102中的哪些帧是“有效的”或“活跃的”(也就是说,此刻包含比当前被存储在数据库101中的页面的已修正内容更近的页面的已修正内容的帧,即:在WAL 102中的帧F1到F4)。

为了提取关于数据库101的先前状态的信息,根据本发明的示例实施方式的方法300(如由图3中的流程图所示的)可由首先选择特定帧FM(S301)组成。在当前示例中,假设选择特定帧,使得M=10且FM=F10,以及特定帧相应于按时间先后顺序在一个检查点c1∈C之前的检查点c2。接着,识别第一子集(S302),使得Sf包含特定帧FM和零个或多于零个按时间顺序在其前面的帧。在示例中,选择Sf,使得Sf={F5,F9,F10}。从页面的第一集合D中提取第一子集D1={4}(S303),且从帧的第一子集Sf的相应页面提取页面的第二子集D′f={1,2,3}(其中F5→2、F9→3以及F10→1)(S304)。基于在D1中的页面的内容和在D′f中的页面的已修正内容,可执行数据库到包含特定页面P10(由特定帧F10表示)的特定已修正内容的先前状态的回滚(S305)。在D′f中找到在先前状态下的数据库101的前三个页面110a-110c的内容,且在D1中找到在先前状态下的数据库101的第四页面110d的内容。

在上面的示例中,选择特定帧,使得它的相应检查点恰好在检查点的集合C中的另一个检查点之前。根据一个示例实施方式,可有意地选择特征帧,使得它的相应检查点恰好在另一个检查点之前。使用WAL 102的数据库回滚的常规方法将只提取在时间上等于最新的检查点或在最新的检查点之后的状态,但是根据本发明的方法将因此能够提取关于包含PM的已修正内容的先前数据库状态(在最新执行的检查点操作之前的状态)的信息。

在另一示例实施方式中,除了选择FM使得它的相应检查点恰好在C中的另一个检查点之前以外,该方法还可包括以下步骤:其中在帧的集合S中识别帧的第二子集Sl={F11},使得Sl包含在特定帧F10后面的零个或多于零个帧,且其中Sl相应于页面的第三子集D′l={2}。该方法可接着确定页面的第三子集D′l是页面的第二子集D′f的子集,并指示由该方法提取的先前状态是“真实的”先前状态。当特定帧F10被选择时,在帧F11中找到的第2页面的已修正内容必须被忽略,并用它在导致帧F11被记录的动作被执行之前的内容来代替。在帧F5中(即在D′f中)找到(第2页面的)想要的已修正内容,且先前状态因此在下面的意义上是真实状态:先前状态的页面的所有内容与它们在当F10刚刚被记录到WAL 102时的时间的所有内容相同。

在另一示例实施方式中,该方法可替代地识别页面的另外的第三子集D′l并确定这个子集不是页面的第二子集D′f的子集。这可通过确定D′l包含不是页面的第二子集的部分的至少一个页面PA∈D′l来实现。该方法可接着指示所提取的先前状态不是真实的先前状态。作为例证,如果替代地选择较早的示例的特定帧,使得M=7且FM=F7,则可能的另一选择将是Sf={F5,F7}、D1={4}且D′f={1,2}(其中F5→2且F7→1)。如果Sl={F8,F10,F11}(使得D′l={1,2,3}),则显然在D′f中没有找到在D′l中的第3页面(从F8→3)。因此,导致帧F8被记录的动作不能被反转,因为关于第3页面的已修正内容的确切认识不可得到。然而应注意,不是真实的先前状态的先前状态的提取可能仍然是有价值的,因为所提取的先前状态的至少一些页面(例如第1、2和4页面)的内容仍然与在当F7刚刚被记录时的时间的内容相同。

在另一示例实施方式中,可选择特定帧,使得例如M=15且FM=F15。如果情况是这样,则相应的检查点在C中的多于一个检查点之前,因为F15在检查点c1和c2两者之前。子集的可能选择将是Sf={F12,F13,F14,F15}、以及D′f={1,2,3,4}(其中F13→1、F14→2、F15→3且F12→4),且数据库到包含P15的先前状态的回滚可被执行,其中页面的内容都被在D′f中找到。

在一个实施方式中,该方法还可包括确定页面的第一集合D是页面的第二子集D′f的子集的步骤,并指示由该方法提取的先前状态是真实的先前状态。因为如在先前示例实施方式中的,D′f包含在D中找到的每个页面的已修正版本,确定的是,所提取的先前状态是真实的先前状态。

在另一实施方式中,该方法可包括确定页面的第一集合D不是页面的第二子集D′f的子集的步骤。这可通过确定D包含未被在D′f中找到的至少一个页面来实现。如果情况是这样,则该方法可指示所提取的先前状态不是真实的先前状态。例如,如果帧F14将替代地表示第1页面(而不是第2页面)的已修正内容,则将不可得到关于第2页面的已修正内容的认识,且导致例如帧F5(还表示第2页面的已修正内容的帧)被记录的动作不能被反转。尽管如此,即使所提取的先前状态不是真实状态,它也可能仍然是有用的,因为至少一个页面(页面PM)的内容与刚在FM被记录之后的它的内容相同。

在另一示例中,如果选择特定帧使得它的相应检查点按时间先后顺序不在任何其它检查点之前(即如果特定帧在最新的检查点操作之后被添加到WAL 102),则数据库101到包含特定页面的特定已修正内容的先前状态的回滚是径直的。仍然使用图2所示的示例,用于这么做的方法将包括选择特定帧使得M∈{1,2,3,4}。如果例如M=3且FM=F3,则子集的可能选择可以是Sf={F1,F3}、D1={3,4}以及D′f={1,2}(其中F3→1且F1→2),其后,可执行到包含P3的先前状态的回滚。具有这样的相应特定帧的先前状态将总是真实的先前状态(在数据库、WAL或检查点信息中没有一个已经被损坏的假设下)。

在图4中示出根据示例实施方式的被配置成执行到数据库101的先前状态的数据库回滚的设备。设备401适合于访问数据库101和与其相关的WAL102和检查点信息。这个访问由访问装置404来提供,访问装置404可以是例如网络、局部总线、电线、无线链路或适合于此的任何其它类型。设备包括存储器403和处理器402,其中处理器被配置成当请求时在WAL102中的帧的集合中选择特定帧。特定帧表示相应的特定页面的特定已修正内容,以及特定帧相应于按时间先后顺序在至少一个检查点的集合中的零个或多于零个检查点之前的检查点。处理器402还被配置成在帧的集合中识别包含特定帧和零个或多于零个按时间先后顺序在其之前的帧的帧的第一子集。处理器402还被配置成从页面的第一集合提取页面的第一子集,以及从帧的第一子集的相应页面提取页面的第二子集。处理器402被配置成执行数据库101到包含特定页面的特定已修正内容的先前状态的回滚,其中基于页面的第一子集的内容和页面的第二子集的已修正内容来执行回滚。当需要时,处理器可使用存储器403来临时和永久地存储信息。数据库101(和/或WAL 102)可以被设备401从单独的位置利用,或设备401和数据库(和/或WAL 102)可被集成在一起(即数据库101和/或WAL 102可被存储在例如被包括在设备401本身中的介质上)。

相比于使用诸如数据雕刻的方法来提取关于数据库的已删除或已修改的数据的信息,本发明的方法在本质上不是统计的,且结果的可信度确实可以(假设数据库和或WAL未遭受损坏)是已知的。除了有将属于同一数据库的数据拼凑在一起的问题以外,基于雕刻的方法可面对试图弄清楚什么数据属于数据库中的哪个表格的甚至更大的问题(特别是如果一些表格共用列的相同布置)。使用本发明的方法,这不是问题,因为WAL将包含所需的信息。根据本发明的方法还可以能够显示数据库在几个时间点看起来像什么:这对没有将数据的某个片段准确指出到某个时间点的能力的雕刻方法是不可行的任务。如果数据库经历对它的数据库模式(例如它的表格和列的布置)的改变,则同样如此。如果例如将新的列给予表格或如果列的顺序已经改变,则基于雕刻的方法将没有分析在当对表格的改变被做出时之前插入的数据的合理机会。使用应用本发明的方法,在WAL中找到在每个时间点的当前模式(即表格和列布置)。当试图分析属于数据库的数据时,基于雕刻的方法还可面对问题,其中表格以某种方式彼此有关,因为在两个表格之间的连接通常在数据雕刻将要被执行时被丢失。对于如下的数据库同样如此:其结构被有意地修改以阻碍取证分析,例如成碎片的数据库,其中所有主要数据被存储在单个键值表中,以及其中额外的表格用于组合不同的键值以便提取人类可读的信息。利用本发明的方法较不易于受到这样的有意阻碍。

在研究了上面的描述之后,本发明的又一些另外的实施方式将对本领域中的技术人员变得明显。即使本描述和附图公开了实施方式和示例,本发明也不限于这些特定的示例。可做出很多修改和变化,而不偏离由所附权利要求限定的本发明的范围。出现在权利要求中的任何参考符号不应被理解为限制其范围。

在上文中公开的设备和方法可被实现为软件、固件、硬件或其组合。虽然方法的步骤为了清楚的原因被按顺序列出,但是一些或所有步骤可以(如果适合的话)被并行地执行。在硬件实现中,在上面的描述中被提到的功能单元之间的任务的划分并不一定相应于到物理单元的划分;相反,一个物理部件可具有多个功能,且一个任务可由几个物理部件合作执行。某些部件或所有部件可被实现为由数字信号处理器或微处理器执行的软件或被实现为硬件或为专用集成电路。这样的软件可分布在可包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)的计算机可读介质上。如本领域中的技术人员公知的,术语计算机存储介质包括以任何方法或技术实现的、用于存储信息(例如计算机可读指令、数据结构、程序模块或其它数据)的易失性和非易失性、可移动和不可移动的介质两者。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存存储器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储器、盒式磁带、磁带、磁盘存储器或其它磁存储设备或可用于存储期望信息并可由计算机访问的任何其它介质。此外,技术人员公知的是,通信介质通常体现计算机可读指令、数据结构、程序模块或在调制数据信号(例如载波或其它传输机制)中的其它数据并包括任何信息输送介质。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1