CN115878027A - 一种存储对象的处理方法、装置、终端及存储介质 - Google Patents

一种存储对象的处理方法、装置、终端及存储介质 Download PDF

Info

Publication number
CN115878027A
CN115878027A CN202210908976.3A CN202210908976A CN115878027A CN 115878027 A CN115878027 A CN 115878027A CN 202210908976 A CN202210908976 A CN 202210908976A CN 115878027 A CN115878027 A CN 115878027A
Authority
CN
China
Prior art keywords
small
time
large object
objects
expired
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210908976.3A
Other languages
English (en)
Inventor
黎淦文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Uniview Technologies Co Ltd
Original Assignee
Zhejiang Uniview Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang Uniview Technologies Co Ltd filed Critical Zhejiang Uniview Technologies Co Ltd
Priority to CN202210908976.3A priority Critical patent/CN115878027A/zh
Publication of CN115878027A publication Critical patent/CN115878027A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请适用于对象存储技术领域,提供一种存储对象的处理方法、装置、终端及存储介质,其中方法包括:获取大对象队列中各个大对象的对象名,基于所述对象名,依序对所述大对象队列中大对象的元数据进行访问,并从第一大对象的所述元数据中获取第一起始时间及第一末尾时间;获取设定文件过期时间与所述第一起始时间及所述第一末尾时间之间的大小关系;基于所述大小关系,判断所述第一大对象存储的小对象中是否存在过期小对象及判断与所述第一大对象的编号具有时序排列关系的第二大对象中是否存在过期小对象,得到判断结果;判断结果用于指示是否执行过期文件清除操作。该方案能够提升数据处理效率,确保分布式存储集群的数据处理性能。

Description

一种存储对象的处理方法、装置、终端及存储介质
技术领域
本申请属于对象存储技术领域,尤其涉及一种存储对象的处理方法、装置、终端及存储介质。
背景技术
近年来,分布式存储的诞生使得云存储技术得到广泛应用。其中应用到对象存储,具体需要通过对象存储网关上传的数据以对象的形式存储在分布式存储集群中。为了节约存储成本,对象存储网关的生命周期流程提供一种自动化删除过期对象的方式,使得存储集群能够定期释放存储空间,满足持续写入的要求。
但随着数据规模的扩大,海量小文件形成的需要存储的小对象将造成分布式存储性能下降。为解决海量小对象存储,业界往往采取小对象合并的方式,将多个小对象合并成一个大对象进行存储,使得小对象的元数据量大大减少,同时减少频繁的磁盘输入输出,从而提高整体存储的性能。
随着小对象合并的进行,在对数以万计的小对象进行过期判断及删除时,需要分别对大对象中的各个小对象进行列举遍历,实现对小对象进行有效性判断,将过期存储对象进行有效剔除。但该过程中,对海量小对象逐一进行过期判断,导致数据处理效率低下,也会伴随大量的无用列举,极大降低分布式存储集群的数据处理性能。
发明内容
本申请实施例提供了一种存储对象的处理方法、装置、终端及存储介质,以解决现有技术中对海量小对象逐一进行过期判断,导致数据处理效率低下,也会伴随大量的无用列举,极大降低分布式存储集群的数据处理性能的问题。
本申请实施例的第一方面提供了一种存储对象的处理方法,包括:
获取大对象队列中各个大对象的对象名,所述对象名对应于大对象的编号,各个所述大对象之间的编号依照时序排列;
基于所述对象名,依序对所述大对象队列中大对象的元数据进行访问,并从第一大对象的所述元数据中获取第一起始时间及第一末尾时间;其中,每一所述大对象的所述元数据中均包括起始时间及末尾时间,所述起始时间对应于首个小对象的写入时间,所述末尾时间对应于末个小对象的写入时间;
获取设定文件过期时间与所述第一起始时间及所述第一末尾时间之间的大小关系;
基于所述大小关系,判断所述第一大对象存储的小对象中是否存在过期小对象及判断与所述第一大对象的编号具有时序排列关系的第二大对象中是否存在过期小对象,得到判断结果;所述判断结果用于指示是否执行过期文件清除操作。
本申请实施例的第二方面提供了一种存储对象的处理装置,包括:
第一获取模块,用于获取大对象队列中各个大对象的对象名,所述对象名对应于大对象的编号,各个所述大对象之间的编号依照时序排列;
第二获取模块,用于基于所述对象名,依序对所述大对象队列中大对象的元数据进行访问,并从第一大对象的所述元数据中获取第一起始时间及第一末尾时间;其中,每一所述大对象的所述元数据中均包括起始时间及末尾时间,所述起始时间对应于首个小对象的写入时间,所述末尾时间对应于末个小对象的写入时间;
第二获取模块,用于获取设定文件过期时间与所述第一起始时间及所述第一末尾时间之间的大小关系;
判断模块,用于基于所述大小关系,判断所述第一大对象存储的小对象中是否存在过期小对象及判断与所述第一大对象的编号具有时序排列关系的第二大对象中是否存在过期小对象,得到判断结果;所述判断结果用于指示是否执行过期文件清除操作。
本申请实施例的第三方面提供了一种终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述方法的步骤。
本申请实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述方法的步骤。
本申请的第五方面提供了一种计算机程序产品,当所述计算机程序产品在终端上运行时,使得所述终端执行上述第一方面所述方法的步骤。
由上可见,本申请实施例中,通过获取编号依照时间排序的大对象的对象名,依序对大对象队列中大对象的元数据进行访问,基于设定文件过期时间与当前大对象中首个小对象的写入时间及最后一个小对象的写入时间之间的早晚关系,实现对大对象整体进行过期判断,减少海量小对象的无用列举,并且同时利用不同大对象之间编号的时序排列关系,实现对于当前大对象具有时序排列关系的其他大对象进行相应的过期判断,减少其他大对象的无用列举,在不增加额外开销的情况下,实现小对象的过期清除,提升数据处理效率,确保分布式存储集群的数据处理性能。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种存储对象的处理方法的流程图一;
图2是本申请实施例提供的一种存储对象的处理方法的流程图二;
图3是本申请实施例提供的管理对象示意图;
图4是本申请实施例提供的空洞处理示意图;
图5是本申请实施例提供的一种存储对象的处理装置的结构图;
图6是本申请实施例提供的一种终端的结构图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
应理解,本实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
为了说明本申请所述的技术方案,下面通过具体实施例来进行说明。
参见图1,图1是本申请实施例提供的一种存储对象的处理方法的流程图一。如图1所示,一种存储对象的处理方法,该方法包括以下步骤:
步骤101,获取大对象队列中各个大对象的对象名。
该对象名对应于大对象的编号,各个所述大对象之间的编号依照时序排列。
其中,每一所述大对象对应有存储空间,所述存储空间用于写入小对象。其中,小对象通常是指大小小于10M的文件。
其中,各个大对象之间的编号依照时序排列。具体地,各个大对象之间的编号依照大对象的申请时间的先后时间顺序进行对应排列。申请时间越靠后的大对象,其编号数值也越大。大对象编号符合了时序性要求,能够保证当列举到某个大对象,该大对象上面的小对象均不过期时,该大对象编号之后所有的大对象均不可能过期。
在对大对象赋予编号时,可以直接依照能够体现时间先后关系的顺序进行编号赋值即可。因此,大对象队列中,末尾大对象的申请时间为最新的一个大对象,基于该大对象的编号,可以依照大对象的编号的赋值规则,及大对象名的构成结构,实现对各个大对象的对象名的构建。
通过赋予给大对象能够体现其申请时间先后顺序的编号,再次构建出各个大对象的对象名,通过这些对象名直接访问对应大对象的元数据,而不再通过索引方式去访问数据库获取对象名进行原数据访问。
本申请实施例中,具体对大对象展开对象生命周期管理。
在对在大对象中小对象进行过期清除之前,需要先构建得到大对象队列。
具体地,大对象具体需要存储于分布式存储集群中划分的对象存储桶(bucket)中,一个对象存储桶中存储的若干大对象依照时间顺序形成大对象队列。
与该过程对应地,结合图2所示,在获取大对象队列中各个大对象的对象名之前,包括:
步骤21,基于待存储小对象,在查询到当前可用大对象已经写满时,基于所述当前可用大对象的编号,构建得到目标对象名;
步骤22,向对象集群申请所述目标对象名对应的目标大对象。
所述目标对象名中包含所述目标大对象的编号,所述目标大对象的编号与所述当前可用大对象的编号依照时序排列。
步骤23,将所述小对象写入至所述目标大对象对应的存储空间中。
其中,本申请实施例中,当有小对象需要上传时,具体上传流程如下:
首先,用户向对象存储网关发起上传文件请求,对象存储网关接收到请求后判断上传的文件是否是小对象,如果是小对象,则根据每个bucket下预分配N个管理对象,进行大对象的分配跟管理记录。
这里引入管理对象的概念,每个bucket有对应的管理对象,当有小对象需要上传时会先找到其中一个管理对象上,由管理对象决定这个小对象应该写入哪个大对象中,并且分配大对象编号(ID),用于申请以及列举大对象,确保为对象分配的ID的有序性,其中可以设定值越小的ID分配时间越早。
当小对象上传时,具体可以通过哈希的方式将其映射到bucket的其中一个管理对象上。
管理对象查询当前可用大对象是否已经写满,写满则通过记录的ID,构建大对象名,向对象集群申请一个新的大对象,每新申请一个大对象,其对应的ID值为递增。随后小对象可以依次写入到分配出来的大对象的数据区中。
大对象元数据中记录了其中写入的小对象列表,包括了小对象在数据区中的偏移量、长度等信息。同时为了本申请实施例的实现,大对象元数据还记录了如下的字段信息:first_time表示首个小对象写入的时间,last_time表示最后一个小对象写入的时间,tags_num表示所有小对象中有标签属性的小对象个数,in_hole_queue表示是否在空洞处理线程的任务队列中,use_size表示已使用的存储空间量。其中,空洞处理线程用于对出现存储空洞的大对象进行数据处理,实现存储空间释放。
其次,在向大对象中写入小对象时,可以更新大对象的元数据信息。
其中,如果当前小对象首个写入大对象的小对象,则更新first_time为当前时间;如果是最后一个写入大对象的小对象,更新last_time为当前时间;如果小对象含有标签,则tags_num属性递增;in_hole_queue设置为默认值false,此时表示大对象没有被放入空洞处理线程的任务队列中;use_size为全部小对象的大小和。
其中,还可以设置大对象的对象名格式,例如:bucket_id–管理对象序号-编号,即包含该大对象所在的存储桶的编号,管理对象的编号及大对象自身的编号。每分配一个大对象,则大对象的编号均会递增。
步骤102,基于所述对象名,依序对所述大对象队列中大对象的元数据进行访问,并从第一大对象的所述元数据中获取第一起始时间及第一末尾时间。
其中,每一所述大对象的所述元数据中均包括起始时间及末尾时间,所述起始时间对应于首个小对象的写入时间,所述末尾时间对应于末个小对象的写入时间。
步骤103,获取设定文件过期时间与所述第一起始时间及所述第一末尾时间之间的大小关系。
该大小关系,具体包括:设定文件过期时间早于第一起始时间、设定文件过期时间晚于第一末尾时间及设定文件过期时间处于第一起始时间与第一末尾时间对应的时间范围内。
设定文件过期时间可以为一个设定时间值,可以根据需求进行设定。
步骤104,基于所述大小关系,判断所述第一大对象存储的小对象中是否存在过期小对象及判断与所述第一大对象的编号具有时序排列关系的第二大对象中是否存在过期小对象,得到判断结果。
该判断结果用于指示是否执行过期文件清除操作。
可以基于设定文件过期时间与当前大对象中首个小对象的写入时间及最后一个小对象的写入时间之间的早晚关系,实现对大对象整体进行过期判断,减少海量小对象的无用列举,并且同时利用不同大对象之间编号的时序排列关系,实现对于当前大对象具有时序排列关系的其他大对象进行相应的过期判断,减少其他大对象的无用列举,进一步减少其他大对象中存储的小对象的无用列举,且不需要引入额外的时序索引,利用元数据的数据记录内容,实现小对象的过期清除,避免额外的性能开销,确保分布式存储集群的数据处理性能。
该过程中,在一个具体的实施方式中,所述基于所述大小关系,判断所述第一大对象存储的小对象中是否存在过期小对象及判断与所述第一大对象的编号具有时序排列关系的第二大对象中是否存在过期小对象,得到判断结果,包括:
若所述大小关系为所述设定文件过期时间早于所述第一起始时间,则判断所述第一大对象存储的小对象中不存在过期小对象;
及依据编号间的时序排列关系,获取编号所对应时间等于或晚于所述第一大对象的编号所对应时间的至少一个所述第二大对象;
判断所述第二大对象中不存在所述过期小对象。
该过程中,需要对大对象及小对象进行过期判断:
对于某个大对象而言,通过读取大对象元数据上的first_time和last_time两个数据可以快速获取到其中小对象的写入时间范围,假设过期判断规则中,设定文件过期时间为min_time,则有如下三种情况:
1、min_time<first_time≤last_time;
2、first_time≤min_time≤last_time;
3、first_time≤last_time<min_time。
其中,第一种情况下,大对象中所有小对象均未过期,不需要处理。这种情况下,编号排序在当前大对象的编号之后的大对象无需再遍历。
结合图3所示,在一个具体的例子中,例如ID为3的管理对象,这个管理对象被分配来管理大对象1、大对象2及大对象3。
如果当前配置有两条过期判定规则,规则一中设定文件过期时间为3天,规则二设定文件过期时间为7天。当前时间为2022-3-9 18:00。依照规则中的最小过期时间为3,按当前时间减3,得到2022-3-6 18:00,即在这个时间点之前的小对象才有可能过期,即大对象1中的全部文件,大对象2中的部分文件将是过期小对象。依次读取大对象1,大对象2,对其中的小对象进行遍历,判断是否满足过期判定条件,当遍历到大对象2中时间大于2022-3-618:00的小对象,则该小对象之后的小对象均不可能过期,大对象3因为在大对象2之后,时间肯定比大对象2中的last_time要大,大对象3中的小对象没有过期,编号在大对象2之后的其他大对象上的文件也均不可能过期。
不同地,在另一个具体的实施方式中,所述基于所述大小关系,判断所述第一大对象存储的小对象中是否存在过期小对象及判断与所述第一大对象的编号具有时序排列关系的第二大对象中是否存在过期小对象,得到判断结果,包括:
若所述大小关系为所述设定文件过期时间处于所述第一起始时间与所述第一末尾时间对应的时间范围内,则依照小对象的写入顺序,依次判断所述第一大对象中小对象的写入时间是否晚于所述设定文件过期时间;
在从所述第一大对象中确定出写入时间不晚于所述设定文件过期时间的第一小对象时,将所述第一小对象及所述第一大对象中写入时间早于所述第一小对象的第二小对象确定为过期小对象;
及,依据编号间的时序排列关系,获取编号所对应时间早于所述第一大对象的编号所对应时间的至少一个所述第二大对象;
判断所述第二大对象中的小对象均为过期小对象。
该过程对应于上述的第二种情况,first_time≤min_time≤last_time。
此时,大对象中有部分小对象可能过期。这种情况下,按顺序依次遍历其中的小对象,由于小对象是按到达顺序依次写入大对象的存储空间中,因此小对象列表也具有时序性,当遍历到不符合设定文件过期时间要求的小对象即可停止遍历,后续的小对象均不可能过期,直接将写入时间不晚于设定文件过期时间的第一小对象及该第一大对象中写入时间早于第一小对象的第二小对象确定为过期小对象。且同时这种情况下,编号排序在当前大对象的编号之前的大对象中的小对象也无需再遍历,可以直接判断该些大对象中的小对象均为过期小对象。
具体地,在与之对应的一个可选的实施例中,所述基于所述大小关系,判断所述第一大对象存储的小对象中是否存在过期小对象及判断与所述第一大对象的编号具有时序排列关系的第二大对象中是否存在过期小对象,得到判断结果,包括:
若所述大小关系为所述设定文件过期时间处于所述第一起始时间与所述第一末尾时间对应的时间范围内,则依照小对象的写入顺序,依次判断所述第一大对象中小对象的写入时间是否晚于所述设定文件过期时间;
在从所述第一大对象中确定出写入时间晚于所述设定文件过期时间的第三小对象时,将所述第三小对象及所述第一大对象中写入时间晚于所述第三小对象的第四小对象确定为非过期小对象;
及依据编号间的时序排列关系,获取编号所对应时间晚于所述第一大对象的编号所对应时间的至少一个所述第二大对象;
判断所述第二大对象中不存在所述过期小对象。
该过程同样对应于上述的第二种情况,first_time≤min_time≤last_time。
此时,大对象中有部分小对象可能过期。这种情况下,按顺序依次遍历其中的小对象,由于小对象是按到达顺序依次写入大对象的存储空间中,因此小对象列表也具有时序性,当遍历到不符合设定文件过期时间要求的小对象即可停止遍历,后续的小对象均不可能过期,直接将写入时间晚于设定文件过期时间的第三小对象及第一大对象中写入时间晚于第三小对象的第四小对象确定为非过期小对象。且同时这种情况下,编号排序在当前大对象的编号之后的大对象中的小对象也无需再遍历,可以直接判断该些大对象中不存在过期小对象。
进一步地,在又一个具体的实施方式中,所述元数据中还包括:具有标签信息的小对象的统计个数;所述基于所述大小关系,判断所述第一大对象存储的小对象中是否存在过期小对象及判断与所述第一大对象的编号具有时序排列关系的第二大对象中是否存在过期小对象,得到判断结果,包括:
若所述大小关系为所述设定文件过期时间晚于所述第一末尾时间,则判断所述统计个数是否为0;
当所述统计个数不为0时,依照小对象的写入顺序,从所述第一大对象中检测得到标签信息为过期标签的目标小对象,将所述目标小对象确定为过期小对象;
当所述统计个数为0时,则判断所述第二大对象中不存在所述过期小对象。
该过程对应于上述的第三种情况,first_time≤last_time<min_time。
此时,大对象中所有小对象均有可能过期。这里需要在设定文件过期时间基础之外,进一步考虑可能会存在的其他过期判定条件,例如为小对象的标签信息。当过期判定规则中,设置需要同时满足时间要求及标签要求时,则当大对象中所有小对象均处于设定文件过期时间内时,需进一步判断其他特征是否满足条件。
具体地,需要结合标签信息进行过期匹配。
由于小对象的标签属性属于小对象的元数据,因此如果过期判定规则中配置了标签,则无可避免需要依次读取各个小对象的元数据依次判断,如果小对象中都没配置有标签则将产生许多的无用读取。本申请实施例针对这项规则,通过访问大对象的tags_num属性,可以快速得到大对象上拥有标签的小对象数,如果数量为0则不需要再去依次访问各个小对象,如果不为0,当进行对象列举的时候如果列举到数量跟该值相同的有标签属性的小对象,则后面的小对象无需继续列举,可以提前终止判断,避免小对象的无用列举。
进一步地,还可以结合小对象的前缀进行过期匹配。
在小对象合并存储至一个大对象中后,一个大对象上可能具有成百上千的小对象,如果通过列举的方式对每个小对象的对象名进行前缀匹配将非常的耗时。基于这点,本申请实施例采用了前缀树算法,前缀树是一个在海量数据情况下快速查找出符合前缀的字符串的经典算法,加入和查询的操作与数据量无关,只与被操作字符串长度有关。通过读取大对象上元数据中的小对象列表,读取各个对象名,在内存中构建前缀树,之后通过前缀树快速匹配过期判定规则中的设定前缀,找到符合前缀规则的小对象出来。
在得到判断结果后,即可以确定是否执行过期文件清除操作。
在执行过期文件清除操作时,具体可以是:
如果判断结果为大对象上所有小对象均为过期文件,确定所有小对象均需要删除,则删除整个大对象。如果大对象中只有部分小对象过期,则删除大对象上关于这些小对象及小对象的元数据信息,同时以下面规则更新大对象上的元数据信息:
更新first_time为部分小对象删除后当前首个文件的写入时间;或者更新last_time为部分小对象删除后当前末尾文件的写入时间;或者过期小对象中有x个含有为含有标签信息的小对象,则需要将大对象的元数据中的tag_nums更新为tag_nums减x。
其中,进一步地,元数据中还包括已用存储量;若前述判断结果指示执行过期文件清除操作,则在执行所述过期文件清除操作之后,还包括:
基于所述已用存储量,从所述大对象队列中获取存储利用率小于阈值的空洞大对象,所述空洞大对象所对应的存储空间中存储有至少一个剩余小对象;
向对象集群申请编号与所述空洞大对象一致的替换大对象,所述替换大对象所对应的空间存储量与所述剩余小对象的文件总量相等;
依照各个所述剩余小对象在所述空洞大对象中的写入顺序,将所述剩余小对象分别迁移至所述替换大对象对应的存储空间中;
删除所述空洞大对象。
该过程中,针对与一个大对象中的过期小对象为存储地址不连续的多个小对象的情况下,例如过期判定规则中配置了前缀或标签信息的过期规则,导致大对象中在删除小对象时只删除了与规则匹配的部分小对象,因此会出现大对象空洞现象,针对该现象本发明的解决流程如下:
在删除或批量删除小对象过程中,会动态维护大对象记录中的use_size字段,删除一个文件则该字段需减去删除文件的大小size。当过期小对象删除完成后,如果确定大对象中use_size的值占当前大对象实际存储空间大小的比值小于预先设置的比例阈值时,判断该大对象需要空洞处理。
需要对大对象加入到空洞处理线程的任务队列中。若大对象元数据中的in_hole_queue为false代表还未入队列,此时将其值置为true,然后以一组key-value的形式写入到空洞处理线程的任务队列对象中,其中key为当前的时间戳,确保先写入的先进行处理,新入队的后处理,为新入队的对象预留索引信息的删除的时间,若in_hole_queue为true则表明已入队列,则不需重复做额外操作。
结合图4所示,大对象_1中存储有小对象File1、File2、File3、File4、File5,删除过期小对象File3、File4,此时大对象_1中的空间使用率小于阈值,则需要对大对象_1进行空洞处理,将删除过期小对象后的大对象_1加入至空洞处理的任务队列中进行空洞处理。
可以在后台设定一个定时线程,在规定时间段去读取任务队列对象中的元素,依次对其进行空洞处理,处理方式为提取出剩余小对象的信息,按照小对象的写入顺序,重新写入一个新的同名大对象中,确保重新写入大对象后的小对象顺序仍符合时序要求,大对象的同名是为了确保该大对象后续的过期判断及对象遍历依然符合时序要求,该新的大对象的存储空间的大小为剩余小对象的大小之和,新写入的大对象in_hole_queue重置为false。如若需要处理的大对象上的小对象已全被删除,则直接将该大对象删除,释放空间。空洞处理完成后将该大对象从任务队列对象中移除。
本申请实施例中,通过获取编号依照时间排序的大对象的对象名,依序对大对象队列中大对象的元数据进行访问,基于设定文件过期时间与当前大对象中首个小对象的写入时间及最后一个小对象的写入时间之间的早晚关系,实现对大对象整体进行过期判断,减少海量小对象的无用列举,并且同时利用不同大对象之间编号的时序排列关系,实现对于当前大对象具有时序排列关系的其他大对象进行相应的过期判断,减少其他大对象的无用列举,且不需要引入额外的时序索引,在不增加额外开销的情况下,利用元数据的数据记录内容,实现小对象的过期清除,避免额外的性能开销,确保分布式存储集群的数据处理性能。
参见图5,图5是本申请实施例提供的一种存储对象的处理装置的结构图,为了便于说明,仅示出了与本申请实施例相关的部分。
所述存储对象的处理装置500包括:
第一获取模块501,用于获取大对象队列中各个大对象的对象名,所述对象名对应于大对象的编号,各个所述大对象之间的编号依照时序排列;
第二获取模块502,用于基于所述对象名,依序对所述大对象队列中大对象的元数据进行访问,并从第一大对象的所述元数据中获取第一起始时间及第一末尾时间;其中,每一所述大对象的所述元数据中均包括起始时间及末尾时间,所述起始时间对应于首个小对象的写入时间,所述末尾时间对应于末个小对象的写入时间;
第三获取模块503,用于获取设定文件过期时间与所述第一起始时间及所述第一末尾时间之间的大小关系。
判断模块504,用于基于所述大小关系,判断所述第一大对象存储的小对象中是否存在过期小对象及判断与所述第一大对象的编号具有时序排列关系的第二大对象中是否存在过期小对象,得到判断结果;所述判断结果用于指示是否执行过期文件清除操作。
其中,该装置还包括:
文件写入模块,用于:
基于待存储小对象,在查询到当前可用大对象已经写满时,基于所述当前可用大对象的编号,构建得到目标对象名;
向对象集群申请所述目标对象名对应的目标大对象;所述目标对象名中包含所述目标大对象的编号,所述目标大对象的编号与所述当前可用大对象的编号依照时序排列;
将所述小对象写入至所述目标大对象对应的存储空间中。
其中,所述判断模块504,具体用于:
若所述大小关系为所述设定文件过期时间早于所述第一起始时间,则判断所述第一大对象存储的小对象中不存在过期小对象;
及,依据编号间的时序排列关系,获取编号所对应时间等于或晚于所述第一大对象的编号所对应时间的至少一个所述第二大对象;
判断所述第二大对象中不存在所述过期小对象。
其中,所述判断模块504,具体用于:
若所述大小关系为所述设定文件过期时间处于所述第一起始时间与所述第一末尾时间对应的时间范围内,则依照小对象的写入顺序,依次判断所述第一大对象中小对象的写入时间是否晚于所述设定文件过期时间;
在从所述第一大对象中确定出写入时间不晚于所述设定文件过期时间的第一小对象时,将所述第一小对象及所述第一大对象中写入时间早于所述第一小对象的第二小对象确定为过期小对象;
及,依据编号间的时序排列关系,获取编号所对应时间早于所述第一大对象的编号所对应时间的至少一个所述第二大对象;
判断所述第二大对象中的小对象均为过期小对象。
其中,所述判断模块504,具体用于:
若所述大小关系为所述设定文件过期时间处于所述第一起始时间与所述第一末尾时间对应的时间范围内,则依照小对象的写入顺序,依次判断所述第一大对象中小对象的写入时间是否晚于所述设定文件过期时间;
在从所述第一大对象中确定出写入时间晚于所述设定文件过期时间的第三小对象时,将所述第三小对象及所述第一大对象中写入时间晚于所述第三小对象的第四小对象确定为非过期小对象;
及依据编号间的时序排列关系,获取编号所对应时间晚于所述第一大对象的编号所对应时间的至少一个所述第二大对象;
判断所述第二大对象中不存在所述过期小对象。
其中,所述元数据中还包括:具有标签信息的小对象的统计个数;所述判断模块504,具体用于:
若所述大小关系为所述设定文件过期时间晚于所述第一末尾时间,则判断所述统计个数是否为0;
当所述统计个数不为0时,依照小对象的写入顺序,从所述第一大对象中检测得到标签信息为过期标签的目标小对象,将所述目标小对象确定为过期小对象;
当所述统计个数为0时,则判断所述第二大对象中不存在所述过期小对象。
其中,元数据中还包括已用存储量;该装置还包括:
存储释放模块,用于:
若所述判断结果指示执行所述过期文件清除操作,则基于所述已用存储量,从所述大对象队列中获取存储利用率小于阈值的空洞大对象,所述空洞大对象所对应的存储空间中存储有至少一个剩余小对象;
向对象集群申请编号与所述空洞大对象一致的替换大对象,所述替换大对象所对应的空间存储量与所述剩余小对象的文件总量相等;
依照各个所述剩余小对象在所述空洞大对象中的写入顺序,将所述剩余小对象分别迁移至所述替换大对象对应的存储空间中;
删除所述空洞大对象。
本申请实施例提供的存储对象的处理装置能够实现上述存储对象的处理方法的实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
图6是本申请实施例提供的一种终端的结构图。如该图所示,该实施例的终端6包括:至少一个处理器60(图6中仅示出一个)、存储器61以及存储在所述存储器61中并可在所述至少一个处理器60上运行的计算机程序62,所述处理器60执行所述计算机程序62时实现上述任意各个方法实施例中的步骤。
所述终端6可包括,但不仅限于,处理器60、存储器61。本领域技术人员可以理解,图6仅仅是终端6的示例,并不构成对终端6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端还可以包括输入输出设备、网络接入设备、总线等。
所述处理器60可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器61可以是所述终端6的内部存储单元,例如终端6的硬盘或内存。所述存储器61也可以是所述终端6的外部存储设备,例如所述终端6上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器61还可以既包括所述终端6的内部存储单元也包括外部存储设备。所述存储器61用于存储所述计算机程序以及所述终端所需的其他程序和数据。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/终端和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序产品来实现,当计算机程序产品在终端上运行时,使得所述终端执行时实现可实现上述各个方法实施例中的步骤。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (10)

1.一种存储对象的处理方法,其特征在于,包括:
获取大对象队列中各个大对象的对象名,所述对象名对应于大对象的编号,各个所述大对象之间的编号依照时序排列;
基于所述对象名,依序对所述大对象队列中大对象的元数据进行访问,并从第一大对象的所述元数据中获取第一起始时间及第一末尾时间;其中,每一所述大对象的所述元数据中均包括起始时间及末尾时间,所述起始时间对应于首个小对象的写入时间,所述末尾时间对应于末个小对象的写入时间;
获取设定文件过期时间与所述第一起始时间及所述第一末尾时间之间的大小关系;
基于所述大小关系,判断所述第一大对象存储的小对象中是否存在过期小对象及判断与所述第一大对象的编号具有时序排列关系的第二大对象中是否存在过期小对象,得到判断结果;所述判断结果用于指示是否执行过期文件清除操作。
2.根据权利要求1所述的方法,其特征在于,所述获取大对象队列中各个大对象的对象名之前,还包括:
基于待存储小对象,在查询到当前可用大对象已经写满时,基于所述当前可用大对象的编号,构建得到目标对象名;
向对象集群申请所述目标对象名对应的目标大对象;所述目标对象名中包含所述目标大对象的编号,所述目标大对象的编号与所述当前可用大对象的编号依照时序排列;
将所述小对象写入至所述目标大对象对应的存储空间中。
3.根据权利要求1所述的方法,其特征在于,所述基于所述大小关系,判断所述第一大对象存储的小对象中是否存在过期小对象及判断与所述第一大对象的编号具有时序排列关系的第二大对象中是否存在过期小对象,得到判断结果,包括:
若所述大小关系为所述设定文件过期时间早于所述第一起始时间,则判断所述第一大对象存储的小对象中不存在过期小对象;
及,依据编号间的时序排列关系,获取编号所对应时间等于或晚于所述第一大对象的编号所对应时间的至少一个所述第二大对象;
判断所述第二大对象中不存在所述过期小对象。
4.根据权利要求1所述的方法,其特征在于,所述基于所述大小关系,判断所述第一大对象存储的小对象中是否存在过期小对象及判断与所述第一大对象的编号具有时序排列关系的第二大对象中是否存在过期小对象,得到判断结果,包括:
若所述大小关系为所述设定文件过期时间处于所述第一起始时间与所述第一末尾时间对应的时间范围内,则依照小对象的写入顺序,依次判断所述第一大对象中小对象的写入时间是否晚于所述设定文件过期时间;
在从所述第一大对象中确定出写入时间不晚于所述设定文件过期时间的第一小对象时,将所述第一小对象及所述第一大对象中写入时间早于所述第一小对象的第二小对象确定为过期小对象;
及,依据编号间的时序排列关系,获取编号所对应时间早于所述第一大对象的编号所对应时间的至少一个所述第二大对象;
判断所述第二大对象中的小对象均为过期小对象。
5.根据权利要求1所述的方法,其特征在于,所述基于所述大小关系,判断所述第一大对象存储的小对象中是否存在过期小对象及判断与所述第一大对象的编号具有时序排列关系的第二大对象中是否存在过期小对象,得到判断结果,包括:
若所述大小关系为所述设定文件过期时间处于所述第一起始时间与所述第一末尾时间对应的时间范围内,则依照小对象的写入顺序,依次判断所述第一大对象中小对象的写入时间是否晚于所述设定文件过期时间;
在从所述第一大对象中确定出写入时间晚于所述设定文件过期时间的第三小对象时,将所述第三小对象及所述第一大对象中写入时间晚于所述第三小对象的第四小对象确定为非过期小对象;
及,依据编号间的时序排列关系,获取编号所对应时间晚于所述第一大对象的编号所对应时间的至少一个所述第二大对象;
判断所述第二大对象中不存在所述过期小对象。
6.根据权利要求1所述的方法,其特征在于,所述元数据中还包括:具有标签信息的小对象的统计个数;所述基于所述大小关系,判断所述第一大对象存储的小对象中是否存在过期小对象及判断与所述第一大对象的编号具有时序排列关系的第二大对象中是否存在过期小对象,得到判断结果,包括:
若所述大小关系为所述设定文件过期时间晚于所述第一末尾时间,则判断所述统计个数是否为0;
当所述统计个数不为0时,依照小对象的写入顺序,从所述第一大对象中检测得到标签信息为过期标签的目标小对象,将所述目标小对象确定为过期小对象;
当所述统计个数为0时,则判断所述第二大对象中不存在所述过期小对象。
7.根据权利要求1所述的方法,其特征在于,所述元数据中还包括已用存储量;若所述判断结果指示执行所述过期文件清除操作,则在执行所述过期文件清除操作之后,还包括:
基于所述已用存储量,从所述大对象队列中获取存储利用率小于阈值的空洞大对象,所述空洞大对象所对应的存储空间中存储有至少一个剩余小对象;
向对象集群申请编号与所述空洞大对象一致的替换大对象,所述替换大对象所对应的空间存储量与所述剩余小对象的文件总量相等;
依照各个所述剩余小对象在所述空洞大对象中的写入顺序,将所述剩余小对象分别迁移至所述替换大对象对应的存储空间中;
删除所述空洞大对象。
8.一种存储对象的处理装置,其特征在于,包括:
第一获取模块,用于获取大对象队列中各个大对象的对象名,所述对象名对应于大对象的编号,各个所述大对象之间的编号依照时序排列;
第二获取模块,用于基于所述对象名,依序对所述大对象队列中大对象的元数据进行访问,并从第一大对象的所述元数据中获取第一起始时间及第一末尾时间;其中,每一所述大对象的所述元数据中均包括起始时间及末尾时间,所述起始时间对应于首个小对象的写入时间,所述末尾时间对应于末个小对象的写入时间;
第三获取模块,用于获取设定文件过期时间与所述第一起始时间及所述第一末尾时间之间的大小关系;
判断模块,用于基于所述大小关系,判断所述第一大对象存储的小对象中是否存在过期小对象及判断与所述第一大对象的编号具有时序排列关系的第二大对象中是否存在过期小对象,得到判断结果;所述判断结果用于指示是否执行过期文件清除操作。
9.一种终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述方法的步骤。
CN202210908976.3A 2022-07-29 2022-07-29 一种存储对象的处理方法、装置、终端及存储介质 Pending CN115878027A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210908976.3A CN115878027A (zh) 2022-07-29 2022-07-29 一种存储对象的处理方法、装置、终端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210908976.3A CN115878027A (zh) 2022-07-29 2022-07-29 一种存储对象的处理方法、装置、终端及存储介质

Publications (1)

Publication Number Publication Date
CN115878027A true CN115878027A (zh) 2023-03-31

Family

ID=85769563

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210908976.3A Pending CN115878027A (zh) 2022-07-29 2022-07-29 一种存储对象的处理方法、装置、终端及存储介质

Country Status (1)

Country Link
CN (1) CN115878027A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116643300A (zh) * 2023-07-25 2023-08-25 齐鲁空天信息研究院 基于地图映射的卫星导航数据分布式实时处理方法和系统
CN117033393A (zh) * 2023-10-08 2023-11-10 四川酷赛科技有限公司 一种基于人工智能的信息存储管理系统

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116643300A (zh) * 2023-07-25 2023-08-25 齐鲁空天信息研究院 基于地图映射的卫星导航数据分布式实时处理方法和系统
CN116643300B (zh) * 2023-07-25 2023-10-10 齐鲁空天信息研究院 基于地图映射的卫星导航数据分布式实时处理方法和系统
CN117033393A (zh) * 2023-10-08 2023-11-10 四川酷赛科技有限公司 一种基于人工智能的信息存储管理系统
CN117033393B (zh) * 2023-10-08 2023-12-12 四川酷赛科技有限公司 一种基于人工智能的信息存储管理系统

Similar Documents

Publication Publication Date Title
US11474972B2 (en) Metadata query method and apparatus
US11238098B2 (en) Heterogenous key-value sets in tree database
TWI719281B (zh) 用於串流選擇之系統、機器可讀媒體、及機器實施之方法
TWI702503B (zh) 實施用於維護操作之合併樹修改之系統、方法及電腦可讀媒體
TWI702506B (zh) 用於合併樹廢棄項目指標之系統、機器可讀媒體及機器實施之方法
CA2723731C (en) Managing storage of individually accessible data units
TW201841122A (zh) 鍵值儲存樹
WO2020041928A1 (zh) 数据存储方法、系统及终端设备
CN102629247B (zh) 一种数据处理方法、装置和系统
CN115878027A (zh) 一种存储对象的处理方法、装置、终端及存储介质
CN111090663B (zh) 事务并发控制方法、装置、终端设备及介质
CN109240607B (zh) 一种文件读取方法和装置
CN112148736B (zh) 缓存数据的方法、设备及存储介质
CN112328592A (zh) 数据存储方法、电子设备及计算机可读存储介质
US11853229B2 (en) Method and apparatus for updating cached information, device, and medium
CN103810114A (zh) 分配存储空间的方法及装置
JP3666907B2 (ja) データベース用ファイル格納管理システム
CN103714121A (zh) 一种索引记录的管理方法及装置
CN113779426A (zh) 数据存储方法、装置、终端设备及存储介质
CN107846327A (zh) 一种网管性能数据的处理方法及装置
CN115904211A (zh) 一种存储系统、数据处理方法及相关设备
CN110990394B (zh) 分布式面向列数据库表的行数统计方法、装置和存储介质
CN111782588A (zh) 一种文件读取方法、装置、设备和介质
CN112380174B (zh) 含删除文件的xfs文件系统解析方法、终端设备及存储介质
CN117009439B (zh) 数据处理方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination