本发明专利技术公开了一种数据存储方法与系统,将目标数据写入临时文件,通过rename系统调用方式将所述临时文件重命名为正式文件,写入临时文件不会影响正式文件中的数据,而重命名操作结果为成功时,临时文件将替换掉正式文件,其中保存的数据也将整体替换原有的数据;结果为失败时,操作系统将保证正式文件不会受到影响。在这两种情况下,正式文件中的数据始终是一致的和完整的。通过rename系统调用的原子性来保证文件替换的原子性,如果目标文件已经存在,它将被原子性地替换,从而高效低成本地实现数据存储的一致性。
【技术实现步骤摘要】
本专利技术涉及分布式数据处理领域,特别是涉及一种数据存储方法与系统。
技术介绍
在运行软件系统时,有时会将系统运行所产生的或所需要的一些数据存储到磁盘上。这一做法的好处是当系统因意外(进程崩溃或被杀、操作系统崩溃、系统断电或立即重启等)而中止时,在下次启动后可以从磁盘再次读入数据,部分或全部地恢复系统在中止前的运行状态。在上述设计中,随着数据的不断更新,也需要不时地将这些更新保存到磁盘,并且保证这些数据在保存后的一致性(不能有数据错误)和完整性(不能有数据丢失),否则,系统重启后会遇到问题。现有技术为了实现数据存储的一致性,通常有以下几种方法:1、使用数据库存储数据,将数据的保存组织成一个事务整体性地提交,数据库的内部机制可以保证该提交的一致性;2、使用数据冗余和校验,在保存数据的同时也保存其相关信息(即元数据),如数据的长度、开头和结尾标识、校验和等。在读取数据时,通过检查这些信息,发现并丢弃不一致的数据。对于一些数据量较少的情况,上述解决方案都过于复杂了,使用数据库会引入额外的模块和成本,而使用数据冗余和校验会增加设计和开发的工作量,不能高效低成本地实现数据存储一致性。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供一种数据存储方法与系统,可以高效低成本地实现数据存储一致性。为实现上述目的,本专利技术提供了一种数据存储方法,包括:将目标数据写入临时文件;通过rename系统调用方式将所述临时文件重命名为正式文件。优选地,通过rename系统调用方式将所述临时文件重命名为正式文件后还包括:响应所述目标数据的读取指令,从所述正式文件中读取所述目标数据。优选地,将目标数据写入临时文件前还包括:响应数据写入指令获取要写入的目标数据。本专利技术还提供了一种数据存储系统,包括:临时文件写入模块,用于将目标数据写入临时文件;正式文件获取模块,用于通过rename系统调用方式将所述临时文件重命名为正式文件。优选地,所述数据存储系统还包括:数据读取模块,用于响应所述目标数据的读取指令,从所述正式文件中读取所述目标数据。优选地,所述数据存储系统还包括:目标数据获取模块,用于响应数据写入指令获取要写入的目标数据。应用本专利技术提供的一种数据存储方法与系统,将目标数据写入临时文件,通过rename系统调用方式将所述临时文件重命名为正式文件,写入临时文件不会影响正式文件中的数据,而重命名操作结果为成功时,临时文件将替换掉正式文件,其中保存的数据也将整体替换原有的数据;结果为失败时,操作系统将保证正式文件不会受到影响。在这两种情况下,正式文件中的数据始终是一致的和完整的。通过rename系统调用的原子性来保证文件替换的原子性,如果目标文件已经存在,它将被原子性地替换,从而高效低成本地实现数据存储的一致性。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本专利技术一种数据存储方法实施例一的流程图;图2为本专利技术一种数据存储系统实施例二的结构示意图;图3为本专利技术一种数据存储系统实施例二的又一结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。实施例一:本专利技术提供了一种数据存储方法,图1示出了本专利技术数据存储方法实施例一的流程图,包括:步骤S101:将目标数据写入临时文件;响应数据写入指令获取要写入的目标数据,将所述目标数据写入临时文件,数据将存为临时文件,要保证数据落盘,以应对硬件重启、硬件断电的情况。步骤S102:通过rename系统调用方式将所述临时文件重命名为正式文件。在Linux/UNIX系统中,rename系统调用有一个特点:如果目标文件已经存在,它将被原子性地替换。Windows系统下的rename在目标文件已存在时将会失败,所以本方案不适用于Windows系统。rename函数功能是给一个文件重命名,用该函数可以实现文件移动功能,把一个文件的完整路径的盘符改一下就实现了这个文件的移动。重命名操作可能有两种结果:(1)成功。这时临时文件将替换掉正式文件,其中保存的数据也将整体替换原有的数据;(2)因错误或意外而失败。这时,操作系统将保证正式文件不会受到影响。在这两种情况下,正式文件中的数据始终是一致的和完整的。之后需要读取数据时,响应所述目标数据的读取指令,从所述正式文件中读取所述目标数据。应用本实施例提供的一种数据存储方法,将目标数据写入临时文件,通过rename系统调用方式将所述临时文件重命名为正式文件,写入临时文件不会影响正式文件中的数据,而重命名操作结果为成功时,临时文件将替换掉正式文件,其中保存的数据也将整体替换原有的数据;结果为失败时,操作系统将保证正式文件不会受到影响。在这两种情况下,正式文件中的数据始终是一致的和完整的。通过rename系统调用的原子性来保证文件替换的原子性,如果目标文件已经存在,它将被原子性地替换,从而高效低成本地实现数据存储的一致性。实施例二:本专利技术还提供了一种数据存储系统,图2示出了本专利技术数据存储系统实施例二的结构示意图,包括:临时文件写入模块101,用于将目标数据写入临时文件;正式文件获取模块102,用于通过rename系统调用方式将所述临时文件重命名为正式文件。如图3所示,对应于图2,本实施例还可包括:目标数据获取模块100,用于响应数据写入指令获取要写入的目标数据;数据读取模块103,用于响应所述目标数据的读取指令,从所述正式文件中读取所述目标数据。应用本实施例提供的一种数据存储系统,将目标数据写入临时文件,通过rename系统调用方式将所述临时文件重命名为正式文件,写入临时文件不会影响正式文件中的数据,而重命名操作结果为成功时,临时文件将替换掉正式文件,其中保存的数据也将整体替换原有的数据;结果为失败时,操作系统将保证正本文档来自技高网...
【技术保护点】
一种数据存储方法,其特征在于,包括:将目标数据写入临时文件;通过rename系统调用方式将所述临时文件重命名为正式文件。
【技术特征摘要】
1.一种数据存储方法,其特征在于,包括:
将目标数据写入临时文件;
通过rename系统调用方式将所述临时文件重命名为正式文件。
2.根据权利要求1所述的数据存储方法,其特征在于,通过rename系
统调用方式将所述临时文件重命名为正式文件后还包括:
响应所述目标数据的读取指令,从所述正式文件中读取所述目标数据。
3.根据权利要求1所述的数据存储方法,其特征在于,将目标数据写入
临时文件前还包括:
响应数据写入指令获取要写入的目标数据。
...
【专利技术属性】
技术研发人员:吴明桥,文中领,
申请(专利权)人:浪潮北京电子信息产业有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。