Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD AND DEVICE FOR SAVING DATA
Document Type and Number:
WIPO Patent Application WO/2011/060635
Kind Code:
A1
Abstract:
A method and a device for saving data are provided, which belong to the field of computer technology. The method includes the following steps: receiving the operation data operating the operation object in a transaction period, and saving the operation data to memory; backing up the original data of said operation object in the compound document to a log file; saving said operation data saved in the memory to said compound document. The device includes: a receiving module, a backing-up module and a saving module. Using the solutions above, the problem of compound document corruption caused by exception in the existing file system is solved; a reliable data storage system is provided for the user.

Inventors:
DENG LIBO (CN)
LUAN TAO (CN)
Application Number:
PCT/CN2010/072983
Publication Date:
May 26, 2011
Filing Date:
May 20, 2010
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
TENCENT TECH SHENZHEN CO LTD (CN)
DENG LIBO (CN)
LUAN TAO (CN)
International Classes:
G06F1/30
Foreign References:
CN101226604A2008-07-23
CN1400531A2003-03-05
CN1289966A2001-04-04
US20070299888A12007-12-27
CN101566959A2009-10-28
Attorney, Agent or Firm:
DEQI INTELLECTUAL PROPERTY LAW CORPORATION (CN)
北京德琦知识产权代理有限公司 (CN)
Download PDF:
Claims:
权利要求书

1、 一种保存数据的方法, 其特征在于, 所述方法包括:

接收一个事务周期内对于操作对象进行操作的数据, 将操作数据保 存到内存中;

将所述操作对象在复合文档中的原始数据备份到日志文件; 将内存中保存的所述操作数据保存到所述复合文档中。

2、 如权利要求 1 所述的保存数据的方法, 其特征在于, 所述将操 作对象在复合文档中的原始数据备份到日志文件包括:

判断所述操作数据是否为新建操作数据, 如果否, 则将所述操作对 象在复合文档中的原始数据备份到日志文件。

3、 如权利要求 1或 2所述的保存数据的方法, 其特征在于, 所述 将操作对象在复合文档中的原始数据备份到日志文件包括:

获得所述操作对象在复合文档中的原始数据, 使用无緩存模型打开 所述日志文件, 将所述操作对象的原始数据备份到打开的日志文件; 或者,

获得所述操作对象在复合文档中的原始数据, 将所述操作对象的原 始数据备份到日志文件, 并调用函数将所述日志文件存入硬盘扇区。

4、 如权利要求 1 所述的保存数据的方法, 其特征在于, 在将所述 操作对象在复合文档中的原始数据备份到日志文件之前, 该方法进一步 包括: 申请并获得对日志文件的操作独占权;

在将所述操作对象在复合文档中的原始数据备份到日志文件之后, 进一步包括: 释放对所述日志文件的操作独占权。

5、 如权利要求 1 所述的保存数据的方法, 其特征在于, 如果在将 内存中保存的所述操作数据保存到复合文档的过程中, 所述复合文档发 生异常, 则该方法进一步包括:

利用所述日志文件已备份的所述操作对象在复合文档中的原始数 据对所述操作对象在所述复合文档中的数据进行恢复。

6、 如权利要求 5 所述的保存数据的方法, 其特征在于, 该方法进 一步包括: 如果顺利将内存中保存的所述操作数据保存到复合文档, 则 设置所述日志文件无效; 否则, 设置所述日志文件有效。

7、 如权利要求 6 中所述的保存数据的方法, 其特征在于, 所述利 用日志文件已备份的原始数据对操作对象在复合文档中数据进行恢复 包括:

校验所述日志文件是否有效, 如果是, 利用所述日志文件中已备份 的所述操作对象在复合文档中的原始数据对所述操作对象在所述复合 文档中数据进行恢复。

8、 一种保存数据的装置, 其特征在于, 所述装置包括:

接收模块, 用于接收一个事务周期内对于操作对象进行操作的数 据, 将操作数据保存到内存中;

备份模块, 用于将所述操作对象在复合文档中的原始数据备份到日 志文件;

保存模块, 用于在所述备份模块将所述操作对象在复合文档中的原 始数据备份到日志文件后, 将内存中保存的所述操作数据保存到所述复 合文档中。

9、 如权利要求 8 所述的保存数据的装置, 其特征在于, 所述备份 模块包括:

判断单元, 用于判断所述操作数据是否为新建操作数据;

备份单元, 用于在所述判断单元的判断结果为否时, 将所述操作对 象在复合文档中的原始数据备份到日志文件。 10、 如权利要求 9所述的保存数据的装置, 其特征在于, 所述备份 单元用于获得所述操作对象在复合文档中的原始数据, 使用无緩存模型 打开所述日志文件, 将所述操作对象的原始数据备份到打开的日志文 件; 或者,

获得所述操作对象在复合文档中的原始数据, 将所述操作对象的原 始数据备份到日志文件, 并调用函数将所述日志文件存入硬盘扇区。

11、 如权利要求 9或 10所述的保存数据的装置, 其特征在于, 所 述装置还包括:

操作管理模块, 用于在所述备份单元将所述操作对象在复合文档中 的原始数据备份到日志文件之前, 申请并获得对日志文件的操作独占 权; 以及, 在所述备份单元将所述操作对象在复合文档中的原始数据备 份到日志文件之后, 释放对所述日志文件的操作独占权。

12、 如权利要求 8所述的保存数据的装置, 其特征在于, 所述装置 还包括:

恢复模块, 用于在所述保存模块将内存中的所述操作数据保存到所 述复合文档的过程中, 所述复合文档发生异常时, 利用所述日志文件已 备份的所述操作对象在复合文档中的原始数据对所述操作对象在所述 复合文档中的数据进行恢复。

13、 如权利要求 12所述的保存数据的装置, 其特征在于, 所述恢 复模块包括:

校验单元, 用于校验所述日志文件是否有效; 其中, 所述日志文件 在所述保存模块顺利将内存中保存的所述操作数据保存到复合文档时, 被设置为无效; 否则, 被设置为有效;

恢复单元, 用于在所述校验单元校验结果为有效时, 利用所述曰志 文件中已备份的所述操作对象在复合文档中的原始数据对所述操作对 象在所述复合文档中数据进行恢复。

Description:
一种保存数据的方法和装置 技术领域 本发明实施例涉及计算机技术领域, 特别涉及一种保存数据的方法 和装置。 发明背景 计算机的文件系统是应用程序(如 word、 即时通信应用程序等)文 件管理的核心模块, 管理着应用程序中数据的本地持久化工作。

复合文档( Compound Documents )是一种 4艮好的实现文件系统的方 案, 其可以把多个文件按照目录级别组织在一起, 其不仅包含文本, 而 且还包含图形、 电子表格数据、 声音、 视频图像以及其他信息。 也就是 说, 可以把复合文档想象成一个所有者, 它装着文本、 图形以及多媒体 信息(如声音和图像), 并按照一定的目录级别将多个文件组织在一起 。

但是, 由于复合文档是按照目录级别对各个文件进行 保存的,这样, 在保存过程中, 如果计算机的应用程序发生异常(例如断电、 死机、 进 程 Crash、 死锁等), 就很有可能会导致文件系统中的数据被损坏, 而这 些数据的损坏往往会导致应用程序出现各种各 样的问题。 发明内容 本发明实施例提供了一种保存数据的方法和装 置, 以便使文件系统 能够为应用程序提供高度可靠的数据存储系统 、 对上层应用提供事务性 支持。

本发明实施例提供的技术方案如下:

一种保存数据的方法, 所述方法包括:

接收一个事务周期内对于操作对象进行操作的 数据, 将操作数据保 存到内存中;

将所述操作对象在复合文档中的原始数据备份 到日志文件; 将内存中保存的所述操作数据保存到所述复合 文档中。

一种保存数据的装置, 所述装置包括:

接收模块, 用于接收一个事务周期内对于操作对象进行操 作的数 据, 将操作数据保存到内存中;

备份模块, 用于将所述操作对象在复合文档中的原始数据 备份到日 志文件;

保存模块, 用于在所述备份模块将所述操作对象在复合文 档中的原 始数据备份到日志文件后, 将内存中保存的所述操作数据保存到所述复 合文档中。

本发明实施例提供的技术方案带来的有益效果 是:

本发明实施例先将操作数据存入内存, 并在文件系统将操作数据存 入复合文档之前, 对操作对象在复合文档中的原始数据备份到日 志文件 中, 备份完成后, 再将操作数据保存到操作对象的复合文档中。 其中, 如果将内存中的操作数据保存到操作对象的复 合文档的过程十分顺利, 没有遇到异常情况,则达到了 All or Nothing的事物特征中 "All"的效果; 如果将内存中的操作数据保存到操作对象的复 合文档的过程中复合文 档出现异常, 则可以利用日志文件对操作对象在复合文档中 的原始数据 进行恢复, 达到了 All or Nothing的事物特征中 "Nothing" 的效果。 为用 户提供了高度可靠的数据存储系统。 附图简要说明

图 1是本发明实施例 1中提供的保存数据的方法流程图;

图 2是本发明实施例 2中提供的保存数据的方法流程图; 图 3是本发明实施例 3中提供的保存数据的方法流程图; 图 4是本发明实施例中提供的保存数据的装置的 本结构示意图; 图 5是本发明实施例中提供的保存数据的装置的 细结构示意图。 实施本发明的方式

为使本发明的目的、 技术方案和优点更加清楚, 下面将结合附图对 本发明实施方式作进一步地详细描述。

实施例 1

为了给用户提供高度可靠的数据存储, 本发明实施例提供了一种保 存数据的方法, 参见图 1 , 该方法包括:

步骤 101: 接收一个事务周期内对于操作对象进行操作的 数据, 将 操作数据保存到内存中;

这里, 事务周期具体为完成一项具体事务所需要的时 间。 以具体事 务为写操作为例, 通常, 计算机完成写操作需要经过几个步骤, 如改变 复合文档的长度、 将数据写入等, 如此, 本实施例可以将完成这几个步 骤所需要的时间设置为一个写操作的事务周期 。

至于步骤 101中提及的操作对象, 其具体实现时可以为文件系统中 的文本、 图形、 电子表格、 声音、 视频图像等, 而对这些操作对象进行 的操作包括但不限于: 读操作、 写操作等。

需要说明的是, 步骤 101中可以通过调用计算机相应指令、 指针的 方式, 将接收到的对于文件系统中的操作对象进行操 作的数据直接定向 到计算机的内存中。

步骤 102: 将操作对象在复合文档中的原始数据备份到日 志文件; 其中, 当计算机接收到对于文件系统中的操作对象进 行操作的数据 时, 即可确定操作对象在复合文档中的原始数据, 将这部分原始数据从 复合文档中读出, 并备份到日志文件中。 这里, 日志文件与复合文档是 相互独立的, 这里所说的相互独立, 可以理解为日志文件与复合文档存 储在不同的硬盘扇区、 也可以理解为日志文件与复合文档的操作互不 影 响等。 日志文件可以是预先创建的, 也可以是已经建立的, 可以与复合 文档位于同一目录下, 能够对操作对象在本次操作前的原始数据进行 备 份。 其中, 日志文件为原始数据备份文件的代名词,也可 以叫其他名称。

步骤 103: 将内存中保存的所述操作数据保存到复合文档 中。

当日志文件完成备份后, 可以通过发送备份完成信号或通过其他方 式使得文件系统开始执行将内存中存储的所述 操作数据保存到操作对 象所在的复合文档中。 如果步骤 103顺利完成了保存, 则达到了 "All or Nothing" 的事务特征(即一项操作要么成功、 要么就像完全没有发生过 一样, 不留下任何痕迹) 中 "All" 的效果。 相应地, 如果在步骤 103执 行的过程中复合文档因为应用程序的异常(比 如断电、死机、进程 Crash、 死锁等) 而出现了异常, 则可以利用步骤 102中的日志文件对操作对象 在复合文档中的原始数据进行恢复,达到了 All or Nothing的事物特征中 "Nothing" 的效果。

综上所述, 可以看出本发明实施例提供的一种保存数据的 方法, 通 过将操作数据先存入内存, 并在将操作数据存入复合文档之前, 对操作 对象在复合文档中的原始数据备份到日志文件 中, 备份完成后, 再将操 作数据保存到操作对象的复合文档中, 这显然为用户提供了高度可靠的 数据存储系统。

以上对本发明实施例提供的方法进行了筒单描 述, 下面通过两个实 施例即实施例 2和 3对本发明实施例提供的方法进行详细描述。

实施例 2

为了给用户提供高度可靠的数据存储, 克服现有技术中文件系统在 保存数据的过程中因应用程序的异常而造成硬 盘中的复合文档损坏等 问题, 本发明实施例提供了一种保存数据的方法, 通过该方法可以实现 在文件系统中数据操作的 "All or Nothing" 的事务性特征。 以执行主体 为常用的计算机、 计算机的文件系统进行各操作指令的处理为例 , 参见 图 2, 该方法包括:

步骤 201 : 计算机接收一个事务周期内对于操作对象进行 操作的数 据, 向文件系统发送操作请求。

比如, 计算机接收到需要对操作对象进行写操作, 则需要向文件系 统发送写操作请求。

步骤 202: 文件系统响应上述操作请求, 将接收到的操作数据保存 在计算机的内存中;

与现有技术中直接将操作数据写入操作对象所 在的复合文档中相 比, 本发明实施例首先将接收到的操作数据保存在 计算机的内存中, 并 等待计算机文件系统的进一步指示, 具体见下述步骤 209中的指令, 在 未接收到计算机文件系统的进一步指示之前不 会将操作数据存入操作 对象所在复合文档中。

步骤 203: 在文件系统响应上述操作请求的同时, 计算机的后台线 程向操作系统申请并获得对于日志文件的操作 独占权;

其中, 上述后台线程可以是预先设定的线程, 用于对日志文件进行 相应的操作。

上述对于日志文件的操作独占权可以通过互斥 量完成, 这里, 该互 斥量主要的用途在于, 避免后台线程与上层应用调用同时对日志文件 进 行操作, 以便保证日志文件始终包含一个或多个完整性 的操作。 其中, 这里所说的互斥量可以是计算机的操作人员预 先设置的, 也可以是在不 影响计算机正常工作的前提下复用计算机中已 有的互斥量等, 本发明实 施例不做具体的限定。

其中, 上面所述的对于日志文件的一个或多个完整性 的操作具体 为: 当操作对象的原始数据只需要一个操作即可完 成备份时, 日志文件 只需要接收一个操作即可进行原始数据的备份 ; 当操作对象的原始数据 需要多个操作才能完成备份时, 日志文件需要接收多个操作才能完成原 始数据的备份。 例如, 如果原始数据仅为文本, 则只需要一个操作即通 过复制文本内容再粘贴到日志文件中即可; 如果原始文件中不仅包含文 本、 还有大量的链接、 图片、 视频等内容, 则需要多个操作完成该原始 数据的备份。 可以看出, 互斥量的存在保证了上述对日志文件的操作的 完整性。

需要说明的是, 本发明实施例除了以互斥量为例外, 也可以通过其 他的方式锁定日志文件的操作独占权, 在此不做限定。 本领域普通技术 人员在不付出创造性劳动的情况下所应用的锁 定日志文件的操作独占 权, 均在本发明保护的范围之内。

步骤 204: 判断当前是否存在日志文件;

如果存在, 则执行步骤 205;

如果不存在, 则执行步骤 206。

其中, 日志文件可以与复合文档位于同一目录下, 用于对本次操作 前操作对象的原始数据进行备份。 例如, 当操作对象是 word时, 该存 在的日志文件可以是一种类似 word 的文件, 其文件的后缀名可以 为. bak, 用于在对 word进行写操作时备份本次写操作前的原始数 。

步骤 205: 接收用户发送的选择信号, 并根据选择信号执行是否覆 盖已存在的日志文件;

如果接收到的选择信号为不覆盖已存在的日志 文件, 则执行步骤 如果接收到的选择信号为覆盖已存在的日志文 件,则执行步骤 207; 其中, 当步骤 204中计算机的判断结果为已存在日志文件时, 本步 骤 205可以通过对话框、 tips (提示) 消息等方式为用户提供选择窗口, 并根据用户通过该选择窗口发送的选择信号决 定是否覆盖已存在的日 志文件。

步骤 206: 创建新的日志文件; 之后, 执行步骤 207。

步骤 207: 后台线程检查计算机的硬盘扇区, 获得本个事务周期内 需要改写的操作对象所在的硬盘扇区;

其中, 在一个事务周期内, 计算机需要改写的操作对象会存储在一 个或多个硬盘扇区中。

步骤 208: 将本个事务周期内需要改写的操作对象的原始 数据从硬 盘扇区中读出, 保存到上述日志文件中;

其中, 步骤 208中将原始数据保存到日志文件中的操作具体 可为: 如果上述步骤 205中用户的选择信号是覆盖已存在的日志文件 , 则从硬 盘扇区中读出的原始数据就会覆盖已存在的日 志文件中的数据; 其他情 况下, 从硬盘扇区中读出的原始数据直接写入步骤 206新创建的日志文 件中。

这里, 日志文件可以使用无緩存模型打开; 或者在写完数据后, 调 用将文件写入硬盘扇区的函数(如 FlushFileBuffers函数), 保证数据能 够完整地存入到计算机的硬盘扇区中。 当然, 作为本发明实施例的一种 扩展, 该日志文件也可以使用緩存模型打开。 其中, 使用无緩存模型和 緩存模型打开文件的不同之处在于: 当使用緩存模型打开文件时, 在对 该文件进行操作的过程中会包括将文件在内存 中进行緩存的步骤, 因此 并不能保证该文件真正存入到计算机的硬盘扇 区; 而使用无緩存模型不 包括将文件在内存中进行緩存的步骤, 而是将文件直接存入计算机的硬 盘扇区, 因此保证了将文件的内容全部存入计算机的硬 盘扇区, 即保证 了日志文件的可靠性。

可选的, 由于用户对于操作对象的操作是多种多样的, 基于此, 文 件系统可以针对操作的不同, 判断是否需要利用日志文件备份其原始数 据。

需要说明的是, 如果对于操作对象进行的操作是新建操作(即 从无 到有的一种操作), 则该操作对象可以认为无原始数据, 则并不需要利 用曰志文件对其进行原始数据的备份, 即无需执行上述步骤 208; 除此 之外, 如果操作对象具有原始数据, 则需要利用日志文件对其进行原始 数据的备份。

步骤 209: 日志文件保存完毕后, 发送保存完成指令给文件系统, 文件系统发送允许写入指令到内存, 将内存中緩存的操作数据保存到操 作对象所在的复合文档中。

其中, 步骤 209中的保存具体为: 文件系统根据该操作对象所在的 复合文档目录将内存中緩存的操作数据保存到 计算机的相应硬盘扇区 中 , 这样的保存过程是一种真正意义上的复合文档 的改写过程。

步骤 210: 设置保存操作对象原始数据的日志文件无效;

其中,如果在数据保存的过程中并未出现异常 情况,操作数据准确、 完整地保存到了复合文档中, 那么, 保存操作对象原始数据的日志文件 就失去其存在的意义, 可以将上述日志文件删除等操作使其无效。 利用 步骤 210可以降低计算机存储空间的占用率和浪费。

需要说明的是,步骤 210为可选步骤,本实施例也可不执行步骤 210, 而是在执行完步骤 209之后, 直接执行步骤 211 , 至于保存操作对象原 始数据的日志文件, 可以由后台线程选择在本个事务周期正常结束 时 清理掉无效的日志文件, 也可以由操作系统对其进行定期的清理, 或者 由人工进行清理等。

步骤 211 : 后台线程正常结束, 释放已获得的对于日志文件的操作 独占权。

需要说明的是, 如果在将内存中緩存的操作数据写入复合文档 的过 程中出现了应用程序异常的情况, 即后台线程不能正常结束, 具体为: 在上述保存数据的流程进行到步骤 209时出现了问题无法继续, 则计算 机开始恢复数据的过程, 即文件系统发送恢复数据指令给日志文件: 步骤 209,: 使用保存有操作对象的原始数据的日志文件对 文件系统 中该操作对象的数据进行恢复。

具体的恢复手段可以但不限于使用原始数据替 换操作对象的现有 数据。

需要说明的是, 在上述恢复数据的过程中, 为了保证日志文件的有 效可靠, 在本方法中, 还可以对日志文件进行校验, 该校验可以为 CRC ( Cyclical Redundancy Check, 循环冗余码校验)等, 在此不做赘述, 如 果校验正确, 则日志文件是可靠的, 可以利用可靠的日志文件对复合文 档中的操作对象进行恢复; 如果校验错误, 则日志文件不可靠, 不可以 利用日志文件对复合文档中的操作对象进行恢 复。

可以看出, 本实施例在实现保护数据的方法过程中, 如果将操作数 据保存到操作对象所在的复合文档过程中出现 了异常状况, 则利用日志 文件中保存的原始数据对复合文档中的操作对 象进行恢复, 实现了对文 件系统事务性的支持, 解决了当前文件系统因异常情况而发生的复合 文 档的损坏问题, 为用户提供了高度可靠的数据存储系统; 同时, 对上层 应用提供了事务性支持, 维持数据的高度一致性; 利用该方法, 应用程 序的各个模块可以不必担心用户数据会丟失或 产生不一致, 极大地提高 了应用程序的数据可靠性和完整性。 实施例 3

为了给用户提供高度可靠的数据存储, 克服现有技术中文件系统因 应用程序的异常而造成硬盘中的复合文档损坏 等问题, 本申请还提供了 一种保存数据的方法的实施例, 即实施例 3 , 通过该方法可以实现在文 件系统中数据操作的 "All or Nothing" 的事务性特征。 该实施例 3与实 施例 2不同的是, 该实施例 3中提供的日志文件具有标志位, 该标志位 用于标识该日志文件是否有效, 以执行主体为常用的计算机、 计算机的 指令间相互配合完成本方法为例, 参见图 3 , 该方法包括:

步骤 301 : 计算机接收一个事务周期内对于操作对象的操 作数据, 如果该操作数据是针对文件系统的, 则将接收到的操作数据直接保存在 计算机的内存中;

步骤 302: 计算机的后台线程向操作系统申请并获得日志 文件的操 作独占权;

步骤 303: 判断当前是否存在日志文件;

如果存在, 则执行步骤 304;

如果不存在, 则执行步骤 305。

步骤 304: 判断日志文件的标志位是否无效;

如果是, 则执行步骤 306;

如果否, 则说明上一次对于复合文档的操作出现异常状 况, 需要进 行上一次异常操作的恢复, 可以直接结束该方法的执行, 或直接执行下 述步骤 309,;

其中, 日志文件的标志位具体用于标志该日志文件是 否有效。 具体 说来, 如果计算机根据上述保存方法对数据进行保存 的过程十分顺利, 并未遇到任何异常情况, 如断电、 死机、 进程 crash、 死锁等, 那么曰志 文件中保存的操作前操作对象的原始数据即失 去其价值, 因此, 作为一 个无效的日志文件, 其标志位可以是无效的; 如果计算机根据上述保存 方法对数据进行保存的过程出现了异常情况, 那么日志文件中保存的操 作前操作对象的原始数据即可以将复合文档中 操作对象的恢复成操作 前的状态, 为后续的其他操作提供有效可靠的数据。

步骤 305: 创建日志文件, 并设置日志文件的标志位无效; 之后执 行步骤 306。

步骤 306: 后台线程检查计算机的硬盘扇区, 获得本个事务周期内 需要改写的操作对象所在的硬盘扇区;

步骤 307: 将本个事务周期内需要改写的操作对象的原始 数据从硬 盘扇区中读出, 保存到日志文件中, 并设置日志文件的标志位有效; 步骤 308: 判断日志文件是否保存成功;

如果成功, 则执行步骤 309;

如果不成功, 则返回执行步骤 307。

其中, 如果日志文件保存成功, 则复合文档的操作权限开放, 计算 机可以将内存中的数据保存到复合文档中; 如果日志文件保存不成功, 则复合文档的操作权限不开放, 计算机无法对复合文档进行任何操作, 即也无法将内存中的数据写入到复合文档中, 需要等到日志文件保存成 功后, 再对其进行相应的操作。

步骤 309: 将内存中緩存的操作数据保存到硬盘扇区中操 作对象所 在的复合文档中, 并设置日志文件的标志位无效;

步骤 310: 后台线程正常结束, 释放已获得的对于日志文件的操作 独占权。

需要说明的是, 如果在将内存中緩存的操作数据写入复合文档 的过 程中出现了应用程序异常的情况, 即上述保存数据的流程进行到步骤 309 时出现了问题无法继续, 则计算机开始恢复数据, 即执行下述步骤 309' :

步骤 309,: 使用标志位有效的日志文件对复合文档中相应 的操作对 象进行恢复。

需要说明的是, 无论是上述实施例 2中提供的文件系统进行各操作 指令的处理保存数据, 还是本实施例 3中提供的计算机各操作指令的相 方法, 任何可以完成上述保存数据方法的指令流程都 在本发明实施例的 保护范围内。

综上所述, 本发明实施例提供了保护数据的方法, 通过将操作数据 先存入内存, 并在将操作数据写入复合文档之前对操作前的 原始数据进 行备份, 再将内存中的操作数据保存到操作对象所在的 复合文档中。 在 实现这种保护数据的方法过程中, 如果将操作数据保存到操作对象所在 的复合文档过程中出现了异常状况, 则利用日志文件中保存的原始数据 对复合文档中的操作对象进行恢复, 实现了对文件系统事务性的支持, 解决了当前文件系统因异常情况而发生的复合 文档的损坏问题, 为用户 提供了高度可靠的数据存储系统; 同时,对上层应用提供了事务性支持, 维持数据的高度一致性; 利用该方法, 应用程序的各个模块可以不必担 心用户数据会丟失或产生不一致, 极大地提高了应用程序的数据可靠性 和完整性。

以上对本发明实施例提供的方法进行了描述, 下面对本发明实施例 提供的装置进行描述。

参见图 4, 图 4为本发明实施例提供的装置的基本结构图。 该装置 的工作过程可以参见实施例图 1至 3所示的方法, 如图 4所示, 该装置 包括:

接收模块 401 , 用于接收一个事务周期内对于操作对象进行操 作的 数据, 将操作数据保存到内存中;

备份模块 402, 用于将操作对象在复合文档中的原始数据备份 到日 志文件;

保存模块 403 , 用于在备份模块 402将操作对象在复合文档中的原 始数据备份到日志文件后, 将内存中保存的所述操作数据保存到所述复 合文档中。

图 4示出了本发明实施例提供的装置的基本结构 下面对本发明实 施例提供的装置进行详细描述。

参见图 5 , 图 5为本发明实施例提供的装置的详细结构图。 如图 5 所示, 该装置包括: 接收模块 501、 备份模块 502和保存模块 503 , 其 中, 接收模块 501、 备份模块 502和保存模块 503分别和图 4所示的接 收模块 401、备份模块 402和保存模块 403的功能类似, 这里不再赘述。

在一种实施例方式下, 备份模块 502包括:

判断单元 5021 ,用于判断接收模块 401接收到的操作数据是否为新 建操作数据;

备份单元 5022 ,用于当判断单元的判断结果为该操作数据不 新建 操作数据时, 将所述操作对象在复合文档中的原始数据备份 到日志文 件。

其中, 备份单元 5022在执行备份操作时可通过以下两种方式, 需 要说明的是, 该两种方式只是为了使本申请更加清楚所进行 的举例, 并 非限定本申请:

一种方式:

备份单元 5022用于获得所述操作对象在复合文档中的原 数据, 使用无緩存模型打开所述日志文件, 将所述操作对象的原始数据备份到 打开的日志文件。 另一种方式:

备份单元 5022用于获得所述操作对象在复合文档中的原 数据, 将所述操作对象的原始数据备份到日志文件, 并调用函数将所述日志文 件存入硬盘扇区。

另一种实施方式下, 该装置还包括:

操作管理模块 504,用于在备份单元 5022将操作对象在复合文档中 的原始数据备份到日志文件之前, 申请并获得对日志文件的操作独占 权; 以及, 在备份单元 5022将操作对象在复合文档中的原始数据备份 到曰志文件之后, 释放对日志文件的操作独占权。

再一种实施方式下, 该装置还包括:

恢复模块 505 , 用于如果在保存模块 503将内存中的操作数据保存 到复合文档的过程中, 复合文档发生异常时, 利用所述日志文件已备份 的所述操作对象在复合文档中的原始数据对所 述操作对象在所述复合 文档中的数据进行恢复。

进一步的, 该恢复模块 505可包括:

校验单元 5051 , 用于校验所述日志文件是否有效; 其中, 所述曰志 文件在所述保存模块顺利将内存中保存的所述 操作数据保存到复合文 档时, 被设置为无效; 否则, 被设置为有效;

恢复单元 5052, 用于在校验单元 5051校验结果为有效时, 利用所 述曰志文件中已备份的所述操作对象在复合文 档中的原始数据对所述 操作对象在所述复合文档中数据进行恢复。

需要说明的是, 本实施例中提供的保护数据的装置, 相互之间的配 合协作可以通过计算机操作系统的指令协调完 成, 也可以通过文件系统 的统一调配完成, 但并不用以限制本发明的保护范围。 各模块之间具体 的配合协作可以参考实施例图 1至图 3中任一实施例提供的保存数据的 方法, 在此不做赘述。

本发明实施例提供了一种保护数据的装置, 通过将操作数据先存入 内存, 并在将操作数据写入复合文档之前对操作前的 原始数据进行备 份, 再将内存中的操作数据保存到操作对象所在的 复合文档中。 在实现 这种保护数据的方法过程中, 如果将操作数据保存到操作对象所在的复 合文档过程中出现了异常状况, 则利用日志文件中保存的原始数据对复 合文档中的操作对象进行恢复, 实现了对文件系统事务性的支持, 解决 了当前文件系统因异常情况而发生的复合文档 的损坏问题, 为用户提供 了高度可靠的数据存储系统; 同时, 对上层应用提供了事务性支持, 维 持数据的高度一致性; 利用该方法, 应用程序的各个模块可以不必担心 用户数据会丟失或产生不一致, 极大地提高了应用程序的数据可靠性和 完整性。

以上所述仅为本发明的较佳实施例, 并不用以限制本发明, 凡在本 发明的精神和原则之内, 所作的任何修改、 等同替换、 改进等, 均应包 含在本发明的保护范围之内。