CN102073655B - 一种保存数据的方法和装置 - Google Patents

一种保存数据的方法和装置 Download PDF

Info

Publication number
CN102073655B
CN102073655B CN200910226218.8A CN200910226218A CN102073655B CN 102073655 B CN102073655 B CN 102073655B CN 200910226218 A CN200910226218 A CN 200910226218A CN 102073655 B CN102073655 B CN 102073655B
Authority
CN
China
Prior art keywords
journal file
data
operand
compound document
raw data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN200910226218.8A
Other languages
English (en)
Other versions
CN102073655A (zh
Inventor
邓立波
栾涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Tencent Computer Systems Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN200910226218.8A priority Critical patent/CN102073655B/zh
Priority to MYPI2012001688A priority patent/MY163798A/en
Priority to PCT/CN2010/072983 priority patent/WO2011060635A1/zh
Publication of CN102073655A publication Critical patent/CN102073655A/zh
Application granted granted Critical
Publication of CN102073655B publication Critical patent/CN102073655B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers

Abstract

本发明公开了一种保存数据的方法和装置,属于计算机技术领域。该方法包括:接收一个事务周期内对于操作对象的操作数据,将所述操作数据保存到内存;将所述操作对象在复合文档中的原始数据备份到日志文件;将内存中的所述操作数据保存到所述复合文档。该装置包括:接收模块、备份模块和保存模块。解决了当前文件系统因异常情况而发生的复合文档的损坏问题,为用户提供了高度可靠的数据存储系统。

Description

一种保存数据的方法和装置
技术领域
本发明涉及计算机技术领域,特别涉及一种保存数据的方法和装置。
背景技术
计算机的文件系统是应用程序(如word、qq等)文件管理的核心模块,管理着应用程序的数据本地持久化工作。
复合文档(Compound Documents)是实现文件系统的一种很好的方案。复合文档不仅包含文本,而且包含图形、电子表格数据、声音、视频图像以及其它信息。可以把复合文档想象成一个所有者,它装着文本、图形以及多媒体信息(如声音和图像),并按照一定的目录级别将多个文件组织在一起。
在实现本发明过程中,发明人发现现有技术至少存在如下缺点:
由于复合文档是按照目录级别对各个文件进行保存,那么在文件数据保存的过程中,如果计算机的应用程序发生异常(例如断电、死机、进程Crash、死锁等),文件系统中的数据很有可能会造成损坏,而这些数据的损坏往往会导致应用程序出现各种各样的问题。
发明内容
为了使文件系统能够为应用程序提供高度可靠的数据存储系统、对上层应用提供事务性支持,本发明实施例提供了一种保存数据的方法和装置。所述技术方案如下:
一种保存数据的方法,所述方法包括:
接收一个事务周期内对于操作对象的操作数据,将所述操作数据保存到内存;
申请并获得对日志文件的操作独占权;
将所述操作对象在复合文档中的原始数据备份到所述日志文件,设置所述日志文件的标志位有效,所述日志文件为原始数据备份文件,所述复合文档和所述日志文件位于硬盘上;
当所述日志文件保存成功之后,发送保存完成指令给文件系统,所述文件系统发送允许写入指令到所述内存,将所述内存中的所述操作数据保存到所述复合文档;
如果在将所述内存中的所述操作数据保存到所述复合文档的过程中,所述复合文档发生异常,所述方法还包括:校验所述日志文件是否正确,在所述日志文件正确时,利用标志位为有效的所述日志文件中的原始数据对所述操作对象在所述复合文档中数据进行恢复;
如果在将所述内存中的所述操作数据成功保存到所述复合文档或利用标志位为有效的所述日志文件中的原始数据对所述操作对象在所述复合文档中数据进行成功恢复之后,所述复合文档未发生异常,所述方法还包括:
设置所述日志文件的标志位为无效,并在后台线程正常结束后,释放已获得的对于所述日志文件的操作独占权。
一种保存数据的装置,所述装置包括:
接收模块,用于接收一个事务周期内对于操作对象的操作数据,将所述操作数据保存到内存;
备份模块,用于将所述操作对象在复合文档中的原始数据备份到日志文件,设置所述日志文件的标志位为有效,所述日志文件为原始数据备份文件,所述复合文档和所述日志文件位于硬盘上;
保存模块,用于在所述备份模块将所述操作对象在复合文档中的原始数据备份到日志文件且当所述日志文件被保存成功后,发送保存完成指令给文件系统,所述文件系统发送允许写入指令到所述内存,将所述内存中的所述操作数据保存到所述复合文档;
所述装置还包括:
恢复模块,用于如果在所述保存模块将内存中的所述操作数据保存到所述复合文档的过程中,所述复合文档发生异常,利用标志位为有效的所述日志文件中的原始数据对所述操作对象在所述复合文档中数据进行恢复;
所述装置还用于:在将所述内存中的所述操作数据成功保存到所述复合文档或利用标志位为有效的所述日志文件中的原始数据对所述操作对象在所述复合文档中数据进行成功恢复之后,所述复合文档未发生异常,设置所述日志文件的标志位为无效;
所述装置还包括:
校验模块,用于校验所述日志文件是否正确;
相应的,所述恢复模块用于:
当所述校验模块校验所述日志文件正确后,利用所述日志文件中的原始数据对所述操作对象在所述复合文档中数据进行恢复;
该装置还包括:
操作管理模块,用于在所述备份模块将操作对象在复合文档中的原始数据备份到日志文件之前,申请并获得对日志文件的操作独占权;以及,在所述备份模块将操作对象在复合文档中的原始数据备份到日志文件之后,释放对日志文件的操作独占权。
本发明实施例提供的技术方案带来的有益效果是:
通过将操作数据先存入内存,并在文件系统将操作数据存入复合文档之前,对操作对象在复合文档中的原始数据备份到日志文件中,备份完成后,再将操作数据保存到操作对象的复合文档中。其中,如果将内存中的操作数据保存到操作对象的复合文档的过程十分顺利,没有遇到异常情况,则达到了All orNothing的事物特征中“All”的效果;如果将内存中的操作数据保存到操作对象的复合文档的过程中复合文档出现异常,则可以利用日志文件对操作对象在复合文档中的原始数据进行恢复,达到了All or Nothing的事物特征中“Nothing”的效果。为用户提供了高度可靠的数据存储系统。
附图说明
图1是本发明实施例1中提供的保存数据的方法流程图;
图2是本发明实施例2中提供的保存数据的方法流程图;
图3是本发明实施例3中提供的保存数据的方法流程图;
图4是本发明实施例4中提供的保存数据的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
为了给用户提供高度可靠的数据存储,本发明实施例提供了一种保存数据的方法,参见图1,该方法包括:
101:接收一个事务周期内对于操作对象的操作数据,将操作数据保存到内存;
其中,可以通过调用计算机相应指令、指针的方式,将接收到的对于文件系统中的操作对象的操作数据直接定向到计算机的内存。
102:将操作对象在复合文档中的原始数据备份到日志文件;
其中,当计算机接收到对于文件系统中的操作对象的操作数据时,即可确定操作对象在复合文档中的原始数据,将这部分原始数据从复合文档中读出,并备份到日志文件中。日志文件与复合文档是相互独立的,这里所说的相互独立,可以理解为日志文件与复合文档存储在不同的硬盘扇区、也可以理解为日志文件与复合文档的操作互不影响等。日志文件可以是预先创建的,也可以是已经建立的,可以与复合文档位于同一目录下,完成对操作对象在本次操作前的原始数据的备份。其中,日志文件为原始数据备份文件的代名词,也可以叫其他名称。
103:将内存中的操作数据保存到复合文档中。
当日志文件完成备份后,可以通过发送备份完成信号或通过其他方式使得文件系统开始执行将内存中的操作数据保存到操作对象所在的复合文档中。如果在此过程中顺利完成了保存,则达到了“All or Nothing”的事务特征(即一项操作要么成功、要么就像完全没有发生过一样,不留下任何痕迹)中“All”的效果;如果在此过程中复合文档因为应用程序的异常(如断电、死机、进程Crash、死锁)而出现了异常,则可以利用步骤102中的日志文件对操作对象在复合文档中的原始数据进行恢复,达到了All or Nothing的事物特征中“Nothing”的效果。
本发明实施例提供了一种保存数据的方法,通过将操作数据先存入内存,并在文件系统将操作数据存入复合文档之前,对操作对象在复合文档中的原始数据备份到日志文件中,备份完成后,再将操作数据保存到操作对象的复合文档中。为用户提供了高度可靠的数据存储系统。
实施例2
为了给用户提供高度可靠的数据存储,克服现有技术中文件系统在保存数据的过程中因应用程序的异常而造成硬盘中的复合文档损坏等问题,本发明实施例提供了一种保存数据的方法,通过该方法可以实现在文件系统中数据操作的“All or Nothing”的事务性特征。以执行主体为常用的计算机、计算机的文件系统进行各操作指令的处理为例,参见图2,该方法包括:
201:计算机接收一个事务周期内对于操作对象的操作数据,向文件系统发送操作请求;
其中需要说明的是,事务周期具体指的是,完成一项具体事务所需要的时间。以写操作为例,计算机完成写操作需要经过几个步骤(如改变复合文档的长度、将数据写入等),完成这几个步骤所需要的时间即为一个写操作的事务周期。
其中,操作对象可以是文件系统中的文本、图形、电子表格、声音、视频图像等,对这些操作对象的操作包括但不限于:读、写等操作。
202:文件系统响应上述操作请求,将接收到的操作数据保存在计算机的内存中;
与现有技术中直接将操作数据写入操作对象的复合文档中相比,本发明实施例提供的保存数据的方法,首先将接收到的操作数据保存在计算机的内存中,并等待计算机文件系统的进一步指示,在未接收到计算机文件系统的进一步指令之前不会将操作数据存入操作对象所在复合文档中。
203:在文件系统响应上述操作请求的同时,计算机的后台线程向操作系统申请并获得对于日志文件的操作独占权;
其中,上述后台线程可以是预先设定的线程,用于对日志文件进行相应的操作。
上述对于日志文件的操作独占权可以通过互斥量完成,所说的互斥量可以是计算机的操作人员预先设置的,也可以是在不影响计算机正常工作的前提下复用计算机中已有的互斥量等,在此对于上述互斥量不做具体的限定。该互斥量主要的用途在于,避免后台线程与上层应用调用同时对日志文件进行操作,保证日志文件始终包含一个或多个完整性的操作。
其中,对于日志文件的一个或多个完整性的操作现说明如下:当操作对象的原始数据只需要一个操作即可完成备份时,日志文件只需要接收一个操作即可进行原始数据的备份;当操作对象的原始数据需要多个操作才能完成备份时,日志文件需要接收多个操作才能完成原始数据的备份。例如,如果原始数据仅为文本时,只需要通过复制文本内容再粘贴到日志文件中即可;如果原始文件中不仅包含文本、还有大量的链接、图片、视频等内容,那么需要多个操作才能完成该原始数据的备份。因此,互斥量的存在保证了上述对日志文件的操作的完整性。
204:判断是否存在日志文件;
如果存在,则执行步骤204;
如果不存在,则执行步骤205。
其中,日志文件可以与复合文档位于同一目录下,完成对本次操作前操作对象的原始数据的备份。例如,当操作对象是word时,它可以是一种类似word的文件,其文件的后缀名可以为.bak,用于当对操作对象进行写操作时,该日志文件完成对本次写操作前的原始数据进行备份。
205:接收用户发送的选择信号,并根据选择信号执行是否覆盖已存在的日志文件;
如果接收到的选择信号为不覆盖已存在的日志文件,则执行步骤205;
如果接收到的选择信号为覆盖已存在的日志文件,则执行步骤206;
其中,当步骤203中计算机的判断结果为已存在日志文件时,可以通过对话框、tips(提示)消息等方式为用户提供选择窗口,并根据用户通过上述窗口发送的选择信息,并根据用户的选择信号决定是否覆盖已存在的日志文件。
206:创建新的日志文件;
207:后台线程检查计算机的硬盘扇区,获得在本个事务周期内需要改写的操作对象所在的硬盘扇区;
其中,在一个事务周期内,计算机需要改写的操作对象会存储在一个或多个硬盘扇区中。
208:将本个事务周期内需要改写的操作对象的原始数据从硬盘扇区中读出,保存到日志文件中;
其中,日志文件可以使用无缓存模型打开;或者在写完数据后,调用将文件写入硬盘扇区的函数(如FlushFileBuffers函数),保证数据能够完整地存入到计算机的硬盘扇区中。
对于日志文件的打开需要说明的是,文件可以使用缓存模型、或者无缓存模型进行打开。使用两种模型打开文件的不同之处在于,当使用缓存模型打开文件时,在对该文件进行操作的过程中会包括将文件在内存中进行缓存的步骤,因此并不能保证该文件真正存入到计算机的硬盘扇区;而使用无缓存模型并不包括将文件在内存中进行缓存的步骤,而是将文件直接存入计算机的硬盘扇区,因此保证了将文件的内容全部存入计算机的硬盘扇区,即保证了日志文件的可靠性。
这里需要说明的是,如果用户的选择信号是覆盖已存在的日志文件,则从硬盘扇区中读出的原始数据就会覆盖已存在的日志文件中的数据;其他情况下,从硬盘扇区中读出的原始数据直接写入新创建的日志文件。
可选的,由于用户对于操作对象的操作是多种多样的,文件系统可以针对操作的不同,判断是否需要利用日志文件备份其原始数据。
具体的,如果对于操作对象的操作是一种新建的操作(即从无到有的一种操作),则该操作对象可以认为无原始数据,则并不需要利用日志文件对其进行原始数据的备份;除此之外,如果操作对象具有原始数据,则需要利用日志文件对其进行原始数据的备份。
209:日志文件保存完毕后,发送保存完成指令给文件系统,文件系统发送允许写入指令到内存,将内存中缓存的操作数据保存到操作对象所在的硬盘扇区中;
其中,计算机根据该操作对象所在的复合文档目录将内存中缓存的操作数据保存到计算机的相应硬盘扇区中,这样的保存过程是一种真正意义上的复合文档的改写过程。
210:可选的,将保存操作对象原始数据的日志文件无效;
其中,如果在数据保存的过程中并未出现异常情况,操作数据准确、完整地保存到了复合文档中,那么,保存操作对象原始数据的日志文件就失去其存在的意义,可以将上述日志文件删除等操作使其无效。利用步骤209可以降低计算机存储空间的占用率和浪费。
当然,也可以省略步骤209直接进行步骤210,后台线程可以选择在其正常结束时清理掉无效的日志文件,也可以由操作系统对其进行定期的清理,或者由人工进行清理等。
211:后台线程正常结束,释放已获得的对于日志文件的操作独占权。
这里需要说明的是,本发明实施例仅以互斥量为例进行日志文件访问操作独占权的锁定,也可以通过其他的方式锁定日志文件的操作独占权,在此不做限定。本领域普通技术人员在不付出创造性劳动的情况下所应用的锁定日志文件的操作独占权,均在本发明保护的范围之内。
进一步的,如果在将内存中缓存的操作数据写入复合文档的过程中出现了应用程序异常的情况,即上述保存数据的流程进行到步骤208时出现了问题无法继续,则计算机开始恢复数据的过程,即文件系统发送恢复数据指令给日志文件:
208’:使用保存有操作对象的原始数据的日志文件对文件系统中该操作对象的数据进行恢复。
具体的恢复手段可以但不限于使用原始数据替换操作对象的现有数据。
需要说明的是,在上述恢复数据的过程中,为了保证日志文件的有效可靠,在本方法中,还可以对日志文件进行校验,该校验可以为CRC(CyclicalRedundancy Check,循环冗余码校验)等,在此不做赘述,如果校验正确,则日志文件是可靠的,可以利用可靠的日志文件对复合文档中的操作对象进行恢复;如果校验错误,则日志文件不可靠,不可以利用日志文件对复合文档中的操作对象进行恢复。
本发明实施例提供了一种保护数据的方法,通过将操作数据先存入内存,并在将操作数据写入复合文档之前对操作前的原始数据进行备份,再将内存中的操作数据保存到操作对象所在的复合文档中。在实现这种保护数据的方法过程中,如果将操作数据保存到操作对象所在的复合文档过程中出现了异常状况,则利用日志文件中保存的原始数据对复合文档中的操作对象进行恢复,实现了对文件系统事务性的支持,解决了当前文件系统因异常情况而发生的复合文档的损坏问题,为用户提供了高度可靠的数据存储系统;同时,对上层应用提供了事务性支持,维持数据的高度一致性;利用该方法,应用程序的各个模块可以不必担心用户数据会丢失或产生不一致,极大地提高了应用程序的数据可靠性和完整性。
实施例3
为了给用户提供高度可靠的数据存储,克服现有技术中文件系统因应用程序的异常而造成硬盘中的复合文档损坏等问题,本发明实施例提供了一种保存数据的方法,通过该方法可以实现在文件系统中数据操作的“All or Nothing”的事务性特征。与实施例2不同的是,该实施例3中提供的日志文件具有标志位,该标志位用于标识该日志文件是否有效,以执行主体为常用的计算机、计算机的指令间相互配合完成本方法为例,参见图3,该方法包括:
301:计算机接收一个事务周期内对于操作对象的操作数据,判断是对文件系统的相应操作后,将接收到的操作数据直接保存在计算机的内存中;
302:计算机的后台线程向操作系统申请并获得日志文件的操作独占权;
303:判断是否存在日志文件;
如果存在,则执行步骤304;
如果不存在,则执行步骤305。
304:判断日志文件的标志位是否无效;
如果是,则执行步骤306;
如果否,则说明上一次对于复合文档的操作出现异常状况,需要进行上一次异常操作的恢复,可以直接结束该方法的执行,或直接执行步骤308’;
其中,日志文件的标志位具体用于标志该日志文件是否有效。具体说来,如果计算机根据上述保存方法对数据进行保存的过程十分顺利,并未遇到任何异常情况,如断电、死机、进程crash、死锁等,那么日志文件中保存的操作前操作对象的原始数据即失去其价值,因此,作为一个无效的日志文件,其标志位可以是无效的;如果计算机根据上述保存方法对数据进行保存的过程出现了异常情况,那么日志文件中保存的操作前操作对象的原始数据即可以将复合文档中操作对象的恢复成操作前的状态,为后续的其他操作提供有效可靠的数据。
305:创建日志文件,并设置日志文件的标志位无效;
306:后台线程检查计算机的硬盘扇区,获得在本个事务周期内需要改写的操作对象所在的硬盘扇区;
307:将本个事务周期内需要改写的操作对象的原始数据从硬盘扇区中读出,保存到日志文件中,并设置日志文件的标志位有效;
308:判断日志文件是否保存成功;
如果成功,则执行步骤309;
如果不成功,则执行步骤307。
其中,如果日志文件保存成功,则复合文档的操作权限开放,计算机可以将内存中的数据保存到复合文档中;如果日志文件保存不成功,则复合文档的操作权限不开放,计算机无法对复合文档进行任何操作,即也无法将内存中的数据写入到复合文档中,需要等到日志文件保存成功后,再对其进行相应的操作。
309:将内存中缓存的操作数据保存到硬盘扇区中操作对象所在的复合文档中,并设置日志文件的标志位无效;
310:后台线程正常结束,释放已获得的对于日志文件的操作独占权。
进一步的,如果在将内存中缓存的操作数据写入复合文档的过程中出现了应用程序异常的情况,即上述保存数据的流程进行到步骤309时出现了问题无法继续,则计算机开始恢复数据,即,
309’:使用标志位有效的日志文件对复合文档中相应的操作对象进行恢复。
需要说明的是,无论是实施例2中提供的文件系统进行各操作指令的处理保存数据,还是本实施例3中提供的计算机各操作指令的相互配合保存数据,都并不用以限制实施本发明实施例提供的保存数据的方法,任何可以完成上述保存数据方法的指令流程都在本发明实施例的保护范围内。
本发明实施例提供了一种保护数据的方法,通过将操作数据先存入内存,并在将操作数据写入复合文档之前对操作前的原始数据进行备份,再将内存中的操作数据保存到操作对象所在的复合文档中。在实现这种保护数据的方法过程中,如果将操作数据保存到操作对象所在的复合文档过程中出现了异常状况,则利用日志文件中保存的原始数据对复合文档中的操作对象进行恢复,实现了对文件系统事务性的支持,解决了当前文件系统因异常情况而发生的复合文档的损坏问题,为用户提供了高度可靠的数据存储系统;同时,对上层应用提供了事务性支持,维持数据的高度一致性;利用该方法,应用程序的各个模块可以不必担心用户数据会丢失或产生不一致,极大地提高了应用程序的数据可靠性和完整性。
实施例4
为了给用户提供高度可靠的数据存储,克服现有技术中文件系统因应用程序的异常而造成的复合文档损坏等问题,本发明实施例提供了一种保存数据的装置,该装置的工作过程可以参见实施例1~3中的方法,参见图4,该装置包括:
接收模块401,用于接收一个事务周期内对于操作对象的操作数据,将操作数据保存到内存;
备份模块402,用于将操作对象在复合文档中的原始数据备份到日志文件;
保存模块403,用于在备份模块402将操作对象在复合文档中的原始数据备份到日志文件后,将内存中的操作数据保存到复合文档。
在一种实施例方式下,该装置还包括:
判断模块,用于判断接收模块401接收到的操作数据是否为新建操作;
相应的,备份模块402用于:当判断模块的判断结果为操作数据不是新建操作时,将操作对象在复合文档中的原始数据备份到日志文件。
其中,备份模块402具体包括:
第一单元,用于获得操作对象的原始数据,将日志文件使用无缓存模型打开,将操作对象的原始数据备份到日志文件;
和/或
第二单元,用于获得操作对象的原始数据,将操作对象的原始数据备份日志文件,并调用相应函数将文件存入硬盘扇区。
另一种实施方式下,该装置还包括:
操作管理模块,用于在备份模块402将操作对象在复合文档中的原始数据备份到日志文件之前,申请并获得对日志文件的操作独占权;以及,在备份模块402将操作对象在复合文档中的原始数据备份到日志文件之后,释放对日志文件的操作独占权。
再一种实施方式下,该装置还包括:
恢复模块,用于如果在保存模块403将内存中的操作数据保存到复合文档的过程中,复合文档发生异常,利用日志文件中的原始数据对操作对象在复合文档中数据进行恢复。
进一步的,该装置还包括:
校验模块,用于校验日志文件是否正确;
相应的,恢复模块用于:
当校验模块校验日志文件正确后,利用日志文件中的原始数据对操作对象在复合文档中数据进行恢复。
需要说明的是,本实施例中提供的保护数据的装置,相互之间的配合协作可以通过计算机操作系统的指令协调完成,也可以通过文件系统的统一调配完成,但并不用以限制本发明的保护范围。各模块之间具体的配合协作可以参考实施例1至3中任一实施例提供的保存数据的方法,在此不做赘述。
本发明实施例提供了一种保护数据的装置,通过将操作数据先存入内存,并在将操作数据写入复合文档之前对操作前的原始数据进行备份,再将内存中的操作数据保存到操作对象所在的复合文档中。在实现这种保护数据的方法过程中,如果将操作数据保存到操作对象所在的复合文档过程中出现了异常状况,则利用日志文件中保存的原始数据对复合文档中的操作对象进行恢复,实现了对文件系统事务性的支持,解决了当前文件系统因异常情况而发生的复合文档的损坏问题,为用户提供了高度可靠的数据存储系统;同时,对上层应用提供了事务性支持,维持数据的高度一致性;利用该方法,应用程序的各个模块可以不必担心用户数据会丢失或产生不一致,极大地提高了应用程序的数据可靠性和完整性。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种保存数据的方法,其特征在于,所述方法包括:
接收一个事务周期内对于操作对象的操作数据,将所述操作数据保存到内存;
申请并获得对日志文件的操作独占权;
将所述操作对象在复合文档中的原始数据备份到所述日志文件,设置所述日志文件的标志位有效,所述日志文件为原始数据备份文件,所述复合文档和所述日志文件位于硬盘上;
当所述日志文件保存成功之后,发送保存完成指令给文件系统,所述文件系统发送允许写入指令到所述内存,将所述内存中的所述操作数据保存到所述复合文档;
如果在将所述内存中的所述操作数据保存到所述复合文档的过程中,所述复合文档发生异常,所述方法还包括:校验所述日志文件是否正确,在所述日志文件正确时,利用标志位为有效的所述日志文件中的原始数据对所述操作对象在所述复合文档中数据进行恢复;
在将所述内存中的所述操作数据成功保存到所述复合文档或利用标志位为有效的所述日志文件中的原始数据对所述操作对象在所述复合文档中数据进行成功恢复之后,所述方法还包括:
设置所述日志文件的标志位为无效,并在后台线程正常结束后,释放已获得的对于所述日志文件的操作独占权。
2.如权利要求1所述的保存数据的方法,其特征在于,所述将所述操作对象在复合文档中的原始数据备份到日志文件之前,所述方法还包括:
判断所述操作数据是否为新建操作;
相应的,所述将所述操作对象在复合文档中的原始数据备份到日志文件具体包括:
当所述操作数据不是新建操作时,将所述操作对象在复合文档中的原始数据备份到日志文件。
3.如权利要求1所述的保存数据的方法,其特征在于,所述将所述操作对象在复合文档中的原始数据备份到日志文件,具体包括:
获得所述操作对象的原始数据,将日志文件使用无缓存模型打开,将所述操作对象的原始数据备份到所述日志文件;
和/或
获得所述操作对象的原始数据,将所述操作对象的原始数据备份日志文件,并调用相应函数将文件存入硬盘扇区。
4.一种保存数据的装置,其特征在于,所述装置包括:
接收模块,用于接收一个事务周期内对于操作对象的操作数据,将所述操作数据保存到内存;
备份模块,用于将所述操作对象在复合文档中的原始数据备份到日志文件,设置所述日志文件的标志位为有效,所述日志文件为原始数据备份文件,所述复合文档和所述日志文件位于硬盘上;
保存模块,用于在所述备份模块将所述操作对象在复合文档中的原始数据备份到日志文件且当所述日志文件被保存成功后,发送保存完成指令给文件系统,所述文件系统发送允许写入指令到所述内存,将所述内存中的所述操作数据保存到所述复合文档;
所述装置还包括:
恢复模块,用于如果在所述保存模块将内存中的所述操作数据保存到所述复合文档的过程中,所述复合文档发生异常,利用标志位为有效的所述日志文件中的原始数据对所述操作对象在所述复合文档中数据进行恢复;
所述装置还用于:在将所述内存中的所述操作数据成功保存到所述复合文档或利用标志位为有效的所述日志文件中的原始数据对所述操作对象在所述复合文档中数据进行成功恢复之后,所述复合文档未发生异常,设置所述日志文件的标志位为无效;
所述装置还包括:
校验模块,用于校验所述日志文件是否正确;
相应的,所述恢复模块用于:
当所述校验模块校验所述日志文件正确后,利用所述日志文件中的原始数据对所述操作对象在所述复合文档中数据进行恢复;
该装置还包括:
操作管理模块,用于在所述备份模块将操作对象在复合文档中的原始数据备份到日志文件之前,申请并获得对日志文件的操作独占权;以及,在所述备份模块将操作对象在复合文档中的原始数据备份到日志文件之后,释放对日志文件的操作独占权。
5.如权利要求4所述的保存数据的装置,其特征在于,所述装置还包括:
判断模块,用于判断所述接收模块接收到的操作数据是否为新建操作;
相应的,所述备份模块用于:当所述判断模块的判断结果为操作数据不是新建操作时,将所述操作对象在复合文档中的原始数据备份到日志文件。
6.如权利要求4所述的保存数据的装置,其特征在于,所述备份模块具体包括:
第一单元,用于获得所述操作对象的原始数据,将日志文件使用无缓存模型打开,将所述操作对象的原始数据备份到所述日志文件;
和/或
第二单元,用于获得所述操作对象的原始数据,将所述操作对象的原始数据备份日志文件,并调用相应函数将文件存入硬盘扇区。
CN200910226218.8A 2009-11-20 2009-11-20 一种保存数据的方法和装置 Active CN102073655B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN200910226218.8A CN102073655B (zh) 2009-11-20 2009-11-20 一种保存数据的方法和装置
MYPI2012001688A MY163798A (en) 2009-11-20 2010-05-20 Method and apparatus for storing data
PCT/CN2010/072983 WO2011060635A1 (zh) 2009-11-20 2010-05-20 一种保存数据的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910226218.8A CN102073655B (zh) 2009-11-20 2009-11-20 一种保存数据的方法和装置

Publications (2)

Publication Number Publication Date
CN102073655A CN102073655A (zh) 2011-05-25
CN102073655B true CN102073655B (zh) 2015-09-02

Family

ID=44032199

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910226218.8A Active CN102073655B (zh) 2009-11-20 2009-11-20 一种保存数据的方法和装置

Country Status (3)

Country Link
CN (1) CN102073655B (zh)
MY (1) MY163798A (zh)
WO (1) WO2011060635A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107506253B (zh) * 2017-08-11 2021-05-18 北京东土科技股份有限公司 一种操作系统异常信息保存方法及装置
CN109992448B (zh) * 2017-12-31 2021-08-06 中国移动通信集团山西有限公司 文件变化增量备份方法、装置、设备及介质
CN109104314B (zh) * 2018-08-20 2022-02-25 郑州云海信息技术有限公司 一种修改日志配置文件的方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173292B1 (en) * 1998-03-04 2001-01-09 International Business Machines Corporation Data recovery in a transactional database using write-ahead logging and file caching
CN1289966A (zh) * 1999-09-29 2001-04-04 株式会社东芝 通过事务对多个文件实现原子更新的事务文件系统
CN101226529A (zh) * 2007-01-19 2008-07-23 富士施乐株式会社 信息处理装置、信息处理系统、和信息处理方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1162782C (zh) * 2001-08-03 2004-08-18 华为技术有限公司 快速存储器文件的处理方法
US7647361B2 (en) * 2006-06-27 2010-01-12 Microsoft Corporation Automatically maintaining metadata in a file backup system
US8589341B2 (en) * 2006-12-04 2013-11-19 Sandisk Il Ltd. Incremental transparent file updating
CN100576243C (zh) * 2007-01-19 2009-12-30 东信和平智能卡股份有限公司 智能卡的数据写入方法
US8112664B2 (en) * 2008-03-26 2012-02-07 Symantec Operating Corporation Using volume snapshots to prevent file corruption in failed restore operations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173292B1 (en) * 1998-03-04 2001-01-09 International Business Machines Corporation Data recovery in a transactional database using write-ahead logging and file caching
CN1289966A (zh) * 1999-09-29 2001-04-04 株式会社东芝 通过事务对多个文件实现原子更新的事务文件系统
CN101226529A (zh) * 2007-01-19 2008-07-23 富士施乐株式会社 信息处理装置、信息处理系统、和信息处理方法

Also Published As

Publication number Publication date
CN102073655A (zh) 2011-05-25
MY163798A (en) 2017-10-31
WO2011060635A1 (zh) 2011-05-26

Similar Documents

Publication Publication Date Title
US8868858B2 (en) Method and apparatus of continuous data backup and access using virtual machines
CN1822004B (zh) 使用文件系统将文件自动备份为世代文件的系统和方法
CN103473067B (zh) 嵌入式Linux分区与数据还原方法、系统及系统开发方法
CN102945278B (zh) 一种数据库记录重做日志的方法和装置
US20030200394A1 (en) Cache memory arrangement and methods for use in a cache memory system
CN108431783B (zh) 访问请求处理方法、装置及计算机系统
US8639973B2 (en) System reset
US20060200500A1 (en) Method of efficiently recovering database
US9658925B1 (en) Systems and methods for restoring application data
CN101231604B (zh) 用于集群服务器数据的卷级恢复的设备、系统及方法
KR20110097937A (ko) 내구성 강화 메모리 디바이스
CN104166605B (zh) 基于增量数据文件的数据备份方法及系统
CN102473089A (zh) 用于双操作系统的文件系统
WO2009025684A1 (en) Method and system for preventing corruption of hard disk drive file system
CN111240879B (zh) 一种sas卡固件日志收集方法、系统、装置及存储介质
CN111666046B (zh) 一种数据存储方法、装置及设备
CN105718330A (zh) 一种Linux系统备份数据的恢复方法及装置
CN108431784B (zh) 访问请求处理方法、装置及计算机系统
CN102073655B (zh) 一种保存数据的方法和装置
CN104424115B (zh) 恢复电子设备的预设状态的方法、存储装置和电子设备
CN104331311B (zh) 一种升级包生成方法和装置
US9367457B1 (en) Systems and methods for enabling write-back caching and replication at different abstraction layers
CN101916234A (zh) 一种存储设备的信息维护方法及系统
CN111475334A (zh) TiDB数据库的维护方法、装置、计算机设备及存储介质
CN113535095B (zh) 一种双存储池数据存储方法、装置、设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160104

Address after: The South Road in Guangdong province Shenzhen city Fiyta building 518057 floor 5-10 Nanshan District high tech Zone

Patentee after: Shenzhen Tencent Computer System Co., Ltd.

Address before: 518000 Guangdong city of Shenzhen province Futian District SEG Science Park 2 East Room 403

Patentee before: Tencent Technology (Shenzhen) Co., Ltd.