一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种海量小文件读写方法、系统、电子设备及存储介质与流程

2022-12-20 01:32:35 来源:中国专利 TAG:


1.本技术涉及分布式存储技术领域,特别是涉及一种海量小文件读取方法、系统、电子设备及存储介质。


背景技术:

2.随着数据量的爆发式增长,存储需求也越来越受到重视,现有技术的存储方式主要是针对大文件的存储。
3.对现有技术的研究和实践过程中,本技术的发明人发现,在针对海量小文件的存储中,使用现有技术中的分布式存储会存在不能有效区分大小文件,且适配度较低,磁盘空间利用率不高,进而导致海量小文件读写性能效率低。


技术实现要素:

4.本技术主要解决的技术问题是提供一种海量小文件读取方法、系统、电子设备及存储介质,能够通过大文件方式存储小文件,再通过键值对定位并读取小文件,实现对海量小文件的读写,提高小文件读写性能效率。
5.为解决上述技术问题,本技术采用的一个技术方案是:提供一种海量小文件读取方法,所述方法包括:获取小文件;基于所述小文件确定待合并文件列表;根据所述待合并文件列表将所述小文件的数据信息缓存至聚合文件;其中,所述聚合文件是以大文件形式在云存储系统中创建的云存储文件;基于所述聚合文件设置键值对,并将所述键值对缓存至外挂存储系统;基于所述键值对读取并下载所述小文件。
6.在本技术的一实施例中,所述根据所述待合并文件列表将所述小文件的数据信息缓存至聚合文件,包括:检索所述待合并文件列表,将检索获取的小文件缓存至第一缓存容器中;以大文件形式在所述云存储系统中创建聚合文件;将所述第一缓存容器中小文件的数据信息缓存至聚合文件。
7.在本技术的一实施例中,所述将所述第一缓存容器中的所述小文件的数据信息缓存至聚合文件,包括:若所述第一缓存容器中的所述小文件的数据信息成功写入聚合文件,则在第二缓存容器中缓存该小文件对应的小文件名;若所述第一缓存容器中的所述小文件的数据信息没有写入聚合文件,则在第三缓存容器中缓存该小文件对应的小文件名。
8.在本技术的一实施例中,在完成聚合文件的缓存后,还包括:根据第二缓存容器的缓存信息删除所述待合并文件列表及其对应的元数据信息。
9.在本技术的一实施例中,在将所述第一缓存容器中的所述小文件的数据信息缓存至聚合文件后,还包括:当聚合文件的大小达到预设阈值时,关闭该聚合文件;在所述云存储系统中以大文件形式新建聚合文件并以所述新建聚合文件缓存剩余的所述小文件的数据信息。
10.在本技术的一实施例中,所述基于所述聚合文件设置键值对,并将所述键值对缓存至外挂存储系统,包括:将聚合文件的存储目录设置为key值,以及将聚合文件中的小文
件索引信息设置为value值;将所述key值和所述value值缓存至外挂存储系统中。
11.在本技术的一实施例中,所述基于所述键值对读取并下载所述小文件,包括:响应于用户检索请求,检索数据库获取对应的数据库文件列表以及依据所述key值检索外挂存储系统获取对应的小文件列表;将所述数据库文件列表和所述小文件列表整合并去除聚合文件后返回用户;用户基于所述value值从云存储系统中读取小文件的数据信息。
12.在本技术的一实施例中,当需要删除缓存的小文件时,所述方法还包括:获取删除文件在聚合文件中的占比;若所述占比达到占比阈值时,对所述聚合文件中未删除的小文件重新生成新的聚合文件,并删除原聚合文件。
13.在本技术的一实施例中,所述若所述占比达到占比阈值时,对所述聚合文件中未删除的小文件重新生成新的聚合文件,并删除原聚合文件,包括:获取删除文件累积的所述占比;若所述占比达到占比阈值,则检索外挂存储系统获取原聚合文件中未被删除的小文件,并以此生成聚合子文件;删除原聚合文件。
14.在本技术的一实施例中,所述获取小文件,包括:将写入文件以大文件形式缓存至云存储系统;获取所述写入文件大小;若所述写入文件小于预设的文件大小阈值,则记为小文件。
15.在本技术的一实施例中,所述基于所述小文件确定待合并文件列表,包括:获取小文件对应的小文件名;基于所述小文件名确定待合并文件列表。
16.为解决上述技术问题,本技术另一技术方案是:提供一种海量小文件读写系统,所述系统包括:获取模块,用于获取小文件;确定模块,基于所述小文件确定待合并文件列表;第一缓存模块,用于根据所述待合并文件列表将所述小文件的数据信息缓存至聚合文件;其中,所述聚合文件是以大文件形式在云存储系统中创建的云存储文件;第二缓存模块,基于所述聚合文件设置键值对,并将所述键值对缓存至外挂存储系统;读取模块,基于所述键值对读取并下载所述小文件。
17.为解决上述技术问题,本技术再一技术方案是:提供一种电子设备,所述电子设备包括:存储器以及与所述存储器耦接的处理器,所述存储器存储有至少一计算机程序,所述至少一计算机程序被所述处理器加载并执行时,用于实现上述的海量小文件读写方法。
18.为解决上述技术问题,本技术又一技术方案是:提供一种计算机可读存储介质,所述计算机可读存储介质存储有至少一段程序,所述至少一段程序被处理器加载并执行时,用于实现上述的海量小文件读写方法
19.区别于现有技术,本技术提供的海量小文件读写方式,包括:获取小文件;基于所述小文件确定待合并文件列表;根据所述待合并文件列表将所述小文件的数据信息缓存至聚合文件;其中,所述聚合文件是以大文件形式在云存储系统中创建的云存储文件;基于所述聚合文件设置键值对,并将所述键值对缓存至外挂存储系统;基于所述键值对读取并下载所述小文件。即本技术通过自动获取小文件并以此确定待合并文件列表,进而依据待合并文件列表将小文件的数据信息以大文件形式存储在云存储系统中,根据该大文件形式存储文件设置键值对并将键值对存储在外挂存储中,并通过键值对读取和下载小文件,实现对海量小文件的快速定位和读写,提高小文件读写性能效率。
附图说明
20.图1是本发明海量小文件读写方法一实施例的流程示意图;
21.图2是本发明步骤s1一实施例的流程示意图;
22.图3是本发明步骤s2一实施例的流程示意图;
23.图4是本发明步骤s3一实施例的流程示意图;
24.图5是本发明步骤s33一实施例的流程示意图;
25.图6是本发明步骤s3后一实施例的流程示意图;
26.图7是本发明步骤s4一实施例的流程示意图;
27.图8是本发明步骤s5一实施例的流程示意图;
28.图9是本发明删除缓存小文件时一实施例的流程示意图;
29.图10是本发明步骤a2一实施例的流程示意图;
30.图11是本发明海量小文件读写系统一实施例的结构示意图;
31.图12是本发明电子设备一实施例的结构示意图;
32.图13是本发明计算机可读存储介质一实施例的结构示意图。
具体实施方式
33.下面结合附图和实施例,对本发明作进一步的详细描述。特别指出的是,以下实施例仅用于说明本发明,但不对本发明的范围进行限定。同样的,以下实施例仅为本发明的部分实施例而非全部实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
34.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
35.传统的文件存储方法,特别是对于海量小文件的存储,有针对数据分类存储场景的,其采用副本的方法容错使得磁盘空间利用率小,不具通用特性;有存储结构过长,云数据体量大,并且不能明确如何区分大小文件;亦或是需要通过客户端生成并发送相关信息,导致用户使用体验不佳。因此,使用副本或redis或分层的存储方式,尤其是针对基于fuse的分布式云存储系统海量小文件的读写效果不理想,使得对海量小文件读写性能效率低。
36.申请人在研究中发现,对于现有技术中海量小文件读写性能效率低的情况,在对小文件进行读写,尤其是对数据爆发式增长中的海量小文件读写时,可通过自动区分大小文件,对生命周期相近的小文件再通过异步追加写入的方式写入到大文件中存储,同时通过在文件名中包含文件索引信息并且提供额外的kv系统承载小文件云数据的方式,进而对海量小文件进行高效读写,能有效提高分布式存储系统中海量小文件读写性能,提升读写效率,特别是解决基于fuse的分布式云存储系统管理海量小文件读写性能效率低的问题。
37.因此,提出一种海量小文件读写方法,应用在基于fuse的分布式云存储系统,通过获取小文件;基于小文件确定待合并文件列表;根据待合并文件列表将小文件的数据信息缓存至聚合文件;其中,聚合文件是以大文件形式在云存储系统中创建的云存储文件;基于聚合文件设置键值对,并将键值对缓存至外挂存储系统;基于键值对读取并下载小文件。
38.基于fuse的分布式云存储系统包括用户端(client)、用户空间文件系统(fuse)、分布式云存储系统、数据库(database)、分布式kv存储系统(kv);其中,用户端发送文件存储请求至用户空间文件系统,并将文件写入,用户空间文件系统进行文件数据接收与存储,并将写入文件以大文件形式存入分布式云存储系统中;在文件关闭时获取文件大小,则将对应的小文件的元数据记录在数据库中,并在数据库中维护一个待合并文件列表,用于记录小文件的文件名;定时检索数据库中的待合并文件列表,以获取待合并的小文件,将待合并的小文件异步追加写入以大文件形式创建的聚合文件中,并将聚合文件的云数据记录在数据库中;待小文件成功写入聚合文件后,将聚合文件的存储目录作为key值,将小文件与小文件在聚合文件中的起始偏移以及小文件大小拼接成字符串并作为对应的value值记录在分布式kv存储系统中,进而通过分布式kv存储系统管理小文件的云数据,进而通过分布式kv存储系统中小文件对应的小文件列表和数据库中小文件对应的小文件列表实现文件检索或文件下载或文件删除等操作。
39.请参阅图1,图1是本发明海量小文件读写方法一实施例的流程示意图;需注意的是,若有实质上相同的结果,本发明的方法并不以图1所示的流程顺序为限,如图1所示,该方法包括如下步骤:
40.s1、获取小文件;
41.其中,小文件通常是指大小在1mb以下的的文件,在百万量级以上则可以称为海量;这些文件大部分是非结构化数据,包括有视频、图片以及文档等,在科技快速发展下,呈现出数百亿甚至数千亿级的量级。
42.参阅图2,图2是本发明步骤s1一实施例的流程示意图,步骤s1包括:
43.s11、将写入文件以大文件形式缓存至云存储系统;
44.其中,写入文件可以包括大文件和小文件,这里的写入文件还没有区分大小文件,因此,统称所有需要进行存储的文件为写入文件。
45.具体地,把所有的文件都当成大文件,进而将需要进行存储的各类文件统一以大文件的形式缓存在云存储系统里。
46.在一些实施例中,在写入时无法确定文件大小时,则统一把每一个需要进行存储的文件都当成是大文件,进而将这些大文件缓存到云存储系统里;例如,将这些大文件存储到基于fuse框架结合分布式云存储系统里,fuse为用户空间文件系统。
47.在一些实施例中,在文件存入云存储系统后,文件的云数据记录在数据库(database)中,元数据包含有:bucket名、目录名、文件名、文件创建时间、文件大小等与文件相关的内容。
48.s12、获取写入文件大小;
49.其中,写入前无法获取写入文件的大小。
50.具体地,在所有文件都以大文件的形式存储在云存储系统后,在文件关闭时,获取该写入文件的大小。
51.在一些实施例中,例如基于fuse框架结合分布式云存储系统,写入文件在写入前以及写入时,都无法确定文件的大小,因此,设定在文件关闭时获取写入文件大小。
52.在一些实施例中,可以在文件写入后获取写入文件的大小或者在文件写入时获取写入文件的大小。
53.s13、若写入文件小于预设的文件大小阈值,则记为小文件。
54.其中,预设的文件大小阈值用于区分大小文件,可根据实际情况进行设定。
55.具体地,预设一个文件大小阈值,在获取写入文件的大小后,使其与预设的文件大小阈值进行对比,将小于预设的文件大小阈值的写入文件记为小文件。
56.在一些实施例中,写入文件可分为大小文件,大文件为文件大小大于等于1mb的文件,并不限定文件格式;小文件为小于1mb的文件,小文件可以是非结构化数据,即为没有按照预定义的数据模型进行结构化,也没有按照预定义的方式组织的数据,可以是人生成的,也可以是机器生成的,并且具有内部结构,如文档、书籍、图像、音频、视频、文件、电子邮件消息、网页等等;也可以是结构化数据,即为按照预定义的模型结构化或以预定义的方式组织的数据,通常存储在关系数据库管理系统中。
57.s2、基于小文件确定待合并文件列表;
58.其中,待合并文件列表是数据库(database)维护的一个数据表,用于记录小文件的相关数据。
59.参阅图3,图3是本发明步骤s2一实施例的流程示意图,步骤s2包括:
60.s21、获取小文件对应的小文件名;
61.其中,每个文件都设有对应的文件名,大文件有大文件的对应名,小文件有小文件的对应名。
62.具体地,区分出大小文件后,提取小文件的相关信息,进而获取小文件对应的小文件名。
63.s22、基于小文件名确定待合并文件列表。
64.其中,待合并文件列表可以用来记录小文件的相关数据,这里用来记录小文件对应的小文件名。
65.具体地,提取出小文件的相关信息后,获取其中小文件对应的小文件名,将这些小文件名记录在待合并文件列表中,以确定待合并文件列表的数据量大小,进而确定该待合并文件列表。
66.在一些实施例中,也可以通过其他能代表小文件的信息确定待合并文件列表,如文件编号、文件拓展名等;例如,提取出小文件的相关信息后,获取其中小文件对应的文件编号,将这些小文件对应的文件编号记录在待合并文件列表中,以确定待合并文件列表的数据量大小,进而确定该待合并文件列表。
67.s3、根据待合并文件列表将小文件的数据信息缓存至聚合文件;
68.其中,聚合文件是以大文件形式在云存储系统中创建的云存储文件,用于存储待合并文件列表中对应文件的数据信息。
69.参阅图4,图4是本发明步骤s3一实施例的流程示意图,步骤s3包括:
70.s31、检索待合并文件列表,将检索获取的小文件缓存至第一缓存容器中;
71.其中,第一缓存容器为用于缓存待聚合文件的本地缓存容器,即第一容器用于缓存等待聚合的小文件。
72.具体地,定时检索数据库(database)中维护的待合并文件列表,根据待合并文件列表记录的相关内容获取当前所有待合并的小文件,将当前所有待合并的小文件保存在本地的待合并文件缓存容器中,即保存在第一缓存容器中。
73.在一些实施例中,需要设定一个定时任务,通过该定时任务定时检测数据库(database)中维护的待合并文件列表。
74.s32、以大文件形式在云存储系统中创建聚合文件;
75.其中,大文件形式为大文件的形式,并不特指某种文件类型。
76.具体地,在云存储系统中,以大文件的形式创建一个新的云存储文件,命名为聚合文件。
77.在一些实施例中,大文件形式并不限定该文件大小的上限值,但不超过数据库(database)的大小,即聚合文件为大于1mb并小于数据库大小的文件。
78.s33、将第一缓存容器中小文件的数据信息缓存至聚合文件。
79.其中,第一缓存容器中小文件的数据信息即为数据库(database)中待合并文件容器中小文件的数据信息。
80.具体地,依据待合并文件容器中缓存能代表小文件的信息,从云存储系统中先获取待合并文件的云数据信息保持到本地,即保存在数据库(database)中,然后读取小文件相关数据写入聚合文件中,同时在本地记录和更新聚合文件当前偏移、总长度等描述该聚合文件的信息。
81.在一些实施例中,可以依据待合并文件容器中缓存小文件对应的小文件名或文件编号或能代表小文件的信息,从云存储系统中获取待合并文件的云数据信息保持到本地,即保存在数据库(database)中,然后在云存储系统中读取对应的小文件数据内容,并将小文件数据内容异步追加写入云存储系统的聚合文件中,并在数据库(database)中记录和更新聚合文件当前偏移、总长度等信息。
82.参阅图5,图5是本发明步骤s33一实施例的流程示意图,步骤s33包括:
83.s331、若第一缓存容器中的小文件的数据信息成功写入聚合文件,则在第二缓存容器中缓存该小文件对应的小文件名;
84.其中,第二缓存容器为用于缓存聚合完成文件的本地缓存容器,即第二缓存容器用于缓存已经完成聚合的小文件。
85.具体地,用于缓存待聚合文件的本地缓存容器中小文件的数据信息成功写入到云存储系统的聚合文件中,则在用于缓存聚合完成文件的本地缓存容器中缓存聚合完成的能代表小文件的信息。
86.在一些实施例中,在用于缓存聚合完成文件的本地缓存容器中,缓存聚合完成的能代表小文件的信息,可以为小文件名或小文件编号等能表示小文件的内容。
87.s332、若第一缓存容器中的小文件的数据信息没有写入聚合文件,则在第三缓存容器中缓存该小文件对应的小文件名。
88.其中,第三缓存容器为用于缓存聚合失败文件的本地缓存容器,即第三缓存容器用于缓存聚合失败的小文件。
89.具体地,用于缓存待聚合文件的本地缓存容器中小文件的数据信息没有成功写入到云存储系统的聚合文件中,则在用于缓存聚合失败文件的本地存储容器中缓存聚合失败的能代表小文件的信息。
90.在一些实施例中,在用于缓存聚合失败文件的本地缓存容器中,缓存聚合失败的能代表小文件的信息,可以为小文件名或小文件编号等能表示小文件的内容。
91.在一些实施例中,在完成聚合文件的缓存后,还包括:根据第二缓存容器的缓存信息删除待合并文件列表及其对应的元数据信息,腾出相应的空间。
92.参阅图6,图6是在本发明步骤s33后一实施例的流程示意图,包括:
93.s34、当聚合文件的大小达到预设阈值时,关闭该聚合文件;
94.其中,预设阈值用于限定聚合文件的大小,即聚合文件大小到达该预设阈值后,则不在使用该聚合文件存储信息。
95.具体地,对聚合文件设置一个预设阈值,当聚合文件大小达到该预设阈值后,关闭该聚合文件,不再存储新的信息到该聚合文件中。
96.在一些实施例中,若该聚合文件还有部分剩余空间,在将进行存储的文件大小大于该聚合文件的剩余空间,也表示该聚合文件大小达到预设阈值,则可以关闭该聚合文件。
97.s35、在云存储系统中以大文件形式新建聚合文件并以新建聚合文件缓存剩余的小文件的数据信息。
98.其中,新建聚合文件为在云存储系统中以大文件的形式新建的云存储文件。
99.具体地,在原聚合文件达到预设阈值关闭后,在云存储系统中以大文件的形式新建云存储文件作为新的聚合文件,并通过新的聚合文件缓存剩余的小文件的数据信息。
100.在一些实施例中,新的聚合文件可以为一个,也可以为多个,满足聚合成功的小文件的数据信息存储要求即可。
101.s4、基于聚合文件设置键值对,并将键值对缓存至外挂存储系统;
102.其中,键值对为相对应的键值,通过其中一个键值可以获取对应的键值内容;外挂存储系统可以为单独的一个存储子系统,与云存储系统和数据库都有连接关系。
103.一些实施例中,可以在外挂存储系统中管理小文件的云数据。
104.参阅图7,图7是本发明步骤s4一实施例的流程示意图,步骤s4包括:
105.s41、将聚合文件的存储目录设置为key值,以及将聚合文件中的小文件索引信息设置为value值;
106.其中,在聚合文件存储有聚合成功的小文件之后,会根据能代表小文件的信息生成聚合文件的存储目录,以及根据聚合成功的小文件生成相应的小文件索引信息。
107.具体地,当聚合成功的小文件都存储到聚合文件中后,获取能代表小文件的信息生成聚合文件的存储目录,并将该存储目录作为key值;以及根据聚合成功的小文件生成的小文件索引信息作为value值。
108.在一些实施例中,聚合文件的存储目录可以是能代表小文件的小文件名或小文件编号或其他能代表小文件的信息;小文件索引信息可以是小文件与小文件之间在聚合文件中的起始偏移以及小文件大小拼接而成的字符串,或者是小文件编号以及小文件大小拼接而成的字符串,或者是小文件起始位置以及小文件大小拼接而成的字符串等等能表示小文件索引的相关信息。
109.s42、将key值和value值缓存至外挂存储系统中。
110.具体的,将key值和value值记录在外挂存储系统中。
111.在一些实施例中,外挂存储系统可以是单独的分布式kv存储系统或者是其他能实现单纯存储功能的存储模块。
112.s5、基于键值对读取并下载小文件。
113.其中,通过键值对的每条数据地址的唯一关键字key值即可获取该数据实际存储的内容value值,因此可以通过键值对读取并下载小文件。
114.参阅图8,图8是本发明步骤s5一实施例的流程示意图,步骤s5包括:
115.s51、响应于用户检索请求,检索数据库获取对应的数据库文件列表以及依据key值检索外挂存储系统获取对应的小文件列表;
116.其中,数据库文件列表为数据库(database)中存储文件的列表,小文件列表为外挂存储系统中对应的小文件的列表。
117.具体地,当需要进行文件检索时,根据检索条件,响应用户的检索请求检索数据库(database),并从数据库(database)中获取指定目录下数据库文件列表并缓存;进而依据表示聚合文件存储目录的key值检索外挂存储系统,以获取相同目录下的小文件列表。
118.在一些实施例中,从数据库(database)中获取指定目录下文件列表可能包含普通的大文件或包含大文件形式的聚合文件或者同时包含普通的大文件和大文件形式的聚合文件。
119.在一些实施例中,可以通过模糊匹配的方式检索外挂存储系统,必要时,也可以通过精准匹配的方式检索外挂存储系统。
120.s52、将数据库文件列表和小文件列表整合并去除聚合文件后返回用户;
121.其中,将数据库文件列表包含有普通的大文件和聚合文件,小文件列表包括已经存入聚合文件的小文件,因此,将数据库文件列表和小文件列表整合后,聚合文件为重复了,需要去除,进而返回没有重复数据的文件列表给用户。
122.具体地,将从数据库(database)中获取指定目录下文件列表和从外挂存储系统获取相同目录下的小文件列表进行整合,删除重复的聚合文件后,将没有重复数据的文件列表返回给用户。
123.s53、用户基于value值从云存储系统中读取小文件的数据信息。
124.其中,value值包含了小文件在聚合文件中的索引信息,因此可以通过该索引信息解析小文件名访问云存储系统进而读取相关数据。
125.具体地,基于value值对应的聚合文件索引信息,解析出小文件名,并依据小文件名访问云存储系统进行读取并下载小文件名对应的数据信息,即对小文件实现快速定位,提升了小文件读性能。
126.在一些实施例中,小文件名称可以为外挂系统记录的value值,其包含了小文件在聚合文件中的索引信息,如起始偏移、文件大小等小文件相关的信息。
127.参阅图9,图9是本发明需要删除缓存小文件时的流程示意图,包括:
128.a1、获取删除文件在聚合文件中的占比;
129.其中,对于小文件的删除,主要是删除外挂存储系统中对应的小文件元数据。
130.具体地:当客户端申请删除小文件时,仅删除外挂存储系统中小文件元数据记录。同时,保持被申请删除小文件所属聚合文件的详细信息;例如,将被申请删除小文件所属聚合文件作为聚合文件1,申请删除的小文件作为小文件1;
131.记录或更新聚合文件无效内容的占比,若申请删除的小文件是聚合文件中第一个删除的小文件,则计算该小文件大小与聚合文件大小的比值并记录;若申请删除的小文件不是聚合文件中第一个删除的小文件,则计算的占比与之前记录的比值进行累加后再保存
记录;例如:若小文件1是聚合文件1中第一个删除的小文件,则计算小文件1和聚合文件1大小的比值并记录,若小文件1不是聚合文件1中第一个删除的小文件,则将小文件1大小与聚合文件1大小的比值与之前记录的比值累加后再保存记录。
132.在一些实施例中,申请删除小文件时,仅删除分布式kv系统中小文件元数据记录。
133.a2、若占比达到占比阈值时,对聚合文件中未删除的小文件重新生成新的聚合文件,并删除原聚合文件。
134.其中,占比为小文件在聚合文件中的占比,这里是申请删除的小文件在聚合文件中的占比;占比阈值用于对聚合文件的大小进行管理,即聚合文件中删除文件较多,则需要删除原聚合文件的大小,进而腾出相应的空间,减轻空间碎片严重问题。
135.具体地,判断聚合文件1中已删除的文件占比是否达到占比阈值,若达到该占比阈值,则检测外挂存储系统以获取聚合文件1中当前所有未被删除的小文件,并解析相应的小文件名获取未被删除小文件在聚合文件1中的起始偏移和长度,按照小文件起始偏移大小顺序将小文件详细信息保存在数据库(database)中;并依据未删除的小文件重新生成聚合文件2,将未删除的小文件详细信息将小文件数据转移到聚合文件2中,并删除原聚合文件。
136.参阅图10,图10是本发明步骤a2一实施例的流程示意图,步骤a2包括:
137.a21、获取删除文件累积的所述占比;
138.其中,删除文件为聚合文件中被删除的小文件。
139.具体地,获取聚合文件中被删除小文件的大小,并计算被删除小文件大小在聚合文件中的占比。
140.在一些实施例中,删除文件可以是删除一个小文件,也可以是删除多个小文件,因此是获取删除文件的累积占比。
141.a22、若占比达到占比阈值,则检索外挂存储系统获取原聚合文件中未被删除的小文件,并以此生成聚合子文件;
142.具体地,若删除文件在聚合文件1中的占比达到占比阈值,为了腾出空间,则检索外挂存储系统以获取聚合文件1中当前所有未被删除的小文件,解析相应的小文件名以获取对应在聚合文件中的其实偏移和文件长度,按照小文件起始偏移大小顺序将小文件详细信息保存在数据库(database)中;进而根据未被删除的小文件生成对应的聚合文件2,并依据小文件详细信息将小文件数据转移到聚合文件2中。
143.a23、删除原聚合文件。
144.其中,删除的原聚合文件为已经进行数据转移的聚合文件。
145.具体地,已经进行数据转移的聚合文件1与新生成的聚合文件2存在数据重合,因此删除已经进行数据转移的聚合文件1,进而释放空间碎片,腾出相应的空间。
146.在一些实施例中,每完成一个聚合文件1中小文件的重新聚合,则修改该小文件在外挂存储系统中的云数据信息,即:key值修改为聚合文件2的存储目录,对应的value值修改为小文件在聚合文件2中的索引信息。
147.在一些实施例中,修改的value值对应的小文件索引信息可以是小文件与小文件之间在聚合文件中的起始偏移以及小文件大小拼接而成的字符串,或者是小文件编号以及小文件大小拼接而成的字符串,或者是小文件起始位置以及小文件大小拼接而成的字符串等等能表示小文件索引的相关信息。
148.区别于现有技术,本实施例中,通过获取小文件;基于小文件确定待合并文件列表;根据待合并文件列表将小文件的数据信息缓存至聚合文件;其中,聚合文件是以大文件形式在云存储系统中创建的云存储文件;基于聚合文件设置键值对,并将键值对缓存至外挂存储系统;基于键值对读取并下载小文件。即本技术通过获取小文件后,将小文件以大文件的形式进行存储,并在外挂存储系统中设定相应的键值对,依据键值对进行小文件的读写,可实现海量小文件快速读写,提升海量小文件读写效率。
149.请参阅图11,图11是本发明海量小文件读写系统一实施例的结构示意图,该系统可以执行上述海量小文件读写方法的步骤,相关内容请参见上述方法中的详细说明,在此不在赘述。
150.该海量小文件读写系统200包括:获取模块210、确定模块220、第一缓存模块230、第二缓存模块240、读取模块250。其中,获取模块210用于获取小文件;确定模块220基于小文件确定待合并文件列表;第一缓存模块230用于根据待合并文件列表将小文件的数据信息缓存至聚合文件;其中,聚合文件是以大文件形式在云存储系统中创建的云存储文件;第二缓存模块240基于聚合文件设置键值对,并将键值对缓存至外挂存储系统;读取模块250基于键值对读取并下载小文件。
151.请参阅图12,图12是本发明电子设备一实施例的结构示意图。该电子设备可以执行上述海量小文件读写方法中的步骤。该电子设备300包括:存储器310以及与存储器耦接的处理器320,存储器310存储有至少一计算机程序,至少一计算机程序被处理器加载并执行时,用于实现上述海量小文件读写方法。
152.请参阅图13,图13是本发明计算机可读存储介质一实施例的结构示意图。该计算机可读存储介质400存储有至少一段程序410,至少一段程序410被处理器加载并执行时,用于实现上述海量小文件读写方法。
153.以上方案,通过大文件形式聚合小文件,实现大小文件自动区分以及小文件存储适配于现有技术中侧重大文件存储的云存储系统;依据相应的键值对设置,极大降低了云数据量,减轻数据库压力,能很好的应用在数百亿甚至千亿级的量级存储需求中,满足相应的业务存储需求,提升海量小文件的读写性能。
154.在本发明所提供的几个实施方式中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
155.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
156.另外,在本发明各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
157.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
158.以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献