CN114564449B - 数据查询方法、装置、设备以及存储介质 - Google Patents

数据查询方法、装置、设备以及存储介质 Download PDF

Info

Publication number
CN114564449B
CN114564449B CN202210189965.4A CN202210189965A CN114564449B CN 114564449 B CN114564449 B CN 114564449B CN 202210189965 A CN202210189965 A CN 202210189965A CN 114564449 B CN114564449 B CN 114564449B
Authority
CN
China
Prior art keywords
queried
path
target data
current path
sub
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
CN202210189965.4A
Other languages
English (en)
Other versions
CN114564449A (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
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 CN202210189965.4A priority Critical patent/CN114564449B/zh
Publication of CN114564449A publication Critical patent/CN114564449A/zh
Application granted granted Critical
Publication of CN114564449B publication Critical patent/CN114564449B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本公开提供了一种数据查询方法、装置、设备、存储介质以及程序产品,涉及计算机技术领域,尤其涉及分布式计算技术领域。具体实现方案为:根据待查询路径,查询目标数据;在查询到目标数据的情况下,输出目标数据;以及在未查询到目标数据的情况下,将待查询路径划分为第一部分和第二部分,确定第一部分作为当前待查询路径;在查询到与当前待查询路径对应的中间数据的情况下,根据中间数据,确定目标数据;以及在未查询到与当前待查询路径对应的中间数据的情况下,根据第一部分和当前查询路径,确定新的当前待查询路径,并返回查询与当前待查询路径对应的中间数据的操作。

Description

数据查询方法、装置、设备以及存储介质
技术领域
本公开涉及计算机技术领域,尤其涉及分布式计算技术领域。
背景技术
文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构。文件系统根据单机还是多机分为本地文件系统和分布式文件系统,本地文件系统例如可以包括Linux系统中的ext3、ext4,以及Windows系统中的fat32、ntfs等。由于数据量的增长以及对数据共享和性能的需求,本地文件系统很难满足,所以出现了分布式的文件系统,如开源的cepf、GPFS、wekafs等。
对于文件系统来说命名空间(namespace)的管理不可缺少。命名空间的主要作用就是管理文件系统中文件和目录的元数据信息以及实现文件和目录的快速检索。
发明内容
本公开提供了一种数据查询方法、装置、设备、存储介质以及程序产品。
根据本公开的一方面,提供了一种数据查询方法,包括:根据待查询路径,查询目标数据;在查询到所述目标数据的情况下,输出所述目标数据;以及在未查询到所述目标数据的情况下,将待查询路径划分为第一部分和第二部分,确定所述第一部分作为当前待查询路径;在查询到与所述当前待查询路径对应的中间数据的情况下,根据所述中间数据,确定所述目标数据;以及在未查询到与所述当前待查询路径对应的中间数据的情况下,根据所述第一部分和当前查询路径,确定新的当前待查询路径,并返回查询与所述当前待查询路径对应的中间数据的操作。
根据本公开的另一方面,提供了一种数据查询装置,包括:查询模块,用于根据待查询路径,查询目标数据;输出模块,用于在查询到所述目标数据的情况下,输出所述目标数据;以及划分模块,用于在未查询到所述目标数据的情况下,将待查询路径划分为第一部分和第二部分,确定所述第一部分作为当前待查询路径;数据确定模块,用于在查询到与所述当前待查询路径对应的中间数据的情况下,根据所述中间数据,确定所述目标数据;以及路径确定模块,用于在未查询到与所述当前待查询路径对应的中间数据的情况下,根据所述第一部分和当前查询路径,确定新的当前待查询路径,并返回查询与所述当前待查询路径对应的中间数据的操作。
本公开的另一个方面提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本公开实施例所示的方法。
根据本公开实施例的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行本公开实施例所示的方法。
根据本公开实施例的另一方面,提供了一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现本公开实施例所示方法的步骤。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开实施例的文件系统的结构示意图;
图2示意性示出了根据本公开的实施例的数据查询方法的流程图;
图3示意性示出了根据本公开的实施例的根据中间数据,确定目标数据的方法的流程图;
图4示意性示出了根据本公开的实施例的根据第一部分和当前查询路径,确定新的当前待查询路径的方法的流程图;
图5示意性示出了根据本公开另一实施例的数据查询方法的示意图;
图6示意性示出了根据本公开另一实施例的数据查询方法的示意图;
图7是用来实现本公开实施例的数据查询装置的框图;以及
图8示意性示出了可以用来实施本公开的实施例的示例电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
以下将结合图1对本公开实施例的文件系统进行描述。
根据本公开的实施例,文件系统可以为本地文件系统,也可以为分布式文件系统。其中,本地文件系统例如可以包括Linux系统中的ext3、ext4,以及Windows系统中的fat32、ntfs等。分布式的文件系统例如可以包括cepf、GPFS、wekafs等。
文件系统包括文件和目录。其中,目录主要用来组织起整个命名空间,目录下可以创建子目录或者文件。而文件主要用来存放数据。在使用文件系统时可以根据文件或目录的路径对相应的文件或目录进行操作。
图1是根据本公开实施例的文件系统的结构示意图。需要注意的是,图1所示仅为可以应用本公开实施例的文件系统的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他文件系统。
如图1所示,根据该实施例的文件系统100可以包括根目录11。根目录11下可以设置有二级目录111、112、113和114。二级子目录113下可以设置有三级目录1131、1132和1133。二级目录111下可以设置有文件1111。文件1111例如可以包括视频文件、音频文件、文本文件、程序文件等等。
根据本公开的实施例,文件系统中每个目录或文件具有对应的路径。例如,目录1131所对应的路径可以为/11/113/1131。又例如,文件1111所对应的路径可以为/11/111/1111。在用户需要对目录或文件进行操作时,文件系统会根据该目录或文件所对应的路径,查找该目录或文件的元数据。文件系统可以通过元数据实现对磁盘空间的管理。可以根据元数据,将用户对目录或文件的操作转化为文件系统对磁盘空间的操作。其中,操作例如可以包括读取、写入、删除等等。
本公开的技术方案中,所涉及的数据的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
图2示意性示出了根据本公开的实施例的数据查询方法的流程图。
如图2所示,该数据查询方法200包括在操作S210,根据待查询路径,查询目标数据。
根据本公开的实施例,待查询路径为待查询对象在文件系统中的路径。目标数据可以包括待查询对象的元数据。示例性地,待查询对象例如可以包括目录和文件。相应地,目标数据可以包括目录元数据和文件元数据。
根据本公开的实施例,待查询对象的元数据可以以key/value的形式存储。例如,可以将待查询对象的路径作为key,将该待查询对象的元数据作为value。从而,可以根据待查询对象的路径查找key/value数据,即可找到该待查询对象的元数据。另外,本实施例的数据查询方法可以支持并发查询,不需要为待查询数据的父目录加锁,从而增加了并发性。
然后,在操作S220,确定是否查询到目标数据。在查询到目标数据的情况下,执行操作S230。在未查询到目标数据的情况下,执行操作S240。
在操作S230,输出目标数据。
在操作S240,将待查询路径划分为第一部分和第二部分,确定第一部分作为当前待查询路径。
根据本公开的实施例,例如可以根据二分法将待查询路径划分为第一部分和第二部分。
示例性地,本实施例中,待查询路径可以包括n层级,其中,n为正整数。每个层级可以对应一个条目。在划分时,可以将该待查询路径的前n/2个层级划分为第一部分,将该待查询路径的后n/2个层级划分为第二部分。特别地,当n/2不为整数时,对n/2取整,得到m,然后可以将该待查询路径的前m个层级划分为第一部分,将该待查询路径的后n-m个层级划分为第二部分。
例如,待查询路径可以为/a/b/c/d,即包括4个层级/a、/b、/c和/d。在划分时,可以将前2个层级/a/b划分为第一部分,将后2个层级/c/d划分为第二部分。
根据本公开的实施例,通过对待查询路径按照二分法进行拆分,根据拆分后的路径来查找数据,可以提高查找效率。
在操作S250,查询与当前待查询路径对应的中间数据。
根据本公开的实施例,中间数据例如可以为与当前待查询路径对应的元数据。
在操作S260,确定是否查询到与当前待查询路径对应的中间数据。在查询到与当前待查询路径对应的中间数据的情况下,执行操作S270。在未查询到与当前待查询路径对应的中间数据的情况下,执行操作S280。
在操作S270,根据中间数据,确定目标数据。
在操作S280,根据第一部分和当前查询路径,确定新的当前待查询路径,并返回操作S250。
相关技术中,命名空间以目录树进行组织,元数据存储在各节点中。因此在查找数据时,需要依次遍历目录树中的节点,导致效率较低。
根据本公开的实施例,可以根据待查询对象所对应的路径直接查找待查询对象的元数据,不需要对目录树中的节点进行遍历,从而提高了查找效率。
根据本公开另一些实施例,还可以对目录或文件的路径进行哈希计算,得到哈希值,将该哈希值作为key,将该目录或文件的元数据作为value。基于此,根据待查询路径,查询目标数据例如可以包括:对待查询路径进行哈希计算,得到第一哈希值。然后根据第一哈希值,查询目标数据。
下面参考图3,结合和具体实施例,对在查询到与当前待查询路径对应的中间数据的情况下,根据中间数据,确定目标数据的方法进行说明。本领域技术人员可以理解,以下示例实施例仅用于理解本公开,本公开并不局限于此。
图3示意性示出了根据本公开的实施例的根据中间数据,确定目标数据的方法的流程图。
如图3所示,该数据查询方法370包括在操作S371,确定中间数据是否为目标数据。如果中间数据是目标数据,则执行操作S372。如果中间数据不是目标数据,则执行操作S373~S376。
在操作S372,输出目标数据。
在操作S373,将第二部分划为第一子部分和第二子部分。
在操作S374,将当前待查询路径和第一子部分结合,作为新的当前待查询路径。
在操作S375,确定第一子部分作为新的第一部分,并确定第二子部分作为新的第二部分。
在操作S376,返回查询与当前待查询路径对应的中间数据的操作。
根据本公开的实施例,例如可以利用二分法将第二部分划为第一子部分和第二子部分。其中,具体划分方法可以参考上文利用二分法划分待查询路径的方法,在此不再赘述。
例如,当前待查询路径可以为/a/b,第二部分可以为/c/d,则可以将第二部分分为第一子部分/c和第二子部分/d。然后将当前待查询路径/a/b与第一子部分/c结合,得到/a/b/c,作为新的当前查询路径。
下面参考图4,结合和具体实施例,对在未查询到与当前待查询路径对应的中间数据的情况下,根据第一部分和当前查询路径,确定新的当前待查询路径的方法进行说明。本领域技术人员可以理解,以下示例实施例仅用于理解本公开,本公开并不局限于此。
图4示意性示出了根据本公开的实施例的根据第一部分和当前查询路径,确定新的当前待查询路径的方法的流程图。
如图4所示,该数据查询方法480包括在操作S481,将第一部分划分为第一子部分和第二子部分。
在操作S482,删除当前待查询路径中的第二子部分,得到新的当前待查询路径。
在操作S483,确定第一子部分作为新的第一部分,并确定第二子部分作为新的第二部分。
根据本公开的实施例,例如可以利用二分法将第一部分划为第一子部分和第二子部分。其中,具体划分方法可以参考上文利用二分法划分待查询路径的方法,在此不再赘述。
例如,当前待查询路径可以为/a/b,第一部分可以为/a/b,则可以将第一部分分为第一子部分/a和第二子部分/b。然后将当前待查询路径/a/b中删除/b结合,得到/a,作为新的当前查询路径。
根据本公开的实施例,路径中每个层级可以对应一个条目(entry)。每个条目也可以作为一个路径。例如,路径/a/b/c/d中,第一层级对应于条目/a,第二层级对应于条目/a/b,第三层级对应于条目/a/b/c,第四层级对应于条目/a/b/c/d。
据本公开的实施例,文件和目录可以支持重命名。当文件和目录被重命名之后,对应的路径也会发生重命名。例如,文件原名称为c,路径为/a/b/c,文件被重命名为d,则对应的路径重命名为/a/b/d。又例如,目录原路径为/a/b/c,重命名后为/a/x/y。
在文件发生重命名的情况下,可以将原文件删除。需要说明的是,这里的删除不是将原文件从存储器中删除,而只是进行标记。然后根据在指定目录中创建新的文件。在创建新的文件时将原文件id保存在新文件的元数据中,这样重命名之后文件数据不需进行迁移。
在文件发生重命名的情况下,如果创建了同名文件,则可以根据为原文件和新创建的同名文件配置版本信息,通过版本信息进行区分。在确定同名文件的写入位置时可以加入版本信息。这样创建同名文件后,就和原文件进行了区分,不会将原文件覆盖。
在目录重命名的情况下,原目录保留但是会在原目录的元数据中配置重命名标记,表明该目录已被重命名过。而新目录的元数据中会记录原目录的路径。但是这样会导致原目录下所有条目数据需要进行迁移。
根据本公开的实施例,为了做到元数据信息不进行迁移,可以引入一个重命名处理空间,独立于命名空间。新创建的目录不会在命名空间创建而是在重命名处理空间创建。新创建目录的元数据中会记录对应的原目录的路径。
目录重命名之后,再创建同名目录时,为了区分这两个目录以及不移动目录下的目录项数据,引入两个额外概念,一是目录版本。每个目录可以配置有版本。目录第一次被创建时是没有版本的,但是重命名之后再创建同名目录的情况下,在存储该同名目录的路径时,需要在该同名目录后面加上特殊字符以及版本号。其中,特殊字符可以自由设置,例如可以包括#、&、*、@等。二是重命名处理空间。在重命名之后创建同名目录的情况下,可以在重命名处理空间中记录一条信息,该条信息表明现在最新的目录实际目录名是什么。
例如,第一次创建目录/a/b/c时,直接创建。当将/a/b/c重命名成/a/x/y后,原目录/a/b/c不会被删除只是做了rename标记,新的目录/a/x/y的元数据中会记录原来的路径/a/b/c。之后如果又创建了/a/b/c,则首先查找到之前/a/b/c所在元数据,发现已经被rename了。因此可以在/a/b/c后面加上和版本号,重新创建目录。另外,可以在重命名处理空间中记录一条信息,用于表示现在/a/b/c实际是/a/b/c#1。
根据本公开的实施例,重命名处理空间可以缓存在客户端,这样以后在目录/a/b/c下创建子目录和文件时,都会进行路径前缀替换,然后再进行查询操作。从而可以保证最初的/a/b/c目录下的所有数据都可以不进行移动。
基于此,可以确定待查询路径中是否存在已被重命名的条目。在待查询路径中存在已被重命名的条目的情况下,将条目替换为重命名后的条目。
根据本公开的实施例,文件和目录还可以支持配置软链接。其中,软链接是指即新建文件和目录后,指向原目录路径的链接。软链接实现和重命名是一致的,也是分为文件软链接和目录软链接。在为文件设置软链接后,原文件没有任何变化,而软链接文件的元数据中配置有指向原文件信息的记录。访问该文件时,如果发现配置有软链接并且记录所指向的是文件,就可以根据该记录获取到原有文件。在为目录设置软链接后,原有目录没有任何变化,软链接目录的元数据中配置有原目录路径信息。
基于此,可以确定待查询路径中的条目是否配置有软链接。在条目配置有软链接的情况下,根据软链接,修改条目,以便将条目修改为软链接指示的路径。
根据本公开的实施例,每个文件配置具有唯一文件标识,例如id。文件的内容数据配置有分片标识,例如chunkid,用于表示内容数据所在文件分片的位置。对文件的内容数据进行定位时,可以根据该文件的文件标识和分片标识进行查询。例如,在访问文件的内容数据时,可以根据文件的路径进行查询找到文件元数据,然后根据文件元数据找到对应的文件标识。接下来根据该文件标识和内容数据所对应的分片标识,进行第二次查找过程,从而找到文件内容数据的位置。
基于此,在目标数据包括文件元数据的情况下,可以根据文件元数据,确定文件标识和分片标识。根据文件标识和分片标识,生成第二哈希值。根据第二哈希值,查询文件内容数据。
根据本公开的实施例,文件采用了两次哈希查询,第一次哈希查询用路径作为key,而第二次哈希查询用文件标识和分片标识确定文件内容数据的位置。通过这种设计,可以在对路径进行重命名和设置软链接时,不需要对数据进行迁移。
下面参考图5~图6,结合具体实施例对上文所示的数据查询方法做进一步说明。本领域技术人员可以理解,以下示例实施例仅用于理解本公开,本公开并不局限于此。
图5示意性示出了根据本公开另一实施例的数据查询方法的示意图。
在图5中示出了,待查询路径可以为/a/b/c/d/e/h/g。首先对/a/b/c/d/e/h/g进行哈希计算,得到第一哈希值。然后在key/value数据库中查询是否存在与第一哈希值对应的元数据。在未查询到与第一哈希值对应的元数据的情况下,将/a/b/c/d/e/h/g分为/a/b/c/d和/e/h/g两部分,并将/a/b/c/d作为当前待查询路径。
对当前待查询路径/a/b/c/d进行哈希计算,得到第二哈希值。然后在key/value数据库中查询是否存在与第二哈希值对应的元数据。在未查询到与第二哈希值对应的元数据的情况下,将/a/b/c/d分为/a/b和/c/d两部分,并将/a/b作为当前待查询路径。
对当前待查询路径/a/b进行哈希计算,得到第三哈希值。然后在key/value数据库中查询是否存在与第三哈希值对应的元数据。在未查询到与第三哈希值对应的元数据的情况下,将/a/b分为/a和/b两部分,并将/a作为当前待查询路径。
对当前待查询路径/a进行哈希计算,得到第四哈希值。然后在key/value数据库中查询是否存在与第四哈希值对应的元数据。在未查询到与第四哈希值对应的元数据的情况下,确定所查询的数据不存在。
图6示意性示出了根据本公开另一实施例的数据查询方法的示意图。
在图6中示出了,待查询对象初始的路径为/x/y/z/f/g,其中条目/x/y/z/f/被重命名为/a/b/c/d/e/h,从而使待查询对象的路径变为/a/b/c/d/e/h/g。
基于此,可以首先对/a/b/c/d/e/h/g进行哈希计算,得到第一哈希值。然后在key/value数据库中查询是否存在与第一哈希值对应的元数据。在未查询到与第一哈希值对应的元数据的情况下,将/a/b/c/d/e/h/g分为/a/b/c/d和/e/h/g两部分,并将/a/b/c/d作为当前待查询路径。
对当前待查询路径/a/b/c/d进行哈希计算,得到第二哈希值。然后在key/value数据库中查询是否存在与第二哈希值对应的元数据。本实施例中,查询到与第二哈希值对应的元数据。基于此,可以确定该元数据是否配置有重命名标识。本实施例中,该元数据没有配置重命名标识。然后将/e/h/g分为/e/h和/g两部分,并将/a/b/c/d与/e/h结合,得到/a/b/c/d/e/h作为当前待查询路径。
对当前待查询路径/a/b/c/d/e/h进行哈希计算,得到第三哈希值。然后在key/value数据库中查询是否存在与第三哈希值对应的元数据。本实施例中,查询到与第三哈希值对应的元数据。基于此,可以确定该元数据是否配置有重命名标识。本实施例中,该元数据配置有重命名标识。因此可以获取重命名记录,得到重命名前的路径/x/y/z/f/g。然后将/a/b/c/d/e/h/替换为/x/y/z/f/。然后将/x/y/z/f/与/g结合,得到/x/y/z/f/g作为当前待查询路径。
对当前待查询路径/x/y/z/f/g进行哈希计算,得到第四哈希值。然后在key/value数据库中查询是否存在与第四哈希值对应的元数据。本实施例中,查询到与第四哈希值对应的元数据,且该元数据未配置有重命名标识。由于路径已全部查询完毕,因此可以输出得到的查询结果。
图7示意性示出了根据本公开实施例的xx装置的框图。
如图7所示,装置700包括查询模块710、输出模块720、划分模块730、数据确定模块740和路径确定模块750。
查询模块710,用于根据待查询路径,查询目标数据。
输出模块720,用于在查询到目标数据的情况下,输出目标数据。
划分模块730,用于在未查询到目标数据的情况下,将待查询路径划分为第一部分和第二部分,确定第一部分作为当前待查询路径。
数据确定模块740,用于在查询到与当前待查询路径对应的中间数据的情况下,根据中间数据,确定目标数据。
路径确定模块750,用于在未查询到与当前待查询路径对应的中间数据的情况下,根据第一部分和当前查询路径,确定新的当前待查询路径,并返回查询与当前待查询路径对应的中间数据的操作。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图8示意性示出了可以用来实施本公开的实施例的示例电子设备800的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图8所示,设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如数据查询方法。例如,在一些实施例中,数据查询方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM 803并由计算单元801执行时,可以执行上文描述的数据查询方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行数据查询方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务(Virtual Private Server,或简称VPS)中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (10)

1.一种数据查询方法,包括:
根据待查询路径,查询目标数据;
在查询到所述目标数据的情况下,输出所述目标数据;以及
在未查询到所述目标数据的情况下,
将待查询路径划分为第一部分和第二部分,确定所述第一部分作为当前待查询路径;
在查询到与所述当前待查询路径对应的中间数据的情况下,如果所述中间数据是所述目标数据,则输出所述目标数据;以及
如果所述中间数据不是目标数据,则
将所述第二部分划为第一子部分和第二子部分;
将所述当前待查询路径和所述第一子部分结合,作为新的当前待查询路径;
确定所述第一子部分作为新的第一部分,并确定所述第二子部分作为新的第二部分;以及
返回查询与所述当前待查询路径对应的中间数据的操作;以及
在未查询到与所述当前待查询路径对应的中间数据的情况下,将所述第一部分划分为第一子部分和第二子部分;
删除所述当前待查询路径中的所述第二子部分,得到新的当前待查询路径;以及
确定所述第一子部分作为新的第一部分,并确定所述第二子部分作为新的第二部分,并返回查询与所述当前待查询路径对应的中间数据的操作。
2.根据权利要求1所述的方法,还包括:
确定所述待查询路径中是否存在已被重命名的条目;以及
在待查询路径中存在已被重命名的条目的情况下,将所述条目替换为重命名后的条目。
3.根据权利要求1所述的方法,还包括:
确定所述待查询路径中的条目是否配置有软链接;以及
在所述条目配置有软链接的情况下,根据所述软链接,修改所述条目。
4.根据权利要求1所述的方法,其中,所述根据待查询路径,查询目标数据包括:
对所述待查询路径进行哈希计算,得到第一哈希值;以及
根据所述第一哈希值,查询所述目标数据。
5.根据权利要求1所述的方法,其中,所述目标数据包括文件元数据或目录元数据。
6.根据权利要求5所述的方法,还包括:
在所述目标数据包括文件元数据的情况下,根据所述文件元数据,确定文件标识和分片标识;
根据所述文件标识和所述分片标识,生成第二哈希值;以及
根据所述第二哈希值,查询文件内容数据。
7.一种数据查询装置,包括:
查询模块,用于根据待查询路径,查询目标数据;
输出模块,用于在查询到所述目标数据的情况下,输出所述目标数据;以及
划分模块,用于在未查询到所述目标数据的情况下,将待查询路径划分为第一部分和第二部分,确定所述第一部分作为当前待查询路径;
数据确定模块,用于在查询到与所述当前待查询路径对应的中间数据的情况下,如果所述中间数据是所述目标数据,则输出所述目标数据;以及如果所述中间数据不是目标数据,则将所述第二部分划为第一子部分和第二子部分;将所述当前待查询路径和所述第一子部分结合,作为新的当前待查询路径;确定所述第一子部分作为新的第一部分,并确定所述第二子部分作为新的第二部分;以及返回查询与所述当前待查询路径对应的中间数据的操作;以及
路径确定模块,用于在未查询到与所述当前待查询路径对应的中间数据的情况下,将所述第一部分划分为第一子部分和第二子部分;删除所述当前待查询路径中的所述第二子部分,得到新的当前待查询路径;以及确定所述第一子部分作为新的第一部分,并确定所述第二子部分作为新的第二部分,并返回查询与所述当前待查询路径对应的中间数据的操作。
8.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的方法。
9.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-6中任一项所述的方法。
10.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1-6中任一项所述方法的步骤。
CN202210189965.4A 2022-02-28 数据查询方法、装置、设备以及存储介质 Active CN114564449B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210189965.4A CN114564449B (zh) 2022-02-28 数据查询方法、装置、设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210189965.4A CN114564449B (zh) 2022-02-28 数据查询方法、装置、设备以及存储介质

Publications (2)

Publication Number Publication Date
CN114564449A CN114564449A (zh) 2022-05-31
CN114564449B true CN114564449B (zh) 2024-07-12

Family

ID=

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106682003A (zh) * 2015-11-06 2017-05-17 中国电信股份有限公司 分布式存储命名空间的路径分割映射方法和装置
JP2020135207A (ja) * 2019-02-15 2020-08-31 富士通株式会社 経路探索方法、経路探索プログラム、経路探索装置および経路探索のデータ構造

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106682003A (zh) * 2015-11-06 2017-05-17 中国电信股份有限公司 分布式存储命名空间的路径分割映射方法和装置
JP2020135207A (ja) * 2019-02-15 2020-08-31 富士通株式会社 経路探索方法、経路探索プログラム、経路探索装置および経路探索のデータ構造

Similar Documents

Publication Publication Date Title
US9411840B2 (en) Scalable data structures
CN106021266B (zh) 支持动态更新的快速多层索引
US9830324B2 (en) Content based organization of file systems
US10210191B2 (en) Accelerated access to objects in an object store implemented utilizing a file storage system
US8527556B2 (en) Systems and methods to update a content store associated with a search index
WO2020073854A1 (zh) 管理内存数据及在内存中维护数据的方法和系统
CN107704202B (zh) 一种数据快速读写的方法和装置
CN106484820B (zh) 一种重命名方法、访问方法及装置
CN111241108B (zh) 基于键值对kv系统的索引方法、装置、电子设备和介质
US11216516B2 (en) Method and system for scalable search using microservice and cloud based search with records indexes
CN107526746B (zh) 管理文档索引的方法和设备
US9659023B2 (en) Maintaining and using a cache of child-to-parent mappings in a content-addressable storage system
US20070156791A1 (en) File system dump/restore by node numbering
WO2014110940A1 (en) A method, apparatus and system for storing, reading the directory index
US20180181581A1 (en) Systems and methods for implementing object storage and fast metadata search using extended attributes
CN110807028B (zh) 用于管理存储系统的方法、设备和计算机程序产品
CN114564449B (zh) 数据查询方法、装置、设备以及存储介质
WO2023201002A1 (en) Implementing graph search with in-structure metadata of a graph-organized file system
US20220365905A1 (en) Metadata processing method and apparatus, and a computer-readable storage medium
CN114416676A (zh) 数据处理方法、装置、设备和存储介质
CN114564449A (zh) 数据查询方法、装置、设备以及存储介质
US12001481B2 (en) Graph-organized file system
US20240028593A1 (en) In-memory graph query engine with persisted storage
CN116860700A (zh) 处理分布式文件系统中元数据的方法、装置、设备及介质
CN117112546A (zh) 数据操作方法、装置、设备及存储介质

Legal Events

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