一种数据存储方法与系统的制作方法

文档序号:9865624阅读:365来源:国知局
一种数据存储方法与系统的制作方法
【技术领域】
[0001]本发明涉及分布式数据处理领域,特别是涉及一种数据存储方法与系统。
【背景技术】
[0002]在运行软件系统时,有时会将系统运行所产生的或所需要的一些数据存储到磁盘上。这一做法的好处是当系统因意外(进程崩溃或被杀、操作系统崩溃、系统断电或立即重启等)而中止时,在下次启动后可以从磁盘再次读入数据,部分或全部地恢复系统在中止前的运行状态。
[0003]在上述设计中,随着数据的不断更新,也需要不时地将这些更新保存到磁盘,并且保证这些数据在保存后的一致性(不能有数据错误)和完整性(不能有数据丢失),否则,系统重启后会遇到问题。现有技术为了实现数据存储的一致性,通常有以下几种方法:
[0004]1、使用数据库存储数据,将数据的保存组织成一个事务整体性地提交,数据库的内部机制可以保证该提交的一致性;
[0005]2、使用数据冗余和校验,在保存数据的同时也保存其相关信息(即元数据),如数据的长度、开头和结尾标识、校验和等。在读取数据时,通过检查这些信息,发现并丢弃不一致的数据。
[0006]对于一些数据量较少的情况,上述解决方案都过于复杂了,使用数据库会引入额外的模块和成本,而使用数据冗余和校验会增加设计和开发的工作量,不能高效低成本地实现数据存储一致性。

【发明内容】

[0007]有鉴于此,本发明的主要目的在于提供一种数据存储方法与系统,可以高效低成本地实现数据存储一致性。
[0008]为实现上述目的,本发明提供了一种数据存储方法,包括:
[0009]将目标数据写入临时文件;
[0010]通过rename系统调用方式将所述临时文件重命名为正式文件。
[0011]优选地,通过rename系统调用方式将所述临时文件重命名为正式文件后还包括:
[0012]响应所述目标数据的读取指令,从所述正式文件中读取所述目标数据。
[0013]优选地,将目标数据写入临时文件前还包括:
[0014]响应数据写入指令获取要写入的目标数据。
[0015]本发明还提供了一种数据存储系统,包括:
[0016]临时文件写入模块,用于将目标数据写入临时文件;
[0017]正式文件获取模块,用于通过rename系统调用方式将所述临时文件重命名为正式文件。
[0018]优选地,所述数据存储系统还包括:
[0019]数据读取模块,用于响应所述目标数据的读取指令,从所述正式文件中读取所述目标数据。
[0020]优选地,所述数据存储系统还包括:
[0021]目标数据获取模块,用于响应数据写入指令获取要写入的目标数据。
[0022]应用本发明提供的一种数据存储方法与系统,将目标数据写入临时文件,通过rename系统调用方式将所述临时文件重命名为正式文件,写入临时文件不会影响正式文件中的数据,而重命名操作结果为成功时,临时文件将替换掉正式文件,其中保存的数据也将整体替换原有的数据;结果为失败时,操作系统将保证正式文件不会受到影响。在这两种情况下,正式文件中的数据始终是一致的和完整的。通过rename系统调用的原子性来保证文件替换的原子性,如果目标文件已经存在,它将被原子性地替换,从而高效低成本地实现数据存储的一致性。
【附图说明】
[0023]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0024]图1为本发明一种数据存储方法实施例一的流程图;
[0025]图2为本发明一种数据存储系统实施例二的结构示意图;
[0026]图3为本发明一种数据存储系统实施例二的又一结构示意图。
【具体实施方式】
[0027]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0028]实施例一:
[0029]本发明提供了一种数据存储方法,图1示出了本发明数据存储方法实施例一的流程图,包括:
[0030]步骤SlOl:将目标数据写入临时文件;
[0031 ]响应数据写入指令获取要写入的目标数据,将所述目标数据写入临时文件,数据将存为临时文件,要保证数据落盘,以应对硬件重启、硬件断电的情况。
[0032]步骤S102:通过rename系统调用方式将所述临时文件重命名为正式文件。
[0033]在Linux/UNIX系统中,rename系统调用有一个特点:如果目标文件已经存在,它将被原子性地替换。Windows系统下的rename在目标文件已存在时将会失败,所以本方案不适用于Windows系统。
[0034]rename函数功能是给一个文件重命名,用该函数可以实现文件移动功能,把一个文件的完整路径的盘符改一下就实现了这个文件的移动。
[0035]重命名操作可能有两种结果:
[0036](I)成功。这时临时文件将替换掉正式文件,其中保存的数据也将整体替换原有的数据;
[0037](2)因错误或意外而失败。这时,操作系统将保证正式文件不会受到影响。
[0038]在这两种情况下,正式文件中的数据始终是一致的和完整的。
[0039]之后需要读取数据时,响应所述目标数据的读取指令,从所述正式文件中读取所述目标数据。
[0040]应用本实施例提供的一种数据存储方法,将目标数据写入临时文件,通过rename系统调用方式将所述临时文件重命名为正式文件,写入临时文件不会影响正式文件中的数据,而重命名操作结果为成功时,临时文件将替换掉正式文件,其中保存的数据也将整体替换原有的数据;结果为失败时,操作系统将保证正式文件不会受到影响。在这两种情况下,正式文件中的数据始终是一致的和完整的。通过rename系统调用的原子性来保证文件替换的原子性,如果目标文件已经存在,它将被原子性地替换,从而高效低成本地实现数据存储的一致性。
[0041]实施例二:
[0042]本发明还提供了一种数据存储系统,图2示出了本发明数据存储系统实施例二的结构示意图,包括:
[0043]临时文件写入模块101,用于将目标数据写入临时文件;
[0044]正式文件获取模块102,用于通过rename系统调用方式将所述临时文件重命名为正式文件。
[0045]如图3所示,对应于图2,本实施例还可包括:
[0046]目标数据获取模块100,用于响应数据写入指令获取要写入的目标数据;
[0047]数据读取模块103,用于响应所述目标数据的读取指令,从所述正式文件中读取所述目标数据。
[0048]应用本实施例提供的一种数据存储系统,将目标数据写入临时文件,通过rename系统调用方式将所述临时文件重命名为正式文件,写入临时文件不会影响正式文件中的数据,而重命名操作结果为成功时,临时文件将替换掉正式文件,其中保存的数据也将整体替换原有的数据;结果为失败时,操作系统将保证正式文件不会受到影响。在这两种情况下,正式文件中的数据始终是一致的和完整的。通过rename系统调用的原子性来保证文件替换的原子性,如果目标文件已经存在,它将被原子性地替换,从而高效低成本地实现数据存储的一致性。
[0049]需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0050]最后,还需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0051]以上对本发明所提供的方法和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【主权项】
1.一种数据存储方法,其特征在于,包括: 将目标数据写入临时文件; 通过rename系统调用方式将所述临时文件重命名为正式文件。2.根据权利要求1所述的数据存储方法,其特征在于,通过rename系统调用方式将所述临时文件重命名为正式文件后还包括: 响应所述目标数据的读取指令,从所述正式文件中读取所述目标数据。3.根据权利要求1所述的数据存储方法,其特征在于,将目标数据写入临时文件前还包括: 响应数据写入指令获取要写入的目标数据。4.一种数据存储系统,其特征在于,包括: 临时文件写入模块,用于将目标数据写入临时文件; 正式文件获取模块,用于通过rename系统调用方式将所述临时文件重命名为正式文件。5.根据权利要求4所述的数据存储系统,其特征在于,还包括: 数据读取模块,用于响应所述目标数据的读取指令,从所述正式文件中读取所述目标数据。6.根据权利要求4所述的数据存储系统,其特征在于,还包括: 目标数据获取模块,用于响应数据写入指令获取要写入的目标数据。
【专利摘要】本发明公开了一种数据存储方法与系统,将目标数据写入临时文件,通过rename系统调用方式将所述临时文件重命名为正式文件,写入临时文件不会影响正式文件中的数据,而重命名操作结果为成功时,临时文件将替换掉正式文件,其中保存的数据也将整体替换原有的数据;结果为失败时,操作系统将保证正式文件不会受到影响。在这两种情况下,正式文件中的数据始终是一致的和完整的。通过rename系统调用的原子性来保证文件替换的原子性,如果目标文件已经存在,它将被原子性地替换,从而高效低成本地实现数据存储的一致性。
【IPC分类】G06F11/14, G06F17/30
【公开号】CN105630900
【申请号】CN201510961681
【发明人】吴明桥, 文中领
【申请人】浪潮(北京)电子信息产业有限公司
【公开日】2016年6月1日
【申请日】2015年12月18日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1