分布式对象存储系统中追加数据的重复删除的方法和设备与流程

文档序号:24180801发布日期:2021-03-09 11:54阅读:155来源:国知局
分布式对象存储系统中追加数据的重复删除的方法和设备与流程

1.本领域涉及计算机领域,并且更具体地涉及一种分布式对象存储系统中追加数据的重复删除的方法和设备。


背景技术:

2.当前的分布式对象存储系统中,针对普通上传操作已经实现了数据的重复删除技术,大大提高了数据存取速度,节省了存储空间。但是现有的重删功能不支持追加上传数据的操作。


技术实现要素:

3.有鉴于此,本发明实施例的目的在于提出一种分布式对象存储系统中追加数据的重复删除的方法和设备,通过使用本发明的方法,能够解决当前重删方案中不支持追加上传数据的问题,扩展了重删功能的兼容性,提高了对象存储中追加上传的效率,给客户带来了良好的用户体验,同时丰富了对象存储的功能,提高了分布式对象产品的市场竞争力。
4.基于上述目的,本发明的实施例的一个方面提供了一种分布式对象存储系统中追加数据的重复删除的方法,包括以下步骤:
5.响应于接收到上传追加数据的请求,判断追加数据是否为首次追加数据;
6.响应于追加数据不是首次追加数据,计算目标文件最后一个尾对象的数据大小;
7.响应于目标文件最后一个尾对象的数据大小在阈值范围内,将最后一个尾对象数据读到内存中;
8.从追加数据中获取数据并追加到最后一个尾对象中以形成阈值大小的数据块并存储至存储系统中;
9.将目标文件的最后一个标识信息替换成阈值大小的数据块的标识信息并将追加数据中的其他数据依次写入到存储系统中并在需要时做重删。
10.根据本发明的一个实施例,从追加数据中获取数据并追加到最后一个尾对象中以形成阈值大小的数据块并存储至存储系统中包括:
11.计算阈值大小的数据块与最后一个尾对象的数据大小的差值;
12.在追加数据中获取差值大小的数据并将获取的数据拼接到最后一个尾对象后以形成新的数据块;
13.将新的数据块存储到最后一个尾对象的原位置处。
14.根据本发明的一个实施例,将目标文件的最后一个标识信息替换成阈值大小的数据块的标识信息并将追加数据中的其他数据依次写入到存储系统中并在需要时做重删包括:
15.获取阈值大小的数据块的指纹信息以作为阈值大小的数据块的标志信息;
16.将目标文件的数据结构中的最后一个标识信息删除;
17.将指纹信息写入到数据结构中;
18.将追加数据中的其他数据以预设大小划分成若干个数据块,将若干个数据块依次写入到存储系统中;
19.判断追加数据是否需要进行重删操作;
20.响应于追加数据需要进行重删操作,将追加数据进行重删。
21.根据本发明的一个实施例,阈值范围为数据大小大于0且小于4兆。
22.根据本发明的一个实施例,阈值大小的数据块的标识信息为阈值大小的数据块的指纹信息。
23.根据本发明的一个实施例,阈值大小为4兆。
24.本发明的实施例的另一个方面,还提供了一种分布式对象存储系统中追加数据的重复删除的设备,设备包括:
25.判断模块,判断模块配置为响应于接收到上传追加数据的请求,判断追加数据是否为首次追加数据;
26.计算模块,计算模块配置为响应于追加数据不是首次追加数据,计算目标文件最后一个尾对象的数据大小;
27.读取模块,读取模块配置为响应于目标文件最后一个尾对象的数据大小在阈值范围内,将最后一个尾对象数据读到内存中;
28.追加模块,追加模块配置为从追加数据中获取数据并追加到最后一个尾对象中以形成阈值大小的数据块并存储至存储系统中;
29.写入模块,写入模块配置为将目标文件的最后一个标识信息替换成阈值大小的数据块的标识信息并将追加数据中的其他数据依次写入到存储系统中并在需要时做重删。
30.根据本发明的一个实施例,追加模块还配置为:
31.计算阈值大小的数据块与最后一个尾对象的数据大小的差值;
32.在追加数据中获取差值大小的数据并将获取的数据拼接到最后一个尾对象后以形成新的数据块;
33.将新的数据块存储到最后一个尾对象的原位置处。
34.根据本发明的一个实施例,写入模块还配置为:
35.获取阈值大小的数据块的指纹信息以作为阈值大小的数据块的标志信息;
36.将目标文件的数据结构中的最后一个标识信息删除;
37.将指纹信息写入到数据结构中;
38.将追加数据中的其他数据以预设大小划分成若干个数据块,将若干个数据块依次写入到存储系统中;
39.判断追加数据是否需要进行重删操作;
40.响应于追加数据需要进行重删操作,将追加数据进行重删。
41.根据本发明的一个实施例,阈值范围为数据大小大于0且小于4兆。
42.本发明具有以下有益技术效果:本发明实施例提供的分布式对象存储系统中追加数据的重复删除的方法,通过响应于接收到上传追加数据的请求,判断追加数据是否为首次追加数据;响应于追加数据不是首次追加数据,计算目标文件最后一个尾对象的数据大小;响应于目标文件最后一个尾对象的数据大小在阈值范围内,将最后一个尾对象数据读到内存中;从追加数据中获取数据并追加到最后一个尾对象中以形成阈值大小的数据块并
存储至存储系统中;将目标文件的最后一个标识信息替换成阈值大小的数据块的标识信息并将追加数据中的其他数据依次写入到存储系统中并在需要时做重删的技术方案,能够解决当前重删方案中不支持追加上传数据的问题,扩展了重删功能的兼容性,提高了对象存储中追加上传的效率,给客户带来了良好的用户体验,同时丰富了对象存储的功能,提高了分布式对象产品的市场竞争力。
附图说明
43.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
44.图1为根据本发明一个实施例的分布式对象存储系统中追加数据的重复删除的方法的示意性流程图;
45.图2为根据本发明一个实施例的分布式对象存储系统中追加数据的重复删除的设备的示意图。
具体实施方式
46.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
47.基于上述目的,本发明的实施例的第一个方面,提出了一种分布式对象存储系统中追加数据的重复删除的方法的一个实施例。图1示出的是该方法的示意性流程图。
48.如图1中所示,该方法可以包括以下步骤:
49.s1响应于接收到上传追加数据的请求,判断追加数据是否为首次追加数据,可以查看系统的历史记录来判断目标文件是否已经有其他的追加数据;
50.s2响应于追加数据不是首次追加数据,计算目标文件最后一个尾对象的数据大小,目标文件中有很多个尾对象,其他尾对象不需要进行任何操作,只针对最后一个尾对象做数据处理;
51.s3响应于目标文件最后一个尾对象的数据大小在阈值范围内,将最后一个尾对象数据读到内存中,在该分布式存储系统中,每个尾对象的大小例如为4m,最后一个尾对象的数据大小可能小于4兆,如果最后一个尾对象的数据大小大于0且小于4兆,则先将该尾对象数据读出以做处理;
52.s4从追加数据中获取数据并追加到最后一个尾对象中以形成阈值大小的数据块并存储至存储系统中,需要追加的数据会从最后一个尾对象后开始追加,将追加数据中的部分数据读取出来,该数据的大小为与最后一个尾对象拼接后刚好形成阈值大小的数据库,例如,最后一个尾对象的数据大小为1兆,阈值大小为4兆,则从追加数据中读取3兆的数据追加到最后一个尾对象的后面形成4兆大小的数据块;
53.s5将目标文件的最后一个标识信息替换成阈值大小的数据块的标识信息并将追加数据中的其他数据依次写入到存储系统中并在需要时做重删,每个尾对象都有一个对象的唯一标识,将目标文件中最后一个尾对象的唯一标识删除,将追加形成的新的数据块的
唯一标识作为目标文件的最后一个标识信息存储到数据结构中,然后将追加数据中的其他数据按照尾对象的大小切分成若干个数据块,将这些数据块依次写入到存储系统中目标文件的后面,然后按照正常流程判断是否需要做数据的重删操作。
54.通过本发明的技术方案,能够解决当前重删方案中不支持追加上传数据的问题,扩展了重删功能的兼容性,提高了对象存储中追加上传的效率,给客户带来了良好的用户体验,同时丰富了对象存储的功能,提高了分布式对象产品的市场竞争力。
55.在本发明的一个优选实施例中,从追加数据中获取数据并追加到最后一个尾对象中以形成阈值大小的数据块并存储至存储系统中包括:
56.计算阈值大小的数据块与最后一个尾对象的数据大小的差值;
57.在追加数据中获取差值大小的数据并将获取的数据拼接到最后一个尾对象后以形成新的数据块;
58.将新的数据块存储到最后一个尾对象的原位置处。根据存储系统中数据存储的尾对象的大小预设阈值大小,如果尾对象的大小为4兆,则在追加数据中取出数据的大小以能将差值补齐4兆为准,将取出的数据追加到最后一个尾对象数据后面形成新的数据块。
59.在本发明的一个优选实施例中,将目标文件的最后一个标识信息替换成阈值大小的数据块的标识信息并将追加数据中的其他数据依次写入到存储系统中并在需要时做重删包括:
60.获取阈值大小的数据块的指纹信息以作为阈值大小的数据块的标志信息;
61.将目标文件的数据结构中的最后一个标识信息删除;
62.将指纹信息写入到数据结构中;
63.将追加数据中的其他数据以预设大小(可以为4兆)划分成若干个数据块,将若干个数据块依次写入到存储系统中;
64.判断追加数据是否需要进行重删操作;
65.响应于追加数据需要进行重删操作,将追加数据进行重删。重删功能是对每一个对象根据内容生成指纹信息作为oid(对象的唯一标识),然后使用该oid查询对象元数据中的引用计数属性,如果能查询到,表示该对象已存储过,此时将该对象元数据中的引用计数属性加1,并将oid加入到对象的manifest(存储系统中定义的一种数据结构,作用是管理应用对象和rados对象的对应关系,下载对象时,通过读取头对象中manifest信息,可下载完整的应用对象)中。如果不存在,则保存该对象,并在该对象的元数据中添加引用计数属性,同时将该值设置为1,并将oid添加到对象的manifest中。
66.在本发明的一个优选实施例中,阈值范围为数据大小大于0且小于4兆。该阈值范围可以根据存储系统中存储数据的尾对象的大小进行设定。如存储系统尾对象的大小为4兆,则阈值范围为数据大小大于0且小于4兆。
67.在本发明的一个优选实施例中,阈值大小的数据块的标识信息为阈值大小的数据块的指纹信息。
68.在本发明的一个优选实施例中,阈值大小为4兆。
69.通过本发明的技术方案,能够解决当前重删方案中不支持追加上传数据的问题,扩展了重删功能的兼容性,提高了对象存储中追加上传的效率,给客户带来了良好的用户体验,同时丰富了对象存储的功能,提高了分布式对象产品的市场竞争力。
70.需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,上述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中存储介质可为磁碟、光盘、只读存储器(read-only memory,rom)或随机存取存储器(random access memory,ram)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
71.此外,根据本发明实施例公开的方法还可以被实现为由cpu执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被cpu执行时,执行本发明实施例公开的方法中限定的上述功能。
72.基于上述目的,本发明的实施例的第二个方面,提出了一种分布式对象存储系统中追加数据的重复删除的设备,如图2所示,设备200包括:
73.判断模块,判断模块配置为响应于接收到上传追加数据的请求,判断追加数据是否为首次追加数据;
74.计算模块,计算模块配置为响应于追加数据不是首次追加数据,计算目标文件最后一个尾对象的数据大小;
75.读取模块,读取模块配置为响应于目标文件最后一个尾对象的数据大小在阈值范围内,将最后一个尾对象数据读到内存中;
76.追加模块,追加模块配置为从追加数据中获取数据并追加到最后一个尾对象中以形成阈值大小的数据块并存储至存储系统中;
77.写入模块,写入模块配置为将目标文件的最后一个标识信息替换成阈值大小的数据块的标识信息并将追加数据中的其他数据依次写入到存储系统中并在需要时做重删。
78.在本发明的一个优选实施例中,追加模块还配置为:
79.计算阈值大小的数据块与最后一个尾对象的数据大小的差值;
80.在追加数据中获取差值大小的数据并将获取的数据拼接到最后一个尾对象后以形成新的数据块;
81.将新的数据块存储到最后一个尾对象的原位置处。
82.在本发明的一个优选实施例中,写入模块还配置为:
83.获取阈值大小的数据块的指纹信息以作为阈值大小的数据块的标志信息;
84.将目标文件的数据结构中的最后一个标识信息删除;
85.将指纹信息写入到数据结构中;
86.将追加数据中的其他数据以预设大小划分成若干个数据块,将若干个数据块依次写入到存储系统中;
87.判断追加数据是否需要进行重删操作;
88.响应于追加数据需要进行重删操作,将追加数据进行重删。
89.在本发明的一个优选实施例中,阈值范围为数据大小大于0且小于4兆。
90.上述实施例,特别是任何“优选”实施例是实现的可能示例,并且仅为了清楚地理解本发明的原理而提出。可以在不脱离本文所描述的技术的精神和原理的情况下对上述实施例进行许多变化和修改。所有修改旨在被包括在本公开的范围内并且由所附权利要求保护。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1