CN115576899A - 构建索引的方法和装置以及文件查找方法和装置 - Google Patents
构建索引的方法和装置以及文件查找方法和装置 Download PDFInfo
- Publication number
- CN115576899A CN115576899A CN202211577753.XA CN202211577753A CN115576899A CN 115576899 A CN115576899 A CN 115576899A CN 202211577753 A CN202211577753 A CN 202211577753A CN 115576899 A CN115576899 A CN 115576899A
- Authority
- CN
- China
- Prior art keywords
- hash
- index
- directory
- scanned
- index files
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
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
技术领域
本申请涉及云存储领域,具体而言,涉及一种构建索引的方法和装置以及文件查找方法和装置。
背景技术
在搜索文件时,比较通用的方案是递归遍历目录,并将遍历访问目录的结果写入到对应索引文件中,然后,再从单个索引文件中查找对应的文件记录。
相关技术中提供了一种文件搜索方法、终端设备及存储介质。其扫描文件后建立索引,根据关键词全局搜索找到目标文件。具体地,该方法包括:通过文件管理模块获取应用程序中文件的文件数据集,文件数据集包括文件、文件的位置信息和文件的上下文数据集,上下文数据集包括文件的上下文记录和对应的位置信息;通过文件管理模块建立文件数据集的文件索引;在接收到全局搜索关键词时,通过文件管理模块根据全局搜索关键词和文件索引获取目标文件。
但是,相关技术中,采用的是单进程单线程遍历目录,速度慢;遍历结果顺序写入索引文件中,导致查询性能不佳;如果目录文件很多,会造成索引过大,查询性能下降的问题。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种构建索引的方法和装置以及文件查找方法和装置,以至少解决海量目录文件的单线程索引和查询速度慢、性能低的技术问题。
根据本申请实施例的一个方面,提供了一种构建索引的方法,包括:多进程或多线程并行遍历待扫描目录,并行生成多个索引文件;将并行生成的多个所述索引文件根据预设的哈希规则进行哈希,并根据哈希结果重新组合成多个新的索引文件。
根据本申请实施例的另一方面,还提供了一种查找索引的方法,包括:如上所述的构建索引的方法构建索引文件;基于查询指令,从所构建的索引文件进行查找。
根据本申请实施例的又一方面,还提供了一种构建索引的装置,包括:生成模块,被配置为多进程或多线程并行遍历待扫描目录,并行生成多个索引文件;哈希模块,被配置为将并行生成的多个所述索引文件根据预设的哈希规则进行哈希,并根据哈希结果重新组合成多个新的索引文件。
根据本申请实施例的又一方面,还提供了一种查找索引的装置,包括:如上所述的构建索引的装置;查找模块,被配置为:在存在查询条件且所述查询条件能够被执行哈希操作的情况下,对所述查询条件预先进行哈希操作,根据哈希结果从所构建的索引文件中与所述哈希结果相应的索引文件中查询;在不存在查询条件、或所述查询条件不能够被执行哈希操作的情况下,通过多进程或多线程并行查询所有所构建的索引文件,并将查询结果汇总。
在本申请实施例中,采用多进程或多线程并行遍历待扫描目录,并且,并行生成多个索引文件;然后,将并行生成的多个所述索引文件根据预设的哈希规则进行哈希,并根据哈希结果重新组合成多个新的索引文件,从而解决了海量目录文件的单线程索引和查询速度慢、性能低的技术问题,具有查询速度快、性能高的有益效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种构建索引的方法的流程图;
图2是根据本申请实施例的一种海量文件并行扫描构建索引的方法的流程图;
图3是根据本申请实施例的一种查找索引的方法的流程图;
图4是根据本申请实施例的一种构建索引的装置的结构示意图;
图5是根据本申请实施例的一种查找索引的装置的结构示意图;
图6是根据本申请实施例的另一种查找索引的方法的流程图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
术语解释
进程池/线程池:进程/线程创建与销毁过程会带来调度开销,进而影响缓存局部性能和整体性能。通过预先创建若干个进程/线程,根据任务需要为进程/线程分配任务,进程/线程执行完分配的任务后不销毁而是把状态置为等待任务,并等待新任务分配。
哈希:是一种从任何一种数据中创建小的数字“指纹”的方法。通过将数据打乱混合,重新创建一个叫做哈希值的指纹。
实施例1
根据本申请实施例,提供了一种构建索引的方法的流程图,如图1所示,该方法包括:
步骤S102,多进程或多线程并行遍历待扫描目录,并行生成多个索引文件。
首先,创建进程池或线程池,以容纳任务进程或任务线程,其中,所述任务进程或所述任务线程对应一个索引文件;将所述待扫描目录添加到所述待扫描目录队列末。
接着,判断所述进程池或线程池中是否有空闲的任务进程或任务线程。
在所述进程池或线程池中没有空闲的所述任务进程或所述任务线程的情况下,等待预设的时间段,再判断所述进程池或线程池中是否有空闲的所述任务进程或所述任务线程。
在所述进程池或线程池中存在空闲的所述任务进程或所述任务线程的情况下,利用空闲的任务进程或任务线程从所述待扫描目录队列中取出待扫描目录;基于所述待扫描目录进行扫描,将扫描到的文件记录到所述任务进程或任务线程的索引文件中,并将扫描到的文件目录添加到所述待扫描目录的队列末。
步骤S104,将并行生成的多个所述索引文件根据预设的哈希规则进行哈希,并根据哈希结果重新组合成多个新的索引文件。
例如,遍历多个所述索引文件,并从多个所述索引文件取出内容条目;根据所述预设的哈希规则将所述内容条目进行哈希;根据所述哈希结果,将所述内容条目写入到对应的哈希索引文件中,以得到所述新的索引文件。例如,根据所述哈希结果重新组合多个所述索引文件,将多个所述索引文件分散到多个所述新的索引文件中。
在一些示例中,构建了索引文件之后,还可以基于查询指令,从所构建的索引文件进行查找。
例如,在存在查询条件且所述查询条件符合所述哈希规则的情况下,对所述查询条件预先进行哈希操作,根据哈希结果从所构建的索引文件中与所述哈希结果相应的索引文件中查询;在不存在查询条件、或所述查询条件不符合所述哈希规则的情况下,通过多进程或多线程并行查询所有所构建的索引文件,并将查询结果汇总。
本申请实施例,采用并行的方式,通过多线程并行扫描文件目录,基于哈希计算,通过哈希结果构建索引文件;采用并行的方式,通过多线程并行查询索引文件,再将查询结果汇总,从而提高了查询效率。
实施例2
根据本申请实施例,提供了一种海量文件并行扫描构建索引的方法,如图2所示,该方法包括:
步骤S201,创建进程池或线程池。
进程池或线程池是一组资源的集合,这组资源在服务器启动之初就被创建并初始化。当服务器接收到客户请求构建索引时,可以直接从进程池或线程池中获取资源,而无需动态分配。这样,直接从进程池或线程池中取得空闲进程或线程比动态分配进程或线程的速度要快得多,因此,可以提高资源的分配速度,节约响应客户的时间,并提高资源利用率。
步骤S202,将待扫描目录添加到待扫描目录队列末。
为待扫描目录队列静态分配或动态分配一片连续的存储空间,并设置两个指针进行管理,其中,一个是指向队头元素的队头指针;另一个是指向下一个入队元素的存储位置的队尾指针。
将待扫描目录添加到待扫描目录队列的队末。随着插入和删除操作的进行,队列元素的个数不断变化,队列所占的存储空间也在为队列结构所分配的连续空间中移动。
步骤S203,判断待扫描目录队列是否不为空。
当队头指针和队尾指针相同时,待扫描目录队列中没有任何元素,为空队列。当队头指针和队尾指针不同时,待扫描目录队列中存在待扫描目录。当队尾指针增加到指向分配的连续空间之外时,待扫描目录队列无法再插入新元素。
如果待扫描目录队列不为空,则执行步骤S204,否则,则执行步骤S209。
步骤S204,判断进程池或线程池中是否有空闲的任务进程或任务线程。
如果有空闲的任务进程或任务线程,则执行步骤S206,否则执行步骤S205。
步骤S205,等待若干毫秒。
等待若干毫秒,重新跳转到步骤S204。
步骤S206,任务进程或任务线程从待扫描目录队列中取出待扫描目录。
步骤S207,将扫描到的文件记录到任务进程或任务线程的索引文件中。
步骤S208,将扫描到的目录添加到待扫描目录队列末。
目录会有很多层级,比如一个目录:a/b/c/d/.....,目录a下面有目录b,目录b下面有目录c,c下面有目录d。扫描目录a的时候,只知道有目录b,但是目录b下面有什么并不清楚。因此,需要把目录b添加到待扫描目录队列中,然后扫描目录b时,便会知道目录b下面有c目录,然后,循环地把目录c放入待扫描目录队列。这样,便能够重复扫描完一个目录下面的所有目录结构。
跳转到步骤S203。
步骤S209,遍历所有的索引文件,取出内容条目。
步骤S207中创建的索引文件是根据多个进程的扫描结果得到的多个索引文件,例如N个索引文件,可以将其称为a类索引,a类索引文件中的内容是没有规律的。从a类索引文件中,读取出相应的内容条目。
步骤S210,将内容条目根据预定的哈希规则进行哈希。
哈希规则可以有很多种,只要能够从一段数据提取到一定特征数据的算法均可以。例如,按照条目里面的某一个字段,例如文件名,做一定的转换后得到0~n之间的一个数值,一般来说n不会太大,小于10或者小于100。将文件名转换成 0~n的过程就是哈希规则。
这样,在查找文件时,即使在海量文件中查找,但因为之前采用了预定的哈希规则存储的索引文件,因此会按照存储时的哈希规则,到某个索引文件中查找。例如,假设查找条件经过哈希计算,得到数值9,那么,则到索引文件包含9的索引文件中进行查找。
步骤S211,将内容条目根据哈希结果,写入到对应的哈希索引文件中。
根据哈希结果,把步骤S209中读取出的索引文件中的内容条目分别存入M个b类索引中,其中,b类索引的特点是如果需要查找哈希结果是 x的条目、只需要在这M个索引中的第x个索引中查找即可。
例如,把一个条目中的文件名,假设文件名为“文件a.txt”的二进制经过预定的哈希规则的计算方法,最终得到一个在0至7范围内的数值,假设这个数值是3,则把这个条目存储在index.3 这个索引文件中。如果未来需要查找一个文件名为“文件a.txt”的条目的时候,则把“文件a.txt”经过哈希规则计算后得到结果3,此时,仅在index.3这个索引文件中查找条目,而不需要查找其他的索引。
这样,将没有规律的a类索引按照哈希结果,分别汇总成按哈希结果分类的b类索引,从而使得查询速度加快。
本实施例中,采用多进程/多线程并行遍历目录,并行生成多个索引文件,从而使得扫描速度快;并行生成的索引内容根据一定的规则进行哈希,根据哈希结果重新组合成多个索引文件;查询时对查询条件预先哈希,根据哈希结果去对应的索引文件中查询;如果没有查询条件或查询条件不在需要哈希的字段范围内时,通过多进程/多线程并行查询所有索引文件,再将查询结果汇总,从而提高了查询效率。
实施例3
根据本申请实施例,提供了一种查找索引的方法,如图3所示,该方法包括:
步骤S301,判断查询条件是否满足预设的要求。
接收到客户的查询请求之后,判断查询请求中是否存在查询条件,如果存在查询条件,进一步判断查询条件是否符合哈希规则。
如果查询请求中存在查询条件且查询条件符合哈希规则,则执行步骤S302,否则,执行步骤S304。
步骤S302,将查询条件进行哈希操作。
步骤S303,根据哈希结果,到与哈希结果相应的索引中查找。
根据步骤S302中的哈希操作的哈希结果,到与哈希结果相应的索引中查找内容条目,并执行步骤S306。
步骤S304,通过多进程/多线程并行查找所有的索引文件。
假设有1万个文件,经过了上述的通过对文件名的哈希操作之后,1万个文件的信息会根据哈希规则均匀地分类存储到 index.0 至index.6 这7个文件中。此时,如果需要查找 “文件大小为 1k 的文件”,这个“文件大小为 1k 的文件”的条件就是无法满足预设要求的。这时,需要启动7个进程或线程去分别查找index.0 至index.6这7个索引中的所有条目,并找出“文件大小为 1k 的文件”,然后把每个进程/线程查找到的结果的合集作为最终的查找结果。
步骤S305,将查找结果进行汇总。
步骤S306,返回查找结果。
本实施例中,判断是否有查询条件、查询条件是否为创建索引时用于哈希条目的条件,并且查询条件是可哈希的,如果查询条件可哈希,则对条件进行哈希后得到要查找的条目分布在哪些索引文件中。在对应的索引文件中执行查找并返回查找结果;如果查询条件不是可哈希的,则通过多进程/线程对所有的索引文件并行查找,并将所有查找结果汇总后返回。通过上述方法,可以解决海量目录文件的单线程索引和查询速度慢、性能低、不能满足实际应用需要的问题。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
实施例4
根据本申请实施例,还提供了一种用于实施上述构建索引的方法的装置,如图4所示,该装置包括:生成模块42和哈希模块44。
生成模块42被配置为多进程或多线程并行遍历待扫描目录,并行生成多个索引文件。创建若干个进程池/线程池,将待扫描的目录添加到待扫描目录队列中。进程池/线程池中的每个工作进程/线程创建一个索引文件。进程池/线程池中的工作进程,从队列中取出待扫描的目录,并扫描该目录。将扫描结果写入到该进程/线程的索引文件中;将扫描到的目录加入到待扫描队列中。
哈希模块44被配置为将并行生成的多个所述索引文件根据预设的哈希规则进行哈希操作,并根据哈希操作的哈希结果重新组合成多个新的索引文件。例如,完成扫描后,将所有索引中的所有条目根据既定的哈希规则进行哈希操作,并在哈希操作后存储到多个哈希索引文件中。
本实施例中的构建索引的装置能够实现上述实施例1至2中的方法,因此,此处不再赘述。
实施例5
根据本申请实施例,还提供了一种用于实施上述查找索引的方法的装置,如图5所示,该装置包括:构建索引的装置52和查找模块54。
构建索引的装置52,用于构建索引文件。构建索引的装置52与实施例4中的装置相同,此处不再赘述。
查找模块54被配置为:在存在查询条件且所述查询条件能够被执行哈希操作的情况下,对所述查询条件预先进行哈希操作,根据哈希结果从所构建的索引文件中与所述哈希结果相应的索引文件中查询;在不存在查询条件、或所述查询条件不能够被执行哈希操作的情况下,通过多进程或多线程并行查询所有所构建的索引文件,并将查询结果汇总。
本实施例中的构建索引的装置能够实现上述实施例3中的方法,因此,此处不再赘述。
本实施例中,通过多进程/线程并行扫描目录创建索引;目录索引根据哈希结果分散到多个索引文件中;查找前根据查找条件哈希后只查找指定索引中的条目;通过多进程/线程并行查找所有的索引,从而提高了查找速度。
实施例6
根据本申请实施例,提供了另一种查找索引的方法,如图6所示,该方法包括:
步骤S602,构建索引文件。
构建索引文件的步骤在实施例1和2中已经详细描述,因此,此处不再赘述。
步骤S604,使用哈希函数将输入的查找条件进行哈希操作。
通常,在理想的情况下,不同的查找条件会被转换为不同的索引值,但是,在有些情况下,多个查找条件会被哈希到同一个索引值,因此本实施例中,在哈希查找时进行了哈希冲突处理。例如,可以采用以下方式计算新哈希函数以避免哈希冲突:
Hnew=(H(key) + d) % m*a, i=1,2,…, k (k<=m-1)
其中,H(key)为哈希函数,m为哈希表长,d为随机序列,a为校正因子。
本申请实施例引入了校正因子,校正因子 =1/负载因子。负载因子用来描述一个哈希表的拥挤程度,其中,负载因子 = 元素个数 / 数组长度。负载因子越大,哈希冲突的几率越大,查找效率越低,负载因子越小,冲突的几率越小,空间浪费越多。为了解决效率和空间之间的平衡关系,本实施例利用基于负载因子的校正因子来动态调整哈希函数,使得哈希函数产生的随机序列表避免了哈希冲突的问题。
在解决哈希冲突时,本实施例利用校正因子来动态调整哈希函数产生的随机序列表,以表中的元素为增量地址来查找和再探测,以减少重复查找插入,从而提高了效率。
步骤S606,基于哈希操作的哈希结果查找数据文件,并对所查找到的数据文件进行校验。
在一个示例性实施例中,可以采用随机抽样算法以指定的比例进行抽样来确定抽样规则,然后,基于所确定的抽样规则对所查找到的数据文件进行抽样,获取需要校验的数据集。例如,将所查找到的数据文件按照预设的逻辑数据块大小进行平均分割,得到多个逻辑数据块,然后,基于抽样校验比例,对多个逻辑数据块进行抽样,得到需要校验的数据集。之后,对需要校验的数据集进行分析和处理,删除需要校验的数据集中的重复数据。例如,将需要校验的数据集中引用到的相同数据块的条目重排到一起;删除相同数据块中的重复数据。
接着,根据需要校验的数据集中的元数据读取相应的数据块,调用原校验码的校验方法,重新计算数据块的校验码;并将计算的校验码与原来的的校验码进行比对,如果是一致的,则判断数据无差错;如果不一致,则判断数据有错误;从而完成数据校验。
本实施例具有以下有益效果:将校验功能下放到存储层来完成,直接在存储系统内部处理,降低数据流转层次,提高运行效率。采用分布式并行校验方式,将数据校验任务分割和并行执行,提高了校验速率。采用全局数据重删除技术,对被校验数据文件的元数据进行重复数据删除,大大减少读取的数据块数量。
实施例7
本申请的实施例还提供了一种存储介质。存储介质902被设置为存储用于执行实施例1至3中的方法的程序代码。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种构建索引的方法,其特征在于,包括:
多进程或多线程并行遍历待扫描目录,并行生成多个索引文件;
将并行生成的多个所述索引文件根据预设的哈希规则进行哈希操作,并根据所述哈希操作的哈希结果重新组合成多个新的索引文件。
2.根据权利要求1所述的方法,其特征在于,多进程或多线程并行遍历待扫描目录,并行生成多个索引文件包括:在待扫描目录队列不为空的情况下,循环执行以下步骤:
利用空闲的任务进程或任务线程从所述待扫描目录队列中取出待扫描目录;
基于所述待扫描目录进行扫描,将扫描到的文件记录到所述任务进程或任务线程的索引文件中,并将扫描到的文件目录添加到所述待扫描目录队列末。
3.根据权利要求2所述的方法,其特征在于,在多进程或多线程并行遍历待扫描目录之前,所述方法还包括:
创建进程池或线程池,以容纳任务进程或任务线程,其中,所述任务进程或所述任务线程对应一个索引文件;
将所述待扫描目录添加到所述待扫描目录队列末。
4.根据权利要求1所述的方法,其特征在于,将并行生成的多个所述索引文件根据预设的哈希规则进行哈希操作,并根据所述哈希操作的哈希结果重新组合成多个新的索引文件,包括:
遍历多个所述索引文件,并从多个所述索引文件中取出内容条目;
根据所述预设的哈希规则将所述内容条目进行哈希操作;
根据所述哈希操作的哈希结果,将所述内容条目写入到对应的哈希索引文件中,以得到所述新的索引文件。
5.根据权利要求3所述的方法,其特征在于,在利用空闲的任务进程或任务线程从所述待扫描目录队列中取出待扫描目录之前,所述方法还包括:
判断所述进程池或线程池中是否有空闲的任务进程或任务线程;
在所述进程池或线程池中没有空闲的所述任务进程或所述任务线程的情况下,等待预设的时间段,再判断所述进程池或线程池中是否有空闲的所述任务进程或所述任务线程。
6.根据权利要求1至5中任一项所述的方法,其特征在于,根据哈希结果重新组合成多个新的索引文件包括:根据所述哈希结果重新组合多个所述索引文件,将多个所述索引文件分散到多个所述新的索引文件中。
7.一种查找索引的方法,其特征在于,包括:
基于权利要求1至6中任一项所述的方法构建索引文件;
基于查询指令,从所构建的索引文件进行查找。
8.根据权利要求7所述的方法,其特征在于,从所构建的索引文件进行查找,包括:
在存在查询条件且所述查询条件符合所述哈希规则的情况下,对所述查询条件预先进行哈希操作,根据哈希结果从所构建的索引文件中与所述哈希结果相应的索引文件中查询;
在不存在查询条件、或所述查询条件不符合所述哈希规则的情况下,通过多进程或多线程并行查询所有所构建的索引文件,并将查询结果汇总。
9.一种构建索引的装置,其特征在于,包括:
生成模块,被配置为多进程或多线程并行遍历待扫描目录,并行生成多个索引文件;
哈希模块,被配置为将并行生成的多个所述索引文件根据预设的哈希规则进行哈希操作,并根据所述哈希操作的哈希结果重新组合成多个新的索引文件。
10.一种查找索引的装置,其特征在于,包括:
如权利要求9所述的装置;
查找模块,被配置为:
在存在查询条件且所述查询条件能够被执行哈希操作的情况下,对所述查询条件预先进行哈希操作,根据所述哈希操作的哈希结果从所构建的索引文件中与所述哈希结果相应的索引文件中查询;
在不存在查询条件、或所述查询条件不能够被执行哈希操作的情况下,通过多进程或多线程并行查询所有所构建的索引文件,并将查询结果汇总。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211577753.XA CN115576899B (zh) | 2022-12-09 | 2022-12-09 | 构建索引的方法和装置以及文件查找方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211577753.XA CN115576899B (zh) | 2022-12-09 | 2022-12-09 | 构建索引的方法和装置以及文件查找方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115576899A true CN115576899A (zh) | 2023-01-06 |
CN115576899B CN115576899B (zh) | 2023-03-21 |
Family
ID=84590397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211577753.XA Active CN115576899B (zh) | 2022-12-09 | 2022-12-09 | 构建索引的方法和装置以及文件查找方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115576899B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116010362A (zh) * | 2023-03-29 | 2023-04-25 | 世优(北京)科技有限公司 | 文件存储和文件读取的方法、装置及系统 |
CN117743388A (zh) * | 2023-12-26 | 2024-03-22 | 广州海量数据库技术有限公司 | 一种基于smp的索引并行扫描方法和系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000357115A (ja) * | 1999-06-15 | 2000-12-26 | Nec Corp | ファイル検索装置及びファイル検索方法 |
US20130086017A1 (en) * | 2011-10-03 | 2013-04-04 | H. Jonathan Chao | Generating progressively a perfect hash data structure, such as a multi-dimensional perfect hash data structure, and using the generated data structure for high-speed string matching |
CN105701096A (zh) * | 2014-11-25 | 2016-06-22 | 腾讯科技(深圳)有限公司 | 索引生成方法、数据查询方法、装置及系统 |
CN108809514A (zh) * | 2018-04-23 | 2018-11-13 | 华为技术有限公司 | 一种数据传输方法及相关设备 |
CN113961514A (zh) * | 2021-12-20 | 2022-01-21 | 支付宝(杭州)信息技术有限公司 | 数据查询方法及装置 |
CN114168540A (zh) * | 2021-12-13 | 2022-03-11 | 浙江宇视科技有限公司 | 文件索引信息处理方法、装置、电子设备及存储介质 |
CN114238226A (zh) * | 2021-12-22 | 2022-03-25 | 中山大学 | 一种基于simd指令的nvm本地文件管理系统及方法 |
CN114546980A (zh) * | 2022-04-25 | 2022-05-27 | 成都云祺科技有限公司 | 一种nas文件系统的备份方法、系统及存储介质 |
-
2022
- 2022-12-09 CN CN202211577753.XA patent/CN115576899B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000357115A (ja) * | 1999-06-15 | 2000-12-26 | Nec Corp | ファイル検索装置及びファイル検索方法 |
US20130086017A1 (en) * | 2011-10-03 | 2013-04-04 | H. Jonathan Chao | Generating progressively a perfect hash data structure, such as a multi-dimensional perfect hash data structure, and using the generated data structure for high-speed string matching |
CN105701096A (zh) * | 2014-11-25 | 2016-06-22 | 腾讯科技(深圳)有限公司 | 索引生成方法、数据查询方法、装置及系统 |
CN108809514A (zh) * | 2018-04-23 | 2018-11-13 | 华为技术有限公司 | 一种数据传输方法及相关设备 |
CN114168540A (zh) * | 2021-12-13 | 2022-03-11 | 浙江宇视科技有限公司 | 文件索引信息处理方法、装置、电子设备及存储介质 |
CN113961514A (zh) * | 2021-12-20 | 2022-01-21 | 支付宝(杭州)信息技术有限公司 | 数据查询方法及装置 |
CN114238226A (zh) * | 2021-12-22 | 2022-03-25 | 中山大学 | 一种基于simd指令的nvm本地文件管理系统及方法 |
CN114546980A (zh) * | 2022-04-25 | 2022-05-27 | 成都云祺科技有限公司 | 一种nas文件系统的备份方法、系统及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116010362A (zh) * | 2023-03-29 | 2023-04-25 | 世优(北京)科技有限公司 | 文件存储和文件读取的方法、装置及系统 |
CN117743388A (zh) * | 2023-12-26 | 2024-03-22 | 广州海量数据库技术有限公司 | 一种基于smp的索引并行扫描方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115576899B (zh) | 2023-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115576899B (zh) | 构建索引的方法和装置以及文件查找方法和装置 | |
US6678687B2 (en) | Method for creating an index and method for searching an index | |
US6754799B2 (en) | System and method for indexing and retrieving cached objects | |
US8027984B2 (en) | Systems and methods of reverse lookup | |
US10114908B2 (en) | Hybrid table implementation by using buffer pool as permanent in-memory storage for memory-resident data | |
US8489612B2 (en) | Identifying similar files in an environment having multiple client computers | |
CN106874348B (zh) | 文件存储和索引方法、装置及读取文件的方法 | |
CN106294190B (zh) | 一种存储空间管理方法及装置 | |
US8799291B2 (en) | Forensic index method and apparatus by distributed processing | |
EP3292481B1 (en) | Method, system and computer program product for performing numeric searches | |
CN105468642A (zh) | 数据的存储方法及装置 | |
CN109766318B (zh) | 文件读取方法及装置 | |
CN110069557B (zh) | 数据传输方法、装置、设备及存储介质 | |
CN112416880A (zh) | 一种基于实时归并的海量小文件存储性能优化方法及装置 | |
CN116578746A (zh) | 对象去重方法及装置 | |
US20090157624A1 (en) | System and method for indexing high-dimensional data in cluster system | |
CN103577604B (zh) | 一种用于Hadoop分布式环境的图像索引结构 | |
US20230138113A1 (en) | System for retrieval of large datasets in cloud environments | |
US20130218851A1 (en) | Storage system, data management device, method and program | |
CN114416741A (zh) | 基于多级索引的kv数据写入读取方法、装置及存储介质 | |
CN111767287A (zh) | 数据导入方法、装置、设备及计算机存储介质 | |
CN117827802B (zh) | 一种基于Hbase的数据处理系统、方法及装置 | |
US20230385240A1 (en) | Optimizations for data deduplication operations | |
CN117056368A (zh) | 数据检索方法、装置、设备及存储介质 | |
CN116450669A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |