CN113010477B - 持久内存文件系统元数据的检索方法和装置、存储结构 - Google Patents

持久内存文件系统元数据的检索方法和装置、存储结构 Download PDF

Info

Publication number
CN113010477B
CN113010477B CN202110310068.XA CN202110310068A CN113010477B CN 113010477 B CN113010477 B CN 113010477B CN 202110310068 A CN202110310068 A CN 202110310068A CN 113010477 B CN113010477 B CN 113010477B
Authority
CN
China
Prior art keywords
path
storage
hash value
searched
metadata
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
CN202110310068.XA
Other languages
English (en)
Other versions
CN113010477A (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.)
Shanghai Jiaotong University
ZTE Corp
Original Assignee
Shanghai Jiaotong University
ZTE Corp
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 Shanghai Jiaotong University, ZTE Corp filed Critical Shanghai Jiaotong University
Priority to CN202110310068.XA priority Critical patent/CN113010477B/zh
Publication of CN113010477A publication Critical patent/CN113010477A/zh
Priority to PCT/CN2022/080367 priority patent/WO2022199400A1/zh
Application granted granted Critical
Publication of CN113010477B publication Critical patent/CN113010477B/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
    • G06F16/152File search processing using file content signatures, e.g. hash values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based

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)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提出一种持久内存文件系统元数据的检索方法和装置、存储结构,涉及数据处理技术领域。该方法包括:基于待检索路径确定待检索哈希值,待检索路径用于查找元数据的存储路径;依据待检索哈希值、指纹库和存储路径哈希值,确定待检索路径对应的存储地址,指纹库用于记录存储路径哈希值的特征,存储路径哈希值是元数据的存储路径对应的哈希值;从待检索路径对应的存储地址获得元数据。通过基于待检索路径确定待检索哈希值,方便对待检索路径进行处理;通过指纹库先对存储路径哈希值的特征进行筛选,能够加快检索速度,提高元数据的检索效率;从待检索路径对应的存储地址获得元数据,保证检索结果的准确性。

Description

持久内存文件系统元数据的检索方法和装置、存储结构
技术领域
本申请涉及数据处理技术领域,具体涉及一种持久内存文件系统元数据的检索方法和装置、存储结构。
背景技术
存储设备是用于储存信息的设备,通常是将信息数字化后再利用电、磁或光学等方式的媒体加以存储。持久化内存(Persistent Memory,PMEM)(也称为非易失性存储器(non-volatile memory,NVM))和动态随机存取存储器(Dynamic Random Access Memory,DRAM)具有相近的性能,并且,PMEM具有和磁盘一样的持久化存储数据的功能,越来越多的文件系统将元数据存放在PMEM中。
现有的元数据的存储算法多采用分布式哈希表算法(Distributed Hash Table,DHT),可保证分布式文件系统中的元数据尽可能均匀地分布在分布式文件系统的各节点。但是,在文件系统中的文件数量较多的情况下,易导致出现频繁的哈希冲突,而在出现哈希冲突时使用链式地址法查找元数据,导致数据查找效率低下。
发明内容
本申请提供一种持久内存文件系统元数据的检索方法和装置、存储结构。
本申请实施例提供一种持久内存文件系统元数据的检索方法,方法包括:基于待检索路径确定待检索哈希值,待检索路径用于查找元数据的存储路径;依据待检索哈希值、指纹库和存储路径哈希值,确定待检索路径对应的存储地址,指纹库用于记录存储路径哈希值的特征,存储路径哈希值是元数据的存储路径对应的哈希值;从待检索路径对应的存储地址获得元数据。
本申请实施例提供一种持久内存文件系统元数据的检索装置,包括:哈希值确定模块,用于基于待检索路径确定待检索哈希值,待检索路径用于查找元数据的存储路径;地址确定模块,用于依据待检索哈希值、指纹库和存储路径哈希值,确定待检索路径对应的存储地址,指纹库用于记录存储路径哈希值的特征,存储路径哈希值是元数据的存储路径对应的哈希值;获取模块,用于从待检索路径对应的存储地址获得元数据。
本申请实施例提供一种元数据的存储结构,该存储结构应用于本申请实施例中的任意一种持久内存文件系统元数据的检索方法,该存储结构包括:存储地址数据位,用于记录存储地址,存储地址用于存储元数据,存储地址与存储路径相对应;存储路径哈希值数据位,用于记录存储路径哈希值,存储路径哈希值是基于存储路径确定的哈希值,存储路径哈希值用于记录存储路径的特征;指纹库数据位,用于记录指纹库,指纹库用于记录存储路径哈希值的特征。
本申请实施例提供一种电子设备,包括:一个或多个处理器;存储器,其上存储有一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本申请实施例中的任意一种持久内存文件系统元数据的检索方法。
本申请实施例提供了一种可读存储介质,该可读存储介质存储有计算机程序,计算机程序被处理器执行时实现本申请实施例中的任意一种持久内存文件系统元数据的检索方法。
根据本申请实施例的持久内存文件系统元数据的检索方法,通过基于待检索路径确定待检索哈希值,待检索路径用于查找元数据的存储路径,方便对待检索路径进行处理;依据待检索哈希值、指纹库和存储路径哈希值,确定待检索路径对应的存储地址,其中,指纹库用于记录存储路径哈希值的特征,存储路径哈希值是元数据的存储路径对应的哈希值,通过待检索哈希值和指纹库对存储地址进行筛选,再利用待检索哈希值和存储路径哈希值确定存储地址,能够加快检索速度,提高检索效率,同时保证检索结果的准确性。
关于本申请的以上实施例和其他方面以及其实现方式,在附图说明、具体实施方式和权利要求中提供更多说明。
附图说明
图1示出本申请实施例中的采用DHT算法进行元数据查找的示意图。
图2示出本申请实施例一提供的持久内存文件系统元数据的检索方法的流程示意图。
图3示出本申请实施例二提供的持久内存文件系统元数据的检索方法的流程示意图。
图4示出本申请实施例三提供的持久内存文件系统元数据的检索方法的流程示意图。
图5示出本申请实施例四提供的持久内存文件系统元数据的检索方法的流程示意图。
图6示出本申请实施例五提供的持久内存文件系统元数据的存储结构的组成方框图。
图7示出本申请实施例五提供的各个节点的存储结构的组成方框图。
图8示出本申请实施例六提供的持久内存文件系统元数据的存储结构的组成方框图。
图9示出本申请实施例七提供的持久内存文件系统元数据的检索装置的组成方框图。
图10示出本申请实施例八提供的持久内存文件系统元数据的检索装置的组成方框图。
图11示出本申请实施例八提供的指纹库的各个数据位的获取方法的流程示意图。
图12示出本申请实施例九提供的持久内存文件系统的各个预设节点的哈希表的存储格式示意图。
图13示出本申请实施例十提供的持久内存文件系统的元数据的检索方法的流程示意图。
图14示出本申请实施例十提供的获取待检索路径对应的存储地址的方法的结构示意图。
图15示出本申请实施例十一提供的获得待检索路径对应的存储地址的方法的流程示意图。
图16示出本申请实施例十二提供的在持久内存文件系统中删除元数据的方法的流程示意图。
图17示出本申请实施例十三提供的在持久内存文件系统中增加元数据的方法的流程示意图。
图18示出能够实现根据本申请实施例十四提供的持久内存文件系统元数据的检索方法和装置的计算设备的示例性硬件架构的结构图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
图1示出本申请实施例中的采用DHT算法进行元数据查找的示意图。如图1所示,多个节点共用一张哈希表,在对存储的元数据进行查找时,先根据待检索路径确定待检索哈希值,然后根据该待检索哈希值对应的取值范围,确定需要检索的节点(例如,节点1对应的存储路径哈希值的取值范围是(0,255),节点2对应的存储路径哈希值的取值范围是(256,511),节点4对应的存储路径哈希值的取值范围是(768,1023),节点3对应的存储路径哈希值的取值范围是(512,767))。当根据不同的待检索路径确定的待检索哈希值相同时,与该待检索哈希值对应的多个待检索路径之间存在哈希冲突。例如,计算获得的待检索哈希值为465,如图1所示,对应该待检索哈希值(465)有3条不同的存储路径(即,存储路径(path6、path7和path8),此时path6、path7和path8之间存在哈希冲突。同样的,待检索哈希值(565)对应有2条不同的存储路径(即,path10和path11),path10和path11之间也存在哈希冲突。
现有技术采用链表式的存储结构对元数据进行存储,在文件系统中的文件数量较多的情况下,哈希冲突会频繁发生;而且,采用现有的链式地址法检索元数据的效率低下,尤其在发生哈希冲突的情况下,检索元数据的效率更低。
图2示出本申请实施例一提供的持久内存文件系统元数据的检索方法的流程示意图。该持久内存文件系统元数据的检索方法可应用于持久内存文件系统元数据的检索装置。如图2所示,该持久内存文件系统元数据的检索方法可以包括以下步骤。
步骤S201,基于待检索路径确定待检索哈希值。
其中,待检索路径用于查找元数据的存储路径,待检索路径可以是文件对应的存储路径,也可以是文件的目录信息,以上对于待检索路径仅是举例说明,可根据具体实现进行具体设定,其他未说明的待检索路径也在本申请的保护范围之内,在此不再赘述。待检索哈希值是利用哈希算法对待检索路径进行计算获得的哈希值。
例如,待检索路径为“/test/fs_for_install/dpfs-2.0/fs/a.out”,利用哈希算法对待检索路径进行计算获得待检索哈希值。例如,采用16进制数字表示该待检索哈希值为:0xff3a 11fc ff32 ff33ff34 ff35 ff36 ff37 ff38 ff39 ff3a ff3b ff3c ff3dff10 0009。
在一个具体实现中,哈希算法包括:安全散列算法(Secure Hash Algorithm,SHA)-224、SHA-256算法、SHA-384算法和SHA-512算法中的任意一种。其中,SHA-256算法表示通过该哈希算法可生成256位二进制数字的哈希值。
通过采用合适的哈希算法(例如,SHA-256算法)对待检索路径进行哈希运算,获得待检索哈希值,无需维护复杂的路径,通过不同的哈希值即可确定不同的路径,简化了对待检索路径的处理。
步骤S202,依据待检索哈希值、指纹库和存储路径哈希值,确定待检索路径对应的存储地址。
其中,指纹库用于记录存储路径哈希值的特征,存储路径哈希值是元数据的存储路径对应的哈希值。通过指纹库可快速的查找到与待检索哈希值相匹配的存储路径哈希值,提高了元数据的查找效率。
例如,将存储路径哈希值的部分片段作为该存储路径哈希值的特征,提取该存储路径哈希值的特征并保存到指纹库中。通过指纹库中的不同存储路径哈希值的特征,即可快速地将存储路径哈希值锁定在一定范围,再基于待检索哈希值和存储路径哈希值确定待检索哈希值对应的存储地址(例如,当待检索哈希值和存储路径哈希值相同的情况下,确定该存储路径哈希值对应的存储路径即为待检索哈希值对应的存储地址),提升了对待检索路径的检索速度。换言之,通过指纹库可初步筛查待检索路径的大概位置,再对待检索哈希值做精细化分析,最终确定该待检索路径对应的存储地址,进一步保证了查找到的存储地址的准确性。
步骤S203,从待检索路径对应的存储地址获得元数据。
通过待检索路径对应的存储地址,可准确的确定元数据对应的存储位置,再从待检索路径对应的存储地址获得元数据,能够保证该元数据即为要查找的元数据,保证元数据的准确性。
在本实施例中,通过基于待检索路径确定待检索哈希值,待检索路径用于查找元数据的存储路径,方便对待检索路径进行处理;依据待检索哈希值、指纹库和存储路径哈希值,确定待检索路径对应的存储地址,其中,指纹库用于记录存储路径哈希值的特征,存储路径哈希值是元数据的存储路径对应的哈希值,通过待检索哈希值和指纹库对存储地址进行筛选,再利用待检索哈希值和存储路径哈希值确定存储地址,能够加快检索速度,提高检索效率,同时保证检索结果的准确性。
图3示出本申请实施例二提供的持久内存文件系统元数据的检索方法的流程示意图。如图3所示,本申请实施例提供的持久内存文件系统元数据的检索方法可以包括以下步骤。
步骤S301,基于待检索路径确定待检索哈希值。
需要说明的是,本实施例中的步骤S301与实施例一中的步骤S201相同,在此不再赘述。
步骤S302,依据待检索哈希值和预设节点的数量,确定待检索节点。
其中,待检索节点包括存储项,存储项包括至少一个路径组,路径组包括指纹库。
例如,待检索节点存储有一张哈希表,该哈希表的长度为1M,即该哈希表可存储1024*1024个存储项,每个存储项包括至少一个路径组,每个路径组包括指纹库和存储路径及其对应的元数据。指纹库中记录了存储路径哈希值的特征。通过以上存储结构,可避免哈希冲突的频繁发生,并方便对元数据的查找,提升查找效率。
例如,待检索哈希值包括待检索节点对应的哈希值,可通过预设节点的数量,计算每个预设节点对应的哈希值,然后将待检索哈希值分别与这些预设节点对应的哈希值进行对比,即可确定待检索节点具体对应哪个预设节点,通过哈希值的对比,简化对待检索路径的处理方式,加快待检索节点的查找速度。
在一些具体实现中,依据待检索哈希值和预设节点的数量,确定待检索节点,包括:基于待检索哈希值获得节点信息值;使用节点信息值对预设节点的数量做取余处理,确定待检索节点。
例如,预先设定待检索哈希值的最前32位表征节点信息值,若待检索哈希值表示为:0xff3a 11fc ff32 ff33 ff34 ff35 ff36 ff37 ff38 ff39 ff3a ff3b ff3c ff3dff10 0009,可提取该待检索哈希值的最前32位(即,0xff3a 11fc),然后将0xff3a 11fc转换为十进制数字4281995772。若设定预设节点的数量为4,则通过4281995772对4取余数,可确定该余数为0,即表征待检索节点为节点0。
通过以上计算,可快速确定待检索节点,极大地提升对待检索节点的检索速度,同时避免对待检索路径的维护和处理,简化处理过程。
步骤S303,依据待检索哈希值确定待检索路径对应的存储项。
其中,待检索哈希值还可以包括待检索路径对应的存储项的信息值。
例如,采用待检索哈希值的最后20位来表征待检索路径对应的存储项的编号。通过提取待检索哈希值的最后20位(即,0x0009),然后再将0x0009转换为十进制数字(即,9),则表征待检索路径对应的存储项的编号为9,即待检索路径存储在节点0的第9项存储项中。进一步明确待检索路径的存储位置。
步骤S304,获取存储项中各个路径组对应的指纹库。
其中,存储项包括至少一个路径组,每个路径组包括指纹库。因指纹库中记录了存储路径哈希值的特征,获取该存储项中的每个路径组的指纹库,即获取了存储项中的每个路径组中的各个存储路径对应的存储路径哈希值的特征。
步骤S305,依据待检索哈希值、指纹库和存储路径哈希值,确定待检索路径对应的存储地址。
在一些具体实现中,依据待检索哈希值、指纹库和存储路径哈希值,确定待检索路径对应的存储地址,包括:依据待检索哈希值和存储项中的路径组对应的指纹库确定候选存储路径;依据候选存储路径的哈希值和待检索哈希值,确定待检索路径对应的存储地址。
其中,依据待检索哈希值和指纹库确定的候选存储路径可以是一条存储路径,也可以是多条存储路径。
在一些实施例中,候选存储路径可以采用并行的方式获得,也可以采用串行的方式获得。
例如,采用并行的方式获得候选存储路径。若存储项中包括3个路径组,每个路径组包括一个指纹库,则可先获取这3个路径组对应的各个指纹库,即指纹库1、指纹库2和指纹库3;然后,将待检索哈希值分别与这三个指纹库进行对比,确定每个路径组中是否包括候选存储路径,若确定指纹库2和指纹库3都包括候选存储路径,则可同时将指纹库2对应的候选存储路径1和指纹库3对应的候选存储路径2提取出来,以方便下一步骤的处理。即,将待检索哈希值分别与候选存储路径1和候选存储路径2进行对比,确定最终的待检索路径对应的存储地址。
例如,采用串行的方式获得候选存储路径。若存储项中包括3个路径组,每个路径组包括一个指纹库,则可依次对每个路径组的指纹库进行处理。例如,先对路径组1对应的指纹库1进行处理,确定该路径组1中是否存在候选存储路径,若不存在,则继续对路径组2对应的指纹库2进行处理;若存在,则提取路径组1中的候选存储路径1,再将该候选存储路径1的哈希值和待检索哈希值进行对比,确定待检索哈希值和该候选存储路径1的哈希值是否相同,在确定待检索哈希值和该候选存储路径1的哈希值相同的情况下,确定该候选存储路径1与待检索路径一致,确定获得待检索路径对应的存储地址;否则,在确定待检索哈希值和该候选存储路径1的哈希值不同的情况下,确定该候选存储路径1与待检索路径不一致。然后,继续对下一个路径组2进行查找,对路径组2的查找过程与对路径组1的处理过程相同,在此不再赘述;直至将存储项中的3个路径组都处理完毕。
通过对存储项中的路径组对应的指纹库进行初步筛选,可初步确定待检索路径可能存在于哪个路径组,然后再提取候选存储路径的哈希值,对待检索哈希值进行再次处理,进行再次筛选,以确定待检索路径对应的存储地址。通过两级的哈希值处理,能够最大限度的避免哈希冲突,保证查找到待检索路径对应的存储地址。
在一些具体实现中,依据待检索哈希值和存储项中的路径组对应的指纹库确定候选存储路径,包括:对待检索哈希值和存储项中的路径组对应的指纹库做异或处理,确定候选存储路径。
其中,异或处理表示对两个数字进行对比,并根据对比结果确定异或结果,例如,若设定两个数字为A和B,若A和B不相同,则异或结果为真(可采用“1”表示);若A和B相同,则异或结果为假(可采用“0”表示)。待检索哈希值和指纹库均可采用二进制数字表示。
通过对待检索哈希值和存储项中的路径组对应的指纹库做异或处理,获得异或结果,若该异或结果为待检索哈希值的部分特征与该指纹库的部分特征相同,则表示该指纹库对应的路径组中包括候选存储路径。例如,指纹库中包括16个不同的存储路径的特征,若待检索哈希值的部分特征与该指纹库中的第4个存储路径的特征相同,则表示该指纹库中的第4个存储路径为候选存储路径。基于异或处理确定候选存储路径能够加快对存储路径的检索速度。
在一些具体实现中,依据候选存储路径的哈希值和待检索哈希值,确定待检索路径对应的存储地址,包括:对比待检索哈希值和候选存储路径的哈希值,确定待检索路径对应的存储地址。
若确定待检索哈希值和候选存储路径的哈希值相同,则表示该候选存储路径即为要查找的待检索路径,并获取该待检索路径对应的存储地址。若确定待检索哈希值和候选存储路径的哈希值不同,则表示该候选存储路径不是要查找的待检索路径,需要将待检索哈希值与其他候选存储路径进行比对,以确定待检索路径对应的存储地址。
通过将待检索哈希值和候选存储路径的哈希值进行对比,能够从候选存储路径中快速筛选出与待检索路径相同的存储路径,进而根据该存储路径确定待检索路径对应的存储地址,加快对待检索路径对应的存储地址的检索速度。
步骤S306,从待检索路径对应的存储地址获得元数据。
需要说明的是,本实施例中的步骤S306与实施例一中的步骤S203相同,在此不再赘述。
在本实施例中,通过基于待检索路径确定待检索哈希值,待检索路径用于查找元数据的存储路径,方便对待检索路径进行处理;依据待检索哈希值和预设节点的数量,确定待检索节点,初步筛查待检索路径可能存储的待检索节点,避免哈希冲突;获取存储项中各个路径组对应的指纹库,依据待检索哈希值确定待检索路径对应的存储项,进一步对待检索哈希值进行处理,确定待检索路径对应的存储项,加快对元数据的检索速度;依据待检索哈希值、指纹库和存储路径哈希值,确定待检索路径对应的存储地址,其中,指纹库用于记录存储路径哈希值的特征,存储路径哈希值是元数据的存储路径对应的哈希值,通过指纹库先对存储路径哈希值的特征进行筛选,能够加快检索速度,提高检索效率;从待检索路径对应的存储地址获得元数据,保证检索结果的准确性。
在一些具体实现中,路径组还包括位图信息;步骤S305中的依据待检索哈希值和存储项中的路径组对应的指纹库确定候选存储路径之后,还包括:依据位图信息,获取候选存储路径中的空闲路径,空闲路径与空闲存储地址相对应,空闲存储地址的存储状态为空闲状态。
其中,位图信息用于标识路径组中是否存在空闲路径。例如,位图信息可采用二进制数字表示,每位二进制数字表示该路径组中的各个存储路径是否是空闲路径。例如,该位图信息采用一个16位的二进制数字表示,可表示该路径组中包括16个存储路径,若该位图信息的第5位是“0”,则表示该路径组中的第5个存储路径是空闲路径;若该位图信息的第8位是“1”,则表示该路径组中的第8个存储路径不是空闲路径,即该第8个存储路径对应的存储地址已经存储有元数据。
通过位图信息可快速准确的确定候选存储路径中的空闲路径,可方便的查找到空闲存储地址,提升数据存储的效率;并且,通过位图信息能够清晰的确定存储项中的各个存储路径的存储状态,方便对各个存储路径的管理,提升路径的管理效率。
在一些具体实现中,依据位图信息,获取候选存储路径中的空闲路径,包括:在确定候选存储路径中存在空闲路径的情况下,获取空闲路径;在确定候选存储路径中不存在空闲路径的情况下,生成新的路径组,并从新的路径组中获取空闲路径。
其中,新的路径组可包括至少一个存储路径,并且该存储路径对应的存储地址中没有存储元数据,能够提升数据的存储容量。
通过在不同情况下,使用位图信息快速准确的查找到候选存储路径中的空闲路径的位置,方便后续使用该空闲路径对元数据进行存储,提升元数据的存储效率。
在一些具体实现中,依据位图信息,获取候选存储路径中的空闲路径之后,还包括:获取待存储元数据;将待存储元数据存储至空闲路径对应的空闲存储地址。
其中,待存储元数据是期望能够存储到持久内存文件系统中的元数据,将待存储元数据存储至空闲路径对应的空闲存储地址,保证待存储元数据的安全性;并且,在后续对该待存储元数据进行查找时,通过本申请各个实施例中的检索方法,能够加快对待存储元数据的检索速度。
在一些具体实现中,存储项还包括路径组数量;将待存储元数据存储至空闲路径对应的空闲存储地址之后,还包括:更新存储项中的路径组数量、以及空闲存储地址对应的路径组中的位图信息和空闲存储地址对应的路径组中的指纹库。
需要说明的是,若空闲路径是通过生成新的路径组,并从新的路径组中获取到的空闲路径,则在将待存储元数据存储至空闲路径对应的空闲存储地址之后,还需要更新该新的路径组对应的存储项中的路径组数量,以及该新的路径组中的位图信息和指纹库,方便后续对该待存储元数据的查找。
若空闲路径是在确定候选存储路径中存在空闲路径的情况下,获取的空闲路径,则在将待存储元数据存储至空闲路径对应的空闲存储地址之后,需要更新该候选存储路径对应的路径组中的位图信息和指纹库,无需对存储项中的路径组数量进行更新。
通过更新以上信息,可避免待存储元数据存储后无法查找的问题,能够通过更新后的位图信息和指纹库,快速定位到待存储元数据的存储路径。
图4示出本申请实施例三提供的持久内存文件系统元数据的检索方法的流程示意图。如图4所示,本申请实施例提供的持久内存文件系统元数据的检索方法可以包括以下步骤。
步骤S401,基于待检索路径确定待检索哈希值。
步骤S402,依据待检索哈希值、指纹库和存储路径哈希值,确定待检索路径对应的存储地址。
步骤S403,从待检索路径对应的存储地址获得元数据。
需要说明的是,本实施例中的步骤S401~步骤S403与实施例一中的步骤S201~步骤S203相同,在此不再赘述。
步骤S404,删除待检索路径对应的存储地址中的元数据及其对应的存储路径哈希值,获得删除后的路径组。
例如,若确定待检索路径为节点0的哈希表的第9项的第2个路径组的第3个存储路径,则需要将该第3个存储路径对应的存储路径哈希值删除,并删除该第3个存储路径对应的存储地址中的元数据,获得更新后的第2个路径组(即,删除第3个存储路径后的路径组)。
步骤S405,更新删除后的路径组对应的指纹库和位图信息。
其中,指纹库和位图信息中均包括了存储路径的相关信息,在将某个存储路径中的元数据及其对应的存储路径哈希值删除后,需要对删除后的路径组对应的指纹库和位图信息做同步更新,避免存储信息出现错误。
例如,若待检索路径对应的路径组为节点0的哈希表的第9项的第2个路径组,则需更新该第2个路径组对应的位图和指纹库。若第2个路径组的位图为0xffdf(即,采用二进制数字表示为1111111111011111),则更新后的节点0的哈希表的第9项的第2个路径组的位图为0xdfdf(即,采用二进制数字表示为1101111111011111)。同时,还需要删除该第2个路径组的指纹库的第3格(即,将该第2个路径组的指纹库的第32位至第47位置为“0”),获得更新后的节点0的哈希表的第9项的第2个路径组的指纹库。
在本实施例中,通过指纹库先对存储路径进行筛选,快速锁定候选存储路径,能够加快检索速度,提高检索效率;从待检索路径对应的存储地址获得元数据,保证检索结果的准确性;当获取元数据之后,删除待检索路径对应的存储地址中的元数据及其对应的存储路径哈希值,获得删除后的路径组,避免不必要的元数据占用存储资源,提升存储资源的利用率;更新删除后的路径组对应的指纹库和位图信息,避免存储信息出现错误,保证后续对元数据进行处理时,能够快速准确的获得期望的元数据及其对应的存储路径。
图5示出本申请实施例四提供的持久内存文件系统元数据的检索方法的流程示意图。如图5所示,该持久内存文件系统元数据的检索方法可以包括以下步骤。
步骤S501,基于待检索路径确定待检索哈希值,待检索路径用于查找元数据的存储路径。
步骤S502,依据待检索哈希值、指纹库和存储路径哈希值,确定待检索路径对应的存储地址。
步骤S503,从待检索路径对应的存储地址获得元数据。
需要说明的是,本实施例中的步骤S501~步骤S503与实施例一中的步骤S201~步骤S203相同,在此不再赘述。
步骤S504,获取待修改信息。
其中,待修改信息包括待修改的目录元数据和待修改的文件元数据。修改的目录元数据包括预设目录下的目录项的数量、每个目录项的名字和每个目录项的类型中的任意一种或几种。待修改的文件元数据包括但不限于:预设文件的最后修改时间、预设文件的文件尺寸、预设文件包括多个文件数据段,文件数据段的数量、各个文件数据段的起始地址及其长度。以上对于仅是举例说明,其他未说明的待修改信息也在本申请的保护范围之内,可根据具体情况具体设定,在此不再赘述。
步骤S505,依据待修改信息修改待检索路径对应的存储地址中的元数据。
其中,若某个目录下的预设文件被修改了,可根据该预设文件的最后修改时间待检索路径对应的存储地址中的元数据(例如,更新预设文件的最后修改时间等)。保证持久内存文件系统中存储的元数据是实时更新的,保证元数据的真实可靠。
在本实施例中,通过指纹库先对存储路径哈希值的特征进行筛选,能够加快检索速度,提高检索效率;从待检索路径对应的存储地址获得元数据,保证检索结果的准确性;若获得的元数据需要进行修改,在获取该元数据对应的待修改信息之后,依据待修改信息修改待检索路径对应的存储地址中的元数据,保证元数据的真实可靠。
图6示出本申请实施例五提供的持久内存文件系统元数据的存储结构的组成方框图,如图6所示,该存储结构可应用于本申请中的持久内存文件系统元数据的检索方法,该存储结构包括如下数据位:存储地址数据位601,用于记录存储地址,存储地址用于存储元数据,存储地址与存储路径相对应;存储路径哈希值数据位602,用于记录存储路径哈希值,存储路径哈希值是基于存储路径确定的哈希值,存储路径哈希值用于记录存储路径的特征;指纹库数据位603,用于记录指纹库,指纹库用于记录存储路径哈希值的特征。
在一些具体实现中,存储结构,还包括:存储节点,存储节点包括存储项,存储项包括至少一个路径组,每个路径组包括指纹库数据位603。
例如,图7示出本申请实施例五中的各个节点的存储结构的组成方框图。如图7所示,四个节点,每个节点都存储有一张哈希表(即,节点1的哈希表、节点2的哈希表、节点3的哈希表和节点4的哈希表),而每张哈希表中都存储有不同的存储项,例如,节点1的哈希表中存储有6个存储项,每个存储项所存储的元数据的数量也不同(例如,节点1的哈希表中的第1个存储项存储有3个元数据、第2个存储项存储有2个元数据、……、第6个存储项存储有1个元数据)。
不同节点的哈希表相互独立,能够避免节点之间的哈希冲突,并且,每个节点的哈希表中存储有多个不同的存储项,通过待检索哈希值可快速的查找到对应节点的存储项,提升元数据的检索速度。
在一些具体实现中,路径组还包括:位图信息数据位,用于记录位图信息,位图信息用于标识路径组中是否存在空闲路径。
通过位图信息先判定路径组中是否存在空闲路径,方便对待存储元数据进行存储,加快数据的存储速度,保证待存储元数据能够快速的存储到合适的存储路径。
在本实施例中,通过存储地址数据位记录存储地址,该存储地址用于存储元数据,存储地址与存储路径相对应,可方便对待检索路径进行处理;使用指纹库数据位记录指纹库,该指纹库用于记录存储路径哈希值的特征,通过指纹库先对存储路径哈希值的特征进行筛选,获得候选存储路径,加快检索速度;使用存储路径哈希值数据位记录存储路径哈希值,该存储路径哈希值是基于存储路径确定的哈希值,存储路径哈希值用于记录存储路径的特征,然后再对存储路径哈希值进行二次筛选,进一步提升检索速度,提高检索效率的同时,保证检索结果的准确性。
图8示出本申请实施例六提供的持久内存文件系统元数据的存储结构的组成方框图,如图8所示,该存储结构包括:路径组,该路径组包括路径组编号、位图、指纹库、多个存储路径哈希值及其对应的元数据。
其中,位图用于标识路径组中是否存在空闲路径,指纹库用于记录存储路径哈希值的特征,存储路径哈希值用于记录存储路径的特征,存储路径哈希值是基于存储路径确定的哈希值,存储地址与存储路径相对应,存储地址用于存储元数据。
例如,采用SHA-256算法对各个存储路径进行哈希运算,确定存储路径哈希值,该存储路径哈希值可表示为一个256位的二进制数字,为了便于阅读,可将该二进制的存储路径哈希值转化成十六进制的数字表示,每16位一格,共计16格。则在该路径组中可存储16组存储路径哈希值及其对应的元数据。如图8所示,16个存储路径哈希值及其存储的元数据可以包括:存储路径1哈希值和存储路径1元数据、存储路径2哈希值和存储路径2元数据、……、存储路径16哈希值和存储路径16元数据。其中,存储路径1哈希值是基于存储路径1确定的哈希值;存储路径2哈希值是基于存储路径2确定的哈希值;……;存储路径16哈希值是基于存储路径16确定的哈希值。
其中,位图也可以采用16位二进制数字表示,每位二进制数字用于表征路径组中的各个存储路径是否是空闲路径。例如,位图中的第x位表征路径组中第x个存储路径是否是空闲路径,即第x个存储路径对应的空闲存储地址的存储状态是否是空闲状态,“0”表示处于空闲状态,“1”表示存储状态,x为大于或等于0,且小于或等于15的整数。通过位图中存在的“1”的数量,可以快速求得路径组中实际存储的元数据的数量。若某些元数据被删除,则该被删除的元数据对应的位图中的二进制数字需要更新为“0”。指纹库也可以对应采用一个256位的二进制数字表示,每16位二进制数字为一组,用于标识该路径组中的一个存储路径哈希值的特征,则该指纹库可存储有16个存储路径哈希值的特征。
需要说明的是,在对元数据进行检索时,通过指纹库和待检索哈希值确定的候选存储路径只有一条,则可直接将该候选存储路径对应的哈希值提取出来,进而获取该候选存储路径对应的元数据。若候选存储路径存在多条时,还需要逐个将候选存储路径对应的哈希值与待检索哈希值进行对比,以确定待检索哈希值对应的存储路径,进而获取该待检索哈希值对应的元数据。
在本实施例中,通过路径组的结构,存储多个存储路径哈希值及其对应的元数据,能够通过位图信息快速确定路径组中的各个存储路径是否是空闲路径,在进行元数据的存储时,可快速定位到空闲路径,加快元数据的存储速度。使用指纹库来记录存储路径哈希值的特征,而存储路径哈希值用于记录存储路径的特征,在对元数据进行检索时,先对指纹库进行筛选,获得候选存储路径,然后再针对候选存储路径,进一步定位待检索路径,能够提升检索速度,提高检索效率,同时,保证检索结果的准确性。
图9示出本申请实施例七提供的持久内存文件系统元数据的检索装置的组成方框图,如图9所示,该装置包括如下模块:
哈希值确定模块901,用于基于待检索路径确定待检索哈希值,待检索路径用于查找元数据的存储路径;地址确定模块902,用于依据待检索哈希值、指纹库和存储路径哈希值,确定待检索路径对应的存储地址,指纹库用于记录存储路径哈希值的特征,存储路径哈希值是元数据的存储路径对应的哈希值;获取模块903,用于从待检索路径对应的存储地址获得元数据。
在本实施例中,通过哈希值确定模块基于待检索路径确定待检索哈希值,待检索路径用于查找元数据的存储路径,方便对待检索路径进行处理;使用地址确定模块依据待检索哈希值、指纹库和存储路径哈希值,确定待检索路径对应的存储地址,其中,指纹库用于记录存储路径哈希值的特征,存储路径哈希值是元数据的存储路径对应的哈希值,通过待检索哈希值和指纹库对存储地址进行筛选,再利用待检索哈希值和存储路径哈希值确定存储地址,能够加快检索速度,提高检索效率,同时保证检索结果的准确性。
图10示出本申请实施例八提供的持久内存文件系统元数据的检索装置的组成方框图。如图10所示,该检索系统包括如下模块:
路径模块1010、二级哈希索引模块1020和路径组模块1030。其中,路径组模块1030包括指纹库模块1031和元数据模块1032。
其中,路径模块1010,用于获取存储路径,存储路径与存储地址相对应,存储地址用于存储元数据。例如,存储路径为“/root/a/b”或“/root/a/out/a.out”,而存储地址是与“/root/a/b”或“/root/a/out/a.out”对应的在持久内存文件系统中的地址。由于存储路径的格式复杂且长度不同,不方便管理。若对该存储路径进行哈希处理,获得存储路径哈希值,该存储路径哈希值可以唯一标识存储路径,进而根据该存储路径哈希值可唯一的确定元数据的存储地址,方便对存储路径及其对应的元数据的管理,提升存储路径的管理效率。
二级哈希索引模块1020,用于存储两个级别的存储格式,即,节点级存储格式和哈希表级存储格式。
例如,在节点级存储格式中,存储路径哈希值(hashUnique)中的前32位二进制数字表示持久内存文件系统中的预设节点的数量(countNode)。例如,在进行元数据的检索的过程中,提取hashUnique的最前32位二进制数字,并将该32位二进制数字转换成十进制数字(data1),使用data1对countNode做取余处理,获得待检索节点,若该待检索节点在持久内存文件系统中,则可确定在该待检索节点中进行进一步的数据检索。
进一步地,在哈希表级存储格式中,使用hashUnique中的最后20位二进制数字表示存储项对应的编号(例如,第i个预设节点的哈希表中的第j项存储项,i和j均为大于或等于1的整数),其中,存储项是持久内存文件系统中的待检索节点的哈希表中的存储项。例如,在进行元数据的检索的过程中,提取hashUnique的最后20位二进制数字,并将该20位二进制数字转换成十进制数字(a),则a表示第i个预设节点的哈希表中的第a项存储项。
通过采用二级哈希索引模块对元数据进行存储,可避免哈希冲突的频繁发生,减少各个存储项之间的哈希冲突。
路径组模块1030,用于通过指纹库模块1031获取指纹库中的各个数据位,并根据该指纹库和待检索哈希值,确定候选存储路径,其中的候选存储路径可以是一个或多个。进一步地,根据待检索哈希值和候选存储路径确定待检索哈希值,进而根据该待检索哈希值确定元数据的存储路径。使用元数据模块1032存储元数据。
其中,元数据包括目录元数据和文件元数据。目录元数据包括预设目录下的目录项的数量、每个目录项的名字和每个目录项的类型中的任意一种或几种。文件元数据包括但不限于:预设文件的最后修改时间、预设文件的文件尺寸、预设文件包括多个文件数据段,文件数据段的数量、各个文件数据段的起始地址及其长度。元数据可以是定长数据,也可以是变长数据。以上对于元数据仅是举例说明,可根据具体实现进行具体设定,其他未说明的元数据也在本申请的保护范围之内,在此不再赘述。
需要说明的是,每个预设节点都存储有一张哈希表,该哈希表包括N个路径组,N为大于或等于0的整数。每个路径组包括:路径组编号、位图、指纹库、以及16个存储路径哈希值。在文件系统规模较小的情况下,哈希表中的路径组可能有0个或1个,而路径组中可能只有1个存储路径。在哈希冲突不可避免的情况下,采用路径组模块对元数据对应的存储路径进行管理,能够提高元数据的查找效率。
例如,图11示出本申请实施例八提供的指纹库的各个数据位的获取方法的流程示意图。指纹库模块1031可采用图11所示的获取方法获得该指纹库的各个数据位。
例如,采用SHA-256算法对各个存储路径进行哈希运算,确定存储路径哈希值(即,图11中的第1个存储路径哈希值、第2个存储路径哈希值、……、第16个存储路径哈希值),各个存储路径哈希值均是一个256位的二进制数字,为了便于阅读,可将该二进制的存储路径哈希值转化成十六进制的数字表示,每16位为一格,共计16格。提取第1个存储路径哈希值的第1格(即,第0-15位)作为指纹库的第1格(即,第0-15位),提取第2个存储路径哈希值的第2格(即,第16-31位)作为指纹库的第2格(即,第16-31位),……,提取第16个存储路径哈希值的第16格(即,第240-255位)作为指纹库的第16格(即,第240-255位),从而生成路径组的指纹库。
需要说明的是,在现有技术中,在持久内存文件系统中存储的元数据较多的情况下,若出现哈希冲突(例如,相同的存储路径哈希值对应到相同的哈希表中的不同存储项),则通过链表式的存储结构来索引存储路径的,对应的索引效率低下。而本申请中,通过二级哈希索引模块1020和路径组模块1030的配合管理,获得的存储结构(即,包括预设节点、每个节点存储有存储项,每个存储项中包括存储路径哈希值及其对应的元数据),能够提升对存储路径的检索效率,避免哈希冲突的频繁发生,从而高效的获取存储路径对应的元数据。
在本实施例中,通过路径模块获取存储路径,使用二级哈希索引模块中的节点级存储格式和哈希表级存储格式,对元数据进行存储,可避免哈希冲突的频繁发生,减少各个存储项之间的哈希冲突。通过路径组模块中的指纹库模块获取指纹库中的各个数据位,并根据该指纹库和待检索哈希值确定候选存储路径;根据待检索哈希值和候选存储路径确定待检索哈希值,进而根据该待检索哈希值确定元数据的存储路径,在哈希冲突不可避免的情况下,采用路径组模块所管理的存储结构,可提高元数据的查找效率。
图12示出本申请实施例九提供的持久内存文件系统的各个预设节点的哈希表的存储格式示意图。如图12所示,该持久内存文件系统包括:
4个预设节点,即节点0、节点1、节点2和节点3。每个节点都存储有一张哈希表,每张哈希表包括1048576(1024*1024)个存储项,每个存储项包括至少一个路径组。例如,节点4的第9个存储项包括3个路径组,即路径组1、路径组2和路径组3。该第9个存储项中存储有43个存储路径,例如,路径组1存储有16个不同存储路径中的元数据,路径组2存储有16个不同存储路径中的元数据,路径组3存储有11个不同存储路径中的元数据,而路径组3中的剩余的5个存储路径为空闲路径,即这5个空闲路径没有存储元数据。
在一个具体实现中,图13示出本申请实施例十提供的持久内存文件系统的元数据的检索方法的流程示意图。如图13所示,在持久内存文件系统中,该检索方法包括如下步骤:
步骤S1310,获取元数据的检索指令。
其中,检索指令包括待检索路径,存储在该待检索路径下的元数据可以是文件元数据,也可以目录元数据。例如,待检索路径为“/test/fs_for_install/dpfs-2.0/fs/a.out”。
步骤S1320,使用路径模块1010,采用SHA256算法对待检索路径进行哈希运算,获得待检索路径哈希值。
其中,待检索路径哈希值可采用一个256位的二进制数字表示,例如,将该待检索路径哈希值标记为hashUnique。为了便于阅读,可将该256位的二进制数字转化成十六进制的数字。表1示出待检索路径哈希值的结构。如表1所示,待检索路径哈希值包括16个格,每个格代表16位二进制数字(或,与该16位二进制数字对应的4位16进制数字)。
表1待检索路径哈希值的结构
ff3a 11fc ff32 ff33 ff34 ff35 ff36 ff37 ff38 ff39 ff3a ff3b ff3c ff3d ff10 0009
步骤S1330,使用二级哈希索引模块1020对待检索哈希值进行分析,确定待检索路径位于第i个节点的哈希表中的第a项存储项中。
例如,因该持久内存文件系统包括4个预设节点,即预设节点的数量为4。使用二级哈希索引模块1020先获取hashUnique的最前32位的二进制数字(例如,0xff3a11fc),然后将该最前32位的二进制数字转换为十进制数字(4281995772),并使用该十进制数字(例如,4281995772)对预设节点的数量(例如,4)做取余处理,获得余数i(i等于0),即确定待检索路径位于节点0中。
进一步地,使用二级哈希索引模块1020获取hashUnique的最后20位的二进制数字(例如,0x0009),然后将该最后20位的二进制数字转换为十进制数字a(例如,a等于9),最后确定待检索路径位于该节点0的哈希表中的第9项存储项中。
需要说明的是,在现有技术中,如图1所示,是采用多个节点共用一张哈希表的存储方式进行元数据的存储,在进行元数据的检索的过程中,由于一张哈希表中的不同区段对应不同的节点,可能存在计算获得的待检索哈希值对应多条存储路径,进而对多条不同节点上的存储路径进行进一步检索时,会存在检索效率低下的问题,而本申请中,通过每个节点都存储有一张哈希表,避免了哈希冲突的频繁发生;并通过二级哈希索引模块对待检索哈希值进行处理,可提升对待检索路径的检索效率,高效的获得待检索路径对应的元数据。
步骤S1340,将待检索路径哈希值与节点0的哈希表中的第9项存储项中的各路径组中的指纹库进行比对,确定待检索路径对应的存储地址。
在一个具体实现中,通过将hashUnique与节点0的哈希表中的第9项存储项中的各路径组中的指纹库进行比对,可获得候选存储路径,该候选存储路径可包括一条存储路径或多条存储路径;然后将该候选存储路径的哈希值与待检索哈希值进行对比,确定待检索路径对应的存储地址。
例如,图14示出本申请实施例十提供的获取待检索路径对应的存储地址的方法的结构示意图。如图14所示,第一步骤中,某条路径组的指纹库与待检索哈希值进行对比,可确定第4格相同(即,该路径组中的第4个存储路径对应的存储路径哈希值的片段特征与待检索哈希值的第4个片段特征相同);然后,进入第二步骤,即提取第4个存储路径对应的存储路径哈希值,然后将该第4个存储路径对应的存储路径哈希值与待检索哈希值进行对比,可确定两个哈希值完全相同,则该第4个存储路径即为待检索路径。
通过指纹库对待检索哈希值进行初步筛选,确定相同的片段特征,再根据该相同的片段特征,对待检索哈希值做进一步的精细筛选,确定第4个存储路径为待检索路径,提升了对待检索路径的处理速度,加快了对元数据的检索效率。
步骤S1350,从待检索路径对应的存储地址获得元数据。
通过待检索路径对应的存储地址,可准确的确定元数据对应的存储位置,再从待检索路径对应的存储地址获得元数据,能够保证该元数据即为要查找的元数据,保证元数据的准确性。
在本实施例中,通过二级哈希索引模块1020对待检索哈希值进行分析,确定待检索路径位于第i个节点的哈希表中的第a项存储项中,即对待检索哈希值进行精细化分析,能够明显减少哈希冲突,以十个节点为例,若采用本申请中的检索方法能够产生哈希冲突的概率为第一概率;而使用现有技术中的采用一张哈希表对多个节点中的元数据进行检索所产生的冲突哈希冲突的概率为第二概率,则第一概率仅为第二概率的10%,极大的降低了哈希冲突。将待检索路径哈希值与节点0的哈希表中的第9项存储项中的各路径组中的指纹库进行比对,确定待检索路径对应的存储地址,采用路径组的存储方式,可分步骤的缩小检索范围,提升对元数据的检索速度。
在一个具体实现中,步骤S1340可采用如下方式获得待检索路径对应的存储地址,图15示出本申请实施例十一中的获得待检索路径对应的存储地址的方法的流程示意图。如图15所示,包括如下步骤:
步骤S1341,读取节点0的哈希表中的第9项中路径组的数量(GroupNum)。
步骤S1342,提取路径组k中的指纹库,获得第k个指纹库。
其中,k为大于或等于0,且小于或等于2的整数。
例如,表2示出节点0的哈希表中的第9项中的路径组1对应的第1个指纹库的结构。表3示出节点0的哈希表的第9项中的路径组2对应的第2个指纹库的结构。
表2节点0的哈希表中的第9项中的路径组1对应的第1个指纹库的结构
a415 c811 6666 9988 a415 7fd5 1f05 7dfd 183d 60f7 0f70 ffff c1ee 87ff 387f 0a0f
表3节点0的哈希表的第9项中的路径组2对应的第2个指纹库的结构
6664 6665 ff32 6667 6668 6669 666a 666b 666c 666d 0000 666f 6670 6671 6672 6673
步骤S1343,将第k个指纹库与待检索路径哈希值做按位异或运算,获得第k个异或结果。
其中,第k个异或结果可表示为256位二进制数字。
例如,表4示出第1个异或结果,表5示出第1个异或结果。
表4第1个异或结果
5b2f d9ed 9954 66bb 5b21 80e0 e033 82ca e705 9fce f04a 00c4 3ed2 78c2 c76f 0a06
表5第2个异或结果
995E 7799 0000 9954 995C 995C 995C 995C 9954 9954 FF3A 9954 994C 994C 9962 667A
步骤S1344,判断第k个异或结果的16个格中是否存在全0的数据位。
如表4所示,第1个异或结果中不存全0的数据位;如表5所示,第2个异或结果的第3格中的数据位为全0。
在确定第k个异或结果的16个格中存在全0的数据位的情况下,执行步骤S1345;在确定第k个异或结果的16个格中不存在全0的数据位的情况下,执行步骤S1342。
步骤S1345,提取第k个异或结果中的全0的数据位对应的存储路径哈希值,并比较该存储路径哈希值与待检索路径哈希值是否相同。
例如,表6示出节点0的哈希表的第9项第2个路径组的第3个存储路径对应的存储路径哈希值。
表6节点0的哈希表的第9项的第2个路径组的第3个存储路径对应的存储路径哈希值
ff3a 11fc ff32 ff33 ff34 ff35 ff36 ff37 ff38 ff39 ff3a ff3b ff3c ff3d ff10 0009
将表6中的存储路径哈希值与表1中的待检索路径哈希值进行对比,在确定存储路径哈希值与待检索路径哈希值相同的情况下,执行步骤S1346;在确定存储路径哈希值与待检索路径哈希值不同的情况下,执行步骤S1342。
步骤S1346,获取待检索路径对应的存储地址。
通过步骤S1345的比较,可确定待检索路径哈希值(即,表1所示的哈希值)与节点0的哈希表的第9项的第2个路径组的第3个存储路径对应的存储路径哈希值(即,表6所示的哈希值)完全一致,确定已查找到待检索路径,即待检索路径是节点0的哈希表的第9项的第2个路径组的第3个存储路径对应的存储地址。
在本实施例中,通过对节点0的哈希表中的第9项中的各个路径组进行依次检索,使用每个路径组对应的指纹库对待检索哈希值进行初步筛查,然后再提取第k个异或结果中的全0的数据位对应的存储路径哈希值,对该存储路径哈希值进行精细比较,确定该存储路径哈希值与待检索路径哈希值是否相同,能够加快对元数据对应的存储路径的检索速度。
在一个具体实现中,从待检索路径对应的存储地址获得元数据之后,还包括:获取待修改信息(例如,一个文件的最后访问时间为2019年1月1日12:01);依据该待修改信息修改待检索路径对应的存储地址中的元数据(例如,更新待检索路径对应的存储地址中的某个文件的最后访问时间,例如,更新节点0的哈希表的第9项第2个路径组的第3个存储路径对应的元数据)。
通过依据待修改信息,修改待检索路径对应的存储地址中的元数据,使得元数据能够被实时更新,保证用户获取到的元数据的准确性。
在一个具体实现中,图16示出本申请实施例十二提供的在持久内存文件系统中删除元数据的方法的流程示意图。如图16所示,在持久内存文件系统中删除元数据的方法包括如下步骤:
步骤S1601,获取元数据的检索指令。
步骤S1602,使用路径模块1010,采用SHA256算法对待检索路径进行哈希运算,获得待检索路径哈希值。
步骤S1603,使用二级哈希索引模块1020对待检索哈希值进行分析,确定待检索路径位于第i个节点的哈希表中的第a项存储项中。
步骤S1604,将待检索路径哈希值与节点0的哈希表中的第9项存储项中的各路径组中的指纹库进行比对,确定待检索路径对应的存储地址。
需要说明的是,本实施例中的步骤S1601~步骤S1604,与实施例十中的步骤S1310~步骤S1340相同,在此不再赘述。
步骤S1605,删除待检索路径对应的存储路径哈希值,以及该存储路径哈希值对应的元数据。
例如,若通过步骤S1604可确定待检索路径为节点0的哈希表的第9项的第2个路径组的第3个存储路径,则需要将该第3个存储路径对应的存储路径哈希值删除,并删除该第3个存储路径对应的存储地址中的元数据。
步骤S1606,修改待检索路径对应的路径组的位图和指纹库。
例如,若待检索路径对应的路径组为节点0的哈希表的第9项的第2个路径组,则需修改该第2个路径组对应的位图和指纹库。
具体实现时,可将该第2个路径组的位图中的第3位置为“0”,用于表征节点0的哈希表的第9项的第2个路径组的第3个存储路径是空闲路径。例如,若第2个路径组的位图为0xffdf(即,采用二进制数字表示为1111111111011111),则修改后的节点0的哈希表的第9项的第2个路径组的位图为0xdfdf(即,采用二进制数字表示为1101111111011111)。
同时,删除指纹库的第3格(即,将该第2个路径组的指纹库的第32位至第47位置为“0”),获得更新后的节点0的哈希表的第9项的第2个路径组的指纹库。表7示出本申请实施例中的更新后的节点0的哈希表的第9项的第2个路径组的指纹库。
表7更新后的节点0的哈希表的第9项的第2个路径组的指纹库
6664 6665 0000 6667 6668 6669 666a 666b 666c 666d 0000 666f 6670 6671 6672 6673
在本实施例中,通过采用SHA256算法对待检索路径进行哈希运算,获得待检索路径哈希值,可提高对待检索路径的处理效率;使用二级哈希索引模块对待检索哈希值进行分析,确定待检索路径位于第i个节点的哈希表中的第a项存储项中,能够减少哈希冲突;将待检索路径哈希值与节点0的哈希表中的第9项存储项中的各路径组中的指纹库进行比对,确定待检索路径对应的存储地址,可加快对元数据的检索速度,提高检索效率;删除待检索路径对应的存储地址中的元数据及其对应的存储路径哈希值,获得删除后的路径组,避免不必要的元数据占用存储资源,提升存储资源的利用率;修改待检索路径对应的路径组的位图和指纹库,避免存储信息出现错误,保证后续对元数据进行处理时,能够快速准确的获得期望的元数据及其对应的存储路径。
在一个具体实现中,图17示出本申请实施例十三提供的在持久内存文件系统中增加元数据的方法的流程示意图。如图17所示,在持久内存文件系统中增加元数据的方法包括如下步骤:
步骤S1701,获取元数据的增加指令。
其中,增加指令包括待存储路径,存储在该待存储路径下的元数据可以是文件元数据,也可以目录元数据。例如,待存储路径为“/test/fs_for_install/dpfs-2.0/fs/dpfs/scripts/local”。
步骤S1702,使用路径模块1010,采用SHA256算法对待存储路径进行哈希运算,获得待存储路径哈希值。
其中,待存储路径哈希值可采用一个256位的二进制数字表示,为了便于阅读,可将该256位的二进制数字转换成十六进制的数字,表8示出待存储路径哈希值的结构。如表8所示,待存储路径哈希值包括16个格,每个格代表4位16进制数字。
表8待存储哈希值的结构
ff2f ff30 ff32 ff33 ff34 ff35 ff36 ff37 ff38 ff39 ff3a ff3b ff3c ff3d ff30 0009
步骤S1703,使用二级哈希索引模块1020对待存储哈希值进行分析,确定待存储路径位于第i个节点的哈希表中的第a项存储项中。
例如,设定持久内存文件系统包括4个预设节点,换言之,持久内存文件系统中的预设节点的数量为4。使用二级哈希索引模块1020先获取待存储哈希值的最前32位的二进制数字(例如,0xff2fff30),然后将该最前32位的二进制数字转换为十进制数字(4281335600),并使用该十进制数字(4281335600)对预设节点的数量(4)做取余处理,获得余数i(i等于0),由于余数i为0,可确定待存储路径位于节点0中。
进一步地,使用二级哈希索引模块1020获取待存储哈希值的最后20位的二进制数字(例如,0x0009),然后将该最后20位的二进制数字转换为十进制数字a(例如,a等于9),最后确定待存储路径位于该节点0的哈希表中的第9项存储项中。
需要说明的是,在现有技术中,如图1所示,采用多个节点共用一张哈希表的存储方式进行元数据的存储,在对元数据进行检索的过程中,由于一张哈希表中的不同区段对应不同的节点,可能存在计算获得的待检索哈希值对应多条存储路径,进而需要对不同节点上的多条存储路径作进一步的检索时,存在检索效率低下的问题。而本申请中,通过每个节点都存储一张哈希表,避免了哈希冲突的频繁发生;并通过二级哈希索引模块1020对待存储哈希值进行处理,提升待存储路径的检索效率,能够高效的获得待存储路径对应的元数据。
步骤S1704:依据第a项存储项的各个路径组的位图信息,确定第i个节点的哈希表中的第a项存储项中是否存在空闲路径。
在确定第i个节点的哈希表中的第a项存储项中存在空闲路径的情况下,执行步骤S1705;在确定第i个节点的哈希表中的第a项存储项中不存在空闲路径的情况下,执行步骤S1706。
其中,第a项存储项的各个路径组的位图信息都不相同。
例如,第a项存储项的第1个路径组的位图信息为0xffff(即,采用二进制数字表示为1111111111111111),则表示第a项存储项的第1个路径组中没有空闲路径;第a项存储项的第2个路径组的位图信息为0xffdf,(即,采用二进制数字表示为11111111 1101 1111),则表示第a项存储项的第2个路径组中的第11个存储路径为空闲路径,则执行步骤S1706。
例如,通过遍历第a项存储项的各个路径组的位图信息,都没有发现空闲路径,确定需要执行步骤S1705。
步骤S1705,在第a项存储项中新建一个路径组,将新建的路径组的第一个存储路径作为空闲路径,同时将第a项存储项的路径组数量增加1。
步骤S1706,更新空闲路径对应的第a项存储项中的路径组的位图信息和指纹库。
例如,将第a项存储项的第2个路径组的位图信息由0xffdf更新为0xffff,即将第11位置“1”。同时,将第a项存储项的第2个路径组的指纹库的第11格(即,将待存储哈希值的第160-175位写入指纹库的第160-175位)。
需要说明的是,在现有技术中,是通过链表的方式组织同一哈希表的存储项中的存储路径的,其中,链表是一种物理存储单元上非连续、非顺序的存储结构,而使用该链表所存储的元数据之间的逻辑顺序是通过链表中的指针的链接次序实现的。当需要查找某个存储路径时,需要从头依次查找链表的每一项,才能获得最终需要的存储路径,查找效率低下。
而本申请中,通过在存储项中设置多个路径组,每个路径组都包括位图和指纹库,能够通过位图快速的获得该路径组的各个存储路径的存储情况(例如,某个存储路径是否是空闲路径等),并通过指纹库记录该路径组中的存储路径哈希值的特征,能够快速的查找到待检索路径对应的待检索哈希值,有效提升了检索速度。
步骤S1707,将待存储路径对应的元数据存储至第a项存储项的路径组中的空闲路径对应的空闲存储地址。
例如,将待存储路径对应的元数据存储至节点0的哈希表的第9项第2个路径组的第11个存储路径对应的空闲存储地址中。
在本实施例中,通过位图信息确定某个节点的哈希表的某个存储项中是否存在空闲路径,能够快速定位到空闲路径的位置,加快对待存储元数据的存储速度;进一步地,将待存储元数据存储至空闲路径对应的空闲存储地址,更新空闲路径对应的第a项存储项中的路径组的位图信息和指纹库,能够避免将待存储元数据存储至持久内存文件系统中后,无法查找到该待存储元数据的问题;通过更新后的位图信息和指纹库,可快速定位到待存储元数据的存储路径,加快对待存储元数据的查找速度。
需要明确的是,本申请并不局限于上文实施例中所描述并在图中示出的特定配置和处理。为了描述的方便和简洁,这里省略了对已知方法的详细描述,并且上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
图18示出能够实现根据本申请实施例十四提供的持久内存文件系统元数据的检索方法和装置的计算设备的示例性硬件架构的结构图。
如图18所示,计算设备1800包括输入设备1801、输入接口1802、中央处理器1803、存储器1804、输出接口1805、以及输出设备1806。其中,输入接口1802、中央处理器1803、存储器1804、以及输出接口1805通过总线1807相互连接,输入设备1801和输出设备1806分别通过输入接口1802和输出接口1805与总线1807连接,进而与计算设备1800的其他组件连接。
具体地,输入设备1801接收来自外部的输入信息,并通过输入接口1802将输入信息传送到中央处理器1803;中央处理器1803基于存储器1804中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器1804中,然后通过输出接口1805将输出信息传送到输出设备1806;输出设备1806将输出信息输出到计算设备1800的外部供用户使用。
在一个实施例中,图18所示的计算设备可以被实现为一种电子设备,该电子设备可以包括:存储器,被配置为存储程序;处理器,被配置为运行存储器中存储的程序,以执行上述实施例描述的持久内存文件系统元数据的检索方法。
在一个实施例中,图18所示的计算设备可以被实现为一种持久内存文件系统元数据的检索系统,该持久内存文件系统元数据的检索系统可以包括:存储器,被配置为存储程序;处理器,被配置为运行存储器中存储的程序,以执行上述实施例描述的持久内存文件系统元数据的检索方法。
以上所述,仅为本申请的示例性实施例而已,并非用于限定本申请的保护范围。一般来说,本申请的多种实施例可以在硬件或专用电路、软件、逻辑或其任何组合中实现。例如,一些方面可以被实现在硬件中,而其它方面可以被实现在可以被控制器、微处理器或其它计算装置执行的固件或软件中,尽管本申请不限于此。
本申请的实施例可以通过移动装置的数据处理器执行计算机程序指令来实现,例如在处理器实体中,或者通过硬件,或者通过软件和硬件的组合。计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码。
本申请附图中的任何逻辑流程的框图可以表示程序步骤,或者可以表示相互连接的逻辑电路、模块和功能,或者可以表示程序步骤与逻辑电路、模块和功能的组合。计算机程序可以存储在存储器上。存储器可以具有任何适合于本地技术环境的类型并且可以使用任何适合的数据存储技术实现,例如但不限于只读存储器(ROM)、随机访问存储器(RAM)、光存储器装置和系统(数码多功能光碟DVD或CD光盘)等。计算机可读介质可以包括非瞬时性存储介质。数据处理器可以是任何适合于本地技术环境的类型,例如但不限于通用计算机、专用计算机、微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、可编程逻辑器件(FGPA)以及基于多核处理器架构的处理器。
通过示范性和非限制性的示例,上文已提供了对本申请的示范实施例的详细描述。但结合附图和权利要求来考虑,对以上实施例的多种修改和调整对本领域技术人员来说是显而易见的,但不偏离本申请的范围。因此,本申请的恰当范围将根据权利要求确定。

Claims (18)

1.一种持久内存文件系统元数据的检索方法,其特征在于,所述方法包括:
基于待检索路径确定待检索哈希值,所述待检索路径用于查找元数据的存储路径;
依据所述待检索哈希值、指纹库和存储路径哈希值,确定所述待检索路径对应的存储地址,所述指纹库用于记录所述存储路径哈希值的特征,所述存储路径哈希值是所述元数据的存储路径对应的哈希值;
从所述待检索路径对应的存储地址获得所述元数据。
2.根据权利要求1所述的方法,其特征在于,所述基于待检索路径确定待检索哈希值之后,所述依据所述待检索哈希值、指纹库和存储路径哈希值,确定所述待检索路径对应的存储地址之前,还包括:
依据所述待检索哈希值和预设节点的数量,确定待检索节点,所述待检索节点包括存储项,所述存储项包括至少一个路径组,所述路径组包括所述指纹库;
依据所述待检索哈希值确定所述待检索路径对应的存储项;
获取所述存储项中各个路径组对应的指纹库。
3.根据权利要求2所述的方法,其特征在于,所述依据所述待检索哈希值和预设节点的数量,确定待检索节点,包括:
基于所述待检索哈希值获得节点信息值;
使用所述节点信息值对所述预设节点的数量做取余处理,确定所述待检索节点。
4.根据权利要求2所述的方法,其特征在于,所述依据所述待检索哈希值、指纹库和存储路径哈希值,确定所述待检索路径对应的存储地址,包括:
依据所述待检索哈希值和所述存储项中的路径组对应的指纹库确定候选存储路径;
依据所述候选存储路径的哈希值和所述待检索哈希值,确定所述待检索路径对应的存储地址。
5.根据权利要求4所述的方法,其特征在于,所述依据所述待检索哈希值和所述存储项中的路径组对应的指纹库确定候选存储路径,包括:
对所述待检索哈希值和所述存储项中的路径组对应的指纹库做异或处理,确定所述候选存储路径。
6.根据权利要求4所述的方法,其特征在于,所述依据所述候选存储路径的哈希值和所述待检索哈希值,确定所述待检索路径对应的存储地址,包括:
对比所述待检索哈希值和所述候选存储路径的哈希值,确定所述待检索路径对应的存储地址。
7.根据权利要求4所述的方法,其特征在于,所述路径组还包括位图信息;
所述依据所述待检索哈希值和所述存储项中的路径组对应的指纹库确定候选存储路径之后,还包括:
依据所述位图信息,获取所述候选存储路径中的空闲路径,所述空闲路径与空闲存储地址相对应,所述空闲存储地址的存储状态为空闲状态。
8.根据权利要求7所述的方法,其特征在于,所述依据所述位图信息,获取所述候选存储路径中的空闲路径,包括:
在确定所述候选存储路径中存在所述空闲路径的情况下,获取所述空闲路径;
在确定所述候选存储路径中不存在所述空闲路径的情况下,生成新的路径组,并从所述新的路径组中获取所述空闲路径。
9.根据权利要求7所述的方法,其特征在于,所述依据所述位图信息,获取所述候选存储路径中的空闲路径之后,还包括:
获取待存储元数据;
将所述待存储元数据存储至所述空闲路径对应的空闲存储地址。
10.根据权利要求9所述的方法,其特征在于,所述存储项还包括路径组数量;
所述将所述待存储元数据存储至所述空闲路径对应的空闲存储地址之后,还包括:
更新所述存储项中的所述路径组数量,以及所述空闲存储地址对应的路径组中的位图信息和所述空闲存储地址对应的路径组中的指纹库。
11.根据权利要求7所述的方法,其特征在于,所述从所述待检索路径对应的存储地址获得所述元数据之后,还包括:
删除所述待检索路径对应的存储地址中的所述元数据及其对应的存储路径哈希值,获得删除后的路径组;
更新所述删除后的路径组对应的指纹库和位图信息。
12.根据权利要求7所述的方法,其特征在于,所述从所述待检索路径对应的存储地址获得所述元数据之后,还包括:
获取待修改信息;
依据所述待修改信息修改所述待检索路径对应的存储地址中的所述元数据。
13.一种持久内存文件系统元数据的检索装置,其特征在于,其包括:
哈希值确定模块,用于基于待检索路径确定待检索哈希值,所述待检索路径用于查找元数据的存储路径;
地址确定模块,用于依据所述待检索哈希值、指纹库和存储路径哈希值,确定所述待检索路径对应的存储地址,所述指纹库用于记录所述存储路径哈希值的特征,所述存储路径哈希值是所述元数据的存储路径对应的哈希值;
获取模块,用于从所述待检索路径对应的存储地址获得所述元数据。
14.一种元数据的存储结构,其特征在于,所述存储结构应用于如权利要求1-12中任一项所述的持久内存文件系统元数据的检索方法,所述存储结构包括:
存储地址数据位,用于记录存储地址,所述存储地址用于存储元数据,所述存储地址与存储路径相对应;
存储路径哈希值数据位,用于记录存储路径哈希值,所述存储路径哈希值是基于所述存储路径确定的哈希值,所述存储路径哈希值用于记录所述存储路径的特征;
指纹库数据位,用于记录指纹库,所述指纹库用于记录所述存储路径哈希值的特征。
15.根据权利要求14所述的存储结构,其特征在于,所述存储结构,还包括:
存储节点,所述存储节点包括存储项,所述存储项包括至少一个路径组,每个所述路径组包括所述指纹库数据位。
16.根据权利要求15所述的存储结构,其特征在于,所述路径组还包括:
位图信息数据位,用于记录位图信息,所述位图信息用于标识所述路径组中是否存在空闲路径。
17.一种电子设备,包括:
一个或多个处理器;
存储器,其上存储有一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-12中任一项所述的持久内存文件系统元数据的检索方法。
18.一种可读存储介质,其特征在于,所述可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-12中任一项所述的持久内存文件系统元数据的检索方法。
CN202110310068.XA 2021-03-23 2021-03-23 持久内存文件系统元数据的检索方法和装置、存储结构 Active CN113010477B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110310068.XA CN113010477B (zh) 2021-03-23 2021-03-23 持久内存文件系统元数据的检索方法和装置、存储结构
PCT/CN2022/080367 WO2022199400A1 (zh) 2021-03-23 2022-03-11 持久内存文件系统元数据的检索方法和装置、存储结构

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110310068.XA CN113010477B (zh) 2021-03-23 2021-03-23 持久内存文件系统元数据的检索方法和装置、存储结构

Publications (2)

Publication Number Publication Date
CN113010477A CN113010477A (zh) 2021-06-22
CN113010477B true CN113010477B (zh) 2023-09-12

Family

ID=76405640

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110310068.XA Active CN113010477B (zh) 2021-03-23 2021-03-23 持久内存文件系统元数据的检索方法和装置、存储结构

Country Status (2)

Country Link
CN (1) CN113010477B (zh)
WO (1) WO2022199400A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113010477B (zh) * 2021-03-23 2023-09-12 中兴通讯股份有限公司 持久内存文件系统元数据的检索方法和装置、存储结构
CN113596098B (zh) * 2021-07-01 2023-04-25 杭州迪普科技股份有限公司 会话检索方法、装置、设备及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102682116A (zh) * 2012-05-14 2012-09-19 中兴通讯股份有限公司 基于哈希表的表项处理方法及其装置
JP2013210698A (ja) * 2012-03-30 2013-10-10 Hitachi Solutions Ltd ファイル検索システム及びプログラム
CN111125049A (zh) * 2019-12-24 2020-05-08 上海交通大学 基于rdma与非易失内存的分布式文件数据块读写方法及系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107862064B (zh) * 2017-11-16 2021-09-10 北京航空航天大学 一个基于nvm的高性能、可扩展的轻量级文件系统
CN109446160A (zh) * 2018-11-06 2019-03-08 郑州云海信息技术有限公司 一种文件读取方法、系统、装置及计算机可读存储介质
CN111221776B (zh) * 2019-12-30 2023-06-23 上海交通大学 面向非易失性内存的文件系统的实现方法、系统及介质
CN113010477B (zh) * 2021-03-23 2023-09-12 中兴通讯股份有限公司 持久内存文件系统元数据的检索方法和装置、存储结构

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013210698A (ja) * 2012-03-30 2013-10-10 Hitachi Solutions Ltd ファイル検索システム及びプログラム
CN102682116A (zh) * 2012-05-14 2012-09-19 中兴通讯股份有限公司 基于哈希表的表项处理方法及其装置
CN111125049A (zh) * 2019-12-24 2020-05-08 上海交通大学 基于rdma与非易失内存的分布式文件数据块读写方法及系统

Also Published As

Publication number Publication date
CN113010477A (zh) 2021-06-22
WO2022199400A1 (zh) 2022-09-29

Similar Documents

Publication Publication Date Title
CN107807982B (zh) 一种异构数据库的一致性校验方法及装置
US8387003B2 (en) Pluperfect hashing
US9053386B2 (en) Method and apparatus of identifying similar images
US20200057818A1 (en) Method and device for searching indexes for sensor tag data
CN113010477B (zh) 持久内存文件系统元数据的检索方法和装置、存储结构
US20200004851A1 (en) Trie-based indices for databases
CN111258966A (zh) 一种数据去重方法、装置、设备及存储介质
CN107305586B (zh) 索引生成方法、索引生成装置及搜索方法
CN111324750B (zh) 一种大规模文本相似度计算及文本查重方法
CN109165209B (zh) 数据库中对象类型的数据校验方法、装置、设备及介质
CN115309831B (zh) 一种本地数据库状态同步方法、电子设备及存储介质
US20170103099A1 (en) Database table data fabrication
CN114722014A (zh) 基于数据库日志文件的批量数据时间序列传输方法及系统
US20140012879A1 (en) Database management system, apparatus, and method
CN117827837A (zh) 一种缓存数据库向前兼容的方法及相关设备
CN110196952B (zh) 程序代码的搜索处理方法、装置、设备及存储介质
CN107943849B (zh) 视频文件的检索方法及装置
CN113495901B (zh) 一种面向可变长数据块的快速检索方法
US20070239794A1 (en) Method and system for updating logical information in databases
CN110321346B (zh) 一种字符串散列表实现方法和系统
CN113609352B (zh) 字符串检索方法、装置、计算机设备及存储介质
US11652495B2 (en) Pattern-based string compression
CN113535710B (zh) 一种搜索方法、装置、终端设备及存储介质
CN111046012B (zh) 巡检日志的抽取方法、装置、存储介质和电子设备
US20190114323A1 (en) System And Method For Storing Data Records In Key-Value Database

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