CN111966633B - 用于查询目录下子节点的方法、装置、电子设备及介质 - Google Patents

用于查询目录下子节点的方法、装置、电子设备及介质 Download PDF

Info

Publication number
CN111966633B
CN111966633B CN202010819490.3A CN202010819490A CN111966633B CN 111966633 B CN111966633 B CN 111966633B CN 202010819490 A CN202010819490 A CN 202010819490A CN 111966633 B CN111966633 B CN 111966633B
Authority
CN
China
Prior art keywords
directory
hierarchical
name
hierarchical directory
bucket
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.)
Active
Application number
CN202010819490.3A
Other languages
English (en)
Other versions
CN111966633A (zh
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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202010819490.3A priority Critical patent/CN111966633B/zh
Publication of CN111966633A publication Critical patent/CN111966633A/zh
Application granted granted Critical
Publication of CN111966633B publication Critical patent/CN111966633B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • 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/18File system types
    • G06F16/182Distributed file systems

Abstract

本申请实施例公开了用于查询目录下子节点的方法、装置、电子设备及计算机可读存储介质,涉及云计算、内容分发网络、对象存储、分布式存储技术领域。该方法的一具体实施方式包括:将对象存储方式下不同的存储桶确定为不同的层级目录;建立每个层级目录与其下子节点之间的隶属关系,得到隶属关系表,其中,隶属关系表存储在分布式存储系统中,并控制同一层级目录下的所有子节点存储在相同的分布式节点上;响应于接收到包含目标层级目录的查询信息,利用该隶属关系表确定目标层级目录下的所有子节点的信息。通过该实施方式无需每次都需要从根目录开始逐层向下,在获取到目标层级目录的情况下,可直接、快速的基于隶属关系查询到其下的子节点信息。

Description

用于查询目录下子节点的方法、装置、电子设备及介质
技术领域
本申请涉及数据查询技术领域,具体涉及云计算、内容分发网络、对象存储、分布式存储技术领域,尤其涉及用于查询目录下子节点的方法、装置、电子设备及计算机可读存储介质。
背景技术
随着互联网时代、电子信息化时代的来临,庞大用户带来的数亿百亿计的文件,不再合适按照传统的存储局域网或网络附加存储的方式进行存储,基于对象的对象存储方式诞生。
基于其特性,对象存储中一般不会保存文件的层级关系,但是某些场景下我们需要像文件系统那样遍历对象存储系统某个目录下面包含哪些子节点(即子目录或子文件),例如使用用户态文件系统挂载对象存储的存储桶到本地,即把对象存储当作本地文件系统使用。
现有技术普遍通常采用基于传统的文件系统原理为对象存储增加额外的层级目录模块,用于实现上述需求。
发明内容
本申请实施例提出了一种用于查询目录下子节点的方法、装置、电子设备及计算机可读存储介质。
第一方面,本申请实施例提出了一种用于查询目录下子节点的方法,包括:将对象存储方式下不同的存储桶确定为不同的层级目录;建立每个层级目录与其下子节点之间的隶属关系,得到隶属关系表;隶属关系表存储在分布式存储系统中,并控制同一层级目录下的所有子节点存储在相同的分布式节点上;响应于接收到包含目标层级目录的查询信息,利用隶属关系表确定目标层级目录下的所有子节点的信息。
第二方面,本申请实施例提出了一种用于查询目录下子节点的装置,包括:层级目录确定单元,被配置成将对象存储方式下不同的存储桶确定为不同的层级目录;隶属关系确定单元,被配置成建立每个层级目录与其下子节点之间的隶属关系,得到隶属关系表;隶属关系表存储在分布式存储系统中,并控制同一层级目录下的所有子节点存储在相同的分布式节点上;子节点信息查询单元,被配置成响应于接收到包含目标层级目录的查询信息,利用隶属关系表确定目标层级目录下的所有子节点的信息。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,该指令被至少一个处理器执行,以使至少一个处理器执行时能够实现如第一方面中任一实现方式描述的用于查询目录下子节点的方法。
第四方面,本申请实施例提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使计算机执行时能够实现如第一方面中任一实现方式描述的用于查询目录下子节点的方法。
第五方面,本申请实施例提供了一种包括计算机程序的计算机程序产品,该计算机程序在被处理器执行时能够实现如第一方面中任一实现方式描述的用于查询目录下子节点的方法。
本申请实施例提供的用于查询目录下子节点的方法、装置、电子设备及计算机可读存储介质,首先,将对象存储方式下不同的存储桶确定为不同的层级目录;然后,建立每个层级目录与其下子节点之间的隶属关系,得到隶属关系表,其中,隶属关系表存储在分布式存储系统中,并控制同一层级目录下的所有子节点存储在相同的分布式节点上;接着,响应于接收到包含目标层级目录的查询信息,利用该隶属关系表确定目标层级目录下的所有子节点的信息。
区别于现有技术直接基于传统的文件系统为对象存储增设层级目录模块的方式,本申请通过直接在对象存储下加入了适配对象存储特性的新式层级目录关系,使得隶属关系中包含了每个层级目录与其下子节点的对应关系,无需向现有技术一样每次都需要从根目录开始逐层向下,在获取到目标层级目录的情况下,可直接、快速的基于隶属关系查询到其下的子节点信息,同时还保留了对象存储所具有的高可拓展性。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性系统架构;
图2为本申请实施例提供的一种用于查询目录下子节点的方法的流程图;
图3为本申请实施例提供的另一种用于查询目录下子节点的方法的流程图;
图4为本申请实施例提供的一种在具体应用场景下的层级目录名称确定方式的示意图;
图5为本申请实施例提供的一种用于查询目录下子节点的装置的结构框图;
图6为本申请实施例提供的一种适用于执行用于查询目录下子节点的方法的电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的用于查询目录下子节点的方法、装置、电子设备及计算机可读存储介质的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103和服务器105上可以安装有各种用于实现两者之间进行信息通讯的应用,例如节点信息查询类应用、数据库信息查询类应用、即时通讯类应用等。
终端设备101、102、103和服务器105可以是硬件,也可以是软件。当终端设备101、102、103为硬件时,可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等;当终端设备101、102、103为软件时,可以安装在上述所列举的电子设备中,其可以实现成多个软件或软件模块,也可以实现成单个软件或软件模块,在此不做具体限定。当服务器105为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器;服务器为软件时,可以实现成多个软件或软件模块,也可以实现成单个软件或软件模块,在此不做具体限定。
服务器105通过内置的各种应用可以提供各种服务,以可以在对象存储方式下提供指定目录下所包含子节点信息的节点信息查询类应用为例,服务器105在运行该节点信息查询类应用时可实现如下效果:接收到终端设备101、102、103通过网络104发来的包含目标层级目录的查询请求,基于从查询请求中提取出的目标层级目录,在预存的隶属关系表中通过查询确定出该目标层级目录下的所有子节点的信息。其中,所述隶属关系表中记录有不同层级目录与其下子节点之间的隶属关系,每个层级目录与对象存储方式下相应的存储桶相对应,该隶属关系表存储在分布式存储系统中,并控制同一层级目录下的所有子节点存储在相同的分布式节点上。即服务器105通过上述处理步骤输出与接收到的查询请求对应的目标层级目录下的子节点信息。
需要指出的是,包含目标层级目录的查询请求除可以从终端设备101、102、103通过网络104获取到之外,也可以通过各种方式预先存储在服务器105本地。因此,当服务器105检测到本地已经存储有这些数据时(例如开始处理之前留存的查询任务),可选择直接从本地获取这些数据,在此种情况下,示例性系统架构100也可以不包括终端设备101、102、103和网络104。
由于海量文件大多存储在云端,因此本申请后续各实施例所提供的用于查询目录下子节点的方法一般由云端的服务器105来执行,相应地,用于查询目录下子节点的装置一般也设置于服务器105中。但同时也需要指出的是,在终端设备101、102、103也具有满足要求的运算能力和运算资源时(尤其是终端设备本身也作为直接查询的存储节点时),终端设备101、102、103也可以通过其上安装的节点信息查询类应用完成上述本交由服务器105做的各项运算,进而输出与服务器105同样的结果。相应的,用于查询目录下子节点的装置也可以设置于终端设备101、102、103中。在此种情况下,示例性系统架构100也可以不包括服务器105和网络104。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
请参考图2,图2为本申请实施例提供的一种用于查询目录下子节点的方法的流程图,其中流程200包括以下步骤:
步骤201:将对象存储方式下不同的存储桶确定为不同的层级目录;
对象存储是面向对象/文件的、海量的互联网存储,它也可以直接被称为“云存储”。对象是已被封装的文件(编程中的对象就有封装性的特点),也就是说,在对象存储系统里,你不能直接打开/修改文件,但可以像FTP(File Transfer Protocol,文件传输协议)一样上传文件,下载文件等。另外对象存储没有像传统文件系统那样有一个很多层级的文件结构,而是只有一个“桶”(bucket)的概念(即本申请所描述的存储桶,也可以理解为存储空间),“桶”里面全部都是对象,是一种非常扁平化的存储方式。
基于对象存储的上述特性可知,标准的对象存储中不存在多层级的目录,但却存在需要像传统文件系统一样遍历得到对象存储系统某个目录下面包含哪些子节点的信息的实际场景和实际需求,在这种场景下就需要在对象存储中引入目录、层级的概念,以便基于层级目录确定目录下所隶属的子节点的信息。
基于上述需求,本步骤旨在由用于查询目录下子节点的方法的执行主体(例如图1所示的服务器105)将对象存储方式下不同的存储桶确定为不同的层级目录。
之所以将对象存储方式下的存储桶确定为层级目录,是因为桶(Bucket)是存储对象的容器,所有的对象都必须隶属于某个存储空间,对象存储提供了基于桶和对象的扁平化存储方式,桶中的所有对象都处于同一逻辑层级。即基于“桶中的所有对象都处于同一逻辑层级”这一特性,可认为对象存储方式下的“存储桶”类似于传统文件系统中用于区别层级的“目录或文件夹”,因此本申请在本步骤将对象存储方式下不同的存储桶确定为不同的层级目录。
通常情况下,存储桶的名称直接为Bucket+对象名,考虑到同名对象的存在,在将不同存储桶确定为不同的层级目录时,不同的层级目录也应具有全局唯一的名称用于区分。常规对象存储下,通过调整存储桶的名称的构成方式来进行同名对象的区分,而本申请则还可以在命名层级目录的名称时,采用保留同名对象但增加其它用于区分同名对象不同存储位置的相关信息,例如存储目录、目录深度等,从而通过全局唯一的层级目录名称来确定不同的层级目录。
步骤202:建立每个层级目录与其下子节点之间的隶属关系,得到隶属关系表;
在步骤201的基础上,本步骤旨在由上述执行主体建立每个层级目录与其下子节点之间的隶属关系,得到隶属关系表。其中,该隶属关系记录了每个层级目录下各子节点的相关信息,其中,子节点包括子文件或子目录,相关信息则包括文件类型、元数据等相关信息。
具体的,本步骤将层级目录与子节点之间的隶属关系采用“表”的形式进行记录,当然,除“表”的记录形式之外,也可以采用诸如目录树、节点数等其它记录形式来记录该隶属关系。具体选用哪种,可根据实际应用场景下所有可能存在的特殊要求灵活选择。进一步的,当采用“表”的形式记录隶属关系时,可采用包括但不限于Key-Value键值对、Map集合在内的多种具体举例形式。
需要说明的是,在得到隶属关系表之后,为了能够在分布式存储系统下便捷的通过其记录的隶属关系,快速的查询到某个指定目录下包含的子节点信息,还需要将该隶属关系表存储在分布式存储系统中,并根据对象存储的上述特性,将处于同一层级目录下的所有子节点都存储在相同的分布式节点上。
应当理解的是,层级目录与子节点之间的隶属关系可具体通过多种形式进行表示,即使是采用Key-Value的键值对方式下,也可以通过不同的Key、与不同的Key对应的Value的来实现相同的效果。
步骤203:响应于接收到包含目标层级目录的查询信息,利用隶属关系表确定目标层级目录下的所有子节点的信息。
在通过步骤201-步骤202的前期准备操作之后,本步骤旨在由上述执行主体响应于接收到包含有目标层级目录的查询信息(例如由如图1所示的终端设备101、102、103发出),利用隶属关系表确定目标层级目录下的所有子节点的信息。
进一步的,在确定出目标层级目录下的所有子节点的信息之后,还可以将确定出的信息连带所隶属的目标层级目录进行打包输出,以使用户可基于其中的包含的目标层级目录二次确定子节点信息是否正确,进而提升信息的正确性。
区别于现有技术直接基于传统的文件系统为对象存储增设层级目录模块的方式,本申请实施例提供的用于查询目录下子节点的方法通过直接在对象存储下加入了适配对象存储特性的新式层级目录关系,使得隶属关系中包含了每个层级目录与其下子节点的对应关系,无需向现有技术一样每次都需要从根目录开始逐层向下,在获取到目标层级目录的情况下,可直接、快速的基于隶属关系查询到其下的子节点信息,同时还保留了对象存储所具有的高可拓展性。
请参考图3,图3为本申请实施例提供的另一种用于查询目录下子节点的方法的流程图,其中流程300包括以下步骤:
步骤301:获取每个存储桶的桶名称、所处目录深度以及所处目录名称;
本步骤旨在由上述执行主体获取对象存储中每个存储桶的桶名称、所处目录深度以及所处目录名称,用于结合后续步骤在不修改同名对象的基础上(即允许存在相同的桶名称)确定出全局唯一的层级目录名称。
步骤302:按预设命名方式组合每个存储桶的桶名称、所处目录深度以及所处目录名称,得到相应存储桶的层级目录名称;
在步骤201的基础上,本步骤旨在由上述执行主体按预设命名方式组合每个存储桶的桶名称、所处目录深度以及所处目录名称,得到相应存储桶的层级目录名称。其中,该预设命名方式提供了相应的排序或组合方式,以期通过该排序或组合方式的方式命名得到全局唯一的层级目录名称。
一种包括但不限于的组合方式可以为:
将每个存储桶的桶名称、所处目录深度、所处目录名称以依次添加分隔符的方式按顺序组合,将组合结果作为相应存储桶的层级目录名称。该组合方式可抽象为公式:层级名称=桶名称+所处目录深度+所处目录名称,以“BucketA|2|a/b”为例,其中的“BucketA”为桶名称、“|”为分隔符、“2”为对象A所处的目录深度、“a/b”为对象A所处的目录名称。当然,可在不改变效果的情况下,换用其它类型的分隔符、调换“桶名称”“所处目录深度”“所处目录名称”之间的先后顺序等,此处不做具体限定。进一步的,也可以采用除直接组合多个不同的原始信息之外的其它方式,例如将多个原始信息进行其它编码或处理,以保证生成的名称具有全局唯一性。
步骤303:根据不同的层级目录名称将相应的存储桶确定为不同的层级目录;
在步骤302的基础上,本步骤旨在由上述执行主体根据确定出的不同的层级目录名称将相应的存储桶确定为不同的层级目录。
本实施例通过上述步骤301-步骤303提供了一种将对象存储方式下不同的存储桶确定为不同的层级目录的具体实现方式,通过分别获取与存储桶相关的三个参数,并辅以预设的命名方式得到与不同存储桶对应的全局唯一名称,最终将其名称作为与存储桶对应的层级目录的名称,从而确定出不同的层级目录,规避了因同名对象造成同名桶出现所导致的问题。
步骤304:以Key-Value形式建立每个层级目录与其下子节点之间的隶属关系,得到键值对表;
在步骤202的基础上,本步骤旨在由上述执行主体具体以Key-Value形式来建立每个层级目录与其下子节点之间的隶属关系,进而得到相应的键值对表。
应当理解的是,键值对表是由多个键值对构成的,在键值对中,“Key”表示“键”、“Value”表示“值”,而一个Key与一个Value将形成一个键值对,即使一个Key同时对应多个Value,也将通过拥有相同Key的多个键值对来表示。
如何具体通过键值对来记录每个层级目录与其下子节点之间的隶属关系,可通过表示不同含义的Key和Vlaue来实现。一种包括且不限于的实现方式具体为:Key为子节点在分布式存储系统存储的名称,名称中包含有相应子节点所处的层级目录信息,层级目录信息用于确定相应的层级目录,Value为子节点的文件类型和元数据。其中,用于确定相应的层级目录的层级目录信息包括且不限于上述给出的层级目录名称,层级目录信息在子节点在分布式存储系统存储的名称中的包含方式包括且不限于作为前缀、作为后缀或其它可被识别的位置。
步骤305:响应于接收到包含目标层级目录的查询信息,将目标层级目录的名称作为Key_1,并将键值对表中包含有Key_1的键值对确定为目标键值对;
本步骤旨在由上述执行主体响应于接收到包含目标层级目录的查询信息,将目标层级目录的名称作为Key_1,并将键值对表中包含有Key_1的键值对确定为目标键值对。具体的,在将键值对表中包含有Key_1的键值对确定为目标键值对的过程中,应根据Key_1在常规Key的包含方式来确定,例如当Key_1通常以前缀的方式包含在常规Key中时,只需要进行前缀部分的对比即可。
步骤306:根据目标键值对确定目标层级目录下的所有子节点的信息。
构成本实施例的步骤301-步骤303是上一实施例中步骤201的一种具体实现方式,基于指定的命名方式将与存储桶相关的桶名称、所处目录深度、所处目录名称三个参数进行组合,得到了全局唯一的名称,并基于全局唯一的名称将不同的存储桶确定为不同的层级目录;构成本实施例的步骤304是上一实施例中步骤202的一种具体通过键值对来记录隶属关系的实现方式,作为步骤304后续步骤的步骤305-步骤则是在键值对形式下步骤203的一种具体实现方式。
应当理解的是,步骤301-步骤303与步骤304-步骤306并无因果和依赖关系,完全可以分别与上一实施例形成单独的实施例。同理,步骤305-步骤306也只作为步骤304提供的键值对表现形式下的一种具体方式,在保留步骤304的情况下,也可以换用其它可实现类似目的解决方案。本实施例仅作为同时存在上述多个可单独拆分方案的优选实施例。
为加深理解,本申请还结合一个具体应用场景,给出了一种具体的实现方案。该场景为云计算下的云存储场景:用户的海量文件都以对象存储方式存储在云存储服务器中,但基于特殊需求需要向传统文件系统那样遍历对象存储系统某个目录下面包含哪些子节点。但由于常规的对象存储方式下并不记录层级关系,因此常规要实现上述需求,需要耗费大量的时间。
为解决上述问题,本实施例提供了一种在对象存储方式下增加记录层级关系的实现方案,重点在于如何在对象存储中更加科学、合理的增加层级关系,使得基于层级关系可实现高效的子节点查询、遍历。
由于对象存储中每个对象都存储于一个存储桶(bucket)中,各个存储桶中的对象相互独立。本实施例设计每个存储桶拥有独立的层级目录,但是所以桶的层级目录都统一保存在分布式存储中。
预先在云存储服务器中进行如下设置:
1)层级目录中目录的命名规则:
不同存储桶下面可能拥有同名的文件,为了避免层级目录冲突,将按照如下公式对层级目录进行命名,并称其为层级目录的名称,即层级目录名称:
层级目录名称=桶名称+所处目录深度+目录名称;
以“BucketA|2|a/b”为例,其中的“BucketA”为桶名称、“|”为分隔符、“2”为对象A所处的目录深度(第一层为a,第二层为a下的b)、“a/b”为对象A所处的目录名称。更多的例子可参见如图4所示的示意图,图4中左侧给出了命名规则和一种示例性的层级结构,右侧则是在示例性层级结构的基础上按照命名规则可得到的全局唯一的不同层级目录名称。
2)子节点的存储命名规则:
为了能够快速获取一个目录下的所有子节点,将目录的子节点均按以下规则进行命名:
层级目录名称+分隔符+子节点名称,通过该命名规则,将使得同一目录下的所有子节点都拥有相同的前缀:层级目录名称+分隔符。
3)存储规则:
通过2)能够计算出目录的子节点在层级目录下存储的Key值,然后将所有子节点以Key-Value的形式存储于分布式存储系统中,存储的Value为子节点的类型(文件或文件夹)和元数据(修改时间和文件大小等)。
将层级目录信息存储到分布式存储系统中,为了能够快速地获取一个目录的子节点,还要求同一目录的所有子节点(仅限制下一层的子节点)都必须存储到相同的位置(主机或者磁盘)。
在云存储服务器做好上述步骤对应的前期准备操作之后,即可按照下述步骤响应发来的子节点查询请求:
①从查询请求中提取目标层级目录;
②在分布式存储系统中存储的层级目录信息中筛选出所有以“目标层级目录名称”为前缀的键值对;
③将所有筛选出的键值对剔除前缀“层级目录名称+分隔符”,剩余的部分即是作为查询结果的子节点名称。
应当理解的是,在上述实施例已描述过的有益效果之外,由于不同存储桶的层级目录相互独立,以及虽然一个目录的子节点要求存储到相同位置,但是不同目录可以存储到不同的机器,所以机器规模可以不断增加的原因,使得按上述步骤实行的技术方案能够使层级目录成规模的线性扩展,同时也使层级目录的性能不因层级目录规模扩大而降低。
进一步参考图5,作为对上述各图所示方法的实现,本申请提供了一种用于查询目录下子节点的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5所示,本实施例的用于查询目录下子节点的装置500可以包括:层级目录确定单元501、隶属关系确定单元502、子节点信息查询单元503。其中,层级目录确定单元501,被配置成将对象存储方式下不同的存储桶确定为不同的层级目录;隶属关系确定单元502,被配置成建立每个层级目录与其下子节点之间的隶属关系,得到隶属关系表;隶属关系表存储在分布式存储系统中,并控制同一层级目录下的所有子节点存储在相同的分布式节点上;子节点信息查询单元503,被配置成响应于接收到包含目标层级目录的查询信息,利用隶属关系表确定目标层级目录下的所有子节点的信息。
在本实施例中,用于查询目录下子节点的装置500中:层级目录确定单元501、隶属关系确定单元502、子节点信息查询单元503的具体处理及其所带来的技术效果可分别参考图2对应实施例中的步骤201-203的相关说明,在此不再赘述。
在本实施例的一些可选的实现方式中,层级目录确定单元401可以包括:桶信息获取子单元,被配置成获取每个存储桶的桶名称、所处目录深度以及所处目录名称;桶命名子单元,被配置成按预设命名方式组合每个存储桶的桶名称、所处目录深度以及所处目录名称,得到相应存储桶的层级目录名称;层级目录确定子单元,被配置成根据不同的层级目录名称将相应的存储桶确定为不同的层级目录。
在本实施例的一些可选的实现方式中,该桶命名子单元可以进一步被配置成:
将每个存储桶的桶名称、所处目录深度、所处目录名称以依次添加分隔符的方式按顺序组合,将组合结果作为相应存储桶的层级目录名称。
在本实施例的一些可选的实现方式中,隶属关系确定单元402可以进一步被配置成:
以Key-Value形式建立每个层级目录与其下子节点之间的隶属关系,得到键值对表。
在本实施例的一些可选的实现方式中,当隶属关系表现为键值对表时,Key为子节点在分布式存储系统存储的名称,名称中包含有相应子节点所处的层级目录信息,层级目录信息用于确定相应的层级目录,Value为子节点的文件类型和元数据。
在本实施例的一些可选的实现方式中,子节点信息查询单元403可以进一步被配置成:
将目标层级目录的名称作为Key_1,并将键值对表中包含有Key_1的键值对确定为目标键值对;根据目标键值对确定目标层级目录下的所有子节点的信息。
本实施例作为对应于上述方法实施例的装置实施例存在,区别于现有技术直接基于传统的文件系统为对象存储增设层级目录模块的方式,本实施例提供的用于查询目录下子节点的装置通过直接在对象存储下加入了适配对象存储特性的新式层级目录关系,使得隶属关系中包含了每个层级目录与其下子节点的对应关系,无需向现有技术一样每次都需要从根目录开始逐层向下,在获取到目标层级目录的情况下,可直接、快速的基于隶属关系查询到其下的子节点信息,同时还保留了对象存储所具有的高可拓展性。
根据本申请的实施例,本申请还提供了一种电子设备和一种计算机可读存储介质。
图6示出了一种适于用来实现本申请实施例的用于查询目录下子节点的方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图6所示,该电子设备包括:一个或多个处理器601、存储器602,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图6中以一个处理器601为例。
存储器602即为本申请所提供的非瞬时计算机可读存储介质。其中,存储器存储有可由至少一个处理器执行的指令,以使至少一个处理器执行本申请所提供的用于查询目录下子节点的方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的用于查询目录下子节点的方法。
存储器602作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的用于查询目录下子节点的方法对应的程序指令/模块(例如,附图5所示的层级目录确定单元501、隶属关系确定单元502、子节点信息查询单元503)。处理器601通过运行存储在存储器602中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的用于查询目录下子节点的方法。
存储器602可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储该电子设备在执行用于查询目录下子节点的方法所创建的各类数据等。此外,存储器602可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器602可选包括相对于处理器601远程设置的存储器,这些远程存储器可以通过网络连接至适用于执行用于查询目录下子节点的方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
适用于执行用于查询目录下子节点的方法的电子设备还可以包括:输入装置603和输出装置604。处理器601、存储器602、输入装置603和输出装置604可以通过总线或者其他方式连接,图6中以通过总线连接为例。
输入装置603可接收输入的数字或字符信息,以及产生适用于执行用于查询目录下子节点的方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置604可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
区别于现有技术直接基于传统的文件系统为对象存储增设层级目录模块的方式,本实施例通过上述技术方案直接在对象存储下加入了适配对象存储特性的新式层级目录关系,使得隶属关系中包含了每个层级目录与其下子节点的对应关系,无需向现有技术一样每次都需要从根目录开始逐层向下,在获取到目标层级目录的情况下,可直接、快速的基于隶属关系查询到其下的子节点信息,同时还保留了对象存储所具有的高可拓展性。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (8)

1.一种用于查询目录下子节点的方法,包括:
将对象存储方式下不同的存储桶确定为不同的层级目录,包括:获取所述存储桶中每个存储对象的所处目录深度和所处目录名称,以及获取每个所述存储桶的桶名称;按预设命名方式组合所述桶名称、所述所处目录深度和所述所处目录名称,得到相应存储桶的层级目录名称;根据不同的层级目录名称将相应的存储桶确定为不同的层级目录;
建立每个所述层级目录与其下子节点之间的隶属关系,得到隶属关系表,所述隶属关系表存储在分布式存储系统中,并控制同一层级目录下的所有子节点存储在相同的分布式节点上,包括:以Key-Value形式建立每个所述层级目录与其下子节点之间的隶属关系,得到键值对表,Key为子节点在所述分布式存储系统存储的名称,所述名称中包含有相应子节点所处的层级目录信息,所述层级目录信息用于确定相应的层级目录,Value为子节点的文件类型和元数据;
响应于接收到包含目标层级目录的查询信息,利用所述隶属关系表确定所述目标层级目录下的所有子节点的信息。
2.根据权利要求1所述的方法,其中,所述按预设命名方式组合所述桶名称、所述所处目录深度和所述所处目录名称,得到相应存储桶的层级目录名称,包括:
将所述桶名称、所述所处目录深度、所述所处目录名称以依次添加分隔符的方式按顺序组合,将组合结果作为相应存储桶的层级目录名称。
3.根据权利要求1所述的方法,其中,所述利用所述隶属关系表确定所述目标层级目录下的所有子节点的信息,包括:
将所述目标层级目录的名称作为Key_1,并将所述键值对表中包含有所述Key_1的键值对确定为目标键值对;
根据所述目标键值对确定所述目标层级目录下的所有子节点的信息。
4.一种用于查询目录下子节点的装置,包括:
层级目录确定单元,被配置成将对象存储方式下不同的存储桶确定为不同的层级目录;所述层级目录确定单元被进一步配置成:获取所述存储桶中每个存储对象的所处目录深度和所处目录名称,以及获取每个所述存储桶的桶名称;按预设命名方式组合所述桶名称、所述所处目录深度和所述所处目录名称,得到相应存储桶的层级目录名称;根据不同的层级目录名称将相应的存储桶确定为不同的层级目录;
隶属关系确定单元,被配置成建立每个所述层级目录与其下子节点之间的隶属关系,得到隶属关系表;所述隶属关系表存储在分布式存储系统中,并控制同一层级目录下的所有子节点存储在相同的分布式节点上;所述隶属关系确定单元被进一步配置成:以Key-Value形式建立每个所述层级目录与其下子节点之间的隶属关系,得到键值对表,Key为子节点在所述分布式存储系统存储的名称,所述名称中包含有相应子节点所处的层级目录信息,所述层级目录信息用于确定相应的层级目录,Value为子节点的文件类型和元数据;
子节点信息查询单元,被配置成响应于接收到包含目标层级目录的查询信息,利用所述隶属关系表确定所述目标层级目录下的所有子节点的信息。
5.根据权利要求4所述的装置,其中,所述层级目标确定单元包括被配置成按预设命名方式组合所述桶名称、所述所处目录深度和所述所处目录名称,得到相应存储桶的层级目录名称的桶命名子单元,所述桶命名子单元被进一步配置成:
将所述桶名称、所述所处目录深度、所述所处目录名称以依次添加分隔符的方式按顺序组合,将组合结果作为相应存储桶的层级目录名称。
6.根据权利要求4所述的装置,其中,所述子节点信息查询单元进一步被配置成:
将所述目标层级目录的名称作为Key_1,并将所述键值对表中包含有所述Key_1的键值对确定为目标键值对;
根据所述目标键值对确定所述目标层级目录下的所有子节点的信息。
7.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-3中任一项所述的用于查询目录下子节点的方法。
8.一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行权利要求1-3中任一项所述的用于查询目录下子节点的方法。
CN202010819490.3A 2020-08-14 2020-08-14 用于查询目录下子节点的方法、装置、电子设备及介质 Active CN111966633B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010819490.3A CN111966633B (zh) 2020-08-14 2020-08-14 用于查询目录下子节点的方法、装置、电子设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010819490.3A CN111966633B (zh) 2020-08-14 2020-08-14 用于查询目录下子节点的方法、装置、电子设备及介质

Publications (2)

Publication Number Publication Date
CN111966633A CN111966633A (zh) 2020-11-20
CN111966633B true CN111966633B (zh) 2024-04-09

Family

ID=73365724

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010819490.3A Active CN111966633B (zh) 2020-08-14 2020-08-14 用于查询目录下子节点的方法、装置、电子设备及介质

Country Status (1)

Country Link
CN (1) CN111966633B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112559522A (zh) * 2020-12-07 2021-03-26 百度在线网络技术(北京)有限公司 数据存储方法、装置、查询方法、电子设备及可读介质
CN112783447A (zh) * 2021-01-22 2021-05-11 北京百度网讯科技有限公司 用于处理快照的方法、装置、设备、介质和产品
CN114302085B (zh) * 2021-12-23 2024-02-20 云从科技集团股份有限公司 数据存储方法、装置、电子设备及存储介质
CN115600557B (zh) * 2022-11-29 2023-03-21 明度智云(浙江)科技有限公司 目录数据处理方法、装置、电子设备及存储介质
CN116150093B (zh) * 2023-03-04 2023-11-03 北京大道云行科技有限公司 一种对象存储列举对象的实现方法及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8321487B1 (en) * 2010-06-30 2012-11-27 Emc Corporation Recovery of directory information
CN108491549A (zh) * 2018-04-09 2018-09-04 深圳市茁壮网络股份有限公司 一种分布式存储系统中文件目录的创建方法及装置
CN109189728A (zh) * 2018-07-18 2019-01-11 深圳市网心科技有限公司 智能硬件设备、磁盘数据处理方法和存储介质
CN111008185A (zh) * 2019-10-29 2020-04-14 厦门网宿有限公司 一种数据共享方法、系统及设备
CN111078653A (zh) * 2019-10-29 2020-04-28 厦门网宿有限公司 一种数据存储方法、系统及设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106202367B (zh) * 2016-07-07 2019-03-05 腾讯科技(深圳)有限公司 一种对象信息的处理方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8321487B1 (en) * 2010-06-30 2012-11-27 Emc Corporation Recovery of directory information
CN108491549A (zh) * 2018-04-09 2018-09-04 深圳市茁壮网络股份有限公司 一种分布式存储系统中文件目录的创建方法及装置
CN109189728A (zh) * 2018-07-18 2019-01-11 深圳市网心科技有限公司 智能硬件设备、磁盘数据处理方法和存储介质
CN111008185A (zh) * 2019-10-29 2020-04-14 厦门网宿有限公司 一种数据共享方法、系统及设备
CN111078653A (zh) * 2019-10-29 2020-04-28 厦门网宿有限公司 一种数据存储方法、系统及设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种云存储目录元数据管理系统;赵志峰;张卫;;广播与电视技术(02);全文 *

Also Published As

Publication number Publication date
CN111966633A (zh) 2020-11-20

Similar Documents

Publication Publication Date Title
CN111966633B (zh) 用于查询目录下子节点的方法、装置、电子设备及介质
US11886870B2 (en) Maintaining and updating software versions via hierarchy
JP6621543B2 (ja) ハイブリッドアプリケーションの自動更新
KR20200027413A (ko) 데이터 저장 방법, 장치 및 시스템
KR102376713B1 (ko) 복합 파티션 함수 제공 기법
US10372783B2 (en) Persisting the state of visual control elements in uniform resource locator (URL)-generated web pages
US11296940B2 (en) Centralized configuration data in a distributed file system
CN107431651A (zh) 一种网络服务的生命周期管理方法及设备
US20210209057A1 (en) File system quota versioning
US8176097B2 (en) Maintaining data coherency within related multi-perspective user interfaces via session-less queries
CN112632919B (zh) 一种文档编辑方法、装置、计算机设备和存储介质
US20210211499A1 (en) File directory traversal method, apparatus, device, and medium
CN111881385A (zh) 推送内容生成方法、装置、设备和可读存储介质
CN116931910A (zh) 基于协议框架的开发方法、装置、电子设备及存储介质
CN115705313A (zh) 一种数据处理方法、装置、设备及计算机可读存储介质
US20150227537A1 (en) Non-uniform file access in a distributed file system
CN111274004A (zh) 进程实例管理方法、装置及计算机存储介质
CN111001157B (zh) 引用信息的生成方法和装置、存储介质及电子装置
CN113010811B (zh) 网页获取方法、装置、电子设备及计算机可读存储介质
CN111026438B (zh) 小程序包和页面关键信息的提取方法、装置、设备及介质
JP2021120899A (ja) ユーザ識別方法、装置、記憶媒体及び電子機器
CN112269664A (zh) 云服务器资源管理方法、装置及系统
CN111459887B (zh) 资源筛查方法、装置、电子设备和存储介质
CN114328272B (zh) 应用测试方法、装置、系统和电子设备
KR102503028B1 (ko) 블룸필터를 이용한 분산식별자 검색 방법

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