CN102214247B - 一种支持并发的文件事务方法 - Google Patents

一种支持并发的文件事务方法 Download PDF

Info

Publication number
CN102214247B
CN102214247B CN 201110205006 CN201110205006A CN102214247B CN 102214247 B CN102214247 B CN 102214247B CN 201110205006 CN201110205006 CN 201110205006 CN 201110205006 A CN201110205006 A CN 201110205006A CN 102214247 B CN102214247 B CN 102214247B
Authority
CN
China
Prior art keywords
file
original
temporary
correct
concurrent
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
CN 201110205006
Other languages
English (en)
Other versions
CN102214247A (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.)
Dareway Software Co., Ltd.
Original Assignee
SHANDONG DAREWAY COMPUTER SOFTWARE 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 SHANDONG DAREWAY COMPUTER SOFTWARE CO Ltd filed Critical SHANDONG DAREWAY COMPUTER SOFTWARE CO Ltd
Priority to CN 201110205006 priority Critical patent/CN102214247B/zh
Publication of CN102214247A publication Critical patent/CN102214247A/zh
Application granted granted Critical
Publication of CN102214247B publication Critical patent/CN102214247B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种支持并发的文件事务方法,该方法的实现步骤如下:文件加载,从文件路径上获取文件并将文件反序列化为对象,将对象保存在内存中;文件操作、保存,对文件的操作都是基于对对象的操作,文件对象是支持并发操作的,文件保存是将内存中的对象重新写入文件中。本发明的有益效果是解决了应用使用数据库带来的难以跨平台、安装复杂、高昂的购买费用等问题,解决多线程读写操作的安全,解决了文件操作中的多人并发操作时的文件冲突问题,使文件操作易于标准化,易于规范化,可以更好的并行操作;提高了文件的安全性,可以有效防止有人恶意篡改数据。

Description

一种支持并发的文件事务方法
技术领域
    本发明涉及一种文件事务方法,尤其涉及一种支持并发的文件事务方法。
背景技术
传统技术中,对于文件的读写都是基于操作系统中的文件系统实现的,数据以文件为单位存储,且由操作系统统一管理,文件的逻辑结构和物理结构脱钩,程序和数据分离,是数据和程序有了一定的独立性,用户的程序和数据可以分别存放,各个应用程序可以共享一组数据,可以实现以文件为单位的数据共享。但由于数据的组织仍然是面向程序,所以基于操作系统的文件的读写有种种限制,如不能进行并发操作、无法远程操作文件等。当某个应用面临终端分布广、需要并发操作、对数据共享有很高要求时,可能就需要选用数据库来完成,数据库能够统一管理和共享数据,数据冗余很少,程序和数据有很高的独立性,数据库对数据进行统一管理和控制,提供了数据的安全性、完整性以及并发控制。但是可能由于各种历史条件的限制,各个部门或者地区根据自身的信息需求和特定的应用可能选择了各自的软硬件环境,所以应用面临的数据库版本各异,开发出来的应用无法直接复制到另一个平台中使用,同时使用数据库还面临着高昂的购买费用、复杂的安装等问题。
发明内容
本发明的目的就是为了解决上述问题,提供一种支持并发的文件事务方法,它提高了文件的安全性,并可以在多个平台上使用且不需要安装。
为了实现上述目的,本发明采用如下技术方案:
一种支持并发的文件事务方法,该方法的实现步骤如下:
步骤1:初始化数据库系统服务器,并判断原文件是否存在,如存在则转入步骤3,如不存在则转入步骤2;
步骤2:判断原文件的备份文件是否存在,如存在,则转入步骤3,如备份文件不存在则抛出异常;
步骤3:反序列化原文件或备份文件为对象;
步骤4:判断对象的消息鉴别码Mac是否正确,如果正确则跳至步骤5,如错误则抛出异常;
步骤5:将对象保存在内存中;
步骤6:对文件进行并发操作并进行保存。
所述的步骤6中:对文件进行并发操作的实现步骤如下:
1)深拷贝备份文件对象到临时文件对象中;
2)判断临时对象的Mac是否正确,如果正确则跳至步骤3),如果错误则判断原文件是否存在,如原文件存在则拷贝给备份文件,如原文件不存在则抛出异常;
3)用户对临时对象进行写操作; 
4)从磁盘重新读取原文件到临时对象中;
5)判断临时对象的Mac是否正确,如果正确,转向步骤6),如果错误则抛出异常;
6)将临时对象写入备份文件中;
7)完成文件的并发操作。
所述反序列化是将字节序列恢复为对象的过程。
所述步骤3)中对文件进行写操作时,每次执行完文件写操作后调用操作系统的刷新文件缓存方法强制刷新缓存文件内容到磁盘上,保证每次写文件都能及时写到磁盘上。
本发明的有益效果:
1、一种支持并发的文件事务系统可以使用java语言进行开发,开发完成后因为java语言跨平台的特性使得支持并发的文件事务系统也可以在多个平台使用,一种支持并发的文件事务系统安装方便只需进行拷贝安装即可,无需进行复杂的配置,故解决了应用使用数据库带来的难以跨平台、安装复杂、高昂的购买费用等问题,采用该方法的应用具有很好的复制性,可以在多个平台上使用,并且不需要安装。 
2、修改原先文件事务设计上存在的死锁问题,将所有的对文件的访问统一到一个对象来操作,解决多线程读写操作的安全,解决了文件操作中的多人并发操作时的文件冲突问题,使文件操作易于标准化,易于规范化,可以更好的并行操作。
3、提高了文件的安全性,方法中所有操作都以拷贝的文件对象来执行,可以有效确保数据版本安全,并且在每次打开、保存对象的时候都对其Mac值进行验证,可以有效防止有人恶意篡改数据。
附图说明
图1为支持并发的文件事务方法流程图;
图2为文件加载步骤图;
图3为文件操作步骤图。
具体实施方式
下面结合附图与实施例对本发明作进一步说明。
如图1所示,为支持并发的文件事务方法流程图,该方法的实现步骤如下:
A.     文件加载,从文件路径上获取文件并将文件反序列化为对象,将对象保存在内存中;
B.     文件操作、保存,对文件的操作都是基于对对象的操作,文件对象是支持并发操作的,文件保存是将内存中的对象重新写入文件中。
如图2所示为文件加载流程图,加载步骤如下:
A1.          首先将获取的相对路径转为绝对路径;
A2.          判断文件是否存在,如文件存在则跳至A3,如文件不存在则判断备份文件是否存在,如备份文件存在,则将备份文件反序列化为对象并跳至步骤A4;
A3.          反序列化文件为对象;
A4.          判断对象的Mac是否正确,如果正确则跳至步骤A5,如错误则判断备份文件是否存在,如备份文件存在,则将备份文件反序列化为对象,判断备份文件对象的Mac是否正确,如果正确则跳至步骤A5,如果错误则抛出异常;
A5.          将反序列化后的对象返回。
如图3所示,文件操作包含以下步骤: 
B1.          深拷贝备份文件对象到临时文件对象中,每次事务写操作前先从要写的文件对象深拷贝出一个临时文件对象,后面的所有写操作均以此拷贝的文件对象来执行,防止计算Mac值后其他线程对此文件对象进行修改;
B2.          判断临时对象Mac是否正确,如果正确则跳至步骤B3,如果错误则判断原文件是否存在,并将原文件拷贝给备份文件;
B3.          用户对对象进行操作,因为对象的特性可以允许多个用户对同一对象操作,创建Mac码,并将经过操作后的对象写入原文件,在进行文件写操作时,每次执行完文件写操作后调用操作系统的刷新文件缓存方法强制刷新缓存文件内容到磁盘上,保证每次写文件都能及时写到磁盘上;
B4.          从磁盘重新读取原文件到临时对象中;
B5.          判断临时对象的Mac是否正确,如果正确,转向步骤B6,如果错误则抛出异常;
B6.          将临时对象写入备份文件中。
在本发明中,Mac指的是消息鉴别码(Message Authentication Code),消息鉴别码实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个标识鉴别消息的完整性。使用一个密钥生成一个固定大小的数据块,即MAC,并将其加入到消息中,然后传输;接收方利用与发送方共享的密钥进行鉴别认证等。
实施例1: 
在线考试系统中,考生的答卷一般以文件的形式储存在服务器上,考生答题时对服务器上的答题文件进行在线访问,答完一个题目后即进行写操作。但在使用在线考试系统中存在一个特殊需求,即在考试过程中如监考老师发现某个学生作弊需要将其作弊信息写入到其答题文件中,这就涉及到了文件的并发访问问题,以往会使用数据库来解决这个问题,数据库可以很好的对并发访问进行控制分配。但如果这个考试是大范围性的,因为各地的服务器操作系统各异就会造成无法对数据库进行统一安装,即使能够统一数据库版本也存在着安装复杂、费用较高的问题,使用本发明则可以很好地解决这种轻量级的文件并发访问问题。利用本发明所开发的系统不需要进行安装,只需要将其跟考试系统一块部署在服务器上即可,例如AnswerFile、AnswerFile.bak为服务器上考生的两个答题文件,其中AnswerFile为原文件,AnswerFile.bak为备份文件,在系统初始化时会首先判断AnswerFile文件是否存在,如果AnswerFile文件存在就将其反序列化为对象,如果AnswerFile文件不存在就将AnswerFile.bak反序列化为对象,反序列化后会判断对象的Mac值是不是正确,如果原文件AnswerFile对象的Mac值不正确就将备份AnswerFile.bak文件反序列化为对象并判断其Mac值。
当用户需要进行答题即对AnswerFile文件进行操作时,可以对AnswerFile对象进行操作,因为对象的一些特性使其可以供多人并发操作,此时如果监考老师需要对AnswerFile文件进行操作如加入些作弊信息等时也可以对AnswerFile对象进行操作,操作时系统首先会深拷贝备份文件对象到临时文件对象AnswerFile.bak.temp中,然后判断临时对象的AnswerFile.bak.temp的Mac是否正确,如果不正确就将原文件AnswerFile拷贝给备份文件AnswerFile.bak,如果临时对象Mac正确用户就可以对对象进行操作了,首先系统会创建一个Mac码,并将经过操作后的对象写入原文件中。当原文件写完后还需要将原文件创建个备份,首先需要将原文件读成对象再检验Mac值是否正确,最后将临时对象也写入到AnswerFile.bak文件中。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

Claims (3)

1.一种支持并发的文件事务方法,其特征是,该方法的实现步骤如下:
步骤1:初始化数据库系统服务器,并判断原文件是否存在,如存在则转入步骤3,如不存在则转入步骤2;
步骤2:判断原文件的备份文件是否存在,如存在,则转入步骤3,如备份文件不存在则抛出异常;
步骤3:反序列化原文件或备份文件为对象;
步骤4:判断对象的消息鉴别码Mac是否正确,如果正确则跳至步骤5,如错误则抛出异常;
步骤5:将对象保存在内存中;
步骤6:对文件进行并发操作并进行保存;
所述的步骤6中:对文件进行并发操作的实现步骤如下:
1)深拷贝备份文件对象到临时文件对象中;
2)判断临时对象的Mac是否正确,如果正确则跳至步骤3),如果错误则判断原文件是否存在,如原文件存在则拷贝给备份文件,如原文件不存在则抛出异常;
3)用户对临时对象进行写操作;
4)从磁盘重新读取原文件到临时对象中;
5)判断临时对象的Mac是否正确,如果正确,转向步骤6),如果错误则抛出异常;
6)将临时对象写入备份文件中;
7)完成文件的并发操作。
2.如权利要求书1所述的一种支持并发的文件事务方法,其特征是,所述反序列化是将字节序列恢复为对象的过程。
3.如权利要求书1所述的一种支持并发的文件事务方法,其特征是,所述步骤3)中对文件进行写操作时,每次执行完文件写操作后调用操作系统的刷新文件缓存方法强制刷新缓存文件内容到磁盘上,保证每次写文件都能及时写到磁盘上。
CN 201110205006 2011-07-21 2011-07-21 一种支持并发的文件事务方法 Active CN102214247B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201110205006 CN102214247B (zh) 2011-07-21 2011-07-21 一种支持并发的文件事务方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110205006 CN102214247B (zh) 2011-07-21 2011-07-21 一种支持并发的文件事务方法

Publications (2)

Publication Number Publication Date
CN102214247A CN102214247A (zh) 2011-10-12
CN102214247B true CN102214247B (zh) 2013-06-12

Family

ID=44745555

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110205006 Active CN102214247B (zh) 2011-07-21 2011-07-21 一种支持并发的文件事务方法

Country Status (1)

Country Link
CN (1) CN102214247B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104616354B (zh) * 2015-01-23 2018-08-03 克拉玛依红有软件有限责任公司 一种三维gis快速加载空间数据的方法
CN111736964B (zh) * 2020-07-02 2021-08-06 腾讯科技(深圳)有限公司 事务处理方法、装置、计算机设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1856784A (zh) * 2004-03-10 2006-11-01 微软公司 用于存储平台中的锁定和隔离的系统和方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7149965B1 (en) * 1999-08-10 2006-12-12 Microsoft Corporation Object persister

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1856784A (zh) * 2004-03-10 2006-11-01 微软公司 用于存储平台中的锁定和隔离的系统和方法

Also Published As

Publication number Publication date
CN102214247A (zh) 2011-10-12

Similar Documents

Publication Publication Date Title
US9710396B2 (en) Sharing virtual memory-based multi-version data between the heterogeneous processors of a computer platform
CN103493027B (zh) 虚拟磁盘存储技术
US9250868B2 (en) System and method for generating a device driver using an archive of template code
US9479395B2 (en) Model framework to facilitate robust programming of distributed workflows
US20070168699A1 (en) Method and system for extracting log and trace buffers in the event of system crashes
CN103597451B (zh) 用于高可用性的存储器镜像和冗余生成
US10133637B2 (en) Systems and methods for secure recovery of host system code
US20100153690A1 (en) Using register rename maps to facilitate precise exception semantics
US9569122B2 (en) System, method and a non-transitory computer readable medium for transaction aware snapshot
US20080126161A1 (en) Integration of workflow and rules
TWI467373B (zh) 以交換式記憶體為手段來加速虛擬化及仿真化
US20120159107A1 (en) Refactoring virtual data storage hierarchies
US9535820B2 (en) Technologies for application validation in persistent memory systems
CN110515641A (zh) 服务器固件的更新方法、装置及系统
TW200817889A (en) Fault detection using redundant virtual machines
US20140130026A1 (en) Operand and limits optimization for binary translation system
CN106371763A (zh) 一种存储快照的方法、装置、磁盘及计算机
US8548966B2 (en) Asynchronous assertions
US7353365B2 (en) Implementing check instructions in each thread within a redundant multithreading environments
CN110554998B (zh) 一种通过替换函数内部指令的钩子方法、装置、终端及存储介质
CN102214247B (zh) 一种支持并发的文件事务方法
US20080005192A1 (en) Dual logging of changes to a user preference in a computer device
US11100092B2 (en) Database tool
US20210326240A1 (en) Framework For Providing Binary Release Isolation For Parts Of A Web Application
US20050160307A1 (en) Method, system, and program for generating parity data

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
C56 Change in the name or address of the patentee

Owner name: DAREWAY SOFTWARE CO., LTD.

Free format text: FORMER NAME: SHANDONG DAREWAY COMPUTER SOFTWARE CO.,LTD.

CP01 Change in the name or title of a patent holder

Address after: 250000, No. 6, No. 2, production research base, Qilihe Road, Licheng Road, Licheng District, Shandong, Ji'nan

Patentee after: Dareway Software Co., Ltd.

Address before: 250000, No. 6, No. 2, production research base, Qilihe Road, Licheng Road, Licheng District, Shandong, Ji'nan

Patentee before: Shandong Dareway Computer Software Co., Ltd.