CN115617762A - 文件存储方法及设备 - Google Patents

文件存储方法及设备 Download PDF

Info

Publication number
CN115617762A
CN115617762A CN202211156932.6A CN202211156932A CN115617762A CN 115617762 A CN115617762 A CN 115617762A CN 202211156932 A CN202211156932 A CN 202211156932A CN 115617762 A CN115617762 A CN 115617762A
Authority
CN
China
Prior art keywords
directory
file
target
stored
files
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
CN202211156932.6A
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.)
Hangzhou Hikvision Digital Technology Co Ltd
Original Assignee
Hangzhou Hikvision Digital Technology 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 Hangzhou Hikvision Digital Technology Co Ltd filed Critical Hangzhou Hikvision Digital Technology Co Ltd
Priority to CN202211156932.6A priority Critical patent/CN115617762A/zh
Publication of CN115617762A publication Critical patent/CN115617762A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/162Delete operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files

Abstract

本发明公开了一种文件存储方法及设备,所述方法包括:获取待存储文件的文件数量以及目录分层规则,目录分层规则包括各级目录的目录项数量上限和底层目录项的文件数量上限;计算得到目标层数,文件数量小于或等于层数为目标层数且符合所述目录分层规则的满目录结构的文件存储数量上限,并大于层数为目标层数减一层且符合目录分层规则的满目录结构的文件存储数量上限;创建层数为目标层数且符合目录分层规则的目标目录结构,将待存储文件存储至目标目录结构的底层目录项下,将各待存储文件的唯一标识与存储路径进行关联存储。本发明提出了一种基于多层目录结构的文件存储方案,提高了对所存储文件的访问效率。

Description

文件存储方法及设备
技术领域
本发明涉及文件系统技术领域,尤其涉及一种文件存储方法及设备。
背景技术
目前,文件系统在进行文件存储时,是将文件依次存储到对应的文件夹中,当文件夹中的文件达到一定的数量后,新增文件夹。这种方式将所有文件存储在同一层级的文件夹下,造成同一层级下文件夹数量线性增大,导致对文件进行访问时访问效率低的问题。
发明内容
本发明的主要目的在于提供一种文件存储方法及设备,旨在提出一种基于多层目录结构的文件存储方案,以提高对所存储的文件的访问效率。
为实现上述目的,本发明提供一种文件存储方法,所述方法包括以下步骤:
获取待存储文件的文件数量,以及获取目录分层规则,其中,所述目录分层规则包括各级目录分别对应的目录项数量上限和各个底层目录项分别对应的第一文件存储数量上限,所述底层目录项为各级目录中最底层级目录下的目录项;
根据所述文件数量和所述目录分层规则计算得到目标层数,其中,所述文件数量小于或等于第二文件存储数量上限,且大于第三文件存储数量上限,所述第二文件存储数量上限是层数为所述目标层数,且符合所述目录分层规则的满目录结构的文件存储数量上限,所述第三文件存储数量上限是层数为所述目标层数减一层,且符合所述目录分层规则的满目录结构的文件存储数量上限;
创建层数为所述目标层数且符合所述目录分层规则的目标目录结构,并将所述待存储文件存储至所述目标目录结构的底层目录项下,以及将各所述待存储文件的唯一标识与在所述目标目录结构中的存储路径进行关联存储。
可选地,所述文件存储方法应用于文件存储系统,所述获取待存储文件的文件数量的步骤之前,还包括:
当所述文件存储系统首次启动后第一次接收到文件时,将所接收到的文件作为所述待存储文件;或,
每当所述文件存储系统接收到文件时,将所述文件存储系统中已存储的文件和所接收到的文件作为所述待存储文件;或,
每当所述文件存储系统接收到文件时,将所述接收到的文件作为所述待存储文件。
可选地,所述创建层数为所述目标层数且符合所述目录分层规则的目标目录结构,并将所述待存储文件存储至所述目标目录结构的底层目录项下的步骤包括:
创建层数为所述目标层数、符合所述目录分层规则且文件存储数量上限与所述文件数量相等的目标目录结构,并将所述待存储文件存储至所述目标目录结构的底层目录项下。
可选地,所述将各所述待存储文件的唯一标识与在所述目标目录结构中的存储路径进行关联存储的步骤之后,还包括:
当在所述目标目录结构中新增文件后,检测所述目标目录结构中当前所存储的文件数量是否大于新增目录层数触发阈值,其中,所述新增目录层数触发阈值根据第四文件存储数量上限确定,所述第四文件存储数量上限是层数为所述目标目录结构的当前目录层数,且符合所述目录分层规则的满目录结构的文件存储数量上限;
若大于,则按照所述目录分层规则针对所述目标目录结构的当前底层目录项新建子目录项,并将所述当前底层目录项下存储的文件转移到新建的子目录项下,更新被转移的文件的唯一标识所关联存储的存储路径。
可选地,所述检测所述目标目录结构中当前所存储的文件数量是否大于新增目录层数触发阈值的步骤之前,还包括:
当在所述目标目录结构中新增文件后,计算所述第四文件存储数量上限;
将所述第四文件存储数量上限乘以第一预设占比得到所述新增目录层数触发阈值。
可选地,所述按照所述目录分层规则针对所述目标目录结构的当前底层目录项新建子目录项,并将所述当前底层目录项下存储的文件转移到新建的子目录项下的步骤包括:
按照所述目录分层规则针对所述目标目录结构的当前底层目录项新建目标数量的子目录项,其中,所述目标目录结构中当前所存储的文件数量小于或等于所述目标数量的子目录项的文件存储数量上限,且大于所述目标数量减一个数的子目录项的文件存储数量上限;
将所述当前底层目录项下存储的文件转移到新建的子目录项下。
可选地,所述将各所述待存储文件的唯一标识与在所述目标目录结构中的存储路径进行关联存储的步骤之后,还包括:
当在所述目标目录结构中删除文件后,检测所述目标目录结构中当前所存储的文件数量是否小于减少目录层数触发阈值,其中,所述减少目录层数触发阈值根据第五文件存储数量上限确定,所述第五文件存储数量上限是层数为所述目标目录结构的当前目录层数减一层,且符合所述目录分层规则的满目录结构的文件存储数量上限,所述当前目录层数大于1;
若小于,则将所述目标目录结构的当前底层目录项下存储的文件转移至所述目标目录结构倒数第二层的目录项下,转移后删除所述目标目录结构中未存储文件的空目录项,并更新被转移的文件的唯一标识所关联存储的存储路径。
可选地,所述将所述目标目录结构的当前底层目录项下存储的文件转移至所述目标目录结构倒数第二层的目录项下的步骤包括:
将所述目标目录结构的当前底层目录项下存储的文件按照转移规则转移至所述目标目录结构倒数第二层的目录项下,其中,所述转移规则包括每存储满一个目录项才开始在另一个目录项下进行存储。
可选地,所述将各所述待存储文件的唯一标识与在所述目标目录结构中的存储路径进行关联存储的步骤之后,还包括:
当检测到需要对所述目标目录结构的目录层数进行调整的触发事件时,检测系统是否处于预设空闲状态;
若处于预设空闲状态,则根据所述触发事件调整所述目标目录结构的目录层数;
若未处于预设空闲状态,则使用系统总资源的第二预设占比的资源根据所述触发事件调整所述目标目录结构的目录层数。
可选地,所述将各所述待存储文件的唯一标识与在所述目标目录结构中的存储路径进行关联存储的步骤之后,还包括:
从所述目标目录结构存储的各个文件中确定最后访问时间在预设时间之前的目标历史文件;
将各所述目标历史文件从所述目标目录结构中取出并压缩为一个压缩文件;
将所述压缩文件作为新增文件存储至所述目标目录结构的底层目录项下。
为实现上述目的,本发明还提供一种文件存储设备,所述文件存储设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的文件存储程序,所述文件存储程序被所述处理器执行时实现如上所述的文件存储方法的步骤。
此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有文件存储程序,所述文件存储程序被处理器执行时实现如上所述的文件存储方法的步骤。
本发明实施例中通过根据待存储文件的文件数量和目录分层规则确定目标层数,构建目标层数的符合该目录分层规则的目标目录结构,将待存储文件存储至该目标目录结构的底层目录项下,并将待存储文件的唯一标识与在目标目录结构中的存储路径进行关联存储,实现了一种基于多层目录结构的文件存储方案。相比于将所有文件存储在同一层级的文件夹下,文件夹数量较多导致文件访问效率低,本发明实施例中基于多层目录结构的文件存储方案中同一层级下目录项数量大大减少,从而提高了对所存储的文件进行访问的访问效率。并且,有些文件系统中存在子目录项数量上限,当将所有文件存储在同一层级的文件夹下时,文件夹的数量可能会达到上限而导致同一文件夹中的文件数量无限增加,进而导致文件的访问效率下降,而本实施例中基于多层目录结构的文件存储方案,能够按照目录分层规则纵向扩展目录项,可创建的目录项的数量没有上限,从而不会导致同一目录项下的文件数量无限增加,进而能够提升文件的访问效率。
附图说明
图1为本发明实施例方案涉及的硬件运行环境的结构示意图;
图2为本发明文件存储方法第一实施例的流程示意图;
图3为本发明实施例涉及的一种多层目录结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。
需要说明的是,本发明实施例文件存储设备可以是智能手机、个人计算机、服务器等设备,在此不做具体限制。
如图1所示,该文件存储设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的设备结构并不构成对文件存储设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及文件存储程序。操作系统是管理和控制设备硬件和软件资源的程序,支持文件存储程序以及其它软件或程序的运行。在图1所示的设备中,用户接口1003主要用于与客户端进行数据通信;网络接口1004主要用于与服务器建立通信连接;而处理器1001可以用于调用存储器1005中存储的文件存储程序,并执行以下操作:
获取待存储文件的文件数量,以及获取目录分层规则,其中,所述目录分层规则包括各级目录分别对应的目录项数量上限和各个底层目录项分别对应的第一文件存储数量上限,所述底层目录项为各级目录中最底层级目录下的目录项;
根据所述文件数量和所述目录分层规则计算得到目标层数,其中,所述文件数量小于或等于第二文件存储数量上限,且大于第三文件存储数量上限,所述第二文件存储数量上限是层数为所述目标层数,且符合所述目录分层规则的满目录结构的文件存储数量上限,所述第三文件存储数量上限是层数为所述目标层数减一层,且符合所述目录分层规则的满目录结构的文件存储数量上限;
创建层数为所述目标层数且符合所述目录分层规则的目标目录结构,并将所述待存储文件存储至所述目标目录结构的底层目录项下,以及将各所述待存储文件的唯一标识与在所述目标目录结构中的存储路径进行关联存储。
进一步地,所述获取待存储文件的文件数量的步骤之前,处理器1001还可以用于调用存储器1005中存储的文件存储程序,执行以下操作:
当文件存储系统首次启动后第一次接收到文件时,将所接收到的文件作为所述待存储文件;或,
每当所述文件存储系统接收到文件时,将所述文件存储系统中已存储的文件和所接收到的文件作为所述待存储文件;或,
每当所述文件存储系统接收到文件时,将所述接收到的文件作为所述待存储文件。
进一步地,所述创建层数为所述目标层数且符合所述目录分层规则的目标目录结构,并将所述待存储文件存储至所述目标目录结构的底层目录项下的操作包括:
创建层数为所述目标层数、符合所述目录分层规则且文件存储数量上限与所述文件数量相等的目标目录结构,并将所述待存储文件存储至所述目标目录结构的底层目录项下。
进一步地,所述将各所述待存储文件的唯一标识与在所述目标目录结构中的存储路径进行关联存储的操作之后,处理器1001还可以用于调用存储器1005中存储的文件存储程序,执行以下操作:
当在所述目标目录结构中新增文件后,检测所述目标目录结构中当前所存储的文件数量是否大于新增目录层数触发阈值,其中,所述新增目录层数触发阈值根据第四文件存储数量上限确定,所述第四文件存储数量上限是层数为所述目标目录结构的当前目录层数,且符合所述目录分层规则的满目录结构的文件存储数量上限;
若大于,则按照所述目录分层规则针对所述目标目录结构的当前底层目录项新建子目录项,并将所述当前底层目录项下存储的文件转移到新建的子目录项下,更新被转移的文件的唯一标识所关联存储的存储路径。
进一步地,所述检测所述目标目录结构中当前所存储的文件数量是否大于新增目录层数触发阈值的操作之前,处理器1001还可以用于调用存储器1005中存储的文件存储程序,执行以下操作:
当在所述目标目录结构中新增文件后,计算所述第四文件存储数量上限;
将所述第四文件存储数量上限乘以第一预设占比得到所述新增目录层数触发阈值。
进一步地,所述按照所述目录分层规则针对所述目标目录结构的当前底层目录项新建子目录项,并将所述当前底层目录项下存储的文件转移到新建的子目录项下的操作包括:
按照所述目录分层规则针对所述目标目录结构的当前底层目录项新建目标数量的子目录项,其中,所述目标目录结构中当前所存储的文件数量小于或等于所述目标数量的子目录项的文件存储数量上限,且大于所述目标数量减一个数的子目录项的文件存储数量上限;
将所述当前底层目录项下存储的文件转移到新建的子目录项下。
进一步地,所述将各所述待存储文件的唯一标识与在所述目标目录结构中的存储路径进行关联存储的操作之后,处理器1001还可以用于调用存储器1005中存储的文件存储程序,执行以下操作:
当在所述目标目录结构中删除文件后,检测所述目标目录结构中当前所存储的文件数量是否小于减少目录层数触发阈值,其中,所述减少目录层数触发阈值根据第五文件存储数量上限确定,所述第五文件存储数量上限是层数为所述目标目录结构的当前目录层数减一层,且符合所述目录分层规则的满目录结构的文件存储数量上限,所述当前目录层数大于1;
若小于,则将所述目标目录结构的当前底层目录项下存储的文件转移至所述目标目录结构倒数第二层的目录项下,转移后删除所述目标目录结构中未存储文件的空目录项,并更新被转移的文件的唯一标识所关联存储的存储路径。
进一步地,所述将所述目标目录结构的当前底层目录项下存储的文件转移至所述目标目录结构倒数第二层的目录项下的操作包括:
将所述目标目录结构的当前底层目录项下存储的文件按照转移规则依次转移至所述目标目录结构倒数第二层的目录项下,其中,所述转移规则包括每存储满一个目录项才开始在另一个目录项下进行存储。
进一步地,所述将各所述待存储文件的唯一标识与在所述目标目录结构中的存储路径进行关联存储的操作之后,处理器1001还可以用于调用存储器1005中存储的文件存储程序,执行以下操作:
当检测到需要对所述目标目录结构的目录层数进行调整的触发事件时,检测系统是否处于预设空闲状态;
若处于预设空闲状态,则根据所述触发事件调整所述目标目录结构的目录层数;
若未处于预设空闲状态,则使用系统总资源的第二预设占比的资源根据所述触发事件调整所述目标目录结构的目录层数。
进一步地,所述将各所述待存储文件的唯一标识与在所述目标目录结构中的存储路径进行关联存储的操作之后,处理器1001还可以用于调用存储器1005中存储的文件存储程序,执行以下操作:
从所述目标目录结构存储的各个文件中确定最后访问时间在预设时间之前的目标历史文件;
将各所述目标历史文件从所述目标目录结构中取出并压缩为一个压缩文件;
将所述压缩文件作为新增文件存储至所述目标目录结构的底层目录项下。
基于上述的结构,提出文件存储方法的各个实施例。
参照图2,图2为本发明文件存储方法第一实施例的流程示意图。
本发明实施例提供了文件存储方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。在本实施例中,文件存储方法的执行主体可以是智能手机、个人电脑、服务器等设备,在本实施例中并不做限制。在本实施例中,省略执行主体进行阐述。在本实施例中,所述文件存储方法包括以下步骤:
步骤S10,获取待存储文件的文件数量,以及获取目录分层规则,其中,所述目录分层规则包括各级目录分别对应的目录项数量上限和各个底层目录项分别对应的第一文件存储数量上限,所述底层目录项为各级目录中最底层级目录下的目录项;
为解决目前文件存储系统存储文件时将文件存储在同一层级的文件夹下,导致文件数量过多时文件访问效率低的问题,提出将文件按照多层目录结构存储,以提高对所存储的文件进行访问时的访问效率。
目录结构是包括至少一个层级的目录的结构,每级目录包括至少一个目录项,最底层级的目录项用于存储文件,将除最底层级的目录项以外的其他层级的目录项称为上层目录项,上层目录项下不存储文件而是存储子目录项,该子目录项是该上层目录项所在层级的下一层级的目录项。例如,当目录结构的层数为1时,该目录结构包括一级目录,该级目录包括至少一个目录项,该目录项下用于存储文件,也即,该目录项属于最底层级的目录项;当目录结构的层数为2时,该目录结构包括两级目录,第一级目录包括至少一个目录项(属于上层目录项),第二级目录包括第一级目录中至少一个目录项的至少一个子目录项,该子目录项下用于存储文件,也即,该子目录项属于最底层级的目录项;依次类推。如图3示出了2层的目录结构,图中的1.1和1.1024是第一级目录所包括的2个目录项(中间省略号部分省略了第一级目录包括的其他目录项),第一级目录所包括的各个目录项属于上层目录项,其下存储的是子目录项,也即第二级目录所包括的目录项,例如图中1.1这个目录项下存储的是2.1-1、2.1-2……2.1-1024这些第二级目录所包括的目录项,1.1024这个目录项所包括的子目录项未在图中示出,但是可以理解的是,1.1024这个目录项下的子目录项也属于第二级目录;第二级目录所包括的各个目录项属于最底层级的目录项,其下存储的是文件,例如,图中示出了2.1-2这个第二级目录中的目录项下存储的1、2、3、……1024个文件,并示出了在第二级目录下存储的文件。
待存储文件是需要通过新创建目录结构来存储的文件,在具体应用场景中,可以根据需要设置触发条件,以在满足触发条件时,将相应的文件作为待存储文件。例如,当本实施例中文件存储方法执行主体是文件存储系统时,在一实施方式中,可以在文件存储系统首次启动后第一次接收到文件时,触发将所接收到的文件作为待存储文件,也即,在首次启动后第一次接收到文件时,才创建目录结构来存储所接收到的文件,文件存储系统后续所接收到的文件则不再通过新创建目录结构来存储,可以通过其它方式存储或者是作为新增文件存储至已创建的该目录结构中;在另一实施方式中,可以在每当文件存储系统接收到文件时,触发将文件存储系统中已存储的文件和所接收到的文件都作为待存储文件,也即,每次接收到文件时,都将文件存储系统中已存储的文件和接收到的文件通过新创建一个目录结构来存储,之前创建的目录结构则可以删除;在另一实施方式中,也可以是在每当文件存储系统接收到文件时,将所接收到的文件作为待存储文件,也即,文件存储系统每接收到新的文件时,都通过新创建一个目录结构来存储。
本实施例中,对于待存储文件,可以创建相应层数的目录结构来存储待存储文件。为确定所需创建的目录结构的层数,可以获取待存储文件的文件数量,以及获取目录分层规则。其中,目录分层规则包括各级目录分别对应的目录项数量上限和各个底层目录项分别对应的文件存储数量上限(以下称为第一文件存储数量上限以示区分)。各级目录分别对应的目录项数量上限即各级目录所能够创建的目录项的数量的上限,底层目录项对应的文件存储数量上限即底层目录项下所能够存储的文件的数量的上限。
其中,根据具体应用场景不同,待存储文件的文件数量可能是1,也可能是大于1的数。
可以理解的是,在获取到目录分层规则后,对于任意层数的目录结构,都可以计算出该目录结构的文件存储数量上限。例如,当目录分层规则中规定目录结构中第P级目录的目录项数量上限为1024的P次方(也即,第一级目录所能创建的目录项为1024个,除第一级以外的各级非底层目录中的目录项下所能创建的子目录项为1024个),每个底层目录项的第一文件存储数量上限均为1024个时,按照该目录分层规则构建的2层的满目录结构的底层目录项个数为1024*1024个,所能够存放的文件总数量为1024*1024*1024个。其中,需要解释的是,满目录结构是一种目录结构,该目录结构的各级目录中的目录项数量都达到了目录分层规则中规定的目录项数量上限;那么相对而言的,当一种目录结构的至少一级目录中的目录项数量未达到目录分层规则中规定的该级目录的目录项数量上限时,该目录结构就不能够称为满目录结构。
需要说明的是,目录分层规则中各级目录的目录项下最多能创建的子目录项数量(也即子目录项数量上限)可以相同也可以不同,各个底层目录项的第一文件存储数量上限可以相同也可以不同,在本实施例中并不做限制。
步骤S20,根据所述文件数量和所述目录分层规则计算得到目标层数,其中,所述文件数量小于或等于第二文件存储数量上限,且大于第三文件存储数量上限,所述第二文件存储数量上限是层数为所述目标层数,且符合所述目录分层规则的满目录结构的文件存储数量上限,所述第三文件存储数量上限是层数为所述目标层数减一层,且符合所述目录分层规则的满目录结构的文件存储数量上限;
根据待存储文件的文件数量和目录分层规则可以计算得到一个目标层数,使得待存储文件的文件数量小于或等于第二文件存储数量上限,且大于第三文件存储数量上限,该第二文件存储数量上限是层数为该目标层数,且符合该目录分层规则的满目录结构的文件存储数量上限,该第三文件存储数量上限是层数为该目录层数减一层且符合该目录分层规则的满目录结构的文件存储数量上限。也即,符合目录分层规则的P-1层的满目录结构存储不下待存储文件,而符合目录分层规则的P层的满目录结构能够刚好存储下待存储文件或在存储下待存储文件后还有多余存储空间时,那么,可以建立P层的目录结构来存储待存储文件。这样能够使得既能够将待存储文件全部存储,又避免创建过多了目录项而导致占用存储空间。
需要说明的是,符合目录分层规则的目录结构是指该目标结构中各级目录下的目录项数量不超过该目录分层规则中规定的对应层级目录的目录项数量上限,且该目录结构中底层目录项存放的文件数量不超过该目录分层规则中规定的底层目录项的第一文件存储数量上限。
在本实施例中,对于根据待存储文件的文件数量和目录分层规则计算目标层数的方法并不做限。例如可以预先计算得到各种层数的符合目录分层规则的满目录结构所能够存储的文件总数量,再与待存储文件的文件数量进行比较确定目标层数。又如,当待存储文件的文件数量为N(N>0且为正整数),目录分层规则中规定第i级目录的目录项数量上限为xn的i次方,每个底层目录项的第二文件存储数量上述均为xn个时,可以先按照xm=N计算出m,再将m除以n,向上取整得到目标层数P。
步骤S30,创建层数为所述目标层数且符合所述目录分层规则的目标目录结构,并将所述待存储文件存储至所述目标目录结构的底层目录项下,以及将各所述待存储文件的唯一标识与在所述目标目录结构中的存储路径进行关联存储。
在确定目标层数后,可以创建层数为目标层数且符合目录分层规则的目录结构(以下称为目标目录结构以示区分),将待存储文件存储至该目标目录结构的底层目录项下。需要说明的是,目标目录结构可以是满目录结构也可以不是满目录结构,在本实施例中并不做限制。可以在创建目标目录结构的同时存储待存储文件,也可以在创建完目标目录结构后才存储待存储文件,在本实施例中并不做限制。
每个文件都带有预先编排的唯一标识,在将待存储文件存储到目标目录结构中后,将其唯一标识与在目标目录结构中的存储路径进行关联存储。唯一标识与存储路径进行关联存储的存储位置在本实施例中并不做限制,例如可以是存储在一个独立的路径表中。
根据需要访问的文件的唯一标识可以找到与其关联存储的存储路径,进而按照该存储路径去目标目录结构中查找并访问文件。
可以理解的是,本实施例中通过根据待存储文件的文件数量和目录分层规则确定目标层数,构建目标层数的符合该目录分层规则的目标目录结构,将待存储文件存储至该目标目录结构的底层目录项下,并将待存储文件的唯一标识与在目标目录结构中的存储路径进行关联存储,实现了一种基于多层目录结构的文件存储方案。相比于将所有文件存储在同一层级的文件夹下,文件夹数量较多导致文件访问效率低,本实施例中基于多层目录结构的文件存储方案中同一层级下目录项数量大大减少,从而提高了对所存储的文件进行访问的访问效率。并且,有些文件系统中存在子目录项数量上限,当将所有文件存储在同一层级的文件夹下时,文件夹的数量可能会达到上限而导致同一文件夹中的文件数量无限增加,进而导致文件的访问效率下降,而本实施例中基于多层目录结构的文件存储方案,能够按照目录分层规则纵向扩展目录项,可创建的目录项的数量没有上限,从而不会导致同一目录项下的文件数量无限增加,进而能够提升文件的访问效率。
进一步地,在一实施方式中,当在构建目标目录结构并将待存储文件存储至目标目录结构之后,检测到需要存储至目标目录结构中的新增文件时,可以在目标目录结构中存在没有存满文件的底层目录项的情况下,将新增文件存储在该底层目录项下;在目标目录结构中没有未存满文件的底层目录项,但存在没有建满子目录项的目录项的情况下,新建该目录项的子目录项,再将新增文件存储至新建的底层目录项下;在目标目录结构中没有未存满文件的底层目录项且没有未建满子目录项的目录项的情况下,可以增加目标目录结构的目录层数,具体可以是针对目标目录结构的底层目录项新建子目录项,再将各个底层目录项中存储的文件转移至新建的子目录项下,以将新建的子目录项作为新的底层目录项,从而增加目录层数。
需要说明的是,在目标目录结构创建后,后续因新增文件、删除文件或其他原因对目标目录结构的层数或目录项进行增加或减少,都是属于对目标目录结构进行调整,而不是建立了一个新的目录结构,也即,对目标目录结构进行层数或目录项的增加或减少后,该目录结构仍然还是称为目标目录结构。
进一步地,在一实施方式中,所述步骤S30中创建层数为所述目标层数且符合所述目录分层规则的目标目录结构,并将所述待存储文件存储至所述目标目录结构的底层目录项下的步骤包括:
步骤S301,创建层数为所述目标层数、符合所述目录分层规则且文件存储数量上限与所述文件数量相等的目标目录结构,并将所述待存储文件存储至所述目标目录结构的底层目录项下。
在本实施方式中,为了避免在构建目录结构时因构建空目录项而浪费存储空间,可以根据待存储文件的文件数量的情况,创建能够刚好存储该数量的文件的目标目录结构,在具体实施方式中,可以先创建目标目录结构后再存储待存储文件,也可以一边创建一边存储。
例如,在一实施方式中,可以按照目录构建规则来计算出层数为目标层数、符合目录分层规则且文件存储数量上限与待存储文件的文件数量相等的目录结构中,各级目录所需创建的目标目录项数量以及各个底层目录项所需存放的目标文件数量;其中,目录构建规则是至多只有一个层级的目录项数量未达到目录分层规则所规定的该层级目录的目录项数量上限,且至多只有一个底层目录项所存放的文件未达到目录分层规则所规定的第二文件存储数量上限;计算上述目标目录项数量和目标文件数量的具体计算方法有很多种,在此并不做限制;根据上述目标目录项数量和目标文件数量来构建目标目录结构,再将待存储文件存储至目标目录结构中。
又如,在另一实施方式中,可以对将待存储文件按照存储规则依次存储;其中,存储规则是每存储满一个底层目录项时才构建下一个底层目录项,每构建满一个非底层目录项的子目录项时才开始构建该非底层目录项同层级的其他非底层目录项的子目录项。假设待存储文件的文件数量为5,第一层级目录的目录项数量上限为2,第二层级目录的目录项数量上限为4,每个底层目录项的第二文件存储数量上限均为2,那么,计算得到的目标层数是2;先创建第一级目录的第一个目录项1.1,再创建第二级目录中该1.1目录项的第一个子目录项2.1-1,将第一个文件和第二个文件存储在2.1-1目录项下;再创建该1-1目录项的第二个子目录项2.1-2,将第三个文件和第四个文件存储在2.1-2目录项下;再创建第一级目录的第二个目录项1.2,创建第二级目录中该1.2目录项下的第一个子目录项2.2-1,将第五个文件存储在2.2-1目录项下;此时,所创建的目录结构中第二层级目录下只有3个目录项,还没有达到目录分层规则中规定的第二层级目录的目录项数量上限4,因此不存在空目录项的情况,当待存储文件的文件数量很大时,能够极大地减少空目录项的数量,从而避免浪费存储空间。
进一步地,在一实施方式中,所述步骤S30之后,还包括:
步骤S40,从所述目标目录结构存储的各个文件中确定最后访问时间在预设时间之前的目标历史文件;
在本实施方式中,可以在每次访问目标目录结构中存储的文件时,记录该文件的最后访问时间。定期地或接收到文件压缩指令时,从目标目录结构存储的各个文件中确定最后访问时间在预设时间之前的文件(以下称为目标历史文件)。其中,预设时间可以根据需要预先进行设置,文件最后访问时间在该预设时间之前说明该文件很久没有被访问过了。
步骤S50,将各所述目标历史文件从所述目标目录结构中取出并压缩为一个压缩文件;
将目标历史文件从目标目录结构中取出并压缩为一个压缩文件。压缩方法在本实施例中并不做限制。可以理解的是,将目标历史文件从目标目录结构中取出后目标目录结构中就不再存储有刚刚目标历史文件了。
步骤S60,将所述压缩文件作为新增文件存储至所述目标目录结构的底层目录项下。
将压缩文件作为新增文件存储至目标目录结构的底层目录项下。具体可以参照上述关于存储新增文件的具体实施方式来进行存储。
进一步地,在一实施方式中,在将目标历史文件打包成一个压缩文件存储后,可以查找目标目录结构中是否有空目录项,若有空目录项,则可以删除该空目录项,以减少对存储空间的占用。
基于上述第一实施例,提出本发明文件存储方法第二实施例,在本实施例中,所述步骤S30之后,还包括:
步骤A10,当在所述目标目录结构中新增文件后,检测所述目标目录结构中当前所存储的文件数量是否大于新增目录层数触发阈值,其中,所述新增目录层数触发阈值根据第四文件存储数量上限确定,所述第四文件存储数量上限是层数为所述目标目录结构的当前目录层数,且符合所述目录分层规则的满目录结构的文件存储数量上限;
在本实施例中,可以在目标目录结构中新增文件后,根据文件数量的变动情况,动态地增加目标目录结构的目录层数,在不增加单个目录项的子目录项数量上限和单个底层目录项的第二文件存储数量上限的情况下,扩展目标目录结构的文件存储数量上限,以保证文件访问效率。
具体地,当在目标目录结构中新增文件后,可以检测目标目录结构中当前所存储的文件数量是否大于新增目录层数触发阈值。其中,新增目录层数触发阈值可以根据第四文件存储数量上限确定,第四文件存储数量上限是层数为该目标目录结构的当前目录层数且符合目录分层规则的满目录结构的文件存储数量上限。在具体实施方式中,新增目录层数触发阈值可以是直接采用该第四文件存储数量,也即,当目标目录结构本身就是满目录结构且所有的底层目录项都已存满时,需要新增一层目录以存储更多的文件;新增目录层数触发阈值也可以是采用该第四文件存储数量来计算得到的,例如乘以一个占比,也即,当目标目录结构所存储的文件数量快要达到该目标目录结构的当前目录层数对应的满目录结构的文件存储数量上限时,新增一层目录以应对后续可能会出现的更多的新增文件。
步骤A20,若大于,则按照所述目录分层规则针对所述目标目录结构的当前底层目录项新建子目录项,并将所述当前底层目录项下存储的文件转移到新建的子目录项下,更新被转移的文件的唯一标识所关联存储的存储路径。
在确定目标目录结构中当前所存储的文件数量大于新增目录层数触发阈值时,可以按照目录分层规则针对目标目录结构的当前底层目录项新建子目录项,也即,针对当前底层目录项新建的子目录项的数量应在目录分层规则规定的当前底层目录项所处层级的下一层级目录所能够创建的目录项数量之内。
将当前底层目录项下存储的文件转移到新建的子目录项下。在本实施例中,并不限制针对哪一个当前底层目录项构建子目录项,也不限制针对当前底层目录项构建几个子目录项,只要所构建的子目录项能够存储下当前目标目录结构中所存储的所有文件即可。在一些实施方式中,可以按照一定的规则来转移文件,以最少的子目录项存储下所有的文件,避免创建多余的目录项占用存储空间。
在将当前底层目录项下存储的文件转移到新建的子目录项下后,更新被转移的文件的唯一标识所关联存储的存储路径,以使得文件被转移后仍然能够根据其唯一标识在目标目录结构中找到该文件。
可以理解的是,在将当前底层目录项下存储的文件转移到新建的子目录项下后,当前底层目录项不再是底层目录项,而是倒数第二层的目录项,新建的子目录项变为了底层目录项。
进一步地,在一实施方式中,所述步骤A10之前,还包括:
步骤A30,当在所述目标目录结构中新增文件后,计算所述第四文件存储数量上限;
步骤A40,将所述第四文件存储数量上限乘以第一预设占比得到所述新增目录层数触发阈值。
当在目标目录结构中新增文件后,可以计算层数为目标目录结构的当前目录层数且符合目录分层规则的满目录结构的文件存储数量上限,也即计算第四文件存储数量上限。计算方法在此不做赘述。将第四文件存储数量上限乘以第一预设占比,得到的结果作为新增目录层数触发阈值。其中,第一预设占比可以预先根据需要进行设置,例如设置为90%;或者也可以动态地进行调整。该第一预设占比小于1,以使得当目标目录结构当前所存储的文件大于目标文件总数量乘以该第一预设占比的结果时,表明当目标目录结构所存储的文件数量快要达到该目标目录结构的当前目录层数对应的满目录结构的文件存储数量上限,为避免有大量新增文件来临时来不及增加目录层数而导致文件存储效率降低,提前先新增目录层数。可以理解的是,当第一预设占比越小时,避免有大量新增文件来临时来不及增加目录层数而导致文件存储效率降低可能性越大,反之则越小。
在具体实施方式中,可以根据新增文件的数量变化趋势来动态调整第一预设占比。例如,第一预设占比可以预先初始化;将最近预设时长的一个时段划分为时长相同的第一时段和第二时长,第一时段早于第二时段,统计第一时段内新增文件的第一数量和第二时段内新增文件的第二数量,将第二数量减去第一数量后除以第一数量,得到新增文件的数量增长比例;若该数量增长比例大于0,将当前的第一预设占比按照该数量增长比例进行减小;若该数量增长比例小于0,则将当前的第一预设占比按照该数量增长比例的绝对值进行增大。
进一步地,在一实施方式中,所述步骤A20包括:
步骤A201,按照所述目录分层规则针对所述目标目录结构的当前底层目录项新建目标数量的子目录项,其中,所述目标目录结构中当前所存储的文件数量小于或等于所述目标数量的子目录项的文件存储数量上限,且大于所述目标数量减一个数的子目录项的文件存储数量上限;
在本实施方式中,在需要增加目录层数时,按照目录分层规则针对目标目录结构的当前底层目录项新建目标数量的子目录项。其中,目标数量是根据目标目录结构中当前所存储的文件数量和目录分层规则中规定的底层目录项的第二文件存储数量上限来计算得到的,使得目标目录结构中当前所存储的文件数量小于或等于目标数量的子目录项的文件存储数量上限,且大于目标数量减一个数的子目录项的文件存储数量上限,以避免新建空目录项浪费存储空间。也即,假设目标数量为x,那么目标目录结构中当前存储的文件数量小于或等于x个子目录项作为底层目录项时的文件存储数量上限,且大于x-1个子目录项作为底层目录项时的文件存储数量上限。
步骤A202,将所述当前底层目录项下存储的文件转移到新建的子目录项下。
将当前底层目录项下存储的文件转移到新建的子目录项下,具体转移方法在此并不做限制。
在一实施方式中,可以依次针对目标目录结构中的各个底层目录项创建子目录项,并且,在一个子目录项存储满文件后,才开始创建下一个子目录项,以及在一个底层目录项创建满子目录项后,才针对另一个底层目录项创建子目录项,从而避免创建多余的目录项,避免浪费存储空间。进一步地,在一实施方式中,可以按照目标目录结构中各个底层目录项的创建时间先后顺序来为依次针对各个底层目录项创建子目录项,也即,可以先针对创建时间早的底层目录项创建子目录项。
进一步地,基于上述第一和/或第二实施例,提出本发明文件存储方法第三实施例,在本实施例中,所述步骤S30之后,还包括:
步骤B10,当在所述目标目录结构中删除文件后,检测所述目标目录结构中当前所存储的文件数量是否小于减少目录层数触发阈值,其中,其中,所述减少目录层数触发阈值根据第五文件存储数量上限确定,所述第五文件存储数量上限是层数为所述目标目录结构的当前目录层数减一层,且符合所述目录分层规则的满目录结构的文件存储数量上限,所述当前目录层数大于1;
在本实施例中,可以在目标目录结构中删除文件后,根据文件数量的变动情况,动态地减少目标目录结构的目录层数,以减少空目录的数量,从而避免浪费存储空间。
具体地,当在目标目录结构中删除文件后,可以检测目标目录结构中当前所存储的文件数量是否小于减少目录层数触发阈值。其中,减少目录层数触发阈值可以根据第五文件存储数量上限来确定,第五文件存储数量上限是层数为该目标目录结构的当前目录层数减一层且符合目录分层规则的满目录结构的文件存储数量上限。在具体实施方式中,减少目录层数触发阈值可以是直接采用第五文件存储数量上限,也即,当比目标目录结构少一层的目录结构都能够存放下当前所存放的文件时,说明目标目录结构中当前存在很多的空目录项、没有存满文件的底层目录项或没有建满子目录项的目录项,此时为了避免浪费存储空间,可以减少目录层数,从而减少目录项数量;减少目录层数触发阈值也可以是采用第五文件存储数量上限来计算得到的,例如乘以一个占比(例如50%),也即,当比目标目录结构少一层的目录结构能够存储下当前所存放的文件且还有多余的存储位置时,可以减少一层目录,以避免在减少目录层数后又立马因为新增文件而需要增加目录层数的情况发生。
步骤B20,若小于,则将所述目标目录结构的当前底层目录项下存储的文件转移至所述目标目录结构倒数第二层的目录项下,转移后删除所述目标目录结构中未存储文件的空目录项,并更新被转移的文件的唯一标识所关联存储的存储路径。
在确定目标目录结构中当前所存储的文件数量小于减少目录层数触发阈值时,可以减少目标目录结构的层数,也即,将目标目录结构的当前底层目录项下存储的文件转移至目标目录结构倒数第二层的目录项下。在本实施例中,并不限制将当前底层目录项下存储的文件转移至倒数第二层的哪个目录项下。在一些实施方式中,可以按照一定的规则来转移文件,以最少的目录项存储下所有的文件,避免占用多余的目录项而浪费存储空间。
在将当前底层目录项下存储的文件转移到倒数第二层的目录项下后,可以删除空目录项,以避免浪费存储空间。
更新被转移的文件的唯一标识所关联存储的存储路径,以使得文件被转移后仍然能够根据其唯一标识在目标目录结构中找到该文件。
可以理解的是,在将当前底层目录项下存储的文件转移到倒数第二层的目录项下后,当前底层目录项不再是底层目录项,倒数第二层的目录项变为了底层目录项。
进一步地,在一实施方式中,所述步骤B20中将所述目标目录结构的当前底层目录项下存储的文件转移至所述目标目录结构倒数第二层的目录项下的步骤包括:
步骤B201,将所述目标目录结构的当前底层目录项下存储的文件按照转移规则转移至所述目标目录结构倒数第二层的目录项下,其中,所述转移规则包括每存储满一个目录项才开始在另一个目录项下进行存储。
为了避免浪费存储空间,可以将目标目录结构的当前底层目录项下存储的文件按照一定的转移规则转移至倒数第二层的目录项下,而该转移规则具体包括每存储满一个目录项后才开始在另一个目录项下进行存储。进一步地,在一实施方式中,可以按照倒数第二层的目录项的创建时间先后顺序来依次转移存储底层目录项下的文件,也即,可以先将底层目录项下的文件转移到创建时间早的倒数第二层目录项下。
进一步地,在一实施方式中,所述步骤S30之后,还包括:
步骤C10,当检测到需要对所述目标目录结构的目录层数进行调整的触发事件时,检测系统是否处于预设空闲状态;
在本实施方式中,在检测到需要对目标目录结构的目录层数进行调整的触发事件时,检测系统是否处于预设空闲状态时,可以先检测系统是否处于预设空闲状态。其中,需要对目标目录结构的目录层数进行调整的触发事件在本实施方式中并不做限制。例如可以是目标目录结构中新增文件后检测到目标目录结构中当前所存储的文件数量大于新增目录层数触发阈值,又如可以是目标目录结构中删除文件后检测到目标目录结构中当前所存储的文件数量小于减少目录层数触发阈值。预设空闲状态可以根据需要进行设置,在此并不做限制,例如可以设置为CPU利用率低于一定阈值的状态,又如可以设置为正在使用的CPU个数低于一定数量的状态,或者还可以是根据网络通信带宽、内存占用情况、IO利用率等设定的状态。
步骤C20,若处于预设空闲状态,则根据所述触发事件调整所述目标目录结构的目录层数;
当确定系统处于预设空闲状态时,根据触发事件对目标目录结构中底层目录项下存储的文件进行转移,例如当需要增加目录层数时转移至新建的子目录项下,以增加目录层数,又如当需要减少目录层数是转移至倒数第二层目录项下,以减少目录层数。
步骤C30,若未处于预设空闲状态,则使用系统总资源的第二预设占比的资源根据所述触发事件调整所述目标目录结构的目录层数。
当确定系统未处于预设空闲状态时,在一实施方式中,可以对目录层数不做调整,等待系统处于预设空闲状态时再做调整,在另一实施方式中,可以使用系统总资源的第二预设占比的资源来进行目录层数调整,以避免影响系统的正常业务处理。其中,第二预设占比可以根据需要进行设置,在本实施例中并不做限制。
此外,本发明实施例还提出一种计算机可读存储介质,所述存储介质上存储有文件存储程序,所述文件存储程序被处理器执行时实现如下所述的文件存储方法的步骤。
本发明文件存储设备和计算机可读存储介质各实施例,均可参照本发明文件存储方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种文件存储方法,其特征在于,所述文件存储方法包括以下步骤:
获取待存储文件的文件数量,以及获取目录分层规则,其中,所述目录分层规则包括各级目录分别对应的目录项数量上限和各个底层目录项分别对应的第一文件存储数量上限,所述底层目录项为各级目录中最底层级目录下的目录项;
根据所述文件数量和所述目录分层规则计算得到目标层数,其中,所述文件数量小于或等于第二文件存储数量上限,且大于第三文件存储数量上限,所述第二文件存储数量上限是层数为所述目标层数,且符合所述目录分层规则的满目录结构的文件存储数量上限,所述第三文件存储数量上限是层数为所述目标层数减一层,且符合所述目录分层规则的满目录结构的文件存储数量上限;
创建层数为所述目标层数且符合所述目录分层规则的目标目录结构,并将所述待存储文件存储至所述目标目录结构的底层目录项下,以及将各所述待存储文件的唯一标识与在所述目标目录结构中的存储路径进行关联存储。
2.如权利要求1所述的文件存储方法,其特征在于,所述文件存储方法应用于文件存储系统,所述获取待存储文件的文件数量的步骤之前,还包括:
当所述文件存储系统首次启动后第一次接收到文件时,将所接收到的文件作为所述待存储文件;或,
每当所述文件存储系统接收到文件时,将所述文件存储系统中已存储的文件和所接收到的文件作为所述待存储文件;或,
每当所述文件存储系统接收到文件时,将所接收到的文件作为所述待存储文件。
3.如权利要求1所述的文件存储方法,其特征在于,所述创建层数为所述目标层数且符合所述目录分层规则的目标目录结构,并将所述待存储文件存储至所述目标目录结构的底层目录项下的步骤包括:
创建层数为所述目标层数、符合所述目录分层规则且文件存储数量上限与所述文件数量相等的目标目录结构,并将所述待存储文件存储至所述目标目录结构的底层目录项下。
4.如权利要求1所述的文件存储方法,其特征在于,所述将各所述待存储文件的唯一标识与在所述目标目录结构中的存储路径进行关联存储的步骤之后,还包括:
当在所述目标目录结构中新增文件后,检测所述目标目录结构中当前所存储的文件数量是否大于新增目录层数触发阈值,其中,所述新增目录层数触发阈值根据第四文件存储数量上限确定,所述第四文件存储数量上限是层数为所述目标目录结构的当前目录层数,且符合所述目录分层规则的满目录结构的文件存储数量上限;
若大于,则按照所述目录分层规则针对所述目标目录结构的当前底层目录项新建子目录项,并将所述当前底层目录项下存储的文件转移到新建的子目录项下,更新被转移的文件的唯一标识所关联存储的存储路径。
5.如权利要求4所述的文件存储方法,其特征在于,所述检测所述目标目录结构中当前所存储的文件数量是否大于新增目录层数触发阈值的步骤之前,还包括:
当在所述目标目录结构中新增文件后,计算所述第四文件存储数量上限;
将所述第四文件存储数量上限乘以第一预设占比得到所述新增目录层数触发阈值。
6.如权利要求4所述的文件存储方法,其特征在于,所述按照所述目录分层规则针对所述目标目录结构的当前底层目录项新建子目录项,并将所述当前底层目录项下存储的文件转移到新建的子目录项下的步骤包括:
按照所述目录分层规则针对所述目标目录结构的当前底层目录项新建目标数量的子目录项,其中,所述目标目录结构中当前所存储的文件数量小于或等于所述目标数量的子目录项的文件存储数量上限,且大于所述目标数量减一个数的子目录项的文件存储数量上限;
将所述当前底层目录项下存储的文件转移到新建的子目录项下。
7.如权利要求1所述的文件存储方法,其特征在于,所述将各所述待存储文件的唯一标识与在所述目标目录结构中的存储路径进行关联存储的步骤之后,还包括:
当在所述目标目录结构中删除文件后,检测所述目标目录结构中当前所存储的文件数量是否小于减少目录层数触发阈值,其中,所述减少目录层数触发阈值根据第五文件存储数量上限确定,所述第五文件存储数量上限是层数为所述目标目录结构的当前目录层数减一层,且符合所述目录分层规则的满目录结构的文件存储数量上限,所述当前目录层数大于1;
若小于,则将所述目标目录结构的当前底层目录项下存储的文件按照转移规则转移至所述目标目录结构倒数第二层的目录项下,转移后删除所述目标目录结构中未存储文件的空目录项,并更新被转移的文件的唯一标识所关联存储的存储路径,其中,所述转移规则包括每存储满一个目录项才开始在另一个目录项下进行存储。
8.如权利要求1所述的文件存储方法,其特征在于,所述将各所述待存储文件的唯一标识与在所述目标目录结构中的存储路径进行关联存储的步骤之后,还包括:
当检测到需要对所述目标目录结构的目录层数进行调整的触发事件时,检测系统是否处于预设空闲状态;
若处于预设空闲状态,则根据所述触发事件调整所述目标目录结构的目录层数;
若未处于预设空闲状态,则使用系统总资源的第二预设占比的资源根据所述触发事件调整所述目标目录结构的目录层数。
9.如权利要求1至8中任一项所述的文件存储方法,其特征在于,所述将各所述待存储文件的唯一标识与在所述目标目录结构中的存储路径进行关联存储的步骤之后,还包括:
从所述目标目录结构存储的各个文件中确定最后访问时间在预设时间之前的目标历史文件;
将各所述目标历史文件从所述目标目录结构中取出并压缩为一个压缩文件;
将所述压缩文件作为新增文件存储至所述目标目录结构的底层目录项下。
10.一种文件存储设备,其特征在于,所述文件存储设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的文件存储程序,所述文件存储程序被所述处理器执行时实现如权利要求1至9中任一项所述的文件存储方法的步骤。
CN202211156932.6A 2022-09-21 2022-09-21 文件存储方法及设备 Pending CN115617762A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211156932.6A CN115617762A (zh) 2022-09-21 2022-09-21 文件存储方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211156932.6A CN115617762A (zh) 2022-09-21 2022-09-21 文件存储方法及设备

Publications (1)

Publication Number Publication Date
CN115617762A true CN115617762A (zh) 2023-01-17

Family

ID=84858420

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211156932.6A Pending CN115617762A (zh) 2022-09-21 2022-09-21 文件存储方法及设备

Country Status (1)

Country Link
CN (1) CN115617762A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117041244A (zh) * 2023-08-25 2023-11-10 广东保伦电子股份有限公司 一种批量上传音频文件的实现方法及处理终端
CN117171412A (zh) * 2023-11-03 2023-12-05 威海英博智能科技有限公司 一种船舶设计修改意见管理方法、系统及船舶设计方法
CN117453632A (zh) * 2023-12-25 2024-01-26 杭州计算机外部设备研究所(中国电子科技集团公司第五十二研究所) 一种数据存储方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117041244A (zh) * 2023-08-25 2023-11-10 广东保伦电子股份有限公司 一种批量上传音频文件的实现方法及处理终端
CN117171412A (zh) * 2023-11-03 2023-12-05 威海英博智能科技有限公司 一种船舶设计修改意见管理方法、系统及船舶设计方法
CN117453632A (zh) * 2023-12-25 2024-01-26 杭州计算机外部设备研究所(中国电子科技集团公司第五十二研究所) 一种数据存储方法及装置
CN117453632B (zh) * 2023-12-25 2024-04-12 杭州计算机外部设备研究所(中国电子科技集团公司第五十二研究所) 一种数据存储方法及装置

Similar Documents

Publication Publication Date Title
CN115617762A (zh) 文件存储方法及设备
CN102495857B (zh) 一种分布式数据库的负载均衡方法
US20130311742A1 (en) Image management method, mobile terminal and computer storage medium
CN111309732B (zh) 数据处理方法、装置、介质和计算设备
CN103077197A (zh) 一种数据存储方法装置
CN110737668A (zh) 数据存储方法、数据读取方法、相关设备及介质
CN113377868B (zh) 一种基于分布式kv数据库的离线存储系统
US9928178B1 (en) Memory-efficient management of computer network resources
CN112015820A (zh) 分布式图数据库实现的方法、系统、电子装置和存储介质
CN104346345A (zh) 数据的存储方法及装置
CN113961510B (zh) 一种文件处理方法、装置、设备及存储介质
WO2021139431A1 (zh) 微服务的数据同步方法、装置、电子设备及存储介质
CN111198856A (zh) 文件管理方法、装置、计算机设备和存储介质
CN112100152A (zh) 业务数据处理方法、系统、服务器和可读存储介质
CN101938516A (zh) 一种面向用户的动态分配存储资源的方法
CN117130792B (zh) 缓存对象的处理方法、装置、设备及存储介质
CN110162395B (zh) 一种内存分配的方法及装置
CN112799588A (zh) 使用外部存储加载容器集群应用数据时的数据存储方法
CN115934354A (zh) 在线存储方法和装置
CN114168262B (zh) 一种基于lru置换算法的云平台镜像缓存管理方法
CN112711564A (zh) 合并处理方法以及相关设备
CN115878625A (zh) 数据处理方法和装置及电子设备
CN111523002B (zh) 一种主键分配方法、装置、服务器及存储介质
CN114443583A (zh) 一种碎片空间整理方法、装置、设备及存储介质
CN110825732A (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