CN116361287A - 路径解析方法、装置以及系统 - Google Patents

路径解析方法、装置以及系统 Download PDF

Info

Publication number
CN116361287A
CN116361287A CN202310204451.6A CN202310204451A CN116361287A CN 116361287 A CN116361287 A CN 116361287A CN 202310204451 A CN202310204451 A CN 202310204451A CN 116361287 A CN116361287 A CN 116361287A
Authority
CN
China
Prior art keywords
directory
index information
path
index
directory entry
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
CN202310204451.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.)
Alibaba China Co Ltd
Original Assignee
Alibaba China 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 Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN202310204451.6A priority Critical patent/CN116361287A/zh
Publication of CN116361287A publication Critical patent/CN116361287A/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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • G06F16/24566Recursive queries

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)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书实施例提供路径解析方法、装置以及系统,其中所述路径解析方法包括:根据针对文件系统中目录树提交的用户访问路径,确定第一索引信息和第二索引信息;利用所述第一索引信息在所述目录树对应的目录索引表中定位目标索引项,并在所述目标索引项中读取第三索引信息;按照所述第一索引信息、所述第二索引信息和所述第三索引信息,从所述目录树中的目录项至根目录项进行递归操作;根据递归操作结果和预设解析策略对所述目录树进行解析,根据解析结果在所述文件系统中确定所述用户访问路径对应的访问信息。

Description

路径解析方法、装置以及系统
技术领域
本说明书实施例涉及分布式存储技术领域,特别涉及路径解析方法、装置以及系统。
背景技术
随着互联网技术的发展,分布式存储技术在越来越多的场景下得以应用。而在分布式存储服务中,元数据系统服务能力是存储系统的一项重要指标。在元数据系统中,任何一个文件的操作都伴随着至少一次的元数据操作,而其中最高频的操作就是目录树解析。目录树的解析速度影响着元数据系统的服务能力。现有技术中,元数据服务在进行目录树解析时,需要经过多次的文件名比较操作。此过程会消耗大量的CPU资源,从而导致单机CPU资源瓶颈而限制服务性能。使得目录树访问性能受限。因此亟需一种有效的方案以解决上述问题。
发明内容
有鉴于此,本说明书实施例提供了一种路径解析方法。本说明书一个或者多个实施例同时涉及一种路径解析装置,一种路径解析系统,一种计算设备,一种计算机可读存储介质以及一种计算机程序,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种路径解析方法,包括:
根据针对文件系统中目录树提交的用户访问路径,确定第一索引信息和第二索引信息;
利用所述第一索引信息在所述目录树对应的目录索引表中定位目标索引项,并在所述目标索引项中读取第三索引信息;
按照所述第一索引信息、所述第二索引信息和所述第三索引信息,从所述目录树中的目录项至根目录项进行递归操作;
根据递归操作结果和预设解析策略对所述目录树进行解析,根据解析结果在所述文件系统中确定所述用户访问路径对应的访问信息。
根据本说明书实施例的第二方面,提供了一种路径解析装置,包括:
确定模块,被配置为根据针对文件系统中目录树提交的用户访问路径,确定第一索引信息和第二索引信息;
定位模块,被配置为利用所述第一索引信息在所述目录树对应的目录索引表中定位目标索引项,并在所述目标索引项中读取第三索引信息;
操作模块,被配置为按照所述第一索引信息、所述第二索引信息和所述第三索引信息,从所述目录树中的目录项至根目录项进行递归操作;
解析模块,被配置为根据递归操作结果和预设解析策略对所述目录树进行解析,根据解析结果在所述文件系统中确定所述用户访问路径对应的访问信息。
根据本说明书实施例的第三方面,提供了一种路径解析系统,包括:
文件存储节点和路径解析节点;
所述文件存储节点用于存储目录树对应的文件信息,所述路径解析节点用于执行路径解析可执行指令,该路径解析可执行指令被所述路径解析节点执行时实现路径解析方法的步骤。
根据本说明书实施例的第四方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令时实现任上述路径解析方法的步骤。
根据本说明书实施例的第五方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现上述路径解析方法的步骤。
根据本说明书实施例的第六方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述路径解析方法的步骤。
本说明书提供的路径解析方法,为了能够降低计算资源的消耗,提高元数据服务能力,可以在得到针对文件系统中目录树提交的用户访问路径后,根据用户访问路径确定第一索引信息和第二索引信息,实现利用第一索引信息在针对目录树建立的目录索引表中定位目标索引项,以通过目标索引项读取第三索引信息;在此基础上,结合第一索引信息、第二索引信息和第三索引信息,从目录树中的目录项至根目录项进行递归操作,实现采用逆序的方式快速解析目录树,从而节省从根目录项到目录项的文件名比对操作,完成了结合局部用户访问路径解析目录树的处理;此后在根据递归操作结果和预设解析策略对目录树还未解析的部分进行解析,即可实现在文件系统中确定用户访问路径对应的访问信息,以达到节省计算资源,提高元数据服务能力的目的,实现在针对用户访问路径访问文件系统时,可以快速完成目标目录项的定位,不需要经过大量的文件名比较操作,以快速的响应用户访问请求。
附图说明
图1是本说明书一个实施例提供的一种路径解析方法的示意图;
图2是本说明书一个实施例提供的一种路径解析方法的流程图;
图3是本说明书一个实施例提供的一种路径解析方法中目录树的示意图;
图4是本说明书一个实施例提供的一种路径解析方法的处理过程流程图;
图5是本说明书一个实施例提供的一种路径解析装置的结构示意图;
图6是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
文件系统:操作系统用于存储设备或分区上的文件的数据结构,即在存储设备上组织文件的系统。
目录树:文件系统的目录树是倒置的树状结构,根目录在最顶层,它包含若干个子目录和文件,每一个子目录又可以包含若干下级子目录,该组织结构即为目录树。
在本说明书中,提供了一种路径解析方法,本说明书同时涉及一种路径解析装置,一种路径解析系统,一种计算设备,一种计算机可读存储介质以及一种计算机程序,在下面的实施例中逐一进行详细说明。
参见图1所示的示意图,本说明书提供的路径解析方法,为了能够降低计算资源的消耗,提高元数据服务能力,可以在得到针对文件系统中目录树提交的用户访问路径后,根据用户访问路径确定第一索引信息和第二索引信息,实现利用第一索引信息在针对目录树建立的目录索引表中定位目标索引项,以通过目标索引项读取第三索引信息;在此基础上,结合第一索引信息、第二索引信息和第三索引信息,从目录树中的目录项至根目录项进行递归操作,实现采用逆序的方式快速解析目录树,从而节省从根目录项到目录项的文件名比对操作,完成了结合局部用户访问路径解析目录树的处理;此后在根据递归操作结果和预设解析策略对目录树还未解析的部分进行解析,即可实现在文件系统中确定用户访问路径对应的访问信息,以达到节省计算资源,提高元数据服务能力的目的,实现在针对用户访问路径访问文件系统时,可以快速完成目标目录项的定位,不需要经过大量的文件名比较操作,以快速的响应用户访问请求。
需要说明的是,本申请所涉及的相关数据,均为经用户授权或者经过各方充分授权的信息和数据,且使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
图2示出了根据本说明书一个实施例提供的一种路径解析方法的流程图,具体包括以下步骤。
步骤S202,根据针对文件系统中目录树提交的用户访问路径,确定第一索引信息和第二索引信息。
具体的,文件系统具体是指用于存储文件和/或管理文件的数据系统,其可以为用户提供文件存储空间,方便用户使用文件存储空间存储文件。相应的,目录树具体是指文件系统中目录项作为节点组成的树状结构,其根节点为目录的根目录,子节点为根目录下的子目录。在文件系统中查找文件时,需要通过解析目录树确定用户查找文件所处的位置,之后通过递归的方式从目标文件中读取数据进行反馈。
相应的,用户访问路径具体是指用户在访问文件系统时读取所需要信息的路径,该路径能够指向目标目录项。在按照用户访问路径解析目录树时,即为在文件系统中读取用户所需要的访问信息的过程。相应的,第一索引信息具体是指用户访问路径中父目录全路径对应的索引信息,第二索引信息具体是指用户访问路径中祖父目录全路径对应的索引信息,基于第一索引信息和第二索引信息可以在解析目录树时,可以节省对父目录全路径对应的父目录项之前的所有目录项的文件名比较操作,以快速的完成目录树解析。
实际应用中,参见图3中(a)所示的示意图,在对目录树进行解析时,通常的解析路径是从上而下,比如需要解析/a/b/c路径,首先获取根路径(/)的元数据节点,此根节点包含指向所有子节点的数据结构,比如链表、红黑树或者哈希表,但无论哪种方式,都需要在其中通过多次比较定位到a目录的元数据节点,之后在通过a节点包含的子节点结构继续解析,确定目录的元数据节点,直至全路径都继续完成,才能够命中用户访问路径指向的目录c,在此过程中,需要经过18次的名称比较,即每个层级都需要比较命中目录之前的全部节点,会造成大量的资源浪费。
有鉴于此,本实施例通过设定目录索引表对目录树中节点的相关索引信息进行记录,实现应用阶段可以直接复用,从而节省比较操作,以达到快速解析目录树的目的,实现快速响应用户访问请求。
进一步的,在得到用户访问路径后,为了能够快速的基于用户访问路径对文件系统的目录树进行解析,需要结合索引信息才能够完成,以实现后续能够在目录索引表中定位目录项,通过读取目录项节省解析消耗的计算资源,而第一索引信息和第二索引信息的确定是决定着解析操作完成的基础,因此需要保证索引信息确定的准确性,才能够进行后续处理;本实施例中,具体实现方式如下:
获取针对所述文件系统中目录树提交的所述用户访问路径;解析所述用户访问路径,获得第一目录全路径和第二目录全路径;加载所述第一目录全路径对应的所述第一索引信息,以及所述第二目录全路径对应的所述第二索引信息。
具体的,第一目录全路径具体是指用户访问路径中子目录之前的父目录对应的访问路径,即父目录全路径;相应的,第二目录全路径具体是指用户访问路径中子目录之前的祖父目录对应的访问路径,即祖父目录全路径。比如用户访问路径为/a/b/c/d/e/f/g,则父目录全路径为/a/b/c/d/e/f,祖父目录全路径为/a/b/c/d/e。
基于此,在获取到用户针对文件系统中目录树提交的用户访问路径后,说明用户需要访问指定目录中的文件信息,而为了能够快速的定位目标目录实现访问信息的反馈,可以先解析用户访问路径,从而根据解析结果获得父目录全路径,即第一目录全路径,以及祖父目录全路径,即第二目录全路径。在此基础上,由于该场景下存储有实时更新的目录索引表,因此结合第一目录全路径的第一索引信息,第二目录全路径对应的第二索引信息,即可完成后续读取目录索引表,定位目录项,并在此基础上解析目录树的处理操作。因此可以在得到第一目录全路径和第二目录全路径后,加载第一目录全路径对应的第一索引信息,以及第二目录全路径对应的第二索引信息,方便后续使用。
实际应用中,在对用户访问路径进行解析时,可以从用户访问路径的末端开始解析,以实现快速的确定父目录全路径和祖父目录全路径,提高目录树的解析速度。
综上,通过解析用户访问路径得到第一目录全路径和第二目录全路径,并以此为基础确定第一索引信息和第二索引信息,可以实现后续进行解析目录树时,不需要对第一目录全路径和第二目录全路径之前的节点进行解析,从而提高目录树解析速度,同时降低资源消耗。
在此基础上,为了能够在解析目录树节点可以结合索引信息完成后续处理操作,可以结果不同的内容组成索引信息使用;本实施例中,具体实现方式如下:
计算所述第一目录全路径对应的第一哈希码,所述第二目录全路径对应的第二哈希码,以及计算所述第一目录全路径对应的第一目录深度;根据所述第一哈希码和所述第一目录深度生成所述第一索引信息,以及根据所述第二哈希码生成所述第二索引信息。
具体的,第一哈希码具体是指对第一目录全路径进行计算后得到HashCode,相应的,第二哈希码具体是指对第二目录全路径进行计算后得到HashCode;相应的,第一目录深度具体是指第一目录全路径对应的目录深度,用于表示在按照第一目录全路径进行文件读取时需要操作的次数。比如第一目录全路径为/a/b/c/d/e/f,则其对应的目录深度为7,即需要通过7次操作才能够访问到f目录。
基于此,在得到用户访问路径后,为了能够加快对文件系统对应的目录树的解析速度,可以先在用户访问路径中确定父目录全路径,即第一目录全路径,以及祖父目录全路径,即第二目录全路径。之后计算第一目录全路径对应的第一哈希码,第二目录全路径对应的第二哈希码,以及计算第一目录全路径对应的第一目录深度;实现通过计算得到能够用于后续读取目录索引表定位目标索引项的索引信息,此时即可根据第一哈希码和第一目录深度生成第一索引信息,以及根据第二哈希码生成第二索引信息,方便后续使用。
举例说明,在获取到用户访问路径/a/b/c/d/e/f/g后,此时可以对用户访问路径{/a/b/c/d/e/f/g}进行解析,从而根据解析结果得到父目录全路径(parent_path)为{/a/b/c/d/e/f},同时得到祖父目录全路径(grand_path)为{/a/b/c/d/e}。在得到父目录全路径(parent_path)和祖父目录全路径(grand_path)后,可以计算父目录全路径(parent_path)和祖父目录全路径(grand_path)分别对应的HashCode,确定父目录全路径(parent_path)的HashCode为HC1,祖父目录全路径(grand_path)的HashCode为HC2;同时确定父目录全路径(parent_path)对应的目录深度为7,以方便后续结合上述信息进行目录索引表的使用,以快速的解析目录树。
综上,通过结合目录深度和哈希码构建索引信息,能够实现在后续读取目录索引表时快速定位目标索引项,从而达到快速解析目录树,且能够降低计算资源的目的。
步骤S204,利用所述第一索引信息在所述目录树对应的目录索引表中定位目标索引项,并在所述目标索引项中读取第三索引信息。
具体的,在上述确获取到用户访问路径且确定第一索引信息和第二索引信息的基础上,进一步的,为了能够节省计算资源的消耗,可以在元数据系统中预设实时更新的目录索引表,通过目录索引表记录目录树中子目录节点之前的全部节点对应的索引项,通过索引项记录每个目录项对应的索引信息,实现在应用阶段可以直接读取目录索引表,找到对应当前用户访问路径的目标索引项,以在目标索引项中读取第三索引信息使用。
也就是说,针对目录树会先构建一个空集的目录索引表,之后根据当前时刻目录树的结构向目录索引表中的每个索引项中写入索引信息,实现通过目录索引表实时记录目录树中每个目录项对应的索引信息,当需要解析目录树时,可以直接读取目录索引表,实现定位用户访问路径对应的目标索引项,以在目标索引项中读取第三索引信息使用,以此为基础进行后续的目录树解析操作,能够有效的节省计算资源的消耗。
其中,目录索引表具体是指整合目录项对应的索引项的列表,其记录不同目录项对应的索引项,每个索引项中记录有关联目录项的全部索引信息,该索引信息能够在解析目录树使用。相应的,目标索引项具体是指对应父目录项的索引项,其能够实现节省父目录项之前的名称比对操作。
参见图3中(b)所示的示意图,实际应用中,目录索引表可以用固定大小的数组或者可动态扩展的二维数组构成,索引表的每个条目中存储一个索引项,每个索引项可以由7部分组成,分别为32bit的EntryID,标识索引的目录项ID,总共可以区分40亿个条目;16bit的版本号,可重复EntryID的版本号,和EntryID可以扩展为一个48bit的无重复EntryID;10bit的本目录全路径HashCode;6bit标识本目录项在目录树中深度的Depth(64取模);32bit的本目录的父目录全路径HashCode;27bit的Cache设置/修改时间戳;5bit的Cache有效性TTL,TTL=0可以替换;用于实现对目录树中的目录项的索引信息进行记录,实现在解析目录树时可以直接基于索引项确定部分解析结果,在此基础上再进行未解析部分的解析处理,可以有效的加快解析操作速度,同时降低资源消耗。
进一步的,在从目录索引表中定位目标索引项并使用时,由于目录索引表是实时记录当前文件系统对应的目录树,可动态扩展的二维数组,其目的是能够达到降低解析目录树时消耗的计算资源,因此需要结合不同的信息完成定位;本实施例中,具体实现方式如下:
在所述第一索引信息中提取所述第一哈希码;根据所述第一哈希码查询所述目录树对应的所述目录索引表,根据查询结果定位所述目标索引项;在所述目标索引项中提取第三哈希码和第三目录深度,并根据所述第三哈希码和所述第三目录深度生成所述第三索引信息。
具体的,第三哈希码具体是指目标索引项中记录的本目录哈希码,相应的,第三目录深度具体是指目录索引表中记录的第三目录深度。
基于此,在得到第一索引信息和第二索引信息后,为了能够节省计算资源的消耗,可以使用目录索引表进行索引信息的确定,以降低解析目录树时的递归操作,而此时为了能够节省父目录项之前的全部名称比对操作,可以在第一索引信息中提取第一哈希码;之后根据第一哈希码查询目录树对应的目录索引表,以实现根据查询结果定位对应用户访问路径的目标索引项;此时在目标索引项中提取第三哈希码和第三目录深度,即可根据第三哈希码和所述第三目录深度生成第三索引信息,方便后续使用。
沿用上例,在得到上述信息后,可以先确定父目录全路径(parent_path)的HashCode为HC1,之后使用父目录全路径(parent_path)的HC1定位到目录索引表中的目标索引项,确定目标索引项中记录如图3中(b)所示的信息,此时可以先从目标索引项中读取HashCode为HC3,以及目录深度Depth为D,方便后续使用。
综上,通过使用目录索引表实现定位目标索引项,可以方便后续在解析阶段直接读取目标索引项完成索引信息的确定,从而达到降低计算资源消耗的目的。
步骤S206,按照所述第一索引信息、所述第二索引信息和所述第三索引信息,从所述目录树中的目录项至根目录项进行递归操作。
具体的,在上述读取到第一索引信息、第二索引信息和第三索引信息后,进一步的,由于第一索引信息对应父目录全路径,第二索引信息对应祖父目录全路径,第三索引信息对应索引项,因此结合三者信息可以直接在目录树中确定用户访问路径对应的根目录项和目录项,其中目录项为父目录项,在此基础上,从目录树中的目录项至根目录项进行递归操作,即可实现按照用户访问路径中的局部用户访问路径对目录树的解析,且该解析过程是从父目录项到根目录项完成的,其逆序操作不需要进行名称的比对,实现加快解析目录树速度的目的。其中,目录项为对应用户访问路径的父目录项,根目录项为用户访问路径的根目录项。
相应的,递归操作具体是指从目录项开始向根目录项进行的解析操作,由于从目录项开始到根目录项为逆序过程,其不需要比对就可以确定每个目录项的父目录项,以此类推,即可直接解析到根目录项,实现对父目录项之前的全部树节点的解析处理。
进一步的,在进行递归操作时,考虑到第一索引信息、第二索引信息和第三索引信息的来源不同,其目的是为了能够逆序解析目录树,实现在按照用户访问路径解析目录树时,可以节省计算资源的消耗,因此需要结合解析条件完成,确保解析精准度;本实施例中,具体实现如下步骤S2062至步骤S2066。
步骤S2062,在所述第一索引信息、所述第二索引信息和所述第三索引信息满足解析条件的情况下,根据所述第三索引信息在所述目录树中定位所述目录项。
具体的,解析条件具体是指检测按照第一索引信息、第二索引信息和第三索引信息,在当前时刻是否可以对目录树进行解析的条件,满足条件说明能够使用上述索引信息,按照用户访问路径解析目录树,不满足条件说明当前时刻读取到的第三索引信息可能并不是文件系统中目录项对应的最新索引信息。
基于此,在上述得到第一索引信息、第二索引信息和第三索引信息后,为了能够确保按照上述索引信息顺利解析目录树,且解析结果对应当前时刻目录树的结构,可以先检测第一索引信息、第二索引信息和第三索引信息是否满足解析条件,在满足的情况下,再根据第三索引信息在目录树中定位目录项,即父目录项,用于后续的递归操作处理。
进一步的,在进行解析条件检测时,实则是从不同维度完成的检测,本实施例中,具体实现方式如下:
将所述第一索引信息中的第一哈希码与所述第三索引信息中的第三哈希码进行比较,将所述第一索引信息中的第一目录深度与所述第三索引信息中的第三目录深度进行比较,以及将所述第一索引信息中的第一哈希码与所述第二索引信息中的第二哈希码进行比较;在比较结果均相同的情况下,确定所述第一索引信息、所述第二索引信息和所述第三索引信息满足所述解析条件的情况下,并执行所述根据所述第三索引信息在所述目录树中定位所述目录项的步骤。
基于此,为确保当前从目标索引项中读取到的第三索引信息能够辅助完成目录树的解析,避免其不对应目录树当前的结构,可以将第一索引信息中的第一哈希码与第三索引信息中的第三哈希码进行比较,将第一索引信息中的第一目录深度与第三索引信息中的第三目录深度进行比较,以及将第一索引信息中的第一哈希码与第二索引信息中的第二哈希码进行比较;且在上述比较结果均为相同的情况下,可以确定第一索引信息、第二索引信息和第三索引信息均满足解析条件,此时再根据第三索引信息在目录树中定位目录项即可。
综上,考虑到文件系统中的文件可能随时发生改变,进而目录树结构也会发生变化,此过程可能未及时更新目录索引表,如果在此基础上进行目标索引项的确定可能无法实现后续的解析目录树,因此可以进行比较后再进行目录项的定位,从而方便后续进行解析目录树。
更进一步的,在进行目录项定位时,为了能够确保递归操作的执行顺序符合用户访问路径,以确保可以向用户反馈准确的访问信息,需要结合目录项标识完成,本实施例中,具体实现方式如下:
对所述第三索引信息进行解析获得目录项标识,并根据所述目录项标识在所述目录树中定位所述目录项;对所述第三索引信息进行解析获得索引项版本号,以及确定所述目录项对应的目录项版本号;在所述索引项版本号与所述目录项版本号相同的情况下,执行步骤S2064。
具体的,目录项标识具体是指从第三索引信息中读取到的EntryID,相应的,索引项版本号具体是指目标索引项中记录的版本号,目录项版本号具体是指父目录项对应的版本号。
基于此,为了能够更精准的定位目录项,即父目录项,可以先对第三索引信息进行解析,从而获得目录项标识,之后根据目录项标识在目录树中定位目录项,即父目录项,此后再对第三索引信息进行解析获得索引项版本号,以及确定目录项对应的目录项版本号;通过比较确定索引项版本号与目录项版本号相同的情况下,即可执行步骤S2064。
步骤S2064,根据所述第一索引信息中的第一目录深度在所述目录树中定位所述根目录项。
步骤S2066,从所述目录树中的所述目录项至所述根目录项进行递归操作。
基于此,在上述确定目录项后,由于此时需要逆序进行递归,因此可以根据第一索引信息中的第一目录深度在目录树中定位根目录项,最后从目录树中的目录项至根目录项进行递归操作即可。
也就是说,在进行递归操作时,实则是根据父目录全路径的目录深度,递归查找当前目录项的父目录项,直至递归到根目录项后,即可实现逆序的从下而上的解析目录树,实现对当前目录项之前的全部树节点的解析,此过程由于索引信息的引入可以节省名称的比对操作,此递归操作即可实现逆序收集了用户访问路径的祖先目录项节点,此期间不会进行任何的目录名比对操作。再通过从上而下的快速递归目录树,即可实现对目录树的解析。
沿用上例,得到上述信息后,可以将目标索引项中读取HashCode为HC3与父目录全路径(parent_path)的HC1进行比较,以及将目标索引项中的目录深度Depth为D,与父目录全路径(parent_path)的目录深度7进行比较,同时再对祖父目录全路径(grand_path)的HC2与父目录全路径(parent_path)的HC1进行比较。
在上述比较均通过的情况下,则为CacheHit,此时可以从目标索引项中读取EntryID,并基于EntryID在目录树中定位目录项f,若目录项f的版本号与目标索引项中的版本号相同的情况下,此时可以基于目录深度D次递归查找目录项f的parent目录项,如果最终的目录项是根目录项(/),则进一步为CacheHit,并对TTL加1。
在此过程中,经过上述递归解析,已经逆序收集了用户访问路径的祖先目录项节点,在此期间未进行任何目录项名的比较操作。之后通过从上而下的快速递归目录树,即可实现对目录树的局部解析,最后再对剩余部分进一步解析,即可完成按照用户访问路径解析目录树的操作。
综上,通过结合三种索引信息进行目录树的局部解析,可以实现在不进行目录项名比对的前提下完成目录树解析,从而可以有效的节省计算资源的消耗。
步骤S208,根据递归操作结果和预设解析策略对所述目录树进行解析,根据解析结果在所述文件系统中确定所述用户访问路径对应的访问信息。
具体的,在上述进行递归处理后,实现通过递归操作完成了逆序收集用户访问路径中祖先目录项在目录树中的节点,此时再对用户访问路径中未收集的目录项在目录树中的节点解析即可。此时可以根据递归操作结果和预设解析策略对目录树进行再次解析,即可根据解析结果在文件系统中确定用户访问路径对应的访问信息。
其中,预设解析策略具体是指对用户访问路径中未收集的目录项在目录树中的节点解析策略。该策略可以采用顺序解析的方式,即对未被收集的目录项对应的节点所属的层级进行一一比对名称,从而完成按照用户访问路径解析目录树的操作。相应的,访问信息具体是指用户访问路径所指向的目标目录项中存储的内容,该内容可以是文件、资源、信息、数据等。本实施例在此不作任何限定。
进一步的,结合递归操作对目录树进行解析时,由于经过递归操作已经完成了大部分的解析处理,最后只需要对最后一层的节点进行比对即可确定用户访问路径对应的访问信息,因此在进行最后一层的解析时,可以结合预设解析策略完成,本实施例中,具体实现方式如下:
根据所述递归操作结果确定所述用户访问路径在所述目录树中对应的第一目录项节点,其中,所述递归操作结果为所述目录项至所述根目录项的逆序递归操作信息;在所述第一目录项节点中确定所述目录项对应的第一子目录项节点,并根据所述第一子目录项节点在所述目录树中确定第二目录项节点;按照所述预设解析策略对所述第二目录项节点进行解析,获得第二子目录项节点;基于所述第一目录项节点和所述第二子目录项节点,在所述文件系统中确定所述用户访问路径对应的所述访问信息。
具体的,第一目录项节点具体是指目录项中已经匹配用户访问路径且完成解析的节点,相应的,第一子目录项节点具体是指父目录项在目录树中对应的节点,相应的,第二目录项节点具体是指子目录项所属层级对应的全部目录项节点;相应的,第二子目录项节点具体是指子目录项所属层级中被命中目录项节点。
基于此,根据递归操作结果可以先确定用户访问路径在目录树中对应的第一目录项节点,之后在第一目录项节点中确定目录项对应的第一子目录项节点,并根据第一子目录项节点在所述目录树中确定第二目录项节点;按照预设解析策略对第二目录项节点进行解析,即可获得第二子目录项节点;此时将收集的第一目录项节点和第二子目录项节点整合,即可在文件系统中确定用户访问路径对应的访问信息。
综上,通过结合索引项和预设解析策略对目录树,按照用户访问策略进行解析,可以确保解析结果对应用户访问路径,同时解析速度得以提升,同时降低比对名称所消耗的计算资源。
在此基础上,为了达到快速解析的目的,还可以通过加锁保护的方式完成解析,本实施例中,具体实现方式如下:
根据所述用户访问路径确定待访问目录项名称,以及确定所述第二子目录项节点对应的目录项名称;在所述第二子目录项节点为所述第一子目录项节点的子节点,且所述待访问目录项名称与所述目录项名称相同的情况下,执行基于所述第一目录项节点和所述第二子目录项节点,在所述文件系统中确定所述用户访问路径对应的所述访问信息的步骤。
基于此,在进行访问信息确定时,为了确保解析正确性,可以根据用户访问路径确定待访问目录项名称,以及确定第二子目录项节点对应的目录项名称;在第二子目录项节点为第一子目录项节点的子节点,且待访问目录项名称与所述目录项名称相同的情况下,执行基于所述第一目录项节点和所述第二子目录项节点,在所述文件系统中确定所述用户访问路径对应的所述访问信息的步骤即可。
也就是所,当前目录项仍旧是父目录项的子目录项,即父目录项指向了正确的父节点,同时当前目录项名字是用户要访问的目录项,即可认为解析正确,以进行访问信息的确定即可。
沿用上例,在上述通过递归处理从目录树中确定各个目录项对应节点{/、a、b、c、d、e、f}后,可以采用从上而下一一比对的方式确定/a/b/c/d/e/f路径各个层级的目录项对应节点保存的目录名是否和同层次的目录项名匹配,如果全部匹配就可以快速确定f节点的合法性;在此基础上,再通过标准的确定g节点是否为f节点的子节点方式,搜索定位目录项g,最终完成目录树的解析,即可将目录项g对应的目录树节点信息反馈给用户。
综上,通过结合索引项和预设解析策略对目录树,按照用户访问策略进行解析,可以确保解析结果对应用户访问路径,同时解析速度提升,有效的降低了比对名称所消耗的计算资源。
此外,考虑到在上述解析处理时可能出现未命中的情况,即解析无法继续进行可能会导致无法进行信息的反馈,因此可以结合逐层解析的方式完成目录树的解析,以确定用户访问路径对应的访问信息,本实施例中,具体实现方式如下:
针对所述用户访问路径创建任务执行链路,其中,所述任务执行链路中包含至少一个任务执行节点,所述至少一个任务执行节点用于在所述目录树中定位目标目录项节点;通过运行所述任务执行链路,在所述目录树中确定至少两个目标目录项节点;根据所述至少两个目标目录项节点,在所述文件系统中确定所述用户访问路径对应的目标访问信息。
基于此,可以针对用户访问路径创建任务执行链路,其中,任务执行链路中包含至少一个任务执行节点,至少一个任务执行节点用于在所述目录树中定位目标目录项节点;此后再通过运行任务执行链路,在目录树中确定至少两个目标目录项节点;即可实现根据至少两个目标目录项节点,在文件系统中确定用户访问路径对应的目标访问信息。
综上,在出现无法进行解析时,可以通过上述方案进行解析,避免在用户访问路径提交后无法反馈用户的问题发生。
在此基础上,若采用上述方式解析后,为了能够在后续可以正常使用目录索引表进行快速解析目录树,可以结合解析结果进行索引项的更新,本实施例中,具体实现方式如下:
在所述至少两个目标目录项节点中确定待更新目录项节点;确定所述待更新目录项节点对应的待更新目录项,加载所述待更新目录项对应的待更新索引信息;将所述待更新索引信息更新至所述目标索引项。
基于此,发生CacheMiss的情况下,可以在至少两个目标目录项节点中确定待更新目录项节点;此后可以确定待更新目录项节点对应的待更新目录项,通过加载待更新目录项对应的待更新索引信息;实现将待更新索引信息更新至目标索引项中。
也就是说,发生CacheMiss后,可以按照常规流程完成待访问路径解析,并按如下规则尝试把当前的父目录项更新到上述确定的目标索引项中,若当前时间和目录项中记录的TimeInSecond时间差距在一定范围内,并且TTL大于1,说明索引项有效,TTL减1,跳过更新即可;否则,用当前的父目录项的相关信息,填充索引项,并设置TimeInSecond为当前时间,TTL等于1。
本说明书提供的路径解析方法,为了能够降低计算资源的消耗,提高元数据服务能力,可以在得到针对文件系统中目录树提交的用户访问路径后,根据用户访问路径确定第一索引信息和第二索引信息,实现利用第一索引信息在针对目录树建立的目录索引表中定位目标索引项,以通过目标索引项读取第三索引信息;在此基础上,结合第一索引信息、第二索引信息和第三索引信息,从目录树中的目录项至根目录项进行递归操作,实现采用逆序的方式快速解析目录树,从而节省从根目录项到目录项的文件名比对操作,完成了结合局部用户访问路径解析目录树的处理;此后在根据递归操作结果和预设解析策略对目录树还未解析的部分进行解析,即可实现在文件系统中确定用户访问路径对应的访问信息,以达到节省计算资源,提高元数据服务能力的目的,实现在针对用户访问路径访问文件系统时,可以快速完成目标目录项的定位,不需要经过大量的文件名比较操作,以快速的响应用户访问请求。
下述结合附图4,以本说明书提供的路径解析方法在分布式存储服务中的应用为例,对所述路径解析方法进行进一步说明。其中,图4示出了本说明书一个实施例提供的一种路径解析方法的处理过程流程图,具体包括以下内容。
实际应用中,由于任何一个文件的操作都伴随着至少一次的元数据操作,在单机存储引擎中,因为存储规模有限,服务的规模不大,元数据性能的要求相对较低。但是在分布式存储服务中,一个集群通常有少数几台甚至一台主元数据服务器管理成百上千台数据服务器,以及服务成千上万的计算服务器,从而对元数据服务器的资源和性能需求提高了几个数量级。
现有技术中,目录树访问的极限性能一直受限在几万到十几万OPS的能力,想再突破性能只能靠更多机器资源通过federation创建多个volume的方式解决,但是这种方式需要更多硬件,也就带来更多的成本压力,另外federation也带来了更多限制和复杂度,比如跨volume rename实现过于复杂、操作时延显著提升等。
通过分析,确定在元数据服务时,大量CPU资源被用于目录树解析,因为这个操作是最高频的操作,几乎所有其他服务都依赖于目录树解析,而目录树解析就需要做用户待访问目录和文件系统目录树的比较,从而确定待访问目录是否存在,用户是否有权限访问等等。在单目录下存在上万到上百万子目录或文件的情况下,这种比较的开销更加巨大,为了加速这个比较过程,多种索引结构被设计并应用于目录树加速,比如基于hash或者红黑树的索引结构,但这些都需要和目录树规模相关的索引内存以及高额的更新开销。另外即便有了这些索引结构,在一个大目录树中搜索特定条目仍然需要单个目录十到上百次的比较操作,开销仍然非常明显。
有鉴于此,本实施例提供的路径解析方法,在得到针对文件系统中目录树提交的用户访问路径后,可以根据用户访问路径确定第一索引信息和第二索引信息,实现利用第一索引信息在针对目录树建立的目录索引表中定位目标索引项,以通过目标索引项读取第三索引信息;在此基础上,结合第一索引信息、第二索引信息和第三索引信息,从目录树中的目录项至根目录项进行递归操作,实现采用逆序的方式快速解析目录树,从而节省从根目录项到目录项的文件名比对操作,完成了结合局部用户访问路径解析目录树的处理;此后在根据递归操作结果和预设解析策略对目录树还未解析的部分进行解析,即可实现在文件系统中确定用户访问路径对应的访问信息,以达到节省计算资源,提高元数据服务能力的目的,实现在针对用户访问路径访问文件系统时,可以快速完成目标目录项的定位,不需要经过大量的文件名比较操作,以快速的响应用户访问请求。具体实现过程如步骤S402至步骤S428。
步骤S402,获取针对文件系统中目录树提交的用户访问路径,并解析用户访问路径,获得第一目录全路径和第二目录全路径。
步骤S404,计算第一目录全路径对应的第一哈希码,第二目录全路径对应的第二哈希码,以及计算第一目录全路径对应的第一目录深度。
步骤S406,根据第一哈希码和第一目录深度生成第一索引信息,以及根据第二哈希码生成第二索引信息。
步骤S408,在第一索引信息中提取第一哈希码,根据第一哈希码查询目录树对应的目录索引表,根据查询结果定位目标索引项。
步骤S410,在目标索引项中提取第三哈希码和第三目录深度,并根据第三哈希码和第三目录深度生成第三索引信息。
步骤S412,将第一索引信息中的第一哈希码与第三索引信息中的第三哈希码进行比较,将第一索引信息中的第一目录深度与第三索引信息中的第三目录深度进行比较,以及将第一索引信息中的第一哈希码与第二索引信息中的第二哈希码进行比较。
步骤S414,在比较结果均相同的情况下,确定第一索引信息、第二索引信息和第三索引信息满足解析条件的情况下,对第三索引信息进行解析获得目录项标识,并根据目录项标识在目录树中定位目录项。
步骤S416,对第三索引信息进行解析获得索引项版本号,以及确定目录项对应的目录项版本号。
步骤S418,在索引项版本号与目录项版本号相同的情况下,根据第一索引信息中的第一目录深度在目录树中定位根目录项,并从目录树中的目录项至根目录项进行递归操作。
步骤S420,根据递归操作结果确定用户访问路径在目录树中对应的第一目录项节点,其中,递归操作结果为目录项至根目录项的逆序递归操作信息。
步骤S422,在第一目录项节点中确定目录项对应的第一子目录项节点,并根据第一子目录项节点在目录树中确定第二目录项节点。
步骤S424,按照预设解析策略对第二目录项节点进行解析,获得第二子目录项节点。
步骤S426,根据用户访问路径确定待访问目录项名称,以及确定第二子目录项节点对应的目录项名称。
步骤S428,在第二子目录项节点为第一子目录项节点的子节点,且待访问目录项名称与目录项名称相同的情况下,基于第一目录项节点和第二子目录项节点,在文件系统中确定用户访问路径对应的访问信息。
本说明书提供的路径解析方法,为了能够降低计算资源的消耗,提高元数据服务能力,可以在得到针对文件系统中目录树提交的用户访问路径后,根据用户访问路径确定第一索引信息和第二索引信息,实现利用第一索引信息在针对目录树建立的目录索引表中定位目标索引项,以通过目标索引项读取第三索引信息;在此基础上,结合第一索引信息、第二索引信息和第三索引信息,从目录树中的目录项至根目录项进行递归操作,实现采用逆序的方式快速解析目录树,从而节省从根目录项到目录项的文件名比对操作,完成了结合局部用户访问路径解析目录树的处理;此后在根据递归操作结果和预设解析策略对目录树还未解析的部分进行解析,即可实现在文件系统中确定用户访问路径对应的访问信息,以达到节省计算资源,提高元数据服务能力的目的,实现在针对用户访问路径访问文件系统时,可以快速完成目标目录项的定位,不需要经过大量的文件名比较操作,以快速的响应用户访问请求。
与上述方法实施例相对应,本说明书还提供了路径解析装置实施例,图5示出了本说明书一个实施例提供的一种路径解析装置的结构示意图。如图5所示,该装置包括:
确定模块502,被配置为根据针对文件系统中目录树提交的用户访问路径,确定第一索引信息和第二索引信息;
定位模块504,被配置为利用所述第一索引信息在所述目录树对应的目录索引表中定位目标索引项,并在所述目标索引项中读取第三索引信息;
操作模块506,被配置为按照所述第一索引信息、所述第二索引信息和所述第三索引信息,从所述目录树中的目录项至根目录项进行递归操作;
解析模块508,被配置为根据递归操作结果和预设解析策略对所述目录树进行解析,根据解析结果在所述文件系统中确定所述用户访问路径对应的访问信息。
一个可选的实施例中,所述确定模块502进一步被配置为:
获取针对所述文件系统中目录树提交的所述用户访问路径;解析所述用户访问路径,获得第一目录全路径和第二目录全路径;加载所述第一目录全路径对应的所述第一索引信息,以及所述第二目录全路径对应的所述第二索引信息。
一个可选的实施例中,所述确定模块502进一步被配置为:
计算所述第一目录全路径对应的第一哈希码,所述第二目录全路径对应的第二哈希码,以及计算所述第一目录全路径对应的第一目录深度;根据所述第一哈希码和所述第一目录深度生成所述第一索引信息,以及根据所述第二哈希码生成所述第二索引信息。
一个可选的实施例中,所述定位模块504进一步被配置为:
在所述第一索引信息中提取所述第一哈希码;根据所述第一哈希码查询所述目录树对应的所述目录索引表,根据查询结果定位所述目标索引项;在所述目标索引项中提取第三哈希码和第三目录深度,并根据所述第三哈希码和所述第三目录深度生成所述第三索引信息。
一个可选的实施例中,所述操作模块506进一步被配置为:
在所述第一索引信息、所述第二索引信息和所述第三索引信息满足解析条件的情况下,根据所述第三索引信息在所述目录树中定位所述目录项;根据所述第一索引信息中的第一目录深度在所述目录树中定位所述根目录项;从所述目录树中的所述目录项至所述根目录项进行递归操作。
一个可选的实施例中,所述操作模块506进一步被配置为:
将所述第一索引信息中的第一哈希码与所述第三索引信息中的第三哈希码进行比较,将所述第一索引信息中的第一目录深度与所述第三索引信息中的第三目录深度进行比较,以及将所述第一索引信息中的第一哈希码与所述第二索引信息中的第二哈希码进行比较;在比较结果均相同的情况下,确定所述第一索引信息、所述第二索引信息和所述第三索引信息满足所述解析条件的情况下,并执行所述根据所述第三索引信息在所述目录树中定位所述目录项的步骤。
一个可选的实施例中,所述操作模块506进一步被配置为:
对所述第三索引信息进行解析获得目录项标识,并根据所述目录项标识在所述目录树中定位所述目录项;相应的,所述根据所述第三索引信息在所述目录树中定位所述目录项步骤执行之后,还包括:对所述第三索引信息进行解析获得索引项版本号,以及确定所述目录项对应的目录项版本号;在所述索引项版本号与所述目录项版本号相同的情况下,执行根据所述第一索引信息中的第一目录深度在所述目录树中定位所述根目录项的步骤。
一个可选的实施例中,所述解析模块508进一步被配置为:
根据所述递归操作结果确定所述用户访问路径在所述目录树中对应的第一目录项节点,其中,所述递归操作结果为所述目录项至所述根目录项的逆序递归操作信息;在所述第一目录项节点中确定所述目录项对应的第一子目录项节点,并根据所述第一子目录项节点在所述目录树中确定第二目录项节点;按照所述预设解析策略对所述第二目录项节点进行解析,获得第二子目录项节点;基于所述第一目录项节点和所述第二子目录项节点,在所述文件系统中确定所述用户访问路径对应的所述访问信息。
一个可选的实施例中,所述解析模块508进一步被配置为:
根据所述用户访问路径确定待访问目录项名称,以及确定所述第二子目录项节点对应的目录项名称;在所述第二子目录项节点为所述第一子目录项节点的子节点,且所述待访问目录项名称与所述目录项名称相同的情况下,执行基于所述第一目录项节点和所述第二子目录项节点,在所述文件系统中确定所述用户访问路径对应的所述访问信息的步骤。
一个可选的实施例中,所述装置还包括:
解析路径模块,被配置为针对所述用户访问路径创建任务执行链路,其中,所述任务执行链路中包含至少一个任务执行节点,所述至少一个任务执行节点用于在所述目录树中定位目标目录项节点;通过运行所述任务执行链路,在所述目录树中确定至少两个目标目录项节点;根据所述至少两个目标目录项节点,在所述文件系统中确定所述用户访问路径对应的目标访问信息。
一个可选的实施例中,所述装置还包括:
更新模块,被配置为在所述至少两个目标目录项节点中确定待更新目录项节点;确定所述待更新目录项节点对应的待更新目录项,加载所述待更新目录项对应的待更新索引信息;将所述待更新索引信息更新至所述目标索引项。
本说明书提供的路径解析装置,为了能够降低计算资源的消耗,提高元数据服务能力,可以在得到针对文件系统中目录树提交的用户访问路径后,根据用户访问路径确定第一索引信息和第二索引信息,实现利用第一索引信息在针对目录树建立的目录索引表中定位目标索引项,以通过目标索引项读取第三索引信息;在此基础上,结合第一索引信息、第二索引信息和第三索引信息,从目录树中的目录项至根目录项进行递归操作,实现采用逆序的方式快速解析目录树,从而节省从根目录项到目录项的文件名比对操作,完成了结合局部用户访问路径解析目录树的处理;此后在根据递归操作结果和预设解析策略对目录树还未解析的部分进行解析,即可实现在文件系统中确定用户访问路径对应的访问信息,以达到节省计算资源,提高元数据服务能力的目的,实现在针对用户访问路径访问文件系统时,可以快速完成目标目录项的定位,不需要经过大量的文件名比较操作,以快速的响应用户访问请求。
上述为本实施例的一种路径解析装置的示意性方案。需要说明的是,该路径解析装置的技术方案与上述的路径解析方法的技术方案属于同一构思,路径解析装置的技术方案未详细描述的细节内容,均可以参见上述路径解析方法的技术方案的描述。
图6示出了根据本说明书一个实施例提供的一种计算设备600的结构框图。该计算设备600的部件包括但不限于存储器610和处理器620。处理器620与存储器610通过总线630相连接,数据库650用于保存数据。
计算设备600还包括接入设备640,接入设备640使得计算设备600能够经由一个或多个网络660通信。这些网络的示例包括公用交换电话网(PSTN,Public SwitchedTelephone Network)、局域网(LAN,Local Area Network)、广域网(WAN,Wide AreaNetwork)、个域网(PAN,Personal Area Network)或诸如因特网的通信网络的组合。接入设备640可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC,networkinterface controller))中的一个或多个,诸如IEEE802.11无线局域网(WLAN,WirelessLocal Area Network)无线接口、全球微波互联接入(Wi-MAX,WorldwideInteroperability for Microwave Access)接口、以太网接口、通用串行总线(USB,Universal Serial Bus)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC,Near FieldCommunication)接口,等等。
在本申请的一个实施例中,计算设备600的上述部件以及图6中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图6所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备600可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或个人计算机(PC,Personal Computer)的静止计算设备。计算设备600还可以是移动式或静止式的服务器。
其中,处理器620用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述路径解析方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的路径解析方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述路径解析方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述路径解析方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的路径解析方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述路径解析方法的技术方案的描述。
本说明书一实施例还提供一种路径解析系统,包括文件存储节点和路径解析节点;所述文件存储节点用于存储目录树对应的文件信息,所述路径解析节点用于执行路径解析可执行指令,该路径解析可执行指令被所述路径解析节点执行时实现上述路径解析方法的步骤。
上述为本实施例的一种路径解析系统的示意性方案。需要说明的是,该路径解析系统的技术方案与上述的路径解析方法的技术方案属于同一构思,路径解析系统的技术方案未详细描述的细节内容,均可以参见上述路径解析方法的技术方案的描述。
本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述路径解析方法的步骤。
上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的路径解析方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述路径解析方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

Claims (14)

1.一种路径解析方法,包括:
根据针对文件系统中目录树提交的用户访问路径,确定第一索引信息和第二索引信息;
利用所述第一索引信息在所述目录树对应的目录索引表中定位目标索引项,并在所述目标索引项中读取第三索引信息;
按照所述第一索引信息、所述第二索引信息和所述第三索引信息,从所述目录树中的目录项至根目录项进行递归操作;
根据递归操作结果和预设解析策略对所述目录树进行解析,根据解析结果在所述文件系统中确定所述用户访问路径对应的访问信息。
2.根据权利要求1所述的方法,所述根据针对文件系统中目录树提交的用户访问路径,确定第一索引信息和第二索引信息,包括:
获取针对所述文件系统中目录树提交的所述用户访问路径;
解析所述用户访问路径,获得第一目录全路径和第二目录全路径;
加载所述第一目录全路径对应的所述第一索引信息,以及所述第二目录全路径对应的所述第二索引信息。
3.根据权利要求2所述的方法,所述加载所述第一目录全路径对应的所述第一索引信息,以及所述第二目录全路径对应的所述第二索引信息,包括:
计算所述第一目录全路径对应的第一哈希码,所述第二目录全路径对应的第二哈希码,以及计算所述第一目录全路径对应的第一目录深度;
根据所述第一哈希码和所述第一目录深度生成所述第一索引信息,以及根据所述第二哈希码生成所述第二索引信息。
4.根据权利要求3所述的方法,所述利用所述第一索引信息在所述目录树对应的目录索引表中定位目标索引项,并在所述目标索引项中读取第三索引信息,包括:
在所述第一索引信息中提取所述第一哈希码;
根据所述第一哈希码查询所述目录树对应的所述目录索引表,根据查询结果定位所述目标索引项;
在所述目标索引项中提取第三哈希码和第三目录深度,并根据所述第三哈希码和所述第三目录深度生成所述第三索引信息。
5.根据权利要求1所述的方法,所述按照所述第一索引信息、所述第二索引信息和所述第三索引信息,从所述目录树中的目录项至根目录项进行递归操作,包括:
在所述第一索引信息、所述第二索引信息和所述第三索引信息满足解析条件的情况下,根据所述第三索引信息在所述目录树中定位所述目录项;
根据所述第一索引信息中的第一目录深度在所述目录树中定位所述根目录项;
从所述目录树中的所述目录项至所述根目录项进行递归操作。
6.根据权利要求5所述的方法,所述在所述第一索引信息、所述第二索引信息和所述第三索引信息满足解析条件的情况下,根据所述第三索引信息在所述目录树中定位所述目录项,包括:
将所述第一索引信息中的第一哈希码与所述第三索引信息中的第三哈希码进行比较,将所述第一索引信息中的第一目录深度与所述第三索引信息中的第三目录深度进行比较,以及将所述第一索引信息中的第一哈希码与所述第二索引信息中的第二哈希码进行比较;
在比较结果均相同的情况下,确定所述第一索引信息、所述第二索引信息和所述第三索引信息满足所述解析条件的情况下,并执行所述根据所述第三索引信息在所述目录树中定位所述目录项的步骤。
7.根据权利要求5或6所述的方法,所述根据所述第三索引信息在所述目录树中定位所述目录项,包括:
对所述第三索引信息进行解析获得目录项标识,并根据所述目录项标识在所述目录树中定位所述目录项;
相应的,所述根据所述第三索引信息在所述目录树中定位所述目录项步骤执行之后,还包括:
对所述第三索引信息进行解析获得索引项版本号,以及确定所述目录项对应的目录项版本号;
在所述索引项版本号与所述目录项版本号相同的情况下,执行根据所述第一索引信息中的第一目录深度在所述目录树中定位所述根目录项的步骤。
8.根据权利要求1所述的方法,所述根据递归操作结果和预设解析策略对所述目录树进行解析,根据解析结果在所述文件系统中确定所述用户访问路径对应的访问信息,包括:
根据所述递归操作结果确定所述用户访问路径在所述目录树中对应的第一目录项节点,其中,所述递归操作结果为所述目录项至所述根目录项的逆序递归操作信息;
在所述第一目录项节点中确定所述目录项对应的第一子目录项节点,并根据所述第一子目录项节点在所述目录树中确定第二目录项节点;
按照所述预设解析策略对所述第二目录项节点进行解析,获得第二子目录项节点;
基于所述第一目录项节点和所述第二子目录项节点,在所述文件系统中确定所述用户访问路径对应的所述访问信息。
9.根据权利要求8所述的方法,所述基于所述第一目录项节点和所述第二子目录项节点,在所述文件系统中确定所述用户访问路径对应的所述访问信息步骤执行之前,还包括:
根据所述用户访问路径确定待访问目录项名称,以及确定所述第二子目录项节点对应的目录项名称;
在所述第二子目录项节点为所述第一子目录项节点的子节点,且所述待访问目录项名称与所述目录项名称相同的情况下,执行基于所述第一目录项节点和所述第二子目录项节点,在所述文件系统中确定所述用户访问路径对应的所述访问信息的步骤。
10.根据权利要求1-6任一项所述的方法,所述方法还包括:
针对所述用户访问路径创建任务执行链路,其中,所述任务执行链路中包含至少一个任务执行节点,所述至少一个任务执行节点用于在所述目录树中定位目标目录项节点;
通过运行所述任务执行链路,在所述目录树中确定至少两个目标目录项节点;
根据所述至少两个目标目录项节点,在所述文件系统中确定所述用户访问路径对应的目标访问信息。
11.根据权利要求10所述的方法,所述根据所述至少两个目标目录项节点,在所述文件系统中确定所述用户访问路径对应的目标访问信息步骤执行之后,还包括:
在所述至少两个目标目录项节点中确定待更新目录项节点;
确定所述待更新目录项节点对应的待更新目录项,加载所述待更新目录项对应的待更新索引信息;
将所述待更新索引信息更新至所述目标索引项。
12.一种路径解析系统,包括:
文件存储节点和路径解析节点;
所述文件存储节点用于存储目录树对应的文件信息,所述路径解析节点用于执行路径解析可执行指令,该路径解析可执行指令被所述路径解析节点执行时实现权利要求1至11任意一项所述方法的步骤。
13.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至11任意一项所述方法的步骤。
14.一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至11任意一项所述方法的步骤。
CN202310204451.6A 2023-02-27 2023-02-27 路径解析方法、装置以及系统 Pending CN116361287A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310204451.6A CN116361287A (zh) 2023-02-27 2023-02-27 路径解析方法、装置以及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310204451.6A CN116361287A (zh) 2023-02-27 2023-02-27 路径解析方法、装置以及系统

Publications (1)

Publication Number Publication Date
CN116361287A true CN116361287A (zh) 2023-06-30

Family

ID=86933667

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310204451.6A Pending CN116361287A (zh) 2023-02-27 2023-02-27 路径解析方法、装置以及系统

Country Status (1)

Country Link
CN (1) CN116361287A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117435384A (zh) * 2023-12-14 2024-01-23 中电云计算技术有限公司 目录修复方法、装置、设备及可读存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117435384A (zh) * 2023-12-14 2024-01-23 中电云计算技术有限公司 目录修复方法、装置、设备及可读存储介质
CN117435384B (zh) * 2023-12-14 2024-04-16 中电云计算技术有限公司 目录修复方法、装置、设备及可读存储介质

Similar Documents

Publication Publication Date Title
US11182356B2 (en) Indexing for evolving large-scale datasets in multi-master hybrid transactional and analytical processing systems
CN109669925B (zh) 非结构化数据的管理方法及装置
CN114911830B (zh) 基于时序数据库的索引缓存方法、装置、设备及存储介质
CN111259004B (zh) 一种存储引擎中数据索引的方法以及相关装置
US10838875B2 (en) System and method for managing memory for large keys and values
CN109189759B (zh) Kv存储系统中的数据读取方法、数据查询方法、装置及设备
CN111797134A (zh) 分布式数据库的数据查询方法、装置和存储介质
US8327329B2 (en) Application dehydration, synchronization, and rehydration
JP2020123320A (ja) インデックスを管理するための方法、装置、設備及び記憶媒体
CN110019530A (zh) 基于分布式数据库的事务处理方法及装置
CN116361287A (zh) 路径解析方法、装置以及系统
CN112306957A (zh) 获取索引节点号的方法、装置、计算设备和存储介质
CN115543993A (zh) 数据处理方法、装置、电子设备及存储介质
CN111125216B (zh) 数据导入Phoenix的方法及装置
US20150347402A1 (en) System and method for enabling a client system to generate file system operations on a file system data set using a virtual namespace
CN113297230B (zh) 数据验证方法及装置
US20230138113A1 (en) System for retrieval of large datasets in cloud environments
CN117009430A (zh) 数据管理方法、装置和存储介质及电子设备
CN114490727A (zh) 目标数据库的高维向量搜索方法及相关设备
EP3091447B1 (en) Method for modifying root nodes and modifying apparatus
CN113312149A (zh) 一种密码重置方法
WO2021017655A1 (zh) 获取索引节点号的方法、装置、计算设备和存储介质
CN117149100B (zh) 数据存储方法及装置
US20240330286A1 (en) Apparatus, method and storage medium for database query
CN114153830B (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