具体实施方式
纵览
本发明一实施例提供数据库中的多个恢复单元用于解决现有技术的瓶颈问题,并提供增加整个数据库可用性的能力。这可通过在维护或灾害恢复情形期间仅有部分数据库不可用来完成。本发明一方面提供数据库逻辑元素和物理元素之间的独立元数据。逻辑元素包括用户可见的数据库、表格、索引、表格和索引的各部分、数据类型、约束、存储过程、触发器和文件组。物理元素包括用户不可见的页面、文件、B-树、堆阵、恢复单元和日志。表示数据库逻辑元素的元数据存储在“主要”恢复单元中,而数据库物理元素的元数据被存储在其自己的相应“次要”恢复单元。通过使该逻辑和物理元数据方法保持一致,本发明一实施例可提供对单独物理日志流中单个逻辑表格或索引的独立记录更新。
在使用图3讨论示例性配置之后,将结合图4-7讨论示例性方法和实施例。还结合图8讨论示例性计算环境。
本发明示例性实施例
图3示出本发明一实施例的功能图。该实施例包括数据被分成多个表格的数据库300。图3示出4个这样的表格,但本发明无需受此限制。本架构规定表格302、304、306和308仅与一个日志数据流相关联。此外,日志流303、305和307可彼此独立地发挥作用。因而,例如表格1(302)仅与日志数据流303相关联。表格2(304)仅与日志数据流305相关联。表格3(306)仅与日志数据流307相关联。表格4(308)仅与日志数据流307相关联。注意,图4的表格302、304和306可以是数据库300的任意部分。各部分可以是表格,数据库中任意数据的表格或索引的一部分。
图3的体系结构允许多个数据流日志支持数据库300恢复操作。该体系结构使单个表格能仅与单个日志相关联,即单个表格仅使用一个日志数据流。该体系结构通过使用日志数据允许单个表格或数据库部分的恢复,从而恢复可仅在一个表格上完成而使该数据库的其它表格可被访问。日志流的独立性及其与各部分或表格的紧密关联消除了出现在现有技术中的瓶颈。因此,在正常操作和恢复操作中有速度增加的益处。此外,如在此还要描述的,图3的体系结构允许一个或单个数据库部分向另一数据库传送。
本发明的一方面是单个数据库可被分成称为恢复单元的多个数据库部分。每个恢复单元具有其自己的数据文件和日志流集,且每一个都可独立于数据库中其它恢复单元而被恢复。恢复单元是因为共享同一日志而事务一致的文件组、文件和日志的集合。数据库中的表格和索引可被分配或划分成不同恢复单元以将工作量分解到每个数据库的多个日志流中。一旦数据库被分成这些独立恢复单元,该数据库的总体可用性和性能可通过恢复和复原分别来自数据库剩余部分的单个恢复单元的能力来增加。在恢复期间仅有驻留于正在恢复的恢复单元上的数据库部分是不可用的。数据库的剩余部分保持可用。
在一实施例中,用于构建恢复单元的一种方法是数据库逻辑元素和物理元素之间元数据的分离。逻辑元素的示例是用户可见的数据库、表格、索引、表格和索引的各部分、数据类型、约束、存储过程、触发器和文件组和其它数据库结构。物理元素的示例是用户不可见的页面、文件、B-树、堆阵、恢复单元和日志。在一实施例中,表示数据库逻辑元素的元数据存储在“主要”目录中,而数据库物理元素的元数据被存储在其自己的恢复单元。通过使该逻辑和物理元数据方法保持一致,至少一实施例能够对单独物理日志流中单个逻辑表格或索引的独立记录更新。
图4示出了本发明一实施例中逻辑和物理元数据的分离。实施例400示出具有逻辑部分450和物理部分460的数据库,每一部分都具有与该方法相关联的元数据。在逻辑层450中,可构建包含有关数据库中所有表格、索引和部分的文件和文件组的元数据的主要目录402。该元数据还包含文件、文件组以及相应恢复单元标识符之间的关联。例如,主要目录可包括有关数据库表格数据406的表格和索引403的元数据。表格数据406可被分成多个数据库部分408、410,每个数据库部分可呈现表格、索引、或任意其它数据集或元数据集。主要目录还包含有关包含于数据库中数据的信息上任何其它形式的索引404。
主要目录402可包含有关诸如数据库部分408、410及相关联恢复单元及其相应标识符的数据结构之间链接的元数据。例如,数据库部分408及相应恢复单元1(414)之间的链接409可以是主要目录元数据。类似地,链接411和405还可被包含于主要目录元数据以便使本发明实施例的逻辑层450与物理层460的物理恢复单元416和418相关联。
物理层460可包括物理恢复单元。在图4示例中,有三个恢复单元,但可建立任意数量的恢复单元。在图4示例中,恢复单元1(414)与数据库部分A 408相关联,恢复单元2(416)与数据库部分B 410相关联而恢复单元3与主要目录450的其它索引404相关联。恢复单元1(414)可包括次要目录420,它还包括它所引用的数据库物理元素的元数据。例如,次要目录可包括对B-树、文件、页面、堆阵或日志数据的引用。在图4的示例实施例中,次要目录420包含对B-树1(422)的引用,以及组成B-树的页面424。次要目录还具有对日志1流数据426的引用元数据,所述流数据与引用数据库的数据库部分A 408的恢复单元1的数据变化具体相关联。作为一特定示例,当行集合在数据库中被打开时,可将行集合标识符以及恢复单元标识符传递给次要目录。主要和次要目录中的该唯一和专用链接使恢复单元能使用与该数据库中其它恢复单元无关的恢复文件、表格、索引、以及其它数据库数据。
恢复单元无需与数据库其它部分交互就可进行恢复操作的重做(REDO)部分。例如,如果恢复单元1(414)被用来恢复其数据库部分的各方面,则恢复单元2(416)和恢复单元3(418)可在恢复单元1操作期间保持在线和活动。恢复单元还可不作交互就进行大部分的逻辑取消(UNDO)恢复操作,但可能需要联系其它恢复单元或数据库以确定已备事务是已实行或已放弃的。尽管某些物理恢复单元没有呈现或恢复,这允许数据库由可用的多个物理恢复单元组成。当数据库在线时,其它物理恢复单元可被复原和恢复。
如图4所示示例性实施例的体系结构提供了允许数据库部分在各数据库之间移动的框架。众所周知,由于引用系于大多数页面上诸如前页和下页标识符的文件标识符以及诸如堆阵行标识符指针和B-树遍历指针的许多行,当前将文件或文件组从一数据库移到另一数据库并不实用。然而,对于本发明各方面,文件标识符仅需在恢复单元内唯一。结果,可将恢复单元从一数据库复制或移动到另一数据库。图5提供了该特征的一个示例。
数据库x 500的恢复单元b(504)是图5中数据库x的多个恢复单元502、506之一。可能需要将数据内容复制到图5的数据库y510中,并使恢复单元504的元素变成数据库y的一部分。注意每个数据库中恢复单元的数量并非一要素,因为数据库x具有N个恢复单元而数据库y在传送前仅具有两个。即,恢复单元p 512和q 514U可在数据库y 510中预先存在。
使用本发明各方面,通过将一恢复单元用作可传送单元,恢复单元504的数据可从数据库x 500复制到y 510。一旦恢复单元504从数据库x复制到数据库y,其内容就被保留,但它可采用与新数据库相兼容的命名惯例。因而,旧的恢复单元b(504)一旦被复制到数据库y就可变成其名字与数据库y兼容的恢复单元r 504’。数据库y中新添加的恢复单元504’具有与其相伴恢复单元512和514不同的名字空间。新的名字空间还可与数据库x中的源恢复单元504不同。
图6示出用于本发明一实施例的一般方法的流程图。在步骤605数据库可被分成用作恢复单元的多个单元。在步骤610如上所述创建一主要目录。该主要目录可包含恢复单元的逻辑元数据元素。尽管多个恢复单元可共享单个日志流文件,在步骤615可创建多个日志流文件,从而仅有一日志流与一特定恢复单元相关联。在一实施例中,最好在有尽可能多的日志流文件是恢复单元。在步骤620可创建次要目录。所创建的次要目录可包含相应恢复单元的物理元数据元素。在步骤625可链接两类目录从而它们指向不同的恢复单元。因而可建立恢复单元的框架。然后系统用户能够维护次要目录从而如果需要运用一恢复单元,可无需影响其它恢复单元的可用性而离线执行。
因而在创建之后,恢复单元可被用来有利于从同一数据库内其它恢复单元中离线地维护或恢复数据库部分。此外,恢复单元的框架进行一个或多个恢复单元从一数据库到其它数据库的全部传送。图7示出将结构为恢复单元的一个或多个数据库部分从一数据库复制到另一数据库的方法的流程图。
开始,在步骤705,在第一数据库中根据图6方法创建一个或多个恢复单元。然后在步骤710可在第二数据库中创建一个或多个恢复单元。为了执行传送,在步骤715必须选择哪个恢复单元需要从第一数据库传送到第二数据库。然后复制选定恢复单元,并因而在步骤720传送到第二数据库中。假设所传送的恢复单元的结构与第一数据库相匹配,则它们因而系于新的数据库并可访问第二数据库。
再来讨论单个数据库中的操作,在本发明一不同实施例中,多个文件组可系于同一日志。例如,用户可具有每个恢复单元一文件组。每个恢复单元可具有包含其物理元数据目录的主要文件组。该主要文件组可以是用于对恢复单元和文件管理的访问方法的目录。例如,每个数据库可具有用以引导数据库和其它恢复单元的主要恢复单元。该主要恢复单元可包含所有物理元数据,而足够的物理元数据用以在起动时发现和起动次要恢复单元。次要恢复单元包含逻辑元数据的目录。在一实施例中,每个恢复单元包含一主文件组,而该数据库的主要文件组是主文件组。主要文件组可包含数据库的单个逻辑目录和物理元数据的充分信息以引导次要恢复单元。主要文件组可仅在主要恢复单元中存在。此外,主要恢复单元可具有发现非主要或较低层恢复单元所需的新目录条目。主文件组的名字可以是CREATE/ALTERDATABASE语法的进入点。
在一实施例中,本发明可在从华盛顿州Redmond的微软公司获得的结构化查寻语言(SQL)环境中使用。在该环境中,恢复单元的状态可映射数据库的状态,而整个数据库状态可系于主要恢复单元的状态中。当该恢复单元在线时,恢复单元的锁定空间可与数据库的相同。当变为某些其它状态时,可能需要转换成锁定空间。这种转换可使整个数据库上的起始瞬时专用锁成为必然以使恢复单元离线,而无需在后来使其再在线。在大多数情形中,由于初始状态不能是在线(ONLINE),实际上将没有用户可见的转换期。在一实施例中,可取消现有数据库管理的状态转换框架但将其应用于恢复单元而不是整个数据库。在一实施例中,以下数据库状态可应用于数据库和恢复单元:
ONLINE(在线)
OFFLINE(离线)
RESTORING(复原)
RECOVERING(恢复)
RECOVERY PENDING(等候恢复)
SUSPECT(可疑)
EMERGENCY(紧急)
在SQL环境中,许多状态是缺省或转换状态。复原状态(RESTORING)通过尝试复原恢复单元内任一文件或文件组而达成。对于离线(OFFLINE)和紧急(EMERGENCY)状态,最好需要确定允许管理员强制状态改变的语法。最好还需要确定是否有恢复单元的有用状态。理想地,不展现指向“恢复单元”的任意语法。
在SQL环境中,在较长恢复情形中,一旦主要恢复单元可用数据库即可用。经历较长恢复的恢复单元将“恢复”且所有其文件组都对用户不可用。然而,当可得到数据库的平衡时可恢复其它非主要恢复单元。
重做/取消恢复可在每个恢复单元基础上进行,并最好需要从数据库重新指向恢复单元的当前调用。无需与数据库工作而仅需与恢复单元工作并非特定情形而是一般的恢复。恢复可以是不同恢复单元上以及CHECKPOINT(检查点)上多线程的。
在SQL环境中,数据库的恢复模式(FULL,SIMPLE,BULK_LOGGED)可应用于所有恢复单元。此外,恢复单元可提供具有每个数据库多个日志而对当前数据库组件有较少额外开销或没有开销的机会。
在本发明一方面中,可发挥基本框架的作用以使表格或数据库部分从一数据库或服务器简便地移向/合并到另一数据库或服务器中。这可通过用逻辑和物理元数据进行文件复制/附加或恢复来完成。有了该能力,不同的恢复单元可具有在恢复单元内唯一而在数据库内不唯一的相同文件标识符。
在一实施例中,数据库的一内部接口DBTABLE可对核心物理元数据之外的大多数组件保持一样。该物理元数据的组件可引用恢复单元而不是DBTABLE。
在一实施例中,文件、文件组和日志文件的集合可被用于恢复单元中。该恢复单元可通过在CREATE或ALTER DATABASE语句中指定一主文件组来创建。对于CREATE DATABASE,每个新的主文件组最好跟随在已指定先前恢复单元的日志之后。最好,可对每个主文件组指定日志文件。在该实施例中,CREATEDATABASE语法图可如下表达:
CREATE DATABASE{database_name}
[ON
[PRIMARY]
<filelist>[,<recoveryunitlist>
<recoveryunitlist>::=
PRINCIPAL filegroup_name<filelist>
<filelist>::=
[<filespec>[,...n]]
[,<filegroup>[,...n]]
]
[LOG ON{<filespec>[,...n]}]]
<filespec>::=
[NAME=logical_file_name,]
FILENAME=′os_file_name′
[,SIZE=size]
[,MAXSIZE={max_size|UNLIMITED}]
[,FILEGROWTH=growth_increment])[,...n]
<filegroup>::=
FILEGROUPfilegroup_name
[CONTAINS{ROWS1FILESTREAM|FILESTREAM_LOG}]
[DEFAULT]
[LOG ON{log_filegroup_name|PRIMARY_LOG}]
<filespec>[,...n]
在当前实施例中,创建一恢复单元需要用于ALTER DATABASE指令的新语法以使文件列表能被附于文件组名字之后。添加整个恢复单元的语句可显示如下:
ALTER DATABASE{database_name}
ADD PRINCIPAL FILEGROUP{filegroup_name}<filelist>
对于数据文件,将文件添加到已存在的恢复单元可与将文件添加到文件组中相同。对于日志文件,可能需要对ALTER DATABASE语法的扩展从而ADD LOGFILE还可指定一文件组名字。该文件组名字应是恢复单元中的主文件组。
ALTER DATABASE database_name
{ADD LOG FILE<filespec>[,...n]
[TO FILEGROUP principal_filegroup_name]
类似地,对于将文件组添加到一恢复单元,指示该恢复单元的主文件组的一子句可被添加:
ALTER DATABASE database_name
ADD FILEGROUP filegroup_name
[TO FILEGROUP principal_filegroup_name]
改变恢复单元的状态可与改变数据库状态相类似,除了MODIFY FILEGROUP子句可用主文件组名字使用。
ALTER DATABASE database_name
MODIFY FILEGROUP filegroup_name SET<optionspec>[,...n]
[WITH<termination>]
RESTORE DATABASE语法通常包含对文件或文件组的选项。作为本发明一方面,文件或文件组选项也可被扩展到RESTORE LOG语句,从而仅影响该恢复单元的日志。
RESTORE LOG{database_name|@database_name_var}
<file_or_filegroup>[,...n]
[FROM<backup_device>[,...n]]
注意分配给恢复单元内文件组和文件的数字标识符(ID)在恢复单元之间交叠。即,每个恢复单元具有对其主要数据和日志文件的文件1和2。每个恢复单元具有其系统表格的文件组。其原理是多方面的:
(a)本特征扩展每个数据库的通用文件限制为32,767。
(b)在现有系统中,典型限制为每个数据库32,767个文件组。使用恢复单元,可将文件组的最大数量倍乘以所允许的恢复单元数量。
(c)恢复单元可以是独立的,并可简便地移到另一数据库中;该移动可以是整个表格或数据库部分向新数据库或服务器的移动。
作为上述交叠的结果,行标识符在数据库内而不是在恢复单元内不再唯一。堆阵上非聚类索引可包含在恢复单元索引中不存在的行标识符。
在一实施例中,创建带有两个恢复单元的数据库可在以下示例中实现。恢复单元1仅具一个文件组;主要恢复单元。恢复单元2具有两个文件组;主要(SalesGroup1)和次要(SalesGroup2)。
CREATE DATABASE Sales
ON PRIMARY
(NAME=SPri1_dat,
FILENAME=′D:\Data\SPri1dat.mdf′,
SIZE=10,
MAXSIZE=50,
FILEGROWTH=15%),
(NAME=SPri2_dat,
FILENAME=′E:\data\SPri2dt.ndf′,
SIZE=10,
MAXSIZE=50,
FILEGROWTH=15%),
LOGON --主要恢复单元的日志
(NAME=′Sales_log′,
FILENAME=′F:\log\salelog.ldf,
SIZE=5MB,
MAXSIZE=25MB,
FILEGROWTH=5MB),
PRINCIPAL FILEGROUP SalesGroup1 --新的恢复单元
(NAME=SGrp1Fi1_dat,
FILENAME=′K:\data\SG1Fi1dt.ndf′,
SIZE=10,
MAXSIZE=50,
FILEGROWTH=5),
(NAME=SGrp1Fi2_dat,
FILENAME=′L:\data\SG1Fi2dt.ndf,
SIZE=10,
MAXSIZE=50,
FILEGROWTH=5),
FILEGROUP SalesGroup2 —次要恢复单元中的第二个文件组
(NAME=SGrp2Fi1_dat,
FILENAME=′M:\data\SG2Fi1dt.ndf,
SIZE=10,
MAXSIZE=50,
FILEGROWTH=5),
(NAME=SGrp2Fi2_dat,
FILENAME=′N:\data\SG2Fi2dt.ndf′,
SIZE=10,
MAXSIZE=50,
FILEGROWTH=5)
LOG ON --第二个恢复单元的日志
(NAME=′Sales_log2′,
FILENAME=′O:\log\salelog2.1df′,
SIZE=5MB,
MAXSIZE=25MB,
FILEGROWTH=5MB)
GO
在一实施例中,将表格添加到不同恢复单元可在以下示例中实现。为了将表格或索引添加到不同文件组中,用户可指定将一“ON”子句添加到CREATE TABLE或CREATE INDEX语句中。例如,有了以上创建的添加数据库可具有SalesGroup1恢复单元上的PurchaseOrderDetail表格,以及PRIMARY恢复单元上的客户表格。
CREATE TABLE[dbo].[PurchaseOrderDetail]
(
[PurchaseOrderID][int]NOT NULL,
[LineNumber][smallint]NOT NULL,
[ProductID][int]NULL,
[UnitPrice][money]NULL,
[OrderQty][smallint]NULL,
[ReceivedQty][float]NULL,
[RejectedQty][float]NULL,
[DueDate][datetime]NULL)
)
ON[SalesGroup1]
GO
CREATE TABLE[customers]
(
id int NOT NULL,
name[nvarchar(200)]NOT NULL,
address[nvarchar(2000)]NOT NULL)
ON[PRIMARY]
GO
在一实施例中,新的ALTER DATABASE语法可被用以将新的恢复单元添加到现有数据库中。
ALTER DATABASE Sales
ADD PRINCIPAL FILEGROUP SalesGroup3 —第三个恢复单元
(NAME=SGrp3Fi1_dat,
FILENAME=′P:\data\SG3Fi1dt.ndf′,
SIZE=10,
MAXSIZE=50,
FILEGROWTH=5)
LOGON --第三个恢复单元的日志
(NAME=′Sales_log3′,
FILENAME=′Q:\log\salelog3.1df′,
SIZE=5MB,
MAXSIZE=25MB,
FILEGROWTH=5MB)
GO
在一实施例中,本发明一方面展现文件组可用性和恢复的示例可从以下情形中得到认识。数据库FOO具有主文件组A(主要)、B、C、D和E。假设包含来自文件组C的数据文件的盘出现故障。此外,在来自文件组E所有的文件有物理文件破坏。在数据库起动时,文件组A响应,相应地,起始数据库状态为在线(ONLINE)。然而,由于缺少文件C的状态是“等待恢复”,且由于破坏E的恢复失败而被标以“可疑”。在起动状态后状态显现如下:
数据库状态 文件组状态
FOO->在线 A->在线
B->在线
C->等待恢复
D->在线
E->怀疑
当电源电缆被拔除时C盘的问题解决。这被改正且现在文件可用。用户可使用ALTER DATABASE语句来设置C在线:
ALTER DATABASE FOO MODIFY FILEGROUP C SET ONLINE
C盘恢复且现在可用。状态现在显现为:
数据库状态 文件组状态
FOO->在线 A->在线
B->在线
C->等待恢复->恢复->在线
D->在线
E->怀疑
访问文件组A、B和D的用户不受C盘转换成在线的影响。D盘的数据文件可被物理地破坏且它们需要被恢复。由于该文件组不是在线地,转换成恢复(RESTORING)不受其它文件组用户的影响。整个数据库的日志是备份的,包括C盘日志的尾部:
BACKUP LOG foo TO DISK=’e:\logtail.dmp’
C盘的数据文件从最后的数据库备份中恢复。这将C盘转换成恢复状态:RESTORE DATABASE FOO C FROM DISK=‘e:\fulldbbackup.dmp’WITH NORECOVERY
数据库状态 文件组状态
FOO->在线 A->在线
B->在线
C->等待恢复->恢复
D->在线
E->在线
C盘的日志被恢复到故障点,且C盘被恢复并可用。
RESTORE LOG FOO C FROM DISK=‘e:\logbackup.dmp’WITH NORECOVERY
RETORE LOG FOO C FROM DISK=‘e:\logtail.dmp’WITH RECOVERY
数据库状态 文件组状态
FOO->在线 A->在线
B->在线
C->恢复 C->复原 C->在线
D->在线
E->在线
示例性计算装置
图8和以下讨论旨在提供一种本发明各实施例可在其中实现的适当计算环境的简要一般说明。尽管以下所述是通用计算机,但这仅仅是一个示例,且本发明各实施例可用其它计算装置实现,诸如具有网络/总线互操作性和交互的客户机。因而,本发明各实施例可在其中包含很少或最少客户机资源的包容网络主机服务的环境中实现,例如其中客户机装置仅作为网络/总线接口的网络化环境,诸如置于装置中的对象或其它计算装置和对象。实质上,可存储数据或从中可检索数据的任何地方都是用于操作的所需或适当环境。
尽管不是必需的,本发明各实施例可通过由服务的开发者用于装置或对象的操作系统来实现,和/或包括在应用程序软件中。软件在由一台或多台诸如客户机工作站、服务器或其它装置的计算机执行的诸如程序模块的计算机可执行指令的一般环境中进行说明。一般而言,程序模块包括执行具体任务或实现具体抽象数据结构的例程、程序、对象、组件、数据结构等等。通常,在各实施例中可按需组合或分配程序模块的功能。另外,本领域技术人员会理解,本发明在其它计算机系统配置中也是可以实践的。其它适用于本发明的众所周知的计算系统、环境、和/或配置包括,但不限于,个人计算机(PC)、自动取款机、服务器计算机、手持式或膝上型装置、多处理器系统、基于微处理器的系统、可编程电器消费品、网络PC、电器、灯、环境控制元件、小型计算机、大型机等等。本发明实施例还可在分布式计算环境中实践,其中任务由经通信网络/总线或其它数据传输介质连接的远程处理装置执行。在分布式计算环境中,程序模块可被置于包括存储器存储装置的本地和远程存储器存储介质中,且客户机节点可转而用作服务器节点。
因而尽管如上明确所述图8示出了其中可实现本发明各实施例的适当计算系统环境800的一个示例,该计算系统环境800仅是适当计算环境的一个示例,并非旨在提出本发明实施例使用或功能性范围的任何限制。计算环境800也不应被解释为对示例性操作环境800中所示的任一组件或其组合有任何依赖性或任何需求。
参照图8,实现本发明的示例性系统包括计算机810形式的通用计算装置。计算机810的组件可包括,但不限于,处理单元820、系统存储器830以及把包括系统存储器在内的各种系统组件耦合到处理单元820的系统总线821。系统总线821可能是若干总线结构类型中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用多种总线架构的任一种的本地总线。作为示例,而非限制,这些架构包括工业标准架构(ISA)总线、微信道架构(MCA)总线、扩展ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和也称为Mezzanine总线的外围部件互连(PCI)总线。
计算机810通常包括各种计算机可读介质。计算机可读介质可以是能被计算机810访问的任何可用介质,并包括易失和非易失介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现、用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失和非易失介质、可移动和不可移动介质。计算机存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、电可擦除只读存储器(EEPROM)、闪存或其它存储器技术、光盘只读存储器(CD-ROM)、可重写光盘(CDRW)、数字多功能光盘(DVD)或其它光学存储技术、磁盒、磁带、磁盘存储或其它磁性存储装置、或任何其它可用于存储所需信息并可由计算机810访问的介质。通信介质通常包括诸如载波或其它传输机制的调制数据信号中的计算机可读指令、数据结构、程序模块、或其它数据,且包括任何信息输送介质。术语“调制数据信号”意指以在信号中信息编码的方式设置或改变其一个或多个特征的信号。作为示例,而非限制,通信介质包括诸如有线网络或直线连接的有线介质,和诸如声学、射频、红外线和其它无线介质的无线介质。以上任何介质的组合也应包括在计算机可读介质的范围中。
系统存储器830包括诸如只读存储器(ROM)831和随机存取存储器(RAM)832的易失和/或非易失存储器形式的计算机可读介质。包含帮助计算机810如起动时在元件间传送信息的基本例程的基本输入/输出系统(BIOS)833通常存储在ROM 831中。RAM 832通常包含可被处理单元820立即访问和/或现时操作的数据和/或程序模块。作为示例,而非限制,图8示出了操作系统834、应用程序835、其它程序模块836、和程序数据837。
计算机810还可包括其它可移动/不可移动、易失/非易失计算机存储介质。作为示例,图8图示了读取和写入不可移动、非易失性介质的硬盘驱动器841,读取和写入可移动、非易失磁盘852的磁盘驱动器851,读取和写入可移动、非易失光盘858,诸如CD ROM、CDRW、DVD或其它光学介质的光盘驱动器855。其它也可用在示例性计算环境中的可移动/不可移动、易失/非易失计算机存储介质包括,但不限于,如盒式磁带、闪存卡、数字多功能光盘、数字视频带、固态RAM、固态ROM等等。硬盘驱动器841通常通过诸如接口840的不可移动存储器接口与系统总线821连接,而磁盘驱动器851和光盘驱动器855通常通过诸如接口850的可移动存储器接口与系统总线821连接。
如上所述并如图8所示的盘驱动器及其相关联的计算机存储介质为计算机810提供计算机可读指令、数据结构、程序模块、和其它数据的存储。在图8中,例如,硬盘驱动器841被示为存储操作系统844、应用程序845、其它程序模块846、和程序数据847。注意这些组件可以与操作系统834、应用程序835、其它程序模块836、和程序数据837相同或不同。在此给予操作系统844、应用程序845、其它程序模块846、和程序数据847的不同序号至少说明他们是不同的副本。用户可通过输入装置如键盘862和诸如鼠标、跟踪球或触摸板等定位装置861向计算机810输入命令和信息。其它输入装置(未示出)可包括话筒、游戏杆、游戏垫、卫星接收器、扫描仪等等。这些和其它输入装置常常通过与系统总线821耦合的用户输入接口860与处理单元820相连,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)的其它接口连接。监视器891或其它类型的显示装置也可通过诸如视频接口890的接口与系统总线821相连,而该接口可与视频存储器(未示出)通信。除了监视器891,计算机还可包括诸如扬声器897和打印机896的其它输出装置,它们通过输出外围接口895相连。
计算机810可以在使用与一台或多台远程计算机,诸如远程计算机880的逻辑连接的网络或分布式环境中运行。远程计算机880可以是个人计算机、服务器、路由器、网络PC、对等装置或其它公共网络节点,而且通常包括上述与个人计算机810相关的许多或全部组件,尽管在图8中仅图示了存储器存储装置881。图8中所描绘的逻辑连接包括局域网(LAN)871和广域网(WAN)873,但也可包括其它网络/总线。这样的网络化环境在家庭、办公室、企业范围计算机网络、企业内部互联网和因特网上是常见的。
当用于LAN网络化环境中时,计算机810通过网络接口或适配器870与局域网871连接。当用于WAN网络化环境中时,计算机810通常包括调制解调器872或其它用于在广域网873,诸如因特网中建立通信的装置。可以是内置式或外置式的调制解调器872与系统总线821通过用户输入接口860或其它适当机制连接。在网络化环境中,与计算机810相关的程序模块或其一部分可存储在远程存储器存储装置中。作为示例,而非限制,图8示出了驻留于存储装置881中的远程应用程序885。应当理解,所示网络连接是示例性的,且也可以使用其它用于在计算机间建立通信连接的技术。
各种分布式计算框架已经和正在按照个人计算和因特网的融合进行开发。个人和商业用户等被提供以应用程序和计算装置的可无隙互操作的和Web启用的接口,使计算动作更加面向Web浏览器或网络。
例如,可从微软公司得到的微
.NET
TM平台,包括服务器、诸如基于Web数据存储的基块服务、以及可下载装置软件。尽管示例性实施例在此结合驻留于计算装置的软件进行描述,但本发明一实施例的一个或多个部分还可通过以下来实现:操作系统、应用编程接口(API)或协处理器、显示装置及请求对象的任一个之间的“中介”对象,诸如可通过NET
TM的所有语言和服务以及在其它分布式计算框架中执行、支持或访问的操作。
如上所述,尽管本发明的示例性实施例已结合各种计算装置和网络结构进行了描述,其中实现有益于在数据库备份上执行一致性检查的系统所需的下层概念可应用于任何计算装置或系统。因而,结合本发明各实施例描述的方法和系统可应用于各种应用程序和装置。尽管示例性编程语言、名字和示例在此被选为各种选择的代表,这些语言、名字和示例并非旨在作限制。本发明技术人员将理解,有许多提供获取与本发明各实施例所取得的相同、类似或等效系统和方法的对象代码的方法。
在此所述的各种技术可结合硬件或软件,或在适当时结合两者的组合来实现。因而,本发明的方法和装置,或者其中的某些方面和部分,可取诸如软盘、CD-ROM、硬盘驱动器、或任何其它机器可读存储介质的有形介质中包含程序代码(即指令)形式,其中当程序代码由诸如计算机的机器载入并执行时,该机器成为用于实践本发明的装置。在可编程计算机上的程序代码执行情形中,计算装置通常包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元素)、至少一个输入设备、和至少一个输出设备。可例如通过使用数据处理API等利用本发明一实施例的信号处理服务的一个或多个程序,最好用高级过程或面向对象编程语言来与计算机通信。然而,如果需要这些程序可用汇编或及其语言实现。在任一情形中,语言可以是编译或解释语言,并可与硬件实现相结合。
尽管本发明已结合各种情形的优选实施例进行了描述,要理解可使用其它类似实施例,或者可对所述实施例作更改和添加用于执行本发明的系统功能,而没有偏离本发明。此外,应强调包括手持式装置操作系统和其它应用程序专用操作系统的各种计算机平台是可预期的,特别是当无限网络装置的数量持续激增时。因此,不应把本发明限制在任一单个实施例中,而应当根据所附权利要求在广度和范围中进行解释。