数据存储方法技术

技术编号:39422520 阅读:24 留言:0更新日期:2023-11-19 16:10
本申请涉及一种数据存储方法

【技术实现步骤摘要】
数据存储方法、装置、计算机设备和存储介质


[0001]本申请涉及分布式存储
,特别是涉及一种数据存储方法

装置

计算机设备

存储介质和计算机程序产品


技术介绍

[0002]目前的分布式存储系统中,提出了一种
EC
数据存储方式,该
EC
数据存储方式采用数据分片和生成数据分片对应的校验数据的形式来实现数据存储

然而,在
EC
数据存储过程中对于非满条带写,存在写惩罚机制,为了减少写惩罚,需要先写满条带,然后再计算校验数据

这就造成了数据存储的效率较低

[0003]为了降低
EC
数据存储的写惩罚机制的影响,提出了对
EC
数据存储方式的优化方案,具体的:例如,先将数据写入副本,后台进行
EC
转换;或者,通过聚合,降低非满条带写的概率等,从而,加快
EC
存储方式中写满条带的速度,保证尽快执行将条带中的数据写入存储节点的操作

[0004]然而,目前提出的多种
EC
数据存储的优化方案,在后台
EC
转换速率以及聚合
IO
的处理效率较低的情况下,会出现较长等待时间,进而,导致数据写入磁盘的效率较低


技术实现思路

[0005]基于此,有必要针对上述技术问题,提供一种数据存储方法<br/>、
装置

计算机设备

计算机可读存储介质和计算机程序产品

[0006]第一方面,本申请提供了一种数据存储方法

所述方法包括:
[0007]将第一用户数据和第二用户数据并发写入目标条带;
[0008]在写入所述第二用户数据的过程中,若所述第一用户数据写入已完成时,则根据所述第一用户数据生成第一校验数据,并将所述第一校验数据对应的第一版本号作为所述目标条带的当前版本号;
[0009]将所述第一用户数据

所述第一校验数据以及所述目标条带的当前版本号进行数据落盘处理;
[0010]当所述第二用户数据写入完成时,根据所述第二用户数据和所述第一用户数据生成第二校验数据,并基于所述第二校验数据对应的第二版本号更新所述目标条带的当前版本号;
[0011]将所述第二用户数据

所述第二校验数据以及所述目标条带的当前版本号进行数据落盘处理

[0012]本实施例中,通过将第一用户数据和第二用户数据并发写入目标条带,且分别设置第一校验数据和第二校验数据对应版本号,通过携带版本号进行数据落盘处理,避免数据存储冲突,提高数据写入效率

[0013]在其中一个实施例中,所述将第一用户数据和第二用户数据并发写入目标条带,包括:
[0014]并发通过第一数据写操作将第一用户数据写入目标条带的第一写入位置,以及通过第二数据写操作将第二用户数据写入所述目标条带的第二写入位置;
[0015]所述第一写入位置和所述第二写入位置为所述目标条带中的不同区域

[0016]本实施例中,通过第一数据写操作和第二数据写操作完成第一用户数据和第二用户数据的并发写入,将第一用户数据和第二用户数据写入到同一目标条带,减少非满条带的写惩罚,同时,提高数据写入效率

[0017]在其中一个实施例中,所述在写入所述第二用户数据的过程中,若所述第一用户数据写入已完成时,则根据所述第一用户数据生成第一校验数据,并将所述第一校验数据对应的第一版本号作为所述目标条带的当前版本号,包括:
[0018]在写入所述第二用户数据的过程中,若所述第一用户数据已完成写入,则根据所述目标条带中的所述第一用户数据,生成第一校验数据,并为所述第一校验数据设置第一版本号;
[0019]将所述第一版本号作为所述目标条带对应的当前版本号,写入所述目标条带的校验区域

[0020]本实施例中,针对第一用户数据已完成写入的情况,生成基于第一用户数据的第一校验数据,并为第一校验数据设置第一版本号,该第一版本号作为目标条带的当前版本号,可以用于数据版本切换,避免了数据存储冲突处理

[0021]在其中一个实施例中,所述当所述第二用户数据写入完成时,根据所述第二用户数据和所述第一用户数据生成第二校验数据,并基于所述第二校验数据对应的第二版本号更新所述目标条带的当前版本号,包括:
[0022]当所述第二用户数据写入完成时,读取所述目标条带中的所述第二用户数据和所述第一用户数据,生成第二校验数据,并为所述第二校验数据设置第二版本号;
[0023]利用所述第二版本号覆盖所述目标条带的校验区域中的原始版本号,将所述第二版本号作为所述目标条带的当前版本号

[0024]本实施例中,在第二用户数据写入完成时,基于第一用户数据和第二用户数据生成第二校验数据,以及为第二校验数据设置对应的第二版本号,通过第二版本号更新目标条带的当前版本号,目标条带的当前版本号可以用于数据版本切换,避免了数据存储冲突处理

[0025]在其中一个实施例中,所述将所述第一用户数据

所述第一校验数据以及所述第一版本号进行数据落盘处理之前,所述方法还包括:
[0026]获取目标磁盘的磁盘版本号;
[0027]判断所述磁盘版本号与所述目标条带的当前版本号的大小关系;
[0028]若所述当前版本号大于所述磁盘版本号,则基于所述当前版本号更新所述磁盘版本号

[0029]本实施例中,通过合理地设计目标条带的版本号和版本号校验机制,有效地保障了分布式存储系统中数据的一致性和安全性

[0030]在其中一个实施例中,所述方法还包括:
[0031]若所述当前版本号小于或者等于所述磁盘版本号,计算所述磁盘版本号与所述当前版本号间的差值;
[0032]若所述差值超过预设的差值阈值,则确定出现版本号反转,基于所述当前版本号更新所述磁盘版本号

[0033]本实施例中,为了避免是目标条带版本号溢出反转,而造成无法使得新的用户数据写入磁盘,在数据落盘校验机制中增加了版本号溢出反转的校验条件,提高了数据校验的合理性,进而,保证了分布式存储系统中数据的一致性和安全性

[0034]在其中一个实施例中,所述将所述第一用户数据

所述第一校验数据以及所述目标条带的当前版本号进行数据落盘处理之前,所述方法还包括:
[0035]在目标存储节点存在异常的情况下,在新的目标存储节点的日志中获取所述目标条带的当前版本号;
[0036]基于所述当前版本号,执行所述判断所述磁盘版本号与所述目标条带的当本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种数据存储方法,其特征在于,所述方法包括:将第一用户数据和第二用户数据并发写入目标条带;在写入所述第二用户数据的过程中,若所述第一用户数据写入已完成时,则根据所述第一用户数据生成第一校验数据,并将所述第一校验数据对应的第一版本号作为所述目标条带的当前版本号;将所述第一用户数据

所述第一校验数据以及所述目标条带的当前版本号进行数据落盘处理;当所述第二用户数据写入完成时,根据所述第二用户数据和所述第一用户数据生成第二校验数据,并基于所述第二校验数据对应的第二版本号更新所述目标条带的当前版本号;将所述第二用户数据

所述第二校验数据以及所述目标条带的当前版本号进行数据落盘处理
。2.
根据权利要求1所述的方法,其特征在于,所述将第一用户数据和第二用户数据并发写入目标条带,包括:并发通过第一数据写操作将第一用户数据写入目标条带的第一写入位置,以及通过第二数据写操作将第二用户数据写入所述目标条带的第二写入位置;所述第一写入位置和所述第二写入位置为所述目标条带中的不同区域
。3.
根据权利要求1所述的方法,其特征在于,所述在写入所述第二用户数据的过程中,若所述第一用户数据写入已完成时,则根据所述第一用户数据生成第一校验数据,并将所述第一校验数据对应的第一版本号作为所述目标条带的当前版本号,包括:在写入所述第二用户数据的过程中,若所述第一用户数据已完成写入,则根据所述目标条带中的所述第一用户数据,生成第一校验数据,并为所述第一校验数据设置第一版本号;将所述第一版本号作为所述目标条带对应的当前版本号,写入所述目标条带的校验区域
。4.
根据权利要求1所述的方法,其特征在于,所述当所述第二用户数据写入完成时,根据所述第二用户数据和所述第一用户数据生成第二校验数据,并基于所述第二校验数据对应的第二版本号更新所述目标条带的当前版本号,包括:当所述第二用户数据写入完成时,读取所述目标条带中的所述第二用户数据和所述第一用户数据,生成第二校验数据,并为所述第二校验数据设置第二版本号;利用所述第二版本号覆盖所述目标条带的校验区域中的原始版本号,将所述第二版本号作为所述目标条带的当前版本号
。5.
根据权利要求1所述的方法,其特征在于,所述将所述第一用户数据

【专利技术属性】
技术研发人员:张廷全纪志祥吴瑞强卜庆忠王亚龙
申请(专利权)人:天津中科曙光存储科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1