对象存储方法、网关、设备及介质与流程

专利检索2022-05-10  5



1.本技术涉及数据存储领域,特别是涉及一种对象存储方法、网关、设备及介。


背景技术:

2.对象存储是一种海量、安全、低成本、高可靠的云存储服务,对象存储与传统的文件存储模式有很大的区别。文件存储是一种树形结构,由文件和目录组成,一个目录可以包含多个文件和子目录,而子目录下又可以包含文件和子目录,当要访问某一个文件时,使用多级目录名加上文件名可唯一标识一个文件。而对象存储是一种扁平的结构,没有目录的概念,每一个对象有一个唯一标识符(id),使用这个id即可定位此对象。
3.然而,现有的对象存储仅支持上传与下载两种操作,仅部分对象可提供分段上传、追加上传;所有对象存储都不支持对象内部任意位置的修改写;同时,在视频监控领域,由于视频文件通常为大文件,例如1gb大文件,如果全部写完后,再一次性上传,如果中途发生故障,会导致较多的数据丢失。且视频路数通常会比较多,如果临时文件都保存在内存,会出现内存不足,如果保存在本地磁盘,会出现磁盘性能不足,因此,亟需一套满足视频文件的对象存储方法、对象存储网关。


技术实现要素:

4.鉴于以上所述现有技术的缺点,本技术的目的在于提供一种对象存储方法、网关、设备及介质,用于解决现有技术中视频文件在采用对象存储时,导致存储的性能低的问题。
5.为实现上述目的及其他相关目的,本技术提供一种对象存储方法,包括:
6.获取来自用户客户端待存储的目标视频文件;
7.将所述目标视频文件分割成多个符合预设存储长度的对象,所述预设存储长度为任意分段长度;
8.根据所述目标视频文件分割的对象个数、对象名以及所述目标视频文件的属性创建目录;
9.将分割的多个所述对象通过对象接口同步上传,按照各个所述对象对应所述目录进行存储。
10.在某些实施方式中,所述根据所述目标视频文件分割的对象个数、对象名以及所述目标视频文件的属性创建目录的步骤,还包括:根据目标结构图参照所述目标视频文件的采集装置、采集时间、文件名以及对象个数创建目录,所述目录由根目录、相机子目录、日期子目录、文件名以及对象序号构成。
11.在某些实施方式中,所述对象存储方法还包括:获取所述目标视频文件对应的所述目录下的对象名;根据所述目录下的对象名创建相应的文件;打开所述目录下的文件,利用预先创建的文件句柄中的对象以及分段长度在文件内写入对象内容,完成对象存储。
12.在某些实施方式中,在打开所述目录下的文件之前,还包括:利用网关创建文件句柄,所述文件句柄包括对象名、分段长度与写入偏移。
13.在某些实施方式中,所述对象存储方法还包括:
14.打开所述目录下文件,根据所述网关中创建的文件句柄获取分段长度与对象名;利用所述分段长度在所述网关内存设置预设存储长度的缓冲区;当检测到所述缓存区写入数据达到预设存储长度时,将其作为一个对象上传存储,并生成对象名;重复对象存储方式,直到将所述目标视频文件分割的所有对象上传完为止;
15.判断所述缓冲区写入的数据是否为空,若否,则根据存储的对象及对象名按序上传对象进行存储;若是,则结束处理。
16.在某些实施方式中,所述对象存储方法还包括:利用文件修改需求获取所述文件的修改偏移指针;根据所述文件的对象名查找对象存储中相符的对象,将所述对象对应的文件句柄中的写入偏移更改为修改偏移指针,在所述修改偏移指针对应的偏移处修改数据,并将所述修改数据与所述修改偏移指针对应的原有对象合并生成一个新对象,上传所述新对象覆盖原有对象实现对象内部任意位置的修改。
17.在某些实施方式中,所述对象存储方法还包括:
18.采用prefix参数查询指定存储路径保存的对象;
19.在所述指定存储路径中匹配指定的对象,返回与所述指定对象名相符的多个对象;
20.当接收到查询目录下的文件列表指令时,删除多个所述对象的对象序列号,并将多个所述对象按照对象序列号合成一个完整的文件;
21.当接收到文件删除指令时,根据所述文件删除指令删除与对象名相符的对象;
22.当接收到目录删除指令时,获取所述指定存储路径对应的目录以及所述目录下所有对象,删除所述目录以及所述目录下所有对象。
23.在本技术的另一目的在于提供一种对象存储网关,包括:
24.获取模块,用于获取来自用户客户端待存储的目标视频文件;
25.对象分割模块,用于将所述目标视频文件分割成多个符合预设存储长度的对象,所述预设存储长度为任意分段长度;
26.目录创建模块,用于根据所述目标视频文件分割的对象个数、对象名以及所述目标视频文件的属性创建目录;
27.对象存储模块,用于将分割的多个所述对象通过对象接口同步上传,按照各个所述对象对应所述目录进行存储。
28.在本技术的另一目的在于提供一种电子设备,包括:
29.一个或多个处理装置;
30.存储器,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理装置执行,使得所述一个或多个处理装置执行所述对象存储方法。
31.在本技术的还一目的在于提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序用于使所述计算机执行所述对象存储方法。
32.如上所述,本技术的对象存储方法、装置、设备及介质,具有以下有益效果:
33.本技术将目标视频文件,由大文件分成若干个小对象,通过同步上传多个小对象的方式进行对象存储,一方面,避免缓存堆积,另一方面,缓存数据不会保存到网关本地硬盘,避免出现硬盘读写瓶颈的现象;同时,根据文件大小任意定义分段长度,满足不同文件
的存储需求,无需配置大容量高性能的独立冗余磁盘阵列,降低了硬件成本,提高了存储性能。
附图说明
34.图1显示为本技术提供的一种对象存储方法流程图;
35.图2显示为本技术提供的一种对象存储方法中另一流程图;
36.图3显示为本技术提供的一种对象存储方法中另一流程图;
37.图4显示为本技术提供的一种对象存储方法中另一流程图;
38.图5显示为本技术提供的一种对象存储方法中网关运行原理图;
39.图6显示为本技术提供的一种对象存储方法中目标结构图;
40.图7显示为本技术提供的一种对象存储方法中创建目录流程图;
41.图8显示为本技术提供的一种对象存储方法中写数据流程图;
42.图9显示为本技术一实施例提供的一种对象存储网关结构框图;
43.图10显示为本技术一实施例提供的一种电子设备结构示意图。
具体实施方式
44.以下通过特定的具体实例说明本技术的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本技术的其他优点与功效。本技术还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本技术的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
45.需要说明的是,以下实施例中所提供的图示仅以示意方式说明本技术的基本构想,遂图式中仅显示与本技术中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
46.从操作方式来看,文件存储提供了目录的创建与删除,文件的创建与删除,文件的打开与读写等一系列操作,尤其是提供了文件内的seek操作,可以定位到文件任意偏移进行读写。而大部分对象存储仅仅提供了对象的上传和下载两种操作,所有的对象存储都不支持对象内部任意位置的修改写。
47.由此可见,对象存储与文件存储存在很大差别。目前,很多成熟的业务软件仍然是按照文件存储的逻辑来开发的,这样的软件要使用对象存储来保存数据,需要进行协议转换。因此,在业务软件与对象存储之间增加一个协议转换网关,是解决此问题的最佳方案。可以采用s3fs,yas3fs,goofys,s3baker等开源软件实现协议转换,这些开源软件的基本思想是将一个文件看作一个对象。写完一个文件之后,就将整个文件使用对象上传接口存入对象存储。读取时,会先使用对象下载接口将文件下载到本地,再进行读取。如果对文件进行了一个字节的修改,也需要重新上传整个文件。
48.然而,在视频监控领域,由于视频文件通常为大文件,例如1gb大文件,如果全部写完后,再一次性上传,如果中途发生故障,会导致较多的数据丢失。且视频路数通常会比较多,如果临时文件都保存在内存,会出现内存不足,如果保存在本地磁盘,会出现磁盘性能
不足,综上,亟需一套满足视频文件的对象存储方法、对象存储网关,详述如下:
49.实施例1
50.请参阅图1,为本技术提供的一种对象存储方法流程图,包括:
51.步骤s101,获取来自用户客户端待存储的目标视频文件;
52.其中,所述用户客户端为应用软件之一,应用软件是为满足用户不同领域、不同问题的应用需求而提供的软件程序,例如,应用软件包括但不限于视频监控取流软件,以及具有录像功能的各种应用程序,如图5所示,网关通过应用软件的文件接口接收待存储的目标视频文件。
53.目标视频文件采用摄像装置、智能手机、平板设备、穿戴设备或带有摄像头的计算机设备之一拍摄的视频文件,该目标视频文件为大文件,一般为大于1gb文件,例如,可通过安防、教育、金融、会议、商务、监控等领域采集目标视频文件。
54.步骤s102,将所述目标视频文件分割成多个符合预设存储长度的对象,所述预设存储长度为任意分段长度;
55.其中,所述预设存储长度为任意分段长度,预设存储长度的大小不定,可根据当前网关的内存以及待存储目标视频文件的大小确定,例如,预设存储长度的单位可为字节、千字节、兆、千兆等。
56.将待存储的目标视频文件分割成若干个相同存储长度的小对象,即,由待存储的目标视频文件大小和预设存储长度确定分割小对象的数量。
57.步骤s103,根据所述目标视频文件分割的对象个数、对象名以及所述目标视频文件的属性创建目录;
58.具体地,根据目标结构图参照所述目标视频文件的采集装置、采集时间、文件名以及对象个数创建目录,所述目录由根目录、相机子目录、日期子目录、文件名以及对象序号构成。
59.例如,详见图6,其展示了由目标视频文件的采集装置、采集时间、文件名构成的目录,通过对象个数能够得到每个小对象所对应的对象序号,从而准确地得到目标视频文件分割成若干个小对象所对应的具体目录存储路径,便于查询和调用。
60.步骤s104,将分割的多个所述对象通过对象接口同步上传,按照各个所述对象对应所述目录进行存储。
61.网关将分割的多个小对象通过对象接口进行上传,其中,利用同步上传方式上传各个小对象,到后端服务器进行存储。采用同步上传的方式,一方面,提高了对象存储的效率,避免缓存堆积;另一方面,缓存数据不会保存到网关本地硬盘,避免出现硬盘读写瓶颈的现象。
62.具体地,对外呈现为一个软件服务,该软件可运行在独立的服务器上,通过网络连接云服务供应商(公有云和私有云不限)提供的对象存储服务(对象存储的类型不限,可以是s3接口,也可以是swift接口等),并提供文件存储服务。
63.通过上述方式,将目标视频文件,由大文件分成若干个小对象,通过同步上传多个小对象的方式进行对象存储,一方面,避免缓存堆积,另一方面,缓存数据不会保存到网关本地硬盘,避免出现硬盘读写瓶颈的现象;同时,根据文件大小任意定义分段长度,满足不同文件的存储需求,无需配置大容量高性能的独立冗余磁盘阵列,降低了硬件成本,提高了
存储性能。
64.相对于现有技术,将文件缓存于本地硬盘,会对硬盘产生写入压力,缓存完后,又会读出文件转存到对象存储,产生读取压力,由于单个机械硬盘的读写性能有限,因此,需要配置多个硬盘组建raid(独立冗余磁盘阵列)才能满足一定的性能需求。本方案数据经过网关时不下盘,降低了硬件成本,性能也更高。
65.可选的,通过分布式存储,网关通过对象接口将多个小对象按照上述方式分布式存储到各个服务器或磁盘阵列,可以实现数据存储安全和存储集群安全,提高分布式存储集群的可靠性、可用性、安全性。
66.在某些实施方式中,请参阅图2,所述对象存储方法还包括:
67.步骤s201,获取所述目标视频文件对应的所述目录下的对象名;
68.具体地,当接收到目标视频文件,检测是否有相应的目录,如果有,则获取该目录下目标视频文件所对应的对象名;如果无,创建目录名,并生成相应的对象名。
69.例如,详见图7,采用创建一个空对象的方式,模拟目录;该对象的名称以特殊字符开头,以便网关软件能将其与普通文件区别开来(即,生成对象名/xx);目录对象的内容中包含一个分段大小,表示该目录下文件按此规定的大小划分对象(也可以使用目录的对象的元数据来保存分段大小,即生成对象内容);多级目录,对每一级目录都要产生一个空对象,便于存储管理。
70.步骤s202,根据所述目录下的对象名创建相应的文件;
71.具体地,在获取到目录下对象名的情况下,检测该目录下是否存在相应的文件;如果没有,则根据目标视频文件创建相应文件。
72.需要说明的是,孤立的文件创建操作,网关直接返回成功,不在对象存储上做任何操作;如果文件以写模式打开,则不需要创建。
73.步骤s203,打开所述目录下的文件,利用预先创建的文件句柄中的对象以及分段长度在文件内写入对象内容,完成对象存储。
74.具体地,如果文件以写模式打开,则网关创建一个文件句柄,保存于内存中,供后续写入操作使用。如果文件以读模式打开,则网关首先检查对象存储中是否存在以该文件全路径为名称的对象,如不存在,返回失败;如果存在,则网关创建一个文件句柄,保存于内存中,供后续写入操作使用。
75.通过上述方式,通过创建目录、创建文件以及创建文件句柄的方式,有利于将分割的小对象按照文件句柄中的分段长度进行上传,能够准确实现各个小对象精准管理、精准分段、精准查找和定位,有利于文件按照对象存储后,也能够按照文件存储的管理进行管理。
76.可选的,在打开所述目录下的文件之前,还包括:利用网关创建文件句柄,所述文件句柄包括对象名、分段长度与写入偏移。
77.可选的,在网关内存中,创建由对象名、分段长度与写入偏移构成的文件句柄,文件句柄是打开文件的唯一标识,通过文件句柄不仅能够识别各个存储对象,还能获取到对象的分段长度与写入偏移,便于精确查找和定位。
78.在某些实施方式中,请参阅图3,所述对象存储方法还包括:
79.步骤s301,打开所述目录下文件,根据所述网关中创建的文件句柄获取分段长度
与对象名;
80.步骤s302,利用所述分段长度在所述网关内存设置预设存储长度的缓冲区;
81.步骤s303,当检测到所述缓存区写入数据达到预设存储长度时,将其作为一个对象上传存储,并生成对象名;
82.步骤s304,重复对象存储方式,直到将所述目标视频文件分割的所有对象上传完为止;
83.可选的,详见图8,当某个文件以写模式打开时,例如,打开文件aa/bb/cc,利用网关内存生成文件句柄,通过文件句柄向该文件写入数据;
84.例如,当网关接收到待写入的数据时,通过下载aa/bb的对象,读取分段长度,保存于内存缓冲区中;
85.当缓冲区达到目录指定的分段大小之后,将此缓冲区中的数据作为1个对象上传到对象存储,并将此对象命名为”文件全路径 x“(文件全路径表示文件的各级目录加上文件名,x表示该部分数据的序号,例如aa/bb/cc$x),判断文件是否关闭,如果否,重复上述步骤再继续上传对象,如果是,则继续判断缓冲区。
86.通过上述方式,利用文件句柄结构中的分段长度与分段对象,参照分段长度的大小设置缓冲区,当检测到一个缓冲区写满数据达到预设存储长度时,将其作为一个对象进行上传,并根据对象名设定该对象的存储路径与对象序列号,而当采用同步上传方式时,即通过设置多个相同分段长度大小的缓冲区,每个缓冲区分布相应的数据,直到所有数据以对象方式上传完为止。
87.在上述实施例基础上,详见图8,还包括:
88.判断所述缓冲区写入的数据是否为空,若否,则根据存储的对象及对象名按序上传对象进行存储;若是,则结束处理。
89.在某些实施方式中,请参阅图4,所述对象存储方法还包括:
90.步骤s401,利用文件修改需求获取所述文件的修改偏移指针;
91.步骤s402,根据所述文件的对象名查找对象存储中相符的对象,将所述对象对应的文件句柄中的写入偏移更改为修改偏移指针;
92.步骤s403,在所述修改偏移指针对应的偏移处修改数据,并将所述修改数据与所述修改偏移指针对应的原有对象合并生成一个新对象,上传所述新对象覆盖原有对象实现对象内部任意位置的修改。
93.可选的,利用文件seek方式,例如,通过文件seek将文件句柄的指针移动到指定的偏移;其中,该操作不会对对象存储产生任何影响,仅修改网关内存中句柄保存的写入偏移。
94.可选的,读取文件进一步包括:
95.使用读模式打开的文件句柄,以及句柄中保存的文件偏移,从偏移开始处读取指定长度的数据。
96.根据偏移计算对象序号,由于写入数据时有固定的分段大小,因此采用偏移除以分段大小取整,即可计算出对象序号,余数即为对象内部的偏移。
97.如果对接的对象存储仅支持对象数据的部分读取,那么通过余数偏移和长度即可读出数据。如果对接的对象存储不支持部分数据读取,那么先将整个对象下载到网关内存
中,再截取需要的偏移和长度部分数据。
98.通过上述方式,采用seek操作,能够实现对象任意位置的修改,避免对文件进行了哪怕一个字节的修改,也需要重新上传整个文件的现象,提高了大文件采用对象存储的实用性和可操作性。
99.在某些实施方式中,所述对象存储方法还包括:
100.采用prefix参数查询指定存储路径保存的对象;
101.其中,利用prefix参数可以编译时,用来指定程序存放路径,同时,在接收到删除目录或卸载软件的指令时,只需简单的删除该安装目录,就可以把软件卸载完。
102.在所述指定存储路径中匹配指定的对象,返回与所述指定对象名相符的多个对象;
103.当接收到查询目录下的文件列表指令时,删除多个所述对象的对象序列号,并将多个所述对象按照对象序列号合成一个完整的文件;
104.例如,采用对象存储查询的prefix参数,匹配指定的目录名的对象;返回的数据包含分段的多个对象,去除对象后带的序列号,将重复的文件名合并成1个即可。
105.当接收到文件删除指令时,根据所述文件删除指令删除与对象名相符的对象;
106.例如,采用对象存储查询的prefix参数,匹配指定的文件名的对象;返回的数据包含分段的多个对象,依次执行对象删除指令即可。
107.当接收到目录删除指令时,获取所述指定存储路径对应的目录以及所述目录下所有对象,删除所述目录以及所述目录下所有对象。
108.例如,删除目录不仅包含删除目录本身,还需要删除该目录下的所有文件和子目录;
109.采用对象存储查询的prefix参数,匹配指定的目录名的对象,同时还需要去掉目录名里面的特殊字符,查找出该目录下的所有文件对象;对返回的所有对象,依次执行删除指令即可。
110.通过上述方式,能够查询目录下的文件、删除文件以及删除目录,方便操作者使用,可以快速、有效实现上述功能。
111.实施例2
112.以视频监控文件存储结构为例,其目录结构包括:根目录-相机子目录-日期子目录-视频文件。
113.例如,一个文件名/carmera1/20210719/12093503.mp4,该文件大小为1gb。网关接收到的视频文件的操作流程如下:
114.(1)创建carmera1目录
115.对象存储一般有存储桶的概念,表示一个命名空间,本实施例中不关注具体如何实现对象存储,假设所有创建的对象都在同一个命名空间;
116.网关将在对象存储中上传1个对象,对象名为/carmera1;其中/是一个特殊字符,表示该对象为一个目录,可以自定义其他特殊字符;
117.carmera1目录下不保存真正的文件,因此,该对象不包含文件内容(如果网关对接收到的对象存储不支持空对象,可向对象中写入0b,表示文件不做分段)。
118.(2)创建20210719目录
119.20210719目录是挂在carmera1下面的一个子目录,因此,它对应的完整路径为/carmera1/20210719;
120.该目录下预计会存储1gb大小的文件,可将分段大小设置为1mb;
121.网关将在对象存储中上传1个对象,对象名为/carmera1/20210719;对象内容为“1m“,表示该目录下的文件分段长度为1mb;分段长度可使用b,k,m,g等单位;也可以使用对象的自定义元数据方式保存分段大小。
122.分段大小可根据文件大小来设定,例如,视频数据大文件可以设置为1mb,索引数据小文件可以设置为4kb。
123.(3)创建12093503.mp4文件
124.12093503.mp4文件是20210719子目录下的文件,其对应的对象名为carmera1/20210719/12093503.mp4,该对象名不以特殊字符(/)开头,表明是一个文件;
125.创建操作不会导致对象上传,需要等待数据写入。
126.(4)打开12093503.mp4文件
127.按照文件操作的逻辑,先以写模式打开文件,在文件内写入数据;
128.打开文件操作并不代表操作对象存储,而是在网关内存中创建一个句柄结构,该结构包含对象名,分段长度,写入偏移等信息;
129.从目录对象中获取分段长度,网关需要下载文件上一级目录对应的对象,即,对象/carmera1/20210719,解析该对象的内容即可得到分段长度。
130.(5)写入数据
131.打开文件句柄,写入数据;
132.首先,根据分段长度创建内存缓冲区,本实施例中,缓冲区大小为1mb;
133.其次,当写入数据填满1mb缓冲区后,将缓冲区中的内容作为1个对象,上传到网关对接的对象存储,对象名为carmera1/20210719/12093503.mp4$1(其中$为特殊字符,表示其后字符为对象序号);
134.最后,参照上述方式以此类推,依次产生carmera1/20210719/12093503.mp4$2,carmera/120210719/12093503.mp4$3

等对象,直到carmera1/20210719/12093503.mp4$1024,共产生1024个1mb大小的对象,与总文件大小1gb一致。
135.(6)关闭12093503.mp4文件
136.关闭文件时,如果缓冲区有数据,则将此数据作为一个对象上传到对象存储,按前面的规则递增序号;
137.当缓存区没有数据时,则销毁文件句柄,释放内存。
138.通过上述方式,从创建目录、创建文件、打开文件、写入数据以及关闭文件的操作流程,完整的展示了将目标视频文件通过分割成若干个小对象,以对象存储方式保存小对象过程,不仅提高了对象存储的效率,还优化了对象的管理方式。
139.实施例3
140.对于某些文件可能存在修改写的情况,可以采用如下方式实现。
141.修改写一般发生在小文件内部,假设小文件分段长度为4k,文件目录为/carmera3/index/20210713/,文件名为16380734.index,文件大小为2mb,需要修改插入的数据为1mb偏移处的200字节数据。则按如下步骤执行:
142.(1)打开文件
143.以写模式打开文件,网关在内存中创建文件句柄,句柄包括对象名,分段长度,写入偏移;
144.在对象存储中查找相同对象名,将相同对象名的对象构建为一个对象集,按照句柄的写入偏移设置为文件长度;
145.查找相同对象的方式为仅匹配对象名不包含$序号的部分,本实施例中,可查找出carmera3/index/20210713/16380734.index$1到carmera3/index/20210713/16380734.index$512共512个对象,每个对象大小为4k,可计算出对象集构成的文件大小为2mb,则写入偏移设置为2mb。
146.(2)移动指针偏移
147.如果此时写入数据,则会在偏移2mb的位置开始写入,因此,需要执行seek操作修改偏移指针seek操作,通过仅修改网关中句柄保存的写入偏移,不会在对象存储中做任何操作,将写入偏移修改为1mb处。
148.(3)写入数据
149.往句柄缓冲区写入100字节的新数据。
150.(4)关闭文件
151.由于缓冲区有100字节新数据,需要刷入文件,同时,对象存储中也有数据,因此,需要将两部分数据合并;
152.例如,首先使用:偏移地址/分段长度 1计算对象序号为257,则待修改的对象名为carmera3/index/20210713/16380734.index$257,需要先下载此对象到网关内存,进入到缓冲区;
153.通过在网关内存中将新的100字节数据与下载的4k数据合并,生成一个新的对象,并将此对象使用名称carmera3/index/20210713/16380734.index$257上传到对象存储,覆盖原对象,实现对象内部任意位置的修改。
154.通过上述方式,采用seek操作,能够实现对象任意位置的修改,避免对文件进行了任意一个字节的修改,也需要重新上传整个文件的现象,大大了浪费了设备资源,不利于用户操作,而采用本实施方式,极大的提高了大文件采用对象存储的实用性和可操作性。
155.可选的,在上述基础上,如果需要在对象m的偏移处n兆上新增或删除c个字节时,通过seek操作,查找到修改偏移指针,将对象m所对应的写入偏移修改为n兆,通过在偏移为n兆处,新增或删除相应的字节,例如,将新增的c个字节和当前偏移处所对应的对象的数据按照分段长短进行融合,即,当前偏移处所对应的对象(d)所剩余的c个字节与该对象序列号为(d 1)的对象进行融合,依次调整对象序列号d之后的对象,直到相比原有对象总数增加一个为止。又例如,删除当前偏移处所对应的对象(d)的c个字节,将当前偏移处之后的第一个所对应的对象(d 1)的前c个字节与删除之后的当前偏移处所对应的对象进行融合,同理,依次按照上述方式,直到对象(d)之后的最后一个对象的数据减少c个字节为止。
156.通过上述方式,采用seek操作,实现了对象任意位置的相应字节的新增或删除,为对象存储提供了分段上传和追加上传的功能,极大提高了大文件采用对象存储的灵活性与通用性。
157.实施例4
158.请参阅图9,为本技术提供的一种对象存储网关500结构框图;包括:
159.获取模块501,用于获取来自用户客户端待存储的目标视频文件;
160.对象分割模块502,用于将所述目标视频文件分割成多个符合预设存储长度的对象,所述预设存储长度为任意分段长度;
161.目录创建模块503,用于根据所述目标视频文件分割的对象个数、对象名以及所述目标视频文件的属性创建目录;
162.其中,根据目标结构图参照所述目标视频文件的采集装置、采集时间、文件名以及对象个数创建目录,所述目录由根目录、相机子目录、日期子目录、文件名以及对象序号构成。
163.对象存储模块504,用于将分割的多个所述对象通过对象接口同步上传,按照各个所述对象对应所述目录进行存储。
164.可选的,所述对象存储模块还包括:获取所述目标视频文件对应的所述目录下的对象名;根据所述目录下的对象名创建相应的文件;打开所述目录下的文件,利用预先创建的文件句柄中的对象以及分段长度在文件内写入对象内容,完成对象存储。
165.可选的,在打开所述目录下的文件之前,还包括:利用网关创建文件句柄,所述文件句柄包括对象名、分段长度与写入偏移。
166.可选的,所述对象存储模块还包括:
167.打开所述目录下文件,根据所述网关中创建的文件句柄获取分段长度与对象名;利用所述分段长度在所述网关内存设置预设存储长度的缓冲区;当检测到所述缓存区写入数据达到预设存储长度时,将其作为一个对象上传存储,并生成对象名;重复对象存储方式,直到将所述目标视频文件分割的所有对象上传完为止;
168.判断所述缓冲区写入的数据是否为空,若否,则根据存储的对象及对象名按序上传对象进行存储;若是,则结束处理。
169.可选的,所述对象存储模块还包括:利用文件修改需求获取所述文件的修改偏移指针;根据所述文件的对象名查找对象存储中相符的对象,将所述对象对应的文件句柄中的写入偏移更改为修改偏移指针,在所述修改偏移指针对应的偏移处修改数据,并将所述修改数据与所述修改偏移指针对应的原有对象合并生成一个新对象,上传所述新对象覆盖原有对象实现对象内部任意位置的修改。
170.可选的,所述对象存储模块还包括:
171.采用prefix参数查询指定存储路径保存的对象;
172.在所述指定存储路径中匹配指定的对象,返回与所述指定对象名相符的多个对象;
173.当接收到查询目录下的文件列表指令时,删除多个所述对象的对象序列号,并将多个所述对象按照对象序列号合成一个完整的文件;
174.当接收到文件删除指令时,根据所述文件删除指令删除与对象名相符的对象;
175.当接收到目录删除指令时,获取所述指定存储路径对应的目录以及所述目录下所有对象,删除所述目录以及所述目录下所有对象。
176.其中,需要说明的是,对象存储网关与对象存储方法为一一对应的关系,在此,各个模块与上述流程步骤所涉及的技术细节与技术效果均相同,在此不用一一赘述,请参照
上述对象存储方法。
177.实施例5
178.下面参考图10,其示出了适于用来实现本公开实施例的电子设备(例如终端设备或服务器600的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。图10示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
179.如图10所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(rom)602中的程序或者从存储装置608加载到随机访问存储器(ram)603中的程序而执行各种适当的动作和处理。在ram603中,还存储有电子设备600操作所需的各种程序和数据。处理装置601、rom 602以及ram603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。
180.通常,以下装置可以连接至i/o接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备600与其他设备进行无线或有线通信以交换数据。虽然图12示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
181.特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从rom 602被安装。在该计算机程序被处理装置601执行时,执行本公开实施例的方法中限定的上述功能。
182.上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
183.上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:步骤s101,获取来自用户客户端待存储的目标视频文件;步骤s102,将所述目标视频文件分割成多个符合预设存储长度的对象,所述预设存储长度为任意分段长度;步骤s103,根据所述目标视频文件分割的对象个数、对象名以及所述目标视频文件的属性创建目录;步骤s104,将分割的所述对象按照所述目录对应的路径进行存储。
184.可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c ,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)
或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
185.综上所述,本技术将目标视频文件,由大文件分成若干个小对象,通过同步上传多个小对象的方式进行对象存储,一方面,避免缓存堆积,另一方面,缓存数据不会保存到网关本地硬盘,避免出现硬盘读写瓶颈的现象;同时,根据文件大小任意定义分段长度,满足不同文件的存储需求,无需配置大容量高性能的独立冗余磁盘阵列,降低了硬件成本,提高了存储性能。所以,本技术有效克服了现有技术中的种种缺点而具高度产业利用价值。
186.上述实施例仅例示性说明本技术的原理及其功效,而非用于限制本技术。任何熟悉此技术的人士皆可在不违背本技术的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本技术所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本技术的权利要求所涵盖。
转载请注明原文地址:https://win.8miu.com/read-150211.html

最新回复(0)