本技术涉及分布式存储,特别是涉及一种数据存储方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术:
1、目前的分布式存储系统中,提出了一种ec数据存储方式,该ec数据存储方式采用数据分片和生成数据分片对应的校验数据的形式来实现数据存储。然而,在ec数据存储过程中对于非满条带写,存在写惩罚机制,为了减少写惩罚,需要先写满条带,然后再计算校验数据。这就造成了数据存储的效率较低。
2、为了降低ec数据存储的写惩罚机制的影响,提出了对ec数据存储方式的优化方案,具体的:例如,先将数据写入副本,后台进行ec转换;或者,通过聚合,降低非满条带写的概率等,从而,加快ec存储方式中写满条带的速度,保证尽快执行将条带中的数据写入存储节点的操作。
3、然而,目前提出的多种ec数据存储的优化方案,在后台ec转换速率以及聚合io的处理效率较低的情况下,会出现较长等待时间,进而,导致数据写入磁盘的效率较低。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种数据存储方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
2、第一方面,本技术提供了一种数据存储方法。所述方法包括:
3、将第一用户数据和第二用户数据并发写入目标条带;
4、在写入所述第二用户数据的过程中,若所述第一用户数据写入已完成时,则根据所述第一用户数据生成第一校验数据,并将所述第一校验数据对应的第一版本号作为所述目标条带的当前版本号;
5、将所述第一用户数据、所述第一校验数据以及所述目标条带的当前版本号进行数据落盘处理;
6、当所述第二用户数据写入完成时,根据所述第二用户数据和所述第一用户数据生成第二校验数据,并基于所述第二校验数据对应的第二版本号更新所述目标条带的当前版本号;
7、将所述第二用户数据、所述第二校验数据以及所述目标条带的当前版本号进行数据落盘处理。
8、本实施例中,通过将第一用户数据和第二用户数据并发写入目标条带,且分别设置第一校验数据和第二校验数据对应版本号,通过携带版本号进行数据落盘处理,避免数据存储冲突,提高数据写入效率。
9、在其中一个实施例中,所述将第一用户数据和第二用户数据并发写入目标条带,包括:
10、并发通过第一数据写操作将第一用户数据写入目标条带的第一写入位置,以及通过第二数据写操作将第二用户数据写入所述目标条带的第二写入位置;
11、所述第一写入位置和所述第二写入位置为所述目标条带中的不同区域。
12、本实施例中,通过第一数据写操作和第二数据写操作完成第一用户数据和第二用户数据的并发写入,将第一用户数据和第二用户数据写入到同一目标条带,减少非满条带的写惩罚,同时,提高数据写入效率。
13、在其中一个实施例中,所述在写入所述第二用户数据的过程中,若所述第一用户数据写入已完成时,则根据所述第一用户数据生成第一校验数据,并将所述第一校验数据对应的第一版本号作为所述目标条带的当前版本号,包括:
14、在写入所述第二用户数据的过程中,若所述第一用户数据已完成写入,则根据所述目标条带中的所述第一用户数据,生成第一校验数据,并为所述第一校验数据设置第一版本号;
15、将所述第一版本号作为所述目标条带对应的当前版本号,写入所述目标条带的校验区域。
16、本实施例中,针对第一用户数据已完成写入的情况,生成基于第一用户数据的第一校验数据,并为第一校验数据设置第一版本号,该第一版本号作为目标条带的当前版本号,可以用于数据版本切换,避免了数据存储冲突处理。
17、在其中一个实施例中,所述当所述第二用户数据写入完成时,根据所述第二用户数据和所述第一用户数据生成第二校验数据,并基于所述第二校验数据对应的第二版本号更新所述目标条带的当前版本号,包括:
18、当所述第二用户数据写入完成时,读取所述目标条带中的所述第二用户数据和所述第一用户数据,生成第二校验数据,并为所述第二校验数据设置第二版本号;
19、利用所述第二版本号覆盖所述目标条带的校验区域中的原始版本号,将所述第二版本号作为所述目标条带的当前版本号。
20、本实施例中,在第二用户数据写入完成时,基于第一用户数据和第二用户数据生成第二校验数据,以及为第二校验数据设置对应的第二版本号,通过第二版本号更新目标条带的当前版本号,目标条带的当前版本号可以用于数据版本切换,避免了数据存储冲突处理。
21、在其中一个实施例中,所述将所述第一用户数据、所述第一校验数据以及所述第一版本号进行数据落盘处理之前,所述方法还包括:
22、获取目标磁盘的磁盘版本号;
23、判断所述磁盘版本号与所述目标条带的当前版本号的大小关系;
24、若所述当前版本号大于所述磁盘版本号,则基于所述当前版本号更新所述磁盘版本号。
25、本实施例中,通过合理地设计目标条带的版本号和版本号校验机制,有效地保障了分布式存储系统中数据的一致性和安全性。
26、在其中一个实施例中,所述方法还包括:
27、若所述当前版本号小于或者等于所述磁盘版本号,计算所述磁盘版本号与所述当前版本号间的差值;
28、若所述差值超过预设的差值阈值,则确定出现版本号反转,基于所述当前版本号更新所述磁盘版本号。
29、本实施例中,为了避免是目标条带版本号溢出反转,而造成无法使得新的用户数据写入磁盘,在数据落盘校验机制中增加了版本号溢出反转的校验条件,提高了数据校验的合理性,进而,保证了分布式存储系统中数据的一致性和安全性。
30、在其中一个实施例中,所述将所述第一用户数据、所述第一校验数据以及所述目标条带的当前版本号进行数据落盘处理之前,所述方法还包括:
31、在目标存储节点存在异常的情况下,在新的目标存储节点的日志中获取所述目标条带的当前版本号;
32、基于所述当前版本号,执行所述判断所述磁盘版本号与所述目标条带的当前版本号的大小关系的步骤。
33、本实施例中,通过为各存储节点设置日志,在某一目标存储节点存在异常的情况下,在新的目标存储节点的日志中可以获取异常的目标存储节点的目标条带的当前版本号,从而实现基于当前版本号的数据落盘操作,保证了分布式存储系统中数据存储的一致性和安全性。
34、第二方面,本技术还提供了一种数据存储装置。所述装置包括:
35、写入模块,用于将第一用户数据和第二用户数据并发写入目标条带;
36、第一处理模块,用于在写入所述第二用户数据的过程中,若所述第一用户数据写入已完成时,则根据所述第一用户数据生成第一校验数据,并将所述第一校验数据对应的第一版本号作为所述目标条带的当前版本号;
37、第一落盘模块,用于将所述第一用户数据、所述第一校验数据以及所述目标条带的当前版本号进行数据落盘处理;
38、第二处理模块,用于当所述第二用户数据写入完成时,根据所述第二用户数据和所述第一用户数据生成第二校验数据,并基于所述第二校验数据对应的第二版本号更新所述目标条带的当前版本号;
39、第二落盘模块,用于将所述第二用户数据、所述第二校验数据以及所述目标条带的当前版本号进行数据落盘处理。
40、本实施例中,通过将第一用户数据和第二用户数据并发写入目标条带,且分别设置第一校验数据和第二校验数据对应版本号,通过携带版本号进行数据落盘处理,避免数据存储冲突,提高数据写入效率。
41、第三方面,本技术还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
42、将第一用户数据和第二用户数据并发写入目标条带;
43、在写入所述第二用户数据的过程中,若所述第一用户数据写入已完成时,则根据所述第一用户数据生成第一校验数据,并将所述第一校验数据对应的第一版本号作为所述目标条带的当前版本号;
44、将所述第一用户数据、所述第一校验数据以及所述目标条带的当前版本号进行数据落盘处理;
45、当所述第二用户数据写入完成时,根据所述第二用户数据和所述第一用户数据生成第二校验数据,并基于所述第二校验数据对应的第二版本号更新所述目标条带的当前版本号;
46、将所述第二用户数据、所述第二校验数据以及所述目标条带的当前版本号进行数据落盘处理。
47、本实施例中,通过将第一用户数据和第二用户数据并发写入目标条带,且分别设置第一校验数据和第二校验数据对应版本号,通过携带版本号进行数据落盘处理,避免数据存储冲突,提高数据写入效率。
48、第四方面,本技术还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
49、将第一用户数据和第二用户数据并发写入目标条带;
50、在写入所述第二用户数据的过程中,若所述第一用户数据写入已完成时,则根据所述第一用户数据生成第一校验数据,并将所述第一校验数据对应的第一版本号作为所述目标条带的当前版本号;
51、将所述第一用户数据、所述第一校验数据以及所述目标条带的当前版本号进行数据落盘处理;
52、当所述第二用户数据写入完成时,根据所述第二用户数据和所述第一用户数据生成第二校验数据,并基于所述第二校验数据对应的第二版本号更新所述目标条带的当前版本号;
53、将所述第二用户数据、所述第二校验数据以及所述目标条带的当前版本号进行数据落盘处理。
54、本实施例中,通过将第一用户数据和第二用户数据并发写入目标条带,且分别设置第一校验数据和第二校验数据对应版本号,通过携带版本号进行数据落盘处理,避免数据存储冲突,提高数据写入效率。
55、第五方面,本技术还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
56、将第一用户数据和第二用户数据并发写入目标条带;
57、在写入所述第二用户数据的过程中,若所述第一用户数据写入已完成时,则根据所述第一用户数据生成第一校验数据,并将所述第一校验数据对应的第一版本号作为所述目标条带的当前版本号;
58、将所述第一用户数据、所述第一校验数据以及所述目标条带的当前版本号进行数据落盘处理;
59、当所述第二用户数据写入完成时,根据所述第二用户数据和所述第一用户数据生成第二校验数据,并基于所述第二校验数据对应的第二版本号更新所述目标条带的当前版本号;
60、将所述第二用户数据、所述第二校验数据以及所述目标条带的当前版本号进行数据落盘处理。
61、上述数据存储方法、装置、计算机设备、存储介质和计算机程序产品,将第一用户数据和第二用户数据并发写入目标条带;在写入所述第二用户数据的过程中,若所述第一用户数据写入已完成时,则根据所述第一用户数据生成第一校验数据,并将所述第一校验数据对应的第一版本号作为所述目标条带的当前版本号;将所述第一用户数据、所述第一校验数据以及所述目标条带的当前版本号进行数据落盘处理;当所述第二用户数据写入完成时,根据所述第二用户数据和所述第一用户数据生成第二校验数据,并基于所述第二校验数据对应的第二版本号更新所述目标条带的当前版本号;将所述第二用户数据、所述第二校验数据以及所述目标条带的当前版本号进行数据落盘处理。采用本方法,通过将第一用户数据和第二用户数据并发写入目标条带,且为第一校验数据和第二校验数据设置对应版本号,携带版本号进行数据落盘处理,避免数据存储冲突,提高数据写入效率。