用于数据模型中实体的自动维护与修复的系统和方法转让专利

申请号 : CN200510087840.7

文献号 : CN1707481B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : A·A·欧克斯H·R·科达瓦拉M·J·斯利曼N·R·艾利斯

申请人 : 微软公司

摘要 :

本发明涉及一种逻辑一致性检验器(LCC),其单独工作或者与一种硬件/软件接口系统的数据库文件系统的一种物理一致性检验器(PCC)和/或一种数据可靠性系统(DRS)结合工作。逻辑型数据校正适合于实体的逻辑型数据损坏(例如,在一个基于项目的操作系统中的项目、扩展和/或关系,其中基于项目的操作系统是基于项目的硬件/软件接口系统的一个实例)。 关于这一点,LCC分析并且校正对于典型地保存在数据存储器中的实体的逻辑损害,以便保证所述数据存储器中的所有这些实体都是一致的并且符合数据模型规则。

权利要求 :

1.一种用于数据库文件系统的逻辑一致性检验器,所述逻辑一致性检验器包括:用于检验数据库中对应于所述数据库文件系统的一组表格的参照完整性的至少一个逻辑不一致性的装置;以及用于在检验所述参照完整性之后检验存在于所述数据库文件系统中的一组实体的结构完整性的至少一个逻辑不一致性的装置。

2.权利要求1的逻辑一致性检验器,进一步包括用于在检验所述结构完整性之后解决至少一个逻辑不一致性的装置。

3.权利要求2的逻辑一致性检验器,其中所述用于解决至少一个逻辑不一致性的装置从以下解决办法的组中执行至少一个解决办法:页面级别恢复、实体级别恢复以及用伪实体替换损坏实体。

4.权利要求3的逻辑一致性检验器,其中所述用于解决至少一个逻辑不一致性的装置首先执行进行页面级别恢复以及,如果没有成功,然后执行进行实体级别恢复以及,如果没有成功,然后用一种伪实体替换对应于所述至少一个逻辑不一致性的至少一个损坏实体。

5.权利要求3的逻辑一致性检验器,其中如果所述实体是一个项目,所述用一种伪实体替换损坏实体的解决办法包括:创建所述伪实体并且用所述伪实体重定向属于所述损坏实体的至少一个关系;以及将所述损坏实体移到一个坏的项目文件夹。

6.权利要求3的逻辑一致性检验器,其中如果所述实体是一种关系,所述用一种伪实体替换损坏实体的解决办法包括:创建所述伪实体作为对应于损坏项目关系的关系;并且将所述损坏实体存入一个坏的项目文件夹。

7.一种用于数据库文件系统的逻辑一致性检验器中、用于处理实体级别上逻辑不一致性的方法,所述方法包括:检验数据库中对应于所述数据库文件系统的一组表格的参照完整性的至少一个逻辑不一致性;以及在检验所述参照完整性之后检查检验存在于所述数据库文件系统中的一组实体的结构完整性的至少一个逻辑不一致性。

8.权利要求7的方法,进一步包括在检验所述结构完整性之后,解决至少一个逻辑不一致性。

9.权利要求8的方法,其中所述解决至少一个逻辑不一致性的要素包括从以下解决办法的组中执行一个解决办法:页面级别恢复、实体级别恢复以及用伪实体替换损坏实体。

10.权利要求9的方法,其中所述解决至少一个逻辑不一致性的要素包括:执行页面级别恢复;

如果所述试图页面级别恢复没有成功,则执行实体级别恢复;以及如果所述执行实体级别恢复没有成功,则用一种伪实体替换对应于所述至少一个逻辑不一致性的至少一个损坏的实体。

11.权利要求9的方法,其中如果所述实体是一个项目,所述用一种伪实体替换损坏实体的解决办法进一步包括:创建所述伪实体并且用所述伪实体重定向属于所述损坏实体的至少一个关系;以及将所述损坏实体移动到一个坏的项目文件夹。

12.权利要求9的方法,其中如果所述损坏实体是一种关系,所述用一种伪实体替换损坏实体的解决办法包括:创建所述伪实体作为对应于损坏项目关系的关系;并且将所述损坏实体存入一个坏的项目文件夹。

13.一种用于数据库文件系统的自动化数据可靠性系统中、用于处理实体级别上逻辑不一致性的硬件控制装置,所述装置包括:用于利用一组用于执行数据库管理任务的策略的装置;

用于在一个页面级别上解决一组物理数据损坏的装置;以及用于在一个实体级别上解决一组逻辑型数据损坏的装置,所述用于在一个实体级别上解决一组逻辑型数据损坏的装置还包括:用于检验数据库中对应于所述数据库文件系统的一组表格的参照完整性的至少一个逻辑不一致性的装置;以及用于在检验所述参照完整性之后检验存在于所述数据库文件系统中的一组实体的结构完整性的至少一个逻辑不一致性的装置。

说明书 :

用于数据模型中实体的自动维护与修复的系统和方法

[0001] 交叉引用
[0002] 本申请是2004年5月3日申请的、标题为“用于自动化数据库或文件系统维护与修复的系统和方法”、编号为10/837,932(律师记事表号MSFT-3842)的美国专利申的部分继续。

技术领域

[0003] 本发明一般涉及文件系统管理,并且尤其涉及确保对于一种数据模型的数据可靠性和一致性的自动化的文件系统维护与修复。本发明的各个方面属于在一种数据实体级别上响应于并且校正逻辑数据误差,而不丢失其它向下级别(子)数据实体。尤其是本发明的各个方面特别属于在一个基于项目(item)的硬件/软件接口系统中逻辑型数据的维护。
[0004] 背景
[0005] 虽然客户端数据库平台(即家庭和商业台式计算机)使用一种比服务器平台上质量低得多的硬件,即使服务器类别硬件(控制器、驱动器、磁盘等等)也可以导致“物理”上的数据损坏,以至读出操作不返回数据库应用程序写入数据存储器中的内容。当然,对于各种理由的具有客户端数据库平台(相对于服务器数据库平台)这显然是一个更加丰富问题,所述理由包括但不局限于在写操作当中由于意外的电源断电(其依次导致损害的页面和潜在的数据库损坏)而导致的任意地断电的客户端机器增加的可能性,然而对于服务器数据库系统更加普遍的是利用非中断电源以缓和断电问题。媒体衰退是另一个“物理”数据损坏的来源,其中物理存储器媒体超时就会几乎磨损。然而涉及可靠性的另一个来源是来自“逻辑”损坏的检测和恢复,其由偶然的(例如程序错误)或致命的(例如病毒)的软件错误所引起。
[0006] 传统地数据库(以及数据库文件系统)的维护与修复已经落到数据库管理者等等具有良好开发技能以及具有数据库系统高深知识者的身上,或者至少落到熟悉并且经常使用数据库系统的个人以及相对熟练数据库技术的许多人身上。另外一个方面,操作系统以及应用程序的普通消费者和业务最终用户很少利用数据库,并且对于数据库维护以及修复问题的处理基本上未受过好的培训。
[0007] 虽然过去不相干的这两组之间的技能水平大不相同,然而硬件/软件接口系统的数据库实施的文件系统创建了一种方案,其中这些较少经验的最终用户将面对他们基本上不能解决的数据库维护和修复问题。因此一个业务/消费者数据库实施的操作系统文件系统、或简称“数据库文件系统”(DBFS)必须能够检测出损坏并且恢复它的数据库到一种相互影响的一致状态,在不可恢复的数据丢失的情况下,DBFS则必须保证在该级别原子变化单元中的逻辑型数据和维护的数据的一致性(即,在对于一个基于项目DBFS中的“项目”级别)。此外,对于迟钝提交模式(lazy commit mode)下所缺省的DBFSs运行,恰好在不正常的关闭前所提交的事务持久性是不被保证的并且必须被说明和校正。
[0008] 此外,虽然业务/消费者最终用户将大大地受益于自动化DBFS的维护和恢复,但是数据库管理者以及那些数据库技能大师同样受益于解决一般的数据库维护与修复的方案。在本领域对于数据库管理员来说使用数据库工具(例如SQLServer 2000提供的数据库协调顾问)是常事,但是这些工具不直接处理可靠性,相反而是提供一个管理数据库备份的装置,并且不以几乎自动化的方式,而是需要包含实在的数据库管理员,尤其当数据库备份不可靠或出现其它修复问题。因此处理数据库可靠性的自动化解决办法将同样有益于数据库管理员及其他熟练的数据库用户。
[0009] DBFS的数据可靠性系统(DRS)包括一个主机(framework)以及一组用于自动地执行数据库管理(DBA)任务的策略并且几乎不涉及或不直接涉及最终用户(以及因此基本上对于所述最终用户是透明的)。对于若干实施例,DRS主机实施用于向DRS插入误差以及事件报告、策略以及误差/事件处理算法的机制。尤其是,对于这些实施例DRS是一个负责后台DBFS维护以及修复的后台线程,以及因此在高级别上DRS保护并且维护DBFS的总体完好。对于某些实施例,DRS包括对于物理数据损坏的以下特征:(1)对于所有页面类型,在一个页面级别上响应并且校正数据损坏;以及(2)试图对于索引页面损坏(簇和非簇)、数据页面损坏以及日志文件中的页面损坏的第二级别恢复(重构或重新存储)。因此对于某些实施例,DRS包括以下功能:(i)处理修复恢复数据损坏情况;(ii)改善本系统的可靠性以及有效性;以及(iii)必要时为熟练的第三方保持一个DRS误差/事件历史表以调试数据库或存储器引擎问题。
[0010] 虽然实施例可以处理物理数据损坏(即校正存储在物理存储器媒体上的数据库中的损坏数据),但是一个稳固的DRS同时将处理实体(例如项目、扩展和/或关系)的逻辑型数据损坏,其一般保存在数据存储器中,以便保证所述数据存储器中所有这些实体都是一致的并且符合数据模型规则。
[0011] 概述
[0012] 本发明各种实施例涉及一种DBFS的数据可靠性系统(DRS),所述DBFS包括一种保存在一种数据库(物理数据)中的文件系统(逻辑型数据)或换言之,包括表示一种文件系统(逻辑型数据)的数据库(物理数据)。DRS可以包括一个主机(framework)以及一组用于自动地执行数据库管理(DBA)任务的策略并且几乎不涉及或不直接涉及最终用户(以及因此基本上对于所述最终用户是透明的)。DRS主机实施用于向DRS插入误差以及事件报告、策略以及误差/事件处理算法的机制。尤其是,对于些实施例DRS是一个负责后台DBFS维护以及修复的后台线程以及因此在高级别上DRS保护并且维护DBFS的总体完好。
[0013] 对于本发明各种实施例,DRS包括以下特征:
[0014] ·物理数据校正:对于所有页面类型,在页面级别上响应并且校正物理数据损坏,其中可以包括试图改造或修复索引页面损坏(簇和非簇)、数据页面损坏以及日志文件中的页面损坏的操作。
[0015] ·逻辑数据校正:在一个基于项目的操作系统中响应以及校正“实体”的逻辑型数据损坏,例如项目、扩展和/或关系(一个基于项目的操作系统是一个基于项目的硬件/软件接口系统的一个实例)。
[0016] 对于第二个核心,本发明的几个实施例特别涉及一种逻辑一致性检验器(LCC),其分析以及校正典型地保存在数据存储器中的实体(例如项目、扩展和/或关系)的逻辑“损坏”,以便保证所述数据存储器中的所有这些实体都是一致的并且符合数据模型规则。对于某些实施例LCC可以是自治的,而对于其它实施例它也可以耦合到一个物理一致性检验器(PCC),其用于检测并且校正物理数据损坏,和/或对于另外其它实施例LCC可以包含DRS的一个组件。
[0017] 附图简述
[0018] 当结合附图来阅读时,更能理解上述概述以及以下优选实施例的详细说明。为了说明本发明,附图示出本发明示例性设计;然而本发明不局限于公开的这些具体方法和工具。在这些附图中:
[0019] 附图1是表示本发明的一些方面可以被包括在其中的一个计算机系统的方框图;
[0020] 附图2是说明表示本发明若干实施例的数据库文件系统(DBFS)中的数据可靠性系统(DRS)的结构的框图;
[0021] 附图3是说明对于本发明某些实施例,逻辑上确定损坏实体的方法的处理流程图;
[0022] 附图4是一个处理流程图,其说明对于本发明某些实施例的用于解决实体中的逻辑错误的LCC的三股(three-prong)方法。
[0023] 附图5A和5B是说明对于本发明某些实施例的涉及项目实体的替换方法的方框图;以及
[0024] 附图6A和6B是说明对于本发明某些实施例的涉及关系实体的替换方法的方框图。
[0025] 详细说明
[0026] 本主题以满足法定要求的特性加以描述。然而,说明书本身不想限制本专利的范围。更确切的说,发明人已经想到所要求的主题可以以其它的方式来实施,即,通过包括和本文的描述相似的不同的步骤或步骤的组合,或结合其它现有的或者将来的技术。此外,尽管术语“步骤”这里可以用来暗示所使用的方法的不同单元但是该术语不应该被解释为暗示这里公开的各个步骤当中或之间任意的具体的顺序,除非以及除了当明确地描述单个步骤的顺序的时候。
[0027] 上述概述提供本发明特征的一个概述。本发明一个实施例的详细说明如下。对于如下所述各个实施例,本发明的特征被描述为单独在MICROSOFT SQLSERVER数据库系统(有时相当于这里简写的“SQL”)中实施或结合入下一代个人电脑操作系统(通常称为“Windows Longhorn”或简称“Longhorn”)的MICROSOFT WinFS文件系统。如上所述,SQL SERVER包括MICROSOFT.NET公共语言运行时间(CLR)以允许管理的代码写入并且执行以在SQL SERVER数据库的数据存储器上操作。虽然如下所述实施例在这种环境中操作,可以理解的是本发明并不局限于SQL SERVER产品的实施。相反地本发明可以以支持执行面向对象的编程代码以在数据库存储器上操作的任何数据库系统来实施,诸如面向对象的数据库系统以及具有目标关系扩展的关系数据库系统。因,很清楚本发明不局限于如下所述具体的实施例,而是试图覆盖如附加权利要求定义的本发明的精神以及范围内所有的修改。
[0028] 计算机环境
[0029] 本发明的大量实施例可以在一个计算机上执行。附图1及以下的讨论用来提供一个本发明可以实施的一个合适的计算环境的简短的一般说明。尽管不需要,但是本发明可以在计算机可执行指令的一般环境中描述,诸如通过一个计算机执行的程序模块,所述计算机例如一个客户工作站或一个服务器。一般地程序模块包括执行具体的任务或实施具体的抽象数据类型的例程、程序、目标、组件、数据结构等等。此外,本领域的技术人员将会理解本发明可以由其他的计算机系统配置来实施,包括手持装置、多处理器系统、基于微处理器或者可编程的消费者电子设备、网络PC、小型计算机、大型计算机等等。本发明还可以在分布式计算环境中实施,其中所述任务由通过通信网络连接的远程处理装置执行。在一个分布计算环境中,程序模块可以位于本地以及远程存储器存储设备上。
[0030] 如附图1所示,一个示例性通用计算机系统包括一个传统的个人电脑20等等,包括处理装置21、系统存储器22以及系统总线23,所述系统总线23用于将包括系统存储器的各个系统组成部分耦合到处理部件21。系统总线23可以是任何几种类型的总线结构,包括存储器总线或存储控制器、外围总线以及使用任何总线体系结构的本地总线。系统存储器包括只读存储器(ROM)24以及随机存取存储器(RAM)25。基本输入/输出系统26(BIOS)保存在ROM 24中,其包括有助于在个人电脑20的组件之间传递信息的基本例程,例如在启动期间。个人电脑20更进一步的包括用于从/向一个未示出的硬盘读取以及写入的硬盘驱动器27、用于从/向一个可移动的磁盘29读取/写入的磁盘驱动器28,以及用于从/向一个可移动的光盘31例如CD ROM或其它光学介质读取/写入的光盘驱动器30。硬盘驱动器27、磁盘驱动器28以及光盘驱动器30分别通过一个硬盘驱动器接口32、磁盘驱动器接口33以及一个光驱接口34连接到系统总线23。驱动器以及它们相关的计算机可读取媒体提供计算机可读指令、数据结构、程序模块及其它个人电脑20的数据的非易失性存储器。尽管这里描述的示例性环境使用了一个硬盘、一个可移动的磁盘29以及一个可移除的光盘31,本领域的技术人员应该理解本示例性操作环境中还可以使用由一个计算机访问、可以存储数据的其他的类型的计算机可读媒体,例如磁带盒、快擦写存储卡、数字视频磁盘、Bernoulli盒式磁盘[带]、随机存取存储器(RAMs)、只读存储器(ROMs)等等。
[0031] 大量程序模块可以存储在硬盘、磁盘29、光盘31、ROM 24或RAM 25上,包括操作系统35、一或多个应用程序36、其它程序模块37以及程序数据38。用户可以通过输入装置例如键盘40以及指示器42向个人电脑20键入命令以及信息。其它的输入装置(未显示)可以包括麦克风、操纵杆、游戏衬垫、卫星磁盘、扫描仪等等。这些及其它输入装置经常通过耦合到系统总线的串行端口接口46连接到处理部件21,但是还可以通过其它接口连接,例如并行端口、游戏端口或通用串行总线(USB)。监视器47或其它类型显示设备同样经过一个接口连接到系统总线23,所述接口例如一个视频适配器48。除了监视器47,个人电脑一般包括其它外围输出设备(未显示),例如扬声器以及打印机。附图1的示例性系统同样包括一个主机适配器55、小型计算机系统接口(SCSI)总线56以及一个连接到SCSI总线56的外部存储器装置62。
[0032] 个人计算机20可以通过使用与一个或多个远程计算机(例如一个远程计算机49)的逻辑连接而在运行在一个网络环境中。远程计算机49可以是另一个个人计算机、一个服务器、一个路由器、一个网络PC、一个节点装置或其它公用网络节点,并且一般地包括相对于个人计算机20的如上所述的许多或所有的元件,尽管在附图1中仅仅示出了一个存储装置装置50。附图1示出的逻辑连接包括一个局域网(LAN)51和一个广域网(WAN)52。这种网络环境在办公室、企业的广域计算机网络、内部网以及互联网中是常见的。
[0033] 当用于一个局域网网络环境中,个人计算机20通过网络接口或适配器53连接到局域网51。当用于一个WAN网络环境中,个人计算机20一般地包括一个调制解调器54或用于通过广域网52例如互联网建立通信的其它装置。调制解调器54可以是内部或者外部的,经过串行端口接口46连接到系统总线23。在一个网络环境中,相对于个人计算机20示出的程序模块或其中部分可以保存在远程存储器存储装置中。可以理解的是显示的网络连接是示例性的,还可以使用建立计算机间通信连接的其它装置。
[0034] 虽然可以想象本发明的大量实施例尤其适合于计算机化的系统,但是本文献不想用本发明来限制这些实施例。相反地,这里使用的术语“计算机系统”试图包括能够存储和处理信息和/或能够使用存储信息以控制装置本身的性能或运行的任何以及所有的装置,而不管这种装置本质上是电子的、机械的、逻辑的或虚拟的。
[0035] 数据可靠性系统(DRS)的概述
[0036] 对于本发明的若干实施例,数据可靠性系统(DRS)是一个在后台维护以及修复数据库的线程,并且从而保护数据库文件系统(DBFS)的全面完好。附图2是一个说明DBFS中DRS结构的方框图。在该附图中,向大量应用程序212、214以及216提供操作系统级服务的操作系统202包括连接到持久数据存储器232的DBFS 222。操作系统202进一步包括一个DRS 242,每当例如发现来自持久数据存储器232中的大量页面234、236以及238中的页面误差240时,其通过DBFS 222请求244,并且DRS 242然后根据页面误差240执行修复操作。
[0037] 本发明的某些实施例提供DRS是可扩充的以便灰复策略以及检测机制在DBFS释放以后可被更新。若干实施例涉及当DBFS数据库保持联机时DRS运行修复。然而其它实施例涉及对DBFS存储器的完全访问(即sysadmin权限)。而其它实施例将具有对故障实时地作出检测和反应的能力。
[0038] 对于若干实施例,对所维护的数据而言,DRS修复将在级别变换单元中相互影响(即在基于项目的DBFS的“项目”级别)。对于各个实施例,修复要么完全地恢复一个项目要么取消它的更改(以及因此从不部分地校正错误),并且即使在处理过程中途中发生重新启动DRS也可以继续恢复/复位工作。对于本发明的若干实施例,DRS将会支持SQL事件以便如果SQL激发了一个一般的事件,DRS可以截取它并且作出反应(包括但不局限于823/824事件)。另外,本发明的某些实施例涉及数据库引擎,该数据库引擎可被修改以发送将由DRS特定处理的错误条件的DRS-特定事件。
[0039] 对于本发明的各个实施例,每当DBFS从磁盘读取或写入页面时,就会检测出物理和/或逻辑损坏,而在这种情况下SQL则根据损坏的类型产生大量误差中的一个,并且也将会激发特定的DRS事件以通知它的具体误差条件,并且DRS将接收那些误差并且将它们放在一个输入队列中以便处理。
[0040] 对于本发明的若干实施例,确定一个页面是否是物理损坏可以通过各种装置完成,包括但不不局限于(a)检查对于一个页面的校验和并且如果校验和是无效的,则认为该页面损坏或(b)通过检验日志序号(LSN)来查看它是否超过日志文件的结尾(其中LSN是一个整数,其随每次处理递增,以便如果日志文件中的最后处理是LSN 432并且找到一个具有更大的LSN的页面那么就可定发生了一个无序的写入错误)。关于这一点,存在四个主要类型的页面损坏可以影响DBFS的操作(除了例如程序错误等等的其它原因),而这四个类型包括页面损坏、媒体衰退、硬件故障以及无序写入。当数据的一个页面没有被正确的原始写入就发生了页面损坏,并且因此页面的任何部分可能被损坏,这是因为在写入期间仅仅一个页面的一些扇区在事件故障之前写入到磁盘,所述故障事件例如电源故障或扇区写入错误。当一个数据页面位被物理媒介衰退损坏时就会发生媒体衰退。硬件故障可以以各种理由产生,其涉及总线、控制器或硬盘装置。至于无序写入,这些误差产生于这样一个事实,即IDE驱动器不能保证写入磁盘的顺序,特别是IDE驱动器具有写入高速缓存使能(打开),并且因此对数据存储器的写入可能会无序地发生。如果发生部分连续的无序写入但是通过电源故障而中断,例如然后发生若干误差,例如在相关的日志实体被写入之前数据页面被写入磁盘。当通过检测数据页面上的日志序号(LSN)检测出无序错误时,还没有便利的方式来处理这种对每一个页面的读取的缺乏。
[0041] 逻辑一致性检验器
[0042] 本发明的各种实施例特别地涉及一种逻辑一致性检验器(LCC),其分析并且校正实体的逻辑“损害”(例如项目、扩展和/或关系),所述实体表示保存在数据存储器中以便确保所述数据存储器中的所有实体都是一致的并且符合数据模型规则。对于某些实施例LCC可以是自治的,而对于其它实施例它也可以连接到一个物理一致性检验器(PCC),其用于检测并且校正物理数据损坏,和/或对于另外其它实施例LCC可以包含DRS的一个组件。
[0043] 对于通过数据库技术(数据库文件系统)而创建的文件系统,逻辑一致性和物理一致性是不同并且分开的,在这种意义上来说后者(物理一致性)指的是数据库结构本身以及存储介质上数据库的物理存储,然而前者(逻辑一致性)指的是由在所述数据库中存储的数据表示的逻辑型数据模式并且表示硬件/软件接口系统的文件系统。
[0044] 尽管在某些观点上(如这里以下所讨论的)物理一致性与逻辑一致性是有关的,本发明的某些实施例主要地涉及确保逻辑一致性。当然,导致物理不一致性的物理损坏(例如磁盘扇区损坏,所述磁盘扇区包括所述数据库结构的一部分)同时可能导致逻辑一致性的破坏(例如,对于存储在所述坏的磁盘扇区中的所述数据库中的实体的数据丢失),然而并非所有逻辑损害一定表示物理损坏(例如由一个软件错误引起的逻辑错误违反了数据模型规则)。因此,逻辑不一致性可以分成两种类型:(i)由于物理损坏的逻辑不一致性,以及(ii)由于至少一个数据模型规则的破坏而引起的逻辑不一致性(例如,所有实体属性值必须在一个规则特定范围之内,一个实体必须具有所有的组成的部分,以及项目必须具有至少一个保留的关系等等)。
[0045] 一般说来,“修复”一个逻辑错误本质上次于“恢复”其中有错误发生的数据,因为数据的备份可能是一个破坏或丢失的数据的很好的复制(或可用于重新产生一个很好的复制)。因此,恢复技术优于修复技术。
[0046] 对于本发明的若干实施例,可以使用附图3所示的方法来确定页面上任何实体是否存在逻辑损坏。对于这种方法,步骤302LCC检查数据库表存在于DBFS的实体的参照完整性(“实体外部”)然后,在步骤304LCC检查每个实体的结构完整性(该“实体内部”,例如约束条件与关系)以确保不违背数据模型规则。(对于某些实施例,LCC检查该数据库中的每个实体。)在步骤306,对于某些实施例LCC可以同时检查周期数(例如,其中实体A具有对实体B的一个占有关系以及实体B具有对实体A的一个占有关系)。在完成上述检查以后,在步骤308LCC然后解决识别的逻辑不一致性。
[0047] 对于本发明的若干实施例,LCC使用如附图4示出的三股方法解决逻辑错误。首先,在步骤402,LCC试图使用页面以及事务记录的最近快照(snapshot)执行一个页面级别恢复(PLR),以完美地修复具有错误的页面。然而,如果PLR在步骤404不可能或不能改正错误,LCC然后在步骤406试图通过首先确定该具体的损害的实体进行实体级别恢复(ELR),然后修复那些来自另一个原因的实体(例如备份或同步的复制品)。如果在步骤408PLR以及ELR都不可能或不能校正错误,那么在步骤410LCC将会用一个伪实体(DE)替换存储器中损害的实体,以便保证如以下论述的文件系统存储器的一致性视图。
[0048] 通过用DE替换损坏的实体,LCC保证所述损坏实体的消除不破坏所述损坏实体的子实体,就是说LCC防止了从损坏实体到它的从属的向下级别损坏。为了达到这个,DE主要替换损坏的实体但是尽可能保持来自损坏实体的尽可能多的信息。如果损坏实体是一个项目,例如替换DE将会保持同样多的属性数据,以及其它项目的所有关系。另一方面,如果损坏实体是一个关系,替换DE将会继续连接它一起从属的项目。同时该损坏实体移到(对于项目)或注册在(对于关系)一个坏的项目文件夹(BIF)。当该损坏实体是一个项目,该BIF将会和该损坏实体具有一种关系(例如一个保持关系)。
[0049] 附图5A和5B是用于说明关于本发明某些实施例的项目的替换方法的方框图。在附图5A中,其示出一组项目与关系,I1是一个父项目,I2是一个经过关系R12的I1的子项目,I3是一个经过关系I23的I2的子项目,而I4和I5分别是经过关系R34以及R35的I3的子项目。在这个实施例中,项目I2例如被一个错误的应用程序所破坏,结果项目I2现在违反数据模型规则。在附图5B,识别出I2为破坏项目的LCC首先创建DE 12′,并且在DE 12′和它的父I1间建立第一关系R12′以及在DE 12′和它的子I3间建立第二关系R23′。对于某些实施例,DE给出和损坏项目相同的项目识别号(ItemID)。损坏项目I2然后移到BIF中以及具有BIF项目和损坏项目I2间的保持关系Rh。
[0050] 对于某些实施例,新的关系R12′以及R23′事实上可以是原始关系R12以及R23,其更新为与I2′代替I2有关。对于其它实施例,R12′以及R23′可以完全是新的关系并且,对于某些这种实施例,R12和R23可以保持为具有在BIF中损坏项目I2的悬摆关系(dangling relationships)。无论如何,DE有效地为数据集保存父/子结构并且从而防止I2的错误级联I3、I4和I5中的错误,否则其不能从I1得到。
[0051] 附图6A和6B是用于说明对于本发明某些实施例的关系的替换方法的方框图。在附图6A中,其说明部分组的项目与关系,I1是一个父项目,而I2是经过关系R12的I1的一个子项目。在这个实施例中,关系R12例如通过病毒破坏,结果导致关系R12具有一属性值,例如一安全属性值,超出数据模型中一些预先决定的允许范围。在附图6B中,将R12识别为破坏关系的LCC首先创建I2和它的父I1间的DER12′,并且淘汰破坏的关系R12(由于关系不能单独存在该BIF中而不移到该BIF中),而拥有关系R12的项目I1存入该BIF中(BIF为此目的而具有专门的日志且在这里示出,例如作为日志项目)。
[0052] 对于同步,而为了避免从伙伴到伙伴的错误地同步的破坏实体的可能性(从而扩展该损坏),本发明的某些实施例通过利用特定的“非授权”标记来标记(例如,一个单独的位)DE从而划分识别的和/或破坏的损坏,其有效地通知具有这个实体很好的复制的任何同步的复制品以改写这个实体(在这一点上非授权位被清除)。同样,如果DE随后被修改(例如通过一个最终用户),某些实施例也将会将DE标记为“非授权而且修改”以保证在修改的DE和复制品上原始项目的很好的复制间使用冲突解决方法,并且该非授权并且修改标记在冲突已经解决时移除。
[0053] 附加的功能
[0054] ·如这里描述的,项目扩展认为是自己项目的部分,并且因此任何扩展损坏都被认为项目损坏。然而,在某些备选方案实施例中,扩展可以当做和他们自己的项目是不同的并且分开的。
[0055] ·对于本发明的某些实施例,LCC在实体上运行,其遵循所执行的恢复操作以校正物理损坏。
[0056] ·对于某些实施例,在试图校正破坏的关系之前LCC首先试图修复破坏的项目以避免“假想的”损坏的检测,如果在依赖于校正的关系之前项目没有被校正,则该“假想的”损坏便可能产生。
[0057] ·对于某些实施例,如果一个BIF并不已存在于该DBFS中,则BIF是由LCC创建的文件夹项目。这个文件夹可以保留DBFS中任何类型的项目(然而对于某些实施例并非关系),并且该文件夹位于远离默认数据库存储器的根目录(为了易于访问和定位)。
[0058] ·对于某些实施例,没有备用文件的任何项目将被插入该BIF中,同时无对应项目的任何文件也将会处于该BIF中。
[0059] ·对于某些实施例,当损坏项目移到该BIF,该BIF可以同时存储关于损坏项目为什么被移到该BIF的信息。
[0060] 结论
[0061] 这里描述的各种系统、方法和技术可以以硬件或软件或适当的两者的结合来实施。因此,本发明的方法和装置,或某些方面或其中的部分可以采取体现在在有形的媒体里的程序代码(即指令)的形式,例如软磁盘、CD-ROM、硬盘或任何其它机器可读的存储介质,其中,当程序代码载入并且由机器执行时,例如计算机该机器成为一个用于实践本发明的装置。在程序代码运行在可编程计算机上的情况下,计算机将一般包括处理器、由处理器可读取的存储介质(包括易失的和非易失性存储器和/或存储元件)、至少一个输入装置以及至少一个输出装置。最好在一个较高级别的过程的或面向对象编程语言中实施一或多个程序以和一个计算机系统进行通信。然而,如果需要,程序可以以汇编或机器语言来实现。在任何情况下,语言可以是编译的或解释的语言,以及结合硬件实现。
[0062] 本发明的方法和装置还可以体现在程序代码的形式中,所述程序代码经过一些传输介质传输,例如通过电线或电缆,通过光纤或经过任何其他的传输的形式,其中,当接收程序代码并且载入以及由机器执行时,例如一个EPROM、门阵列、可编程逻辑器件(PLD)、客户端计算机、电视录象机等等,该机器就成为用于实践本发明的装置。当实施在通用处理机上时,该程序代码结合该处理器,以提供一种唯一的装置,其用来执行本发明的索引功能。
[0063] 虽然结合各种附图的优选实施例已经描述了本发明,但是可以理解的是,在不背离其范围的情况下,可以使用其它相似的实施例,或者可以对描述的实施例做出修改和添加,以用于执行和本发明相同的功能。例如,虽然本发明的示例性实施例是在仿真个人计算机功能的数字装置的环境中描述的,但是本领域的技术人员应该认识到本发明不局限于这种数字装置,如上所述本发明的应用程序可以适用于许多现有的或者涌现的计算装置或环境,例如一种游戏控制台、手持式计算机、便携式计算机等等。无论有线或者无线,并且可以应用于经过通信网络连接并和该网络相互作用的许多这种计算装置。此外,需要强调的是各种计算机平台,这里想到了包括手持装置操作系统及其他应用程序特定硬件/软件接口系统,尤其是继续激增的大量无线网络装置。因此,本发明不应该限于任何单一的实施例,而是根据附加权利要求的宽度和范围来解释。