CN113760853A - 一种目录处理方法、服务器以及存储介质 - Google Patents
一种目录处理方法、服务器以及存储介质 Download PDFInfo
- Publication number
- CN113760853A CN113760853A CN202110937361.9A CN202110937361A CN113760853A CN 113760853 A CN113760853 A CN 113760853A CN 202110937361 A CN202110937361 A CN 202110937361A CN 113760853 A CN113760853 A CN 113760853A
- Authority
- CN
- China
- Prior art keywords
- directory
- target
- key
- read
- client
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 25
- 238000000034 method Methods 0.000 claims description 38
- 238000012545 processing Methods 0.000 claims description 17
- 238000004891 communication Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013479 data entry Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/248—Presentation of query results
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种目录处理方法,该方法包括:接收客户端发送的第一读目录请求;基于所述第一读目录请求,确定读目录的起始偏移量标识;从键‑值数据库中,确定与所述起始偏移量标识匹配的第一目标键;从所述键‑值数据库中的所述第一目标键对应的第一目录项开始依次读取目录项,得到目标集合;发送所述目标集合至所述客户端;其中,所述目标集合用于显示于所述客户端的显示区域中。本申请实施例还公开了一种服务器和存储介质。
Description
技术领域
本申请涉及分布式文件系统技术领域,尤其涉及一种目录处理方法、服务器以及存储介质。
背景技术
随着网络技术的飞速发展,各种网络应用对于存储的需求越来越大。为了提高存储效率,分布式文件系统也应运而生。当前针对分布式文件系统进行目录读取时,通常将目录下所有的目录项(dentry)都加载到内存中,然后按需返回,但是针对超大型目录时,将超大型目录的dentry都加载到内存中时,会占用过多的内容。并且若进行了缓存淘汰,则目录下的文件列表可能出现不完整的情况,此时为了确保目录下的文件列表的唯一性和完整性,则不得不重新从磁盘加载该目录下所有的dentry到内存中,按顺序为每一个dentry分配offset,然后从指定的offset获取单次readdir所需的dentry。
目前,针对目录进行列举的方式,加重了分布式文件系统的负担,由于消耗了大量分布式设备的内容,严重影响了分布式设备的运行性能,使读目录效率较低。
申请内容
为解决上述技术问题,本申请实施例期望提供一种目录处理方法、服务器以及存储介质,解决了目前读目录时分布式文件系统负担较重的问题,实现了一种读目录时目录处理的方法,降低了读目录过程对分布式设备运行性能的影响,提高了读目录效率。
本申请的技术方案是这样实现的:
第一方面,一种目录处理方法,所述方法应用于服务器,所述方法包括:
接收客户端发送的第一读目录请求;
基于所述第一读目录请求,确定读目录的起始偏移量标识;
从键-值数据库中,确定与所述起始偏移量标识匹配的第一目标键;
从所述键-值数据库中的所述第一目标键对应的第一目录项开始依次读取目录项,得到目标集合;
发送所述目标集合至所述客户端;其中,所述目标集合用于显示于所述客户端的显示区域中。
可选的,所述从所述键-值数据库中的所述第一目标键对应的第一目录项开始依次读取目录项,得到目标集合,包括:
从所述键-值数据库中的所述第一目录项开始依次读取目录项;
若读取到所述键-值数据库中的最后一个目录项,且读取到的目录项的第一数量小于或等于预设数量,确定读取到的第一数量个目录项为所述目标集合。
可选的,所述方法还包括:
若读取到第二目录项,且第二目录项不是所述最后一个目录项,确定所述第一目录项至所述第二目录项之间的目录项为所述目标集合;其中,所述第二目录项为所述第一目录项后的第预设数量个目录项;
从所述键-值数据库中,确定与所述第二目录项相邻的还未读取到的第三目录项的第二目标键;
发送所述第二目标键至所述客户端。
可选的,所述发送所述目标集合至所述客户端之后,所述方法还包括:
接收所述客户端发送的第二读目录请求;其中,所述第二读目录请求中包括所述第二目标键;
更新所述第一目标键为所述第二目标键;
重复执行步骤“从所述键-值数据库中的所述第一目标键对应的第一目录项开始依次读取目录项,得到目标集合”,直至发送至所述客户端的所述目录集合中包括所述最后一个目录项。
可选的,所述从所述键-值数据库中,确定与所述第二目录项相邻的还未读取到的第三目录项之后,所述方法还包括:
更新所述第一目录项为所述第三目录项;
重复执行步骤“从所述键-值数据库中的所述第一目标键对应的第一目录项开始依次读取目录项,得到目标集合”,直至发送至所述客户端的所述目录集合中包括所述最后一个目录项。
可选的,所述基于所述第一读目录请求,确定读目录的起始偏移量标识,包括:
若所述第一读目录请求中包括起始文件名,对所述起始文件名采用预设哈希算法进行哈希处理,得到目标哈希值;
确定所述起始偏移量标识为所述目标哈希值。
可选的,所述接收客户端发送的第一读目录请求之前,所述方法还包括:
获取目标文件对应的父目录标识和所述目标文件的文件名;
对所述目标文件名进行哈希处理,得到参考哈希值;
基于所述父目录标识、所述参考哈希值和所述目标文件的文件名,得到所述目标文件的参考键;
获取所述目标文件对应的目标目录项;
以所述参考键为键,所述目标目录项为值,得到目标键-值对;
存储所述目标键-值对至数据库中,得到所述键-值数据库。
可选的,所述基于所述父目录标识、所述参考哈希值和所述目标文件的文件名,得到所述目标文件的参考键,包括:
确定用于标识目录项类型的目录项标识;
按照所述父目录标识、所述目录项标识、所述参考哈希值和所述目标文件的文件名的顺序,采用目标连接符号进行连接,得到所述参考键。
第二方面,一种服务器,所述服务器包括:存储器、处理器和通信总线;其中:
所述存储器,用于存储可执行指令;
所述通信总线,用于实现所述处理器和所述存储器之间的通信连接;
所述处理器,用于执行所述存储器中存储的目录处理程序,实现如上述任一项所述的目录处理方法的步骤。
第三方面,一种存储介质,所述存储介质上存储有目录存储程序,所述目录存储程序被处理器执行时实现如上述任一项所述的目录处理方法的步骤。
本申请实施例中,接收客户端发送的第一读目录请求后,基于第一读目录请求,确定读目录的起始偏移量标识,从键-值数据库中,确定与起始偏移量标识匹配的第一目标键,并从键-值数据库中的第一目标键对应的第一目录项开始依次读取目录项,得到目标集合,最后发送目标集合至客户端。这样,服务器在接收到第一读目录请求后,从第一读目录请求包括的起始偏移量标识对应的第一目标键的第一目录项开始读取目录项,解决了目前读目录时分布式文件系统负担较重的问题,实现了一种读目录时目录处理的方法,降低了读目录过程对分布式设备运行性能的影响,提高了读目录效率。
附图说明
图1为本申请实施例提供的一种目录处理方法的流程示意图;
图2为本申请实施例提供的另一种目录处理方法的流程示意图;
图3为本申请实施例提供的一种目录处理方法实施例的实现流程示意图;
图4为本申请实施例提供的又一种目录处理方法的流程示意图;
图5为本申请实施例提供的另一种目录处理方法实施例的实现流程示意图;
图6为本申请另一实施例提供的一种目录处理方法的流程示意图;
图7为本申请另一实施例提供的另一种目录处理方法的流程示意图;
图8为本申请实施例提供的一种服务器的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请的实施例提供一种目录处理方法,参照图1所示,方法应用于服务器,该方法包括以下步骤:
步骤101、接收客户端发送的第一读目录请求。
在本申请实施例中,客户端检测到用户对客户端发送的用于请求查看目录的请求指令时,客户端根据用户发送的请求指令生成第一读目录请求,并发送至服务器。服务器一般为提供元数据服务的服务器。第一读目录请求也可以是客户端基于服务器发送部分目录项后,若没有获取到全部目录项,还需继续获取目录项时生成的请求。
步骤102、基于第一读目录请求,确定读目录的起始偏移量标识。
在本申请实施例中,服务器对第一读目录请求进行解析,确定得到读目录的起始偏移量标识。其中,读目录的起始偏移量标识可以是第一读目录请求中包含的,也可以是对第一读目录请求中与起始偏移量标识相关的参数进行处理得到的。
步骤103、从键-值数据库中,确定与起始偏移量标识匹配的第一目标键。
在本申请实施例中,键-值数据库中存储有不同文件对应的目录项,其中,键-值数据库中的键由文件名决定,并与起始偏移量标识具有关联关系,值为文件对应的目录项。在得到起始偏移量标识后,从键-值数据库中确定与起始偏移量标识匹配的键(Key),得到第一目标键。
步骤104、从键-值数据库中的第一目标键对应的第一目录项开始依次读取目录项,得到目标集合。
在本申请实施例中,从键-值数据库中获取第一目标键对应的值即第一目录项,并从第一目录项按照键-值数据库中的存储顺序,依次读取第一目录项之后的目录项,得到目标集合。其中,目标集合的大小通常有客户端与服务器之间的预先约定限定。
步骤105、发送目标集合至客户端。
其中,目标集合用于显示于客户端的显示区域中。
在本申请实施例中,得到目标集合后,将目标集合发送至客户端,客户端接收到目标结合时,将目标集合中包括的全部目录项显示于客户端的显示区域中,实现客户端对第一读目录请求的响应,这样,用户可以查看到其想看的目录内容。
本申请实施例中,接收客户端发送的第一读目录请求后,基于第一读目录请求,确定读目录的起始偏移量标识,从键-值数据库中,确定与起始偏移量标识匹配的第一目标键,并从键-值数据库中的第一目标键对应的第一目录项开始依次读取目录项,得到目标集合,最后发送目标集合至客户端。这样,服务器在接收到第一读目录请求后,从第一读目录请求包括的起始偏移量标识对应的第一目标键的第一目录项开始读取目录项,解决了目前读目录时分布式文件系统负担较重的问题,实现了一种读目录时目录处理的方法,降低了读目录过程对分布式设备运行性能的影响,提高了读目录效率。
基于前述实施例,本申请的实施例提供一种目录处理方法,参照图2所示,该方法应用于服务器,该方法包括以下步骤:
步骤201、接收客户端发送的第一读目录请求。
在本申请实施例中,以第一读目录请求为用户对客户端进行操作后,客户端向服务器发送的第一次读目录请求为例进行说明,服务器通过互联网接收客户端发送的第一读目录请求。
步骤202、基于第一读目录请求,确定读目录的起始偏移量标识。
在本申请实施例中,服务器对接收到的第一读目录请求进行解析,从第一读目录请求中解析到读目录的起始偏移量标识。
步骤203、从键-值数据库中,确定与起始偏移量标识匹配的第一目标键。
在本申请实施例中,服务器从键-值数据库中确定包括起始偏移量标识的第一目标键。
步骤204、从键-值数据库中的第一目录项开始依次读取目录项。
在本申请实施例中,按照键-值数据库中的存储顺序,从第一目录项开始一次读取目录项。
其中,需说明的是,服务器执行步骤204之后,可以选择执行步骤205和步骤209,或者选择执行步骤206~209。若读取到键-值数据库中的最后一个目录项,且读取到的目录项的第一数量小于或等于预设数量,选择执行步骤205和步骤209;若读取到第二目录项,且第二目录项不是最后一个目录项,选择执行步骤206~209:
步骤205、若读取到键-值数据库中的最后一个目录项,且读取到的目录项的第一数量小于或等于预设数量,确定读取到的第一数量个目录项为目标集合。
在本申请实施例中,预设数量为客户端与服务器之间一次发送目录项时约定的最多发送目录项数量,通常为根据大量实验得到的一个数量经验值,在一些应用场景中,也可以是用户自己根据实际需求设定的数量经验值。
若从第一目录项开始依次读取目录项,直至读取到键-值数据库中的最后一个目录项时,对应的读取到目录项的第一数量小于或等于预设数量,则确定读取到的第一数量个目录项为目标集合,即当前读取到的从第一目录项开始的全部目录项的数量小于或等于预设数量时,服务器可以一次将读取到的第一数量的目录项发送至客户端。
步骤206、若读取到第二目录项,且第二目录项不是最后一个目录项,确定第一目录项至第二目录项之间的目录项为目标集合。
其中,第二目录项为第一目录项后的第预设数量个目录项。
在本申请实施例中,若从第一目录项开始,需要读取的目录项的数量超过预设数量时,服务器每读取预设数量个目录项,作为一个目标集合。
步骤207、从键-值数据库中,确定与第二目录项相邻的还未读取到的第三目录项的第二目标键。
在本申请实施例中,确定键-值数据库中与第二目录项相邻的还未读取到的下一第三目录项的第二目标键。
步骤208、发送第二目标键至客户端。
步骤209、发送目标集合至客户端。
其中,目标集合用于显示于客户端的显示区域中。
在本申请实施例中,步骤207和步骤208可以同时执行的,步骤207也可在步骤208之前执行,步骤207也可在步骤208之后执行,具体执行先后顺序可以由实际应用场景来确定,此处不做具体限定。
步骤210、接收客户端发送的第二读目录请求。
其中,第二读目录请求中包括第二目标键。
在本申请实施例中,客户端接收到服务器发送的第二目标键后,基于第二目标键生成第二读目录请求,即客户端生成包括第二目标键的第二读目录请求,并发送第二读目录请求至服务器。
步骤211、更新第一目标键为第二目标键。
步骤212、重复执行步骤“从键-值数据库中的第一目标键对应的第一目录项开始依次读取目录项,得到目标集合”,直至发送至客户端的目录集合中包括最后一个目录项。
在本申请实施例中,发送第二目标键至客户端的目的是:客户端与服务器之间的实现逻辑是客户端基于用户发送的请求指令发送读目录请求至服务器时,当键-值数据库中对应的目录项的数量超过预设数量时,服务器每一次获取预设数量的目录项并发送至客户端时,均会将下一目录项对应的目标键发送至客户端,以便客户端基于服务器发送的目标键继续请求服务器发送还未发送完的目录项,直至服务器将最后一个目录项发送至客户端。
在一些应用场景中,最后一个目录项也可以是客户端发送的,即用户指定的,此时,最后一个目录项的排序后可能还有目录项;最后一个目录项也可以是键-值数据库中,其后不再有目录项的目录项。
基于前述实施例,本申请实施例提供一种目录处理方法,参照图3所示,包括以下步骤:
步骤301、用户对客户端进行操作,发送请求查看目录列表的请求指令。
步骤302、客户端执行opendir。
其中,opendir为打开目录,客户端执行opendir是响应请求指令才执行的。
步骤303、用户基于客户端执行opendir得到的内容,设置读目录请求中的读目录的起始偏移量标识(offset),得到读目录请求readdir。
步骤304、客户端向元数据服务器发送readdir。
其中,元数据服务器与前述服务器对应。
步骤305、元数据服务器处理readdir。
其中,元数据服务器处理readdir即元数据服务器对readdir进行解析处理,以得到起始offset。
步骤306、元数据服务器从KV数据库中从指定的起始offset开始依次读取,直到读取到预设数量个的dentry。
其中,KV数据库指的是键(Key)-值(Value)数据库。
步骤307、元数据服务器向客户端返回读取到的预设数量个dentry。
步骤308、客户端接收到预设数量个dentry后,执行closedir。
其中,closedir为关闭目录的操作。
步骤309、客户端判断是否已经读取到全部dentry,若没有读取到全部dentry,重复执行步骤302,若读取到全部dentry,执行步骤310。
需说明的是,客户端判断是否已经读取到全部dentry时,是根据元数据服务器发送的是否还有未读取的dentry的标识信息来实现的,即元数据服务器中还有未读取的dentry时,标识信息例如标识为1,此时元数据发送预设数量个dentry至客户端时,还发送还未读取的首个目录项的键至客户端,此时,对应的步骤303中,设置起始offset时,可以是客户端自动填充实现的,但也可以是客户端将元数据服务器发送的还未读取的首个目录项的键进行显示,用户将该首个目录项的键进行设置的。
步骤310、客户端显示接收到的全部dentry。
基于前述实施例,在本申请其他实施例中,参照图4所示,服务器执行步骤206之后,还用于执行步骤213~214:
步骤213、更新第一目录项为第三目录项。
步骤214、重复执行步骤“从键-值数据库中的第一目标键对应的第一目录项开始依次读取目录项,得到目标集合”,直至发送至客户端的目录集合中包括最后一个目录项。
在本申请实施例中,客户端只需发送一次第一读目录请求,服务器每次将从第一目录项开始的预设数量个目录项为单位,进行一次发送,如此重复发送,直至发送至最后一个目录项。
基于前述实施例,本申请实施例提供一种目录处理方法,参照图5所示,包括以下步骤:
步骤401、用户对客户端进行操作,发送请求查看目录列表的请求指令。
步骤402、客户端执行opendir。
其中,opendir为打开目录,客户端执行opendir是响应请求指令才执行的。
步骤403、用户基于客户端执行opendir得到的内容,设置读目录请求中的读目录的起始偏移量标识(offset),得到读目录请求readdir。
步骤404、客户端向元数据服务器发送readdir。
其中,元数据服务器与前述服务器对应。
步骤405、元数据服务器处理readdir。
步骤406、元数据服务器从KV数据库中从指定的起始offset开始依次读取,直到读取到预设数量个的dentry。
其中,KV数据库指的是键(Key)-值(Value)数据库。
步骤407、元数据服务器向客户端返回读取到的预设数量个dentry。
步骤408、元数据服务器判断是否已发送全部dentry至客户端,若未发送全部dentry至客户端,执行步骤409,若已发送全部dentry至客户端,执行步骤
步骤409、元数据服务器更新起始offset为步骤406中获取到的最后一个dentry相邻的下一个dentry的键中包括的offset,后执行步骤406。
步骤410、客户端执行closedir。
步骤411、客户端显示接收到的全部dentry。
基于前述实施例,在本申请其他实施例中,步骤204可以由步骤204a~204b来实现:
步骤204a、若第一读目录请求中包括起始文件名,对起始文件名采用预设哈希算法进行哈希处理,得到目标哈希值。
步骤204b、确定起始偏移量标识为目标哈希值。
基于前述实施例,在本申请其他实施例中,参照图6或图7所示,服务器执行步骤201之前,还用于执行步骤215~220:
步骤215、获取目标文件对应的父目录标识和目标文件的文件名。
在本申请实施例中,目标文件对应的父目录标识和目标文件的文件名可以是客户端发送给客户端的。
步骤216、对目标文件名进行哈希处理,得到参考哈希值。
步骤217、基于父目录标识、参考哈希值和目标文件的文件名,得到目标文件的参考键。
在本申请实施例中,父目录标识用于标识对应的目标文件的dentry所属目录,目标文件的文件名为用于标识目标文件的标识信息。
步骤218、获取目标文件对应的目标目录项。
步骤219、以参考键为键,目标目录项为值,得到目标键-值对。
步骤220、存储目标键-值对至数据库中,得到键-值数据库。
在本申请实施例中,在前述步骤203“从键-值数据库中,确定与起始偏移量标识匹配的第一目标键”时,具体的实现过程中,确定包括起始偏移量标识的键为第一目标键,即第一目标键中的参考哈希值与起始偏移量标识是相同的。
基于前述实施例,在本申请其他实施例中,步骤217可以由步骤217a~217b来实现:
步骤217a、确定用于标识目录项类型的目录项标识。
步骤217b、按照父目录标识、目录项标识、参考哈希值和目标文件的文件名的顺序,采用目标连接符号进行连接,得到参考键。
在本申请实施例中,目录项标识用于标识dentry的数据条目类型,例如可以用D来作为目录项标识,目标连接符号可以是“-”、“/”、“.”等具有连接功能的符号。这样,参考哈希值可以作为目标文件的dentry对应的起始偏移量。示例性的,父目录标识为0000000000019287,目录项标识为D,参考哈希值为200bf59b67c6aee7,目标文件的文件名为file1,目标连接符号为“/”时,得到的参考键具体可以表示为000000000019287/D/200bf59b67c6aee7/file1。其中,参考哈希值200bf59b67c6aee7是对目标文件的文件名file1进行哈希处理得到的哈希值。这样,可以通过KV数据库中的Key在readir过程中使用父目录标识和offset即参考哈希值快速准确定位到执行的dentry。
这样,通过KV数据库中的Key和Value值,在获取dentry时,无需从磁盘上加载目录下所有的dentry的信息到内存中,只需每次readdir请求中提供的offset即可从磁盘上精准的读取单次readdir所需的dentry信息,提高了读目录效率。
需要说明的是,本实施例中与其它实施例中相同步骤和相同内容的说明,可以参照其它实施例中的描述,此处不再赘述。
本申请实施例中,接收客户端发送的第一读目录请求后,基于第一读目录请求,确定读目录的起始偏移量标识,从键-值数据库中,确定与起始偏移量标识匹配的第一目标键,并从键-值数据库中的第一目标键对应的第一目录项开始依次读取目录项,得到目标集合,最后发送目标集合至客户端。这样,服务器在接收到第一读目录请求后,从第一读目录请求包括的起始偏移量标识对应的第一目标键的第一目录项开始读取目录项,解决了目前读目录时分布式文件系统负担较重的问题,实现了一种读目录时目录处理的方法,降低了读目录过程对分布式设备运行性能的影响,提高了读目录效率。
基于前述实施例,本申请的实施例提供一种服务器,该服务器可以应用于图1~2、4、6~7对应的实施例提供的目录处理方法中,参照图8所示,该服务器5可以包括:处理器51、存储器52和通信总线53,其中:
存储器52,用于存储可执行指令;
通信总线53,用于实现处理器51和存储器52之间的通信连接;
处理器51,用于执行存储器52中存储的目录处理程序,以实现以下步骤:
接收客户端发送的第一读目录请求;
基于第一读目录请求,确定读目录的起始偏移量标识;
从键-值数据库中,确定与起始偏移量标识匹配的第一目标键;
从键-值数据库中的第一目标键对应的第一目录项开始依次读取目录项,得到目标集合;
发送目标集合至客户端;其中,目标集合用于显示于客户端的显示区域中。
在本申请其他实施例中,处理器51执行步骤从键-值数据库中的第一目标键对应的第一目录项开始依次读取目录项,得到目标集合时,可以通过以下步骤来实现:
从键-值数据库中的第一目录项开始依次读取目录项;
若读取到键-值数据库中的最后一个目录项,且读取到的目录项的第一数量小于或等于预设数量,确定读取到的第一数量个目录项为目标集合。
在本申请其他实施例中,处理器51还可以用于执行以下步骤:
若读取到第二目录项,且第二目录项不是最后一个目录项,确定第一目录项至第二目录项之间的目录项为目标集合;其中,第二目录项为第一目录项后的第预设数量个目录项;
从键-值数据库中,确定与第二目录项相邻的还未读取到的第三目录项的第二目标键;
发送第二目标键至客户端。
在本申请其他实施例中,处理器51执行步骤发送目标集合至客户端之后,还用于执行以下步骤:
接收客户端发送的第二读目录请求;其中,第二读目录请求中包括第二目标键;
更新第一目标键为第二目标键;
重复执行步骤“从键-值数据库中的第一目标键对应的第一目录项开始依次读取目录项,得到目标集合”,直至发送至客户端的目录集合中包括最后一个目录项。
在本申请其他实施例中,处理器51执行步骤从键-值数据库中,确定与第二目录项相邻的还未读取到的第三目录项之后,还用于执行以下步骤:
更新第一目录项为第三目录项;
重复执行步骤“从键-值数据库中的第一目标键对应的第一目录项开始依次读取目录项,得到目标集合”,直至发送至客户端的目录集合中包括最后一个目录项。
在本申请其他实施例中,处理器51执行步骤基于第一读目录请求,确定读目录的起始偏移量标识时,可以通过以下步骤来实现:
若第一读目录请求中包括起始文件名,对起始文件名采用预设哈希算法进行哈希处理,得到目标哈希值;
确定起始偏移量标识为目标哈希值。
在本申请其他实施例中,处理器51执行步骤接收客户端发送的第一读目录请求之前,还用于执行以下步骤:
获取目标文件对应的父目录标识和目标文件的文件名;
对目标文件名进行哈希处理,得到参考哈希值;
基于父目录标识、参考哈希值和目标文件的文件名,得到目标文件的参考键;
获取目标文件对应的目标目录项;
以参考键为键,目标目录项为值,得到目标键-值对;
存储目标键-值对至数据库中,得到键-值数据库。
在本申请其他实施例中,处理器51执行步骤基于父目录标识、参考哈希值和目标文件的文件名,得到目标文件的参考键时,可以通过以下步骤来实现:
确定用于标识目录项类型的目录项标识;
按照父目录标识、目录项标识、参考哈希值和目标文件的文件名的顺序,采用目标连接符号进行连接,得到参考键。
需要说明的是,本申请实施例中个或者多个程序可被一个或者多个处理器的步骤的解释说明,可以参照图1~2、4、6~7对应的实施例提供的方法实现过程,此处不再赘述。
本申请实施例中,接收客户端发送的第一读目录请求后,基于第一读目录请求,确定读目录的起始偏移量标识,从键-值数据库中,确定与起始偏移量标识匹配的第一目标键,并从键-值数据库中的第一目标键对应的第一目录项开始依次读取目录项,得到目标集合,最后发送目标集合至客户端。这样,服务器在接收到第一读目录请求后,从第一读目录请求包括的起始偏移量标识对应的第一目标键的第一目录项开始读取目录项,解决了目前读目录时分布式文件系统负担较重的问题,实现了一种读目录时目录处理的方法,降低了读目录过程对分布式设备运行性能的影响,提高了读目录效率。
基于前述实施例,本申请的实施例提供一种计算机可读存储介质,简称为存储介质,该计算机可读存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现如图1~2、4、6~7对应的实施例提供的目录处理方法实现过程,此处不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。
Claims (10)
1.一种目录处理方法,其特征在于,所述方法应用于服务器,所述方法包括:
接收客户端发送的第一读目录请求;
基于所述第一读目录请求,确定读目录的起始偏移量标识;
从键-值数据库中,确定与所述起始偏移量标识匹配的第一目标键;
从所述键-值数据库中的所述第一目标键对应的第一目录项开始依次读取目录项,得到目标集合;
发送所述目标集合至所述客户端;其中,所述目标集合用于显示于所述客户端的显示区域中。
2.根据权利要求1所述的方法,其特征在于,所述从所述键-值数据库中的所述第一目标键对应的第一目录项开始依次读取目录项,得到目标集合,包括:
从所述键-值数据库中的所述第一目录项开始依次读取目录项;
若读取到所述键-值数据库中的最后一个目录项,且读取到的目录项的第一数量小于或等于预设数量,确定读取到的第一数量个目录项为所述目标集合。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若读取到第二目录项,且第二目录项不是所述最后一个目录项,确定所述第一目录项至所述第二目录项之间的目录项为所述目标集合;其中,所述第二目录项为所述第一目录项后的第预设数量个目录项;
从所述键-值数据库中,确定与所述第二目录项相邻的还未读取到的第三目录项的第二目标键;
发送所述第二目标键至所述客户端。
4.根据权利要求3所述的方法,其特征在于,所述发送所述目标集合至所述客户端之后,所述方法还包括:
接收所述客户端发送的第二读目录请求;其中,所述第二读目录请求中包括所述第二目标键;
更新所述第一目标键为所述第二目标键;
重复执行步骤“从所述键-值数据库中的所述第一目标键对应的第一目录项开始依次读取目录项,得到目标集合”,直至发送至所述客户端的所述目录集合中包括所述最后一个目录项。
5.根据权利要求3所述的方法,其特征在于,所述从所述键-值数据库中,确定与所述第二目录项相邻的还未读取到的第三目录项之后,所述方法还包括:
更新所述第一目录项为所述第三目录项;
重复执行步骤“从所述键-值数据库中的所述第一目标键对应的第一目录项开始依次读取目录项,得到目标集合”,直至发送至所述客户端的所述目录集合中包括所述最后一个目录项。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述基于所述第一读目录请求,确定读目录的起始偏移量标识,包括:
若所述第一读目录请求中包括起始文件名,对所述起始文件名采用预设哈希算法进行哈希处理,得到目标哈希值;
确定所述起始偏移量标识为所述目标哈希值。
7.根据权利要求1至5任一项所述的方法,其特征在于,所述接收客户端发送的第一读目录请求之前,所述方法还包括:
获取目标文件对应的父目录标识和所述目标文件的文件名;
对所述目标文件名进行哈希处理,得到参考哈希值;
基于所述父目录标识、所述参考哈希值和所述目标文件的文件名,得到所述目标文件的参考键;
获取所述目标文件对应的目标目录项;
以所述参考键为键,所述目标目录项为值,得到目标键-值对;
存储所述目标键-值对至数据库中,得到所述键-值数据库。
8.根据权利要求7所述的方法,其特征在于,所述基于所述父目录标识、所述参考哈希值和所述目标文件的文件名,得到所述目标文件的参考键,包括:
确定用于标识目录项类型的目录项标识;
按照所述父目录标识、所述目录项标识、所述参考哈希值和所述目标文件的文件名的顺序,采用目标连接符号进行连接,得到所述参考键。
9.一种服务器,其特征在于,所述服务器包括:存储器、处理器和通信总线;其中:
所述存储器,用于存储可执行指令;
所述通信总线,用于实现所述处理器和所述存储器之间的通信连接;
所述处理器,用于执行所述存储器中存储的目录处理程序,实现如权利要求1至8中任一项所述的目录处理方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有目录存储程序,所述目录存储程序被处理器执行时实现如权利要求1至8中任一项所述的目录处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110937361.9A CN113760853B (zh) | 2021-08-16 | 2021-08-16 | 一种目录处理方法、服务器以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110937361.9A CN113760853B (zh) | 2021-08-16 | 2021-08-16 | 一种目录处理方法、服务器以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113760853A true CN113760853A (zh) | 2021-12-07 |
CN113760853B CN113760853B (zh) | 2024-02-20 |
Family
ID=78789472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110937361.9A Active CN113760853B (zh) | 2021-08-16 | 2021-08-16 | 一种目录处理方法、服务器以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113760853B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100057697A1 (en) * | 2008-08-27 | 2010-03-04 | International Business Machines Corporation | Virtual list view support in a distributed directory |
US20100174690A1 (en) * | 2009-01-08 | 2010-07-08 | International Business Machines Corporation | Method, Apparatus and Computer Program Product for Maintaining File System Client Directory Caches with Parallel Directory Writes |
US20120259823A1 (en) * | 2011-04-08 | 2012-10-11 | Symantec Corporation | Partitioning a directory while accessing the directory |
US20160321295A1 (en) * | 2011-04-26 | 2016-11-03 | Zettaset, Inc. | Scalable Distributed Metadata File-System using Key-Value Stores |
CN107491545A (zh) * | 2017-08-25 | 2017-12-19 | 郑州云海信息技术有限公司 | 一种分布式存储系统的目录读取方法及客户端 |
CN110245122A (zh) * | 2019-05-08 | 2019-09-17 | 华为技术有限公司 | 一种数据处理的方法和kv存储系统 |
CN110765086A (zh) * | 2019-10-25 | 2020-02-07 | 浪潮电子信息产业股份有限公司 | 一种小文件的目录读取方法、系统、电子设备及存储介质 |
CN111061681A (zh) * | 2019-11-15 | 2020-04-24 | 浪潮电子信息产业股份有限公司 | 一种基于大小写不敏感的目录分片方法、装置及存储介质 |
CN111737204A (zh) * | 2020-06-12 | 2020-10-02 | 北京百度网讯科技有限公司 | 文件目录遍历方法、装置、设备和介质 |
WO2021128892A1 (zh) * | 2019-12-28 | 2021-07-01 | 浪潮电子信息产业股份有限公司 | 一种批量创建文件的方法、装置、设备及存储介质 |
-
2021
- 2021-08-16 CN CN202110937361.9A patent/CN113760853B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100057697A1 (en) * | 2008-08-27 | 2010-03-04 | International Business Machines Corporation | Virtual list view support in a distributed directory |
US20100174690A1 (en) * | 2009-01-08 | 2010-07-08 | International Business Machines Corporation | Method, Apparatus and Computer Program Product for Maintaining File System Client Directory Caches with Parallel Directory Writes |
US20120259823A1 (en) * | 2011-04-08 | 2012-10-11 | Symantec Corporation | Partitioning a directory while accessing the directory |
US20160321295A1 (en) * | 2011-04-26 | 2016-11-03 | Zettaset, Inc. | Scalable Distributed Metadata File-System using Key-Value Stores |
CN107491545A (zh) * | 2017-08-25 | 2017-12-19 | 郑州云海信息技术有限公司 | 一种分布式存储系统的目录读取方法及客户端 |
CN110245122A (zh) * | 2019-05-08 | 2019-09-17 | 华为技术有限公司 | 一种数据处理的方法和kv存储系统 |
CN110765086A (zh) * | 2019-10-25 | 2020-02-07 | 浪潮电子信息产业股份有限公司 | 一种小文件的目录读取方法、系统、电子设备及存储介质 |
CN111061681A (zh) * | 2019-11-15 | 2020-04-24 | 浪潮电子信息产业股份有限公司 | 一种基于大小写不敏感的目录分片方法、装置及存储介质 |
WO2021128892A1 (zh) * | 2019-12-28 | 2021-07-01 | 浪潮电子信息产业股份有限公司 | 一种批量创建文件的方法、装置、设备及存储介质 |
CN111737204A (zh) * | 2020-06-12 | 2020-10-02 | 北京百度网讯科技有限公司 | 文件目录遍历方法、装置、设备和介质 |
Non-Patent Citations (1)
Title |
---|
黄华;张建刚;许鲁;: "蓝鲸分布式文件系统的客户端元数据缓存模型", 计算机科学, no. 09, 25 September 2005 (2005-09-25) * |
Also Published As
Publication number | Publication date |
---|---|
CN113760853B (zh) | 2024-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11741046B2 (en) | Method and apparatus for creating system disk snapshot of virtual machine | |
KR20120037397A (ko) | 카탈로그-기반 소프트웨어 컴포넌트 관리 | |
US9659021B1 (en) | Client based backups and backup indexing | |
CN111651424B (zh) | 一种数据处理方法、装置、数据节点及存储介质 | |
CN110825756B (zh) | 数据同步方法、装置、存储介质及设备 | |
US10387887B2 (en) | Bloom filter driven data synchronization | |
CN105975567B (zh) | 一种应用程序的内部文件的处理方法及装置 | |
CN112559913A (zh) | 一种数据处理方法、装置、计算设备及可读存储介质 | |
CN113760853B (zh) | 一种目录处理方法、服务器以及存储介质 | |
CN110765125B (zh) | 一种存储数据的方法及装置 | |
CN108446144B (zh) | 一种应用程序启动方法、装置、终端及存储介质 | |
CN115687276A (zh) | 一种文件处理方法、装置、电子设备及存储介质 | |
CN106446080B (zh) | 数据查询的方法、查询服务设备、客户端设备和数据系统 | |
CN115563073A (zh) | 分布式元数据的数据处理的方法、装置及电子设备 | |
CN110019056A (zh) | 用于云层的容器元数据分离 | |
US10242025B2 (en) | Efficient differential techniques for metafiles | |
CN111371818B (zh) | 一种数据请求的验证方法、装置及设备 | |
CN113645309A (zh) | 多客户端数据差异化二次缓存及同步的处理方法及系统 | |
CN113312412A (zh) | 一种统计数据的获取方法、装置、电子设备及存储介质 | |
CN107704557B (zh) | 操作互斥数据的处理方法、装置、计算机设备和存储介质 | |
CN112596825A (zh) | 一种云桌面启动方法及装置 | |
CN111858609A (zh) | 区块链模糊查询方法及装置 | |
CN111625397A (zh) | 业务日志备份方法、集群、装置、电子设备及存储介质 | |
CN111382060A (zh) | 文件发布记录处理方法、电子设备及计算机存储介质 | |
US20180068003A1 (en) | Updating a local instance of a shared drive |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |