支持追加写操作的存储方法和装置、电子设备和存储介质与流程

文档序号:35063785发布日期:2023-08-09 02:50阅读:41来源:国知局
支持追加写操作的存储方法和装置、电子设备和存储介质与流程

本技术涉及云存储,尤其涉及一种支持追加写操作的存储方法和装置、电子设备和存储介质。


背景技术:

1、对象存储系统最初支持的文件的操作就是put/get/delete这类整体的操作,随着使用场景的丰富,逐渐产生了对文件追加上传的场景。比如客户使用对象存储存储一个实时生成的视频(例如,命名为video),在不支持append(即,追加)的场景下,客户只能在本地将视频缓存完整之后再进行上传,或者分别命名为例如part1,part2...partx之后上传到对象存储,异步再进行合并。支持了append接口之后,客户可以将一个对象以分块追加的方式上传到指定存储桶中。客户首次使用append object接口上传时,video这个对象的属性自动为appendable,客户可以按需调用append接口将数据逐渐追加到video文件中。每次追加的大小可以由客户自行决定,但是一般存储系统会有自己的存储格式和要求,比如客户追加了100m的数据,而存储系统会将内容切割为10个10m的对象存储进行存储。由于每次追加的大小不一致,而且元数据存储的对象数据数量是有限制的,为了能够使用对象存储来存储5g甚至更大的大文件,需要对数据进行整理,将存储到底层存储系统使数据对齐成最大的object进行存储,这样读取的效率也会提升。

2、现有的方案基本都是对客户上传的文件按照系统支持的大小进行切割,比如客户上传了90m,存储系统支持的最大object是4m,会切割成22个4m,和末尾一个2m的object组进行存储。这种设计带来的好处是和普通的上传逻辑是一致的,没有额外的开发和维护成本。不足之处是会产生较大的读写放大。比如客户先上传了1m,再上传了90m,最后整理的时候,所有的块都要从底层存储系统中重新读起来之后,再次按照存储规则重新写下去,涉及到了91m的数据读以及91m的数据写,读写放大比较严重。

3、因此,相关技术中的对象存储的存储方式存在读写放大的技术问题。


技术实现思路

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、在本技术实施例中,通过根据每个待存储数据块的数据量对至少一个待存储数据块按照预设的数据量上限进行对齐,得到对齐后数据块,并在对象存储系统中对对齐后数据块通过第一存储操作进行存储;并只需对由数据量小于数据量上限的第一对齐后数据块整合得到的重组数据块通过第二存储操作进行再次存储,而对于数据量为数据量上限的第二对齐后数据块无需再次进行存储,从而可以有效追加写操作进行对象存储的数据的读写率,进而克服了相关技术中对象存储的存储方式存在读写放大的技术问题。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1