CN110825742A - 一种数据分页检索的方法、装置、电子设备及存储介质 - Google Patents
一种数据分页检索的方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN110825742A CN110825742A CN201911050559.4A CN201911050559A CN110825742A CN 110825742 A CN110825742 A CN 110825742A CN 201911050559 A CN201911050559 A CN 201911050559A CN 110825742 A CN110825742 A CN 110825742A
- Authority
- CN
- China
- Prior art keywords
- index
- target
- retrieval
- content block
- data
- 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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/2445—Data retrieval commands; View definitions
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种数据分页检索的方法、装置、电子设备及存储介质,预先对符合检索条件的检索数据建立索引表,当需要对检索数据分页检索时,只需要根据检索表确定符合检索参数的目标索引。通过目标索引从数据文件中读取的内容块即为符合检索参数的目标内容块。在检索时,只需要将检索参数与检索表进行匹配,不需要逐条将内容块与检索条件匹配,避免了重复读取数据文件中的内容块。且在检索过程中,仅需从检索表检索符合检索参数的目标索引,不需要在内容中存储所有检索数据,避免造成内存溢出。
Description
技术领域
本发明涉及计算机技术领域,尤其是涉及一种数据分页检索的方法、装置、电子设备及存储介质。
背景技术
文件内容的检索是一种很高频的计算机应用场景,例如从一篇文章中找出包含某个词语的所有句子,或者从软件系统的日志文件中检索出所有的错误级别的日志等。以行式日志文件为例,行式表示每一行即是一个完整的内容单元,在日志文件中,一行内容通常包含了本条日志的发生时间戳、事件源、信息级别、所属模块、摘要内容等,文件中每一行内容都是一个完整的内容块,即具有业务意义的一段数据。若对该日志文件进行分页检索,如分页检索出信息级别为“警告”的所有日志,首先便是整体载入和读取文件,依次读取完毕整个文件的所有行,并判断出每行数据是否符合条件,即是否是信息级别为“警告”,若是,则结果集计数加1,最终得到并记录的结果集计数即为总匹配的行数,该结果集计数用于后续的分页内容提取。如果要随机读取某页的数据,则需要根据上述结果集计数计算出该页的计数范围,进而再次从文件开头依次读入每行内容,对每行内容除了判断是否符合检测条件外,还要判断是否处于该页的计数范围,当该页的所有内容都提取到后即为检索结束。
然而,在进行完整体文件读取后,内存中不能存储所有的匹配行,原因是匹配行可能会很多,存储所有的匹配行会有内存溢出风险,因此在提取具体页的数据时,仍然需要再次对文件内容进行顺序读取和检索条件判断,在匹配到目标页的行数之前,读入的每行内容都是无效的并会直接丢弃,这就造成了不必要的读取操作,在极端的情况下,如目标页的数据位于文件的末尾,性能受影响很大。
由此,在实际应用过程中,对数据进行检索时,逐个将内容块与检索条件进行匹配,将所有匹配行存储到内存中,容易造成内存溢出且内容块中数据的读取过于频繁。
发明内容
本发明实施例提供一种数据分页检索的方法、装置、电子设备及存储介质,用以解决现有技术中的对数据进行检索时,逐个将内容块与检索条件进行匹配,将所有匹配行存储到内存中,容易造成内存溢出且内容块中数据的读取过于频繁的问题。
针对以上技术问题,第一方面,本发明的实施例提供了一种数据分页检索的方法,包括:
对检索数据分页检索时,接收检索参数,所述检索参数包括需检索的目标内容块所在页的页码和预设页容量;
获取对所述检索数据创建的索引表,所述索引表中包括所述检索数据中每一内容块在数据文件中的位置;
确定所述索引表中符合所述检索参数的目标索引,将根据目标索引从所述数据文件中检索的内容块,作为所述目标内容块,返回所述目标内容块;
其中,所述检索数据由所述数据文件中符合检索条件的内容块组成;所述预设页容量为页面容纳内容块的最大值。
可选地,还包括:
循环执行索引追加操作,直到遍历所述数据文件中的每一内容块,得到对所述检索数据创建的所述索引表;
所述索引追加包括:按照预设顺序每次从所述数据文件中加载至少一个内容块,对每一所加载内容块,判断所述所加载内容块是否符合所述检索条件,若是,构建所述所加载内容块的索引对,将所述索引对追加到索引表的末尾后,移出所述所加载内容块,否则,移出所述所加载内容块;
其中,所述索引对包括所述所加载内容块占用的存储空间,和相对于所述数据文件中某一预设位置处的内容块的偏移量。
可选地,所述确定所述索引表中符合所述检索参数的目标索引,将根据目标索引从所述数据文件中检索的内容块,作为所述目标内容块,返回所述目标内容块,包括:
根据所述页码、所述预设页容量和所述索引表中的最大索引确定起始索引和终止索引,将起始索引、终止索引,以及在起始索引和终止索引之间的各索引,作为所述目标索引;
对每一目标索引,根据所述目标索引的索引对中的存储空间构建内存映射文件,根据所述目标索引的索引对中的偏移量,从所述数据文件检索内容块,作为所述目标索引对应的目标内容块;
返回各目标索引对应的目标内容块,以对返回的目标内容块进行显示。
可选地,所述根据所述页码、所述预设页容量和所述索引表中的最大索引确定起始索引和终止索引,包括:
计算所述页码减1后,与所述预设页容量的第一乘积,将所述第一乘积作为所述起始索引;
计算所述页码与所述预设页容量的第二乘积,并计算所述第二乘积减1的差值,判断所述差值是否小于所述最大索引,若是,则将所述差值作为所述终止索引,否则,将所述最大索引作为所述终止索引。
可选地,所述对每一目标索引,根据所述目标索引的索引对中的存储空间构建内存映射文件,根据所述目标索引的索引对中的偏移量,从所述数据文件检索内容块,作为所述目标索引对应的目标内容块,包括:
自起始索引开始,循环执行检索操作,直到对所述终止索引执行所述检索操作后,得到检索的各目标内容块;
其中,检索操作包括:按照自起始索引到终止索引的顺序,读取未执行检索操作的目标索引,根据所述目标索引的索引对中的存储空间构建内存映射文件,根据所述目标索引的索引对中的偏移量,从所述数据文件检索内容块,作为所述目标索引对应的目标内容块。
可选地,所述返回各目标索引对应的目标内容块,以对返回的目标内容块进行显示,包括:
按照自起始索引到终止索引的顺序,返回各目标索引对应的目标内容块,以在显示页面中,按照返回各目标内容块的顺序从上到下显示各目标内容块。
第二方面,本发明的实施例提供了一种数据分页检索的装置,包括:
接收模块,用于对检索数据分页检索时,接收检索参数,所述检索参数包括需检索的目标内容块所在页的页码和预设页容量;
获取模块,用于获取对所述检索数据创建的索引表,所述索引表中包括所述检索数据中每一内容块在数据文件中的位置;
确定模块,用于确定所述索引表中符合所述检索参数的目标索引,将根据目标索引从所述数据文件中检索的内容块,作为所述目标内容块,返回所述目标内容块;
其中,所述检索数据由所述数据文件中符合检索条件的内容块组成;所述预设页容量为页面容纳内容块的最大值。
可选地,还包括创建模块,所述创建模块用于:
循环执行索引追加操作,直到遍历所述数据文件中的每一内容块,得到对所述检索数据创建的所述索引表;
所述索引追加包括:按照预设顺序每次从所述数据文件中加载至少一个内容块,对每一所加载内容块,判断所述所加载内容块是否符合所述检索条件,若是,构建所述所加载内容块的索引对,将所述索引对追加到索引表的末尾后,移出所述所加载内容块,否则,移出所述所加载内容块;
其中,所述索引对包括所述所加载内容块占用的存储空间,和相对于所述数据文件中某一预设位置处的内容块的偏移量。
可选地,所述确定模块还用于:
根据所述页码、所述预设页容量和所述索引表中的最大索引确定起始索引和终止索引,将起始索引、终止索引,以及在起始索引和终止索引之间的各索引,作为所述目标索引;
对每一目标索引,根据所述目标索引的索引对中的存储空间构建内存映射文件,根据所述目标索引的索引对中的偏移量,从所述数据文件检索内容块,作为所述目标索引对应的目标内容块;
返回各目标索引对应的目标内容块,以对返回的目标内容块进行显示。
可选地,所述确定模块还用于:
计算所述页码减1后,与所述预设页容量的第一乘积,将所述第一乘积作为所述起始索引;
计算所述页码与所述预设页容量的第二乘积,并计算所述第二乘积减1的差值,判断所述差值是否小于所述最大索引,若是,则将所述差值作为所述终止索引,否则,将所述最大索引作为所述终止索引。
可选地,所述确定模块还用于:
自起始索引开始,循环执行检索操作,直到对所述终止索引执行所述检索操作后,得到检索的各目标内容块;
其中,检索操作包括:按照自起始索引到终止索引的顺序,读取未执行检索操作的目标索引,根据所述目标索引的索引对中的存储空间构建内存映射文件,根据所述目标索引的索引对中的偏移量,从所述数据文件检索内容块,作为所述目标索引对应的目标内容块。
可选地,所述确定模块还用于:按照自起始索引到终止索引的顺序,返回各目标索引对应的目标内容块,以在显示页面中,按照返回各目标内容块的顺序从上到下显示各目标内容块。
第三方面,本发明的实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以上所述的数据分页检索的方法的步骤。
第四方面,本发明的实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以上所述的数据分页检索的方法的步骤。
本发明的实施例提供了一种数据分页检索的方法、装置、电子设备及存储介质,预先对符合检索条件的检索数据建立索引表,当需要对检索数据分页检索时,只需要根据检索表确定符合检索参数的目标索引。通过目标索引从数据文件中读取的内容块即为符合检索参数的目标内容块。在检索时,只需要将检索参数与检索表进行匹配,不需要逐条将内容块与检索条件匹配,避免了重复读取数据文件中的内容块。且在检索过程中,仅需从检索表检索符合检索参数的目标索引,不需要在内容中存储所有检索数据,避免造成内存溢出。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的一种数据分页检索的方法的流程示意图;
图2是本发明另一个实施例提供的基于内存映射技术的大数据文件快速分页检索方法流程示意图;
图3是本发明另一个实施例提供的一种数据分页检索的装置的结构框图;
图4是本发明另一个实施例提供的电子设备的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本实施例提供的一种数据分页检索的方法的流程示意图,参见图1,该数据分页检索的方法包括以下步骤:
步骤101:对检索数据分页检索时,接收检索参数,所述检索参数包括需检索的目标内容块所在页的页码和预设页容量;
步骤102:获取对所述检索数据创建的索引表,所述索引表中包括所述检索数据中每一内容块在数据文件中的位置;
步骤103:确定所述索引表中符合所述检索参数的目标索引,将根据目标索引从所述数据文件中检索的内容块,作为所述目标内容块,返回所述目标内容块;
其中,所述检索数据由所述数据文件中符合检索条件的内容块组成;所述预设页容量为页面容纳内容块的最大值。
本实施例提供的方法通常由服务器执行,或者专用于对数据进行检索的设备执行。该方法对符合检索条件的检索数据建立了索引表,当需要对检索数据进行分页检索时,通过索引表确定需检索的目标内容块的目标索引,进而通过目标索引直接从数据文件读取内容块即可。在分页检索的过程中,该方法不需要逐一对比内容块的内容是否符合检索条件,避免了对数据文件的重复频繁的读取操作。另一方面,只需要根据检索出的目标索引,从目标文件读取目标内容块,而不需要将所有检索数据存储到内存中,避免了内存溢出。
数据文件是大量数据的集合,例如,某购物网站的大量的商品信息组成的数据。数据文件中每一条数据被称作一个内容块,例如,一条商品信息就是一个内容块。检索数据是数据文件中符合检索条件的数据的集合,例如,检索条件为春装,则检索数据为数据文件中所有春装的商品信息的集合。分页检索是将检索数据分页排布时,以“页”为检索参数进行检索,例如,检索出排布在第4页的所有商品信息。预设页容量,例如,设定为20,即每页最多排布20个内容块。索引表为预先建立的,由“表示检索数据的每一内容块在数据文件中位置”的信息组成的列表。
本实施例提供了一种数据分页检索的方法,预先对符合检索条件的检索数据建立索引表,当需要对检索数据分页检索时,只需要根据检索表确定符合检索参数的目标索引。通过目标索引从数据文件中读取的内容块即为符合检索参数的目标内容块。在检索时,只需要将检索参数与检索表进行匹配,不需要逐条将内容块与检索条件匹配,避免了重复读取数据文件中的内容块。且在检索过程中,仅需从检索表检索符合检索参数的目标索引,不需要在内容中存储所有检索数据,避免造成内存溢出。
具体来说,本实施例提供的方法构建出检索结果集的索引表,随机页内容的提取都是基于该索引表进行的,可以避免读取整个文件,由于索引表中记录了目标内容的物理字节位置信息,故可以基于内存映射技术快速提取对应的内容。该方法从作用上可以支持对大数据文件的分页检索,从性能上可以大幅度提高随机页内容提取的效率。具体效果为,基于索引表,实现随机页内容提取,不必每次都从文件头部开始重复读取和计算内容是否符合检索条件,根据索引表中存储的目标内容的物理字节位置信息,利用内存映射技术可以实现目标页内容的高效率提取。
进一步地,在上述实施例的基础上,还包括:
循环执行索引追加操作,直到遍历所述数据文件中的每一内容块,得到对所述检索数据创建的所述索引表;
所述索引追加包括:按照预设顺序每次从所述数据文件中加载至少一个内容块,对每一所加载内容块,判断所述所加载内容块是否符合所述检索条件,若是,构建所述所加载内容块的索引对,将所述索引对追加到索引表的末尾后,移出所述所加载内容块,否则,移出所述所加载内容块;
其中,所述索引对包括所述所加载内容块占用的存储空间,和相对于所述数据文件中某一预设位置处的内容块的偏移量。
本实施例提供的方法通过索引追加操作创建索引表。当对检索数据分页检索时,判断是否对检索数据创建了索引表,若是,获取索引表,否则,通过循环执行索引追加操作创建索引表。
索引对包括了内容块的长度(即内容块占用的存储空间和偏移量。其中,偏移量表示了内容块在数据文件的位置,例如,某一预设位置为数据文件中的第一个内容块,则将符合检索条件的内容块相对于数据文件中的第一个内容块是第几个数据块,作为偏移量。
预设顺序,例如,从数据文件的第一个内容块到最后一个内容块的顺序。在执行索引追加操作时,若某一所加载内容块符合检索条件,则确定其在数据文件的位置(用索引对表示),并将确定的索引对追加到索引表中。当所加载内容块不符合检索条件或者符合条件并将其追加到检索表后,需将所加载内容块从内存中移出,以释放内存空间,保证系统性能。
进一步地,在上述各实施例的基础上,所述确定所述索引表中符合所述检索参数的目标索引,将根据目标索引从所述数据文件中检索的内容块,作为所述目标内容块,返回所述目标内容块,包括:
根据所述页码、所述预设页容量和所述索引表中的最大索引确定起始索引和终止索引,将起始索引、终止索引,以及在起始索引和终止索引之间的各索引,作为所述目标索引;
对每一目标索引,根据所述目标索引的索引对中的存储空间构建内存映射文件,根据所述目标索引的索引对中的偏移量,从所述数据文件检索内容块,作为所述目标索引对应的目标内容块;
返回各目标索引对应的目标内容块,以对返回的目标内容块进行显示。
在根据检索表进行分页检索时,首先根据检索参数确定索引范围,逐一根据索引范围内容的各目标索引中存储索引对,从数据文件中读取内容块,便可得到各目标内容块。例如,通常起始索引计算公式为[(页码-1)*预设页容量)],终止索引计算公式为[(页码*预设页容量-1)]。根据索引对中的存储空间可以构建能够对目标内容块进行存储的内存空间,方便从数据文件读取各目标内容块的数据。
进一步地,在上述各实施例的基础上,所述根据所述页码、所述预设页容量和所述索引表中的最大索引确定起始索引和终止索引,包括:
计算所述页码减1后,与所述预设页容量的第一乘积,将所述第一乘积作为所述起始索引;
计算所述页码与所述预设页容量的第二乘积,并计算所述第二乘积减1的差值,判断所述差值是否小于所述最大索引,若是,则将所述差值作为所述终止索引,否则,将所述最大索引作为所述终止索引。
在计算索引时,需要考虑检索的页为最后一页这一特殊情况。即当计算出的终止索引大于索引表中的最大索引时,需要以最大索引作为终止索引。例如,预设页容量是20,页码是4,则起始索引为[(4-1)*20=60],终止索引为[(4*20-1)=79],假设索引表中数组的最大索引范围为75,则终止索引修正为75。通过最大索引及时修正了终止索引的值,保证了从数据文件读取目标内容块的逻辑正确。
进一步地,在上述各实施例的基础上,所述对每一目标索引,根据所述目标索引的索引对中的存储空间构建内存映射文件,根据所述目标索引的索引对中的偏移量,从所述数据文件检索内容块,作为所述目标索引对应的目标内容块,包括:
自起始索引开始,循环执行检索操作,直到对所述终止索引执行所述检索操作后,得到检索的各目标内容块;
其中,检索操作包括:按照自起始索引到终止索引的顺序,读取未执行检索操作的目标索引,根据所述目标索引的索引对中的存储空间构建内存映射文件,根据所述目标索引的索引对中的偏移量,从所述数据文件检索内容块,作为所述目标索引对应的目标内容块。
在根据目标索引读取目标内容块时,按照从起始索引到终止索引的顺序依次读取,保证了读取过程的有序性。
进一步地,在上述各实施例的基础上,所述返回各目标索引对应的目标内容块,以对返回的目标内容块进行显示,包括:
按照自起始索引到终止索引的顺序,返回各目标索引对应的目标内容块,以在显示页面中,按照返回各目标内容块的顺序从上到下显示各目标内容块。
按照自起始索引到终止索引的顺序返回各目标内容块,使得接收到各目标内容块的终端在显示界面按照该顺序显示各目标内容块。
图2为本实施例提供的基于内存映射技术的大数据文件快速分页检索方法流程示意图,参见图2,该方法包括以下步骤:
S11:获取目标内容块的页大小(即预设页容量和)页码。
页大小和页码是用户输入的参数,用以限定用户要获取的一页内容的范围,例如用户以每页20条内容块为基准,获取第4页的内容,那么页大小是20,页码即是4。之后进入步骤S12。
S12:索引表是否已经建立。
当获取到目标内容块的页大小和页码后,就需要从索引表中查找目标内容块在文件中的分布位置,因此需要首先确认索引表是否已经建立:若索引表尚未建立,则进入步骤S13;若索引表已建立(检索条件未变化,仅改变预设页容量和页码),则进入步骤S110。
S13:顺序加载文件内容块。
由于待检索文件为大数据文件,不能一次将其加载到内存,需要通过一定的内存缓存空间进行分块加载,当加载到内存中的文件片段数据使用完毕后要及时将其移出内存空间,释放内存以加载后面的文件片段。每加载一次文件片段,则进入步骤S14。
S14:是否加载到文件末尾。
根据步骤S13,判断文件是否已经全部加载完毕:若未加载完毕,则进入步骤S15;若已加载完毕,则进入步骤S110。
S15:检测内容块。
该步骤首先获取用户输入的检索条件,然后根据检索条件对步骤S13加载到的文件内容块进行检索,得出检索结果后,进入步骤S16。
S16:是否符合检索条件。
根据步骤S15的检索结果:若不符合检索条件,则进入步骤S17;若符合检索条件,则进入步骤S18。
S17:释放内存空间。
该步骤是根据步骤S13,将已加载到内存中的文件片段移出内存空间,释放内存以加载后面的文件片段。之后再次执行步骤S13。
S18:计算内容块的偏移量和长度(即内容块所需的存储空间)。
根据步骤S13的执行状态,计算出该内容块的偏移量,同时计算出内容块的长度。之后进入步骤S19。
S19:填充索引表。
根据步骤S18得到的内容块的偏移量和长度,构建索引对,并将该索引对追加到索引表数组的末尾。之后再次执行步骤S13。
S110:计算起始索引和终止索引。
根据步骤S11的页大小和页码,计算目标页内容块在索引表中的起始索引和终止索引。起始索引计算公式为[(页码-1)*页大小)],终止索引计算公式为[(页码*页大小-1)],若计算出的终止索引超过索引表数组的最大索引范围,则将终止索引取值为最大索引。例如页大小是20,页码是4,则起始索引为[(4-1)*20=60],终止索引为[(4*20-1)=79],假设此时索引表数组的最大索引范围为75,则终止索引修正为75。之后进入步骤S111。
S111:构建目标页内容块的索引对数组。
根据步骤S110计算出的起始索引和终止索引,结合步骤S19得到的索引表,构建出目标页内容块的索引对数组。之后进入步骤S112。
S112:顺序读取目标页内容块的偏移量和长度。
根据步骤S111得到的索引对数组,依次获得其中的每个内容块的偏移量和长度,其中每个偏移量和长度组成的索引对都对应了最终检索结果中的一条数据。每次从索引对数组中获得一个索引对,都进入步骤S113。
S113:是否读取完毕。
该步骤用于判断步骤S112中的索引对数组是否读取完毕:若未读取完毕,则进入步骤S114;若已读取完毕,则进入步骤S116。
S114:构建内存映射文件。
根据步骤S112获得的索引对,进而得到一个内容块的偏移量和长度,根据此偏移量和长度,构建出内存映射文件,用于提取一个内容块的具体内容。内存映射文件构建完毕后,进入步骤S115。
S115:提取数据并组装检索结果集。
根据步骤S114构建的内存映射文件,从中可快速提取到一个内容块的具体内容,即一条检索数据,然后将其添加至检索结果集列表的末尾。之后再次执行步骤S112。
S116:返回检索结果集。
总体来说,上述方法基于内存映射技术解决大数据文件的读取问题,依据检索条件对文件内容建立快速分页提取索引表,根据输入的目标页的参数在索引表中确定目标内容的字节位置,最后基于内存映射技术从文件中直接快速提取目标内容。
基于内存映射技术,将大数据文件分块地载入内存,根据内容块的起止标记提取出内容块,检测该内容块是否符合检索条件:若该内容块符合检索条件,则记录其偏移量和长度,并将此偏移量和长度追加至索引表的末尾,然后将该内容块移出内存;若该内容块不符合检索条件,则直接将其移出内存,释放内存空间以加载其它内容块。
当文件被加载完全,且所有的内容块都被识别且检测完全后,最终得到一个索引表,即一个存储了内容块偏移量和长度索引对的数组结构,索引表的长度即是本次文件检索结果的总条数,每个索引对记录了每条检索结果在文件中的位置。根据要提取的目标内容块的页大小和页码,找出目标内容块在索引表中的起始索引和终止索引。
从索引表中找出从起始索引到终止索引之间的所有索引对,依次读取每个索引对中记录的偏移量和长度,依据此偏移量和长度构建内存映射文件,从构建的内存映射文件中直接提取全部内容,即可得到一条检索数据。当起始索引到终止索引之间的所有索引对遍历完全,即可得到对应页的所有数据。该方法利用索引表除去了在随机页读取时的重复的文件读取操作,并基于内存映射技术直接提取目标页内容,从而提高效率。
图3为本实施例提供的一种数据分页检索的装置的结构框图,参见图3,该装置包括接收模块301、获取模块302和确定模块303,其中,
接收模块301,用于对检索数据分页检索时,接收检索参数,所述检索参数包括需检索的目标内容块所在页的页码和预设页容量;
获取模块302,用于获取对所述检索数据创建的索引表,所述索引表中包括所述检索数据中每一内容块在数据文件中的位置;
确定模块303,用于确定所述索引表中符合所述检索参数的目标索引,将根据目标索引从所述数据文件中检索的内容块,作为所述目标内容块,返回所述目标内容块;
其中,所述检索数据由所述数据文件中符合检索条件的内容块组成;所述预设页容量为页面容纳内容块的最大值。
本实施例提供的数据分页检索的装置适用于上述实施例中提供的数据分页检索的方法,在此不再赘述。
本实施例提供了一种数据分页检索的装置,预先对符合检索条件的检索数据建立索引表,当需要对检索数据分页检索时,只需要根据检索表确定符合检索参数的目标索引。通过目标索引从数据文件中读取的内容块即为符合检索参数的目标内容块。在检索时,只需要将检索参数与检索表进行匹配,不需要逐条将内容块与检索条件匹配,避免了重复读取数据文件中的内容块。且在检索过程中,仅需从检索表检索符合检索参数的目标索引,不需要在内容中存储所有检索数据,避免造成内存溢出。
进一步地,在上述实施例的基础上,还包括创建模块,所述创建模块用于:循环执行索引追加操作,直到遍历所述数据文件中的每一内容块,得到对所述检索数据创建的所述索引表;
所述索引追加包括:按照预设顺序每次从所述数据文件中加载至少一个内容块,对每一所加载内容块,判断所述所加载内容块是否符合所述检索条件,若是,构建所述所加载内容块的索引对,将所述索引对追加到索引表的末尾后,移出所述所加载内容块,否则,移出所述所加载内容块;
其中,所述索引对包括所述所加载内容块占用的存储空间,和相对于所述数据文件中某一预设位置处的内容块的偏移量。
进一步地,在上述各实施例的基础上,所述确定模块还用于:
根据所述页码、所述预设页容量和所述索引表中的最大索引确定起始索引和终止索引,将起始索引、终止索引,以及在起始索引和终止索引之间的各索引,作为所述目标索引;
对每一目标索引,根据所述目标索引的索引对中的存储空间构建内存映射文件,根据所述目标索引的索引对中的偏移量,从所述数据文件检索内容块,作为所述目标索引对应的目标内容块;
返回各目标索引对应的目标内容块,以对返回的目标内容块进行显示。
进一步地,在上述各实施例的基础上,所述确定模块还用于:
计算所述页码减1后,与所述预设页容量的第一乘积,将所述第一乘积作为所述起始索引;
计算所述页码与所述预设页容量的第二乘积,并计算所述第二乘积减1的差值,判断所述差值是否小于所述最大索引,若是,则将所述差值作为所述终止索引,否则,将所述最大索引作为所述终止索引。
进一步地,在上述各实施例的基础上,所述确定模块还用于:
自起始索引开始,循环执行检索操作,直到对所述终止索引执行所述检索操作后,得到检索的各目标内容块;
其中,检索操作包括:按照自起始索引到终止索引的顺序,读取未执行检索操作的目标索引,根据所述目标索引的索引对中的存储空间构建内存映射文件,根据所述目标索引的索引对中的偏移量,从所述数据文件检索内容块,作为所述目标索引对应的目标内容块。
进一步地,在上述各实施例的基础上,所述确定模块还用于:按照自起始索引到终止索引的顺序,返回各目标索引对应的目标内容块,以在显示页面中,按照返回各目标内容块的顺序从上到下显示各目标内容块。
图4是示出本实施例提供的电子设备的结构框图。
参照图4,所述电子设备包括:处理器(processor)401、通信接口(CommunicationsInterface)402、存储器(memory)403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信。处理器401可以调用存储器403中的逻辑指令,以执行如下方法:对检索数据分页检索时,接收检索参数,所述检索参数包括需检索的目标内容块所在页的页码和预设页容量;获取对所述检索数据创建的索引表,所述索引表中包括所述检索数据中每一内容块在数据文件中的位置;确定所述索引表中符合所述检索参数的目标索引,将根据目标索引从所述数据文件中检索的内容块,作为所述目标内容块,返回所述目标内容块;其中,所述检索数据由所述数据文件中符合检索条件的内容块组成;所述预设页容量为页面容纳内容块的最大值。
此外,上述的存储器403中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行如下方法:对检索数据分页检索时,接收检索参数,所述检索参数包括需检索的目标内容块所在页的页码和预设页容量;获取对所述检索数据创建的索引表,所述索引表中包括所述检索数据中每一内容块在数据文件中的位置;确定所述索引表中符合所述检索参数的目标索引,将根据目标索引从所述数据文件中检索的内容块,作为所述目标内容块,返回所述目标内容块;其中,所述检索数据由所述数据文件中符合检索条件的内容块组成;所述预设页容量为页面容纳内容块的最大值。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如,包括:对检索数据分页检索时,接收检索参数,所述检索参数包括需检索的目标内容块所在页的页码和预设页容量;获取对所述检索数据创建的索引表,所述索引表中包括所述检索数据中每一内容块在数据文件中的位置;确定所述索引表中符合所述检索参数的目标索引,将根据目标索引从所述数据文件中检索的内容块,作为所述目标内容块,返回所述目标内容块;其中,所述检索数据由所述数据文件中符合检索条件的内容块组成;所述预设页容量为页面容纳内容块的最大值。
以上所描述的电子设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上各实施例仅用以说明本发明的实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明的实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明的实施例各实施例技术方案的范围。
Claims (10)
1.一种数据分页检索的方法,其特征在于,包括:
对检索数据分页检索时,接收检索参数,所述检索参数包括需检索的目标内容块所在页的页码和预设页容量;
获取对所述检索数据创建的索引表,所述索引表中包括所述检索数据中每一内容块在数据文件中的位置;
确定所述索引表中符合所述检索参数的目标索引,将根据目标索引从所述数据文件中检索的内容块,作为所述目标内容块,返回所述目标内容块;
其中,所述检索数据由所述数据文件中符合检索条件的内容块组成;所述预设页容量为页面容纳内容块的最大值。
2.根据权利要求1所述的数据分页检索的方法,其特征在于,还包括:
循环执行索引追加操作,直到遍历所述数据文件中的每一内容块,得到对所述检索数据创建的所述索引表;
所述索引追加包括:按照预设顺序每次从所述数据文件中加载至少一个内容块,对每一所加载内容块,判断所述所加载内容块是否符合所述检索条件,若是,构建所述所加载内容块的索引对,将所述索引对追加到索引表的末尾后,移出所述所加载内容块,否则,移出所述所加载内容块;
其中,所述索引对包括所述所加载内容块占用的存储空间,和相对于所述数据文件中某一预设位置处的内容块的偏移量。
3.根据权利要求1所述的数据分页检索的方法,其特征在于,所述确定所述索引表中符合所述检索参数的目标索引,将根据目标索引从所述数据文件中检索的内容块,作为所述目标内容块,返回所述目标内容块,包括:
根据所述页码、所述预设页容量和所述索引表中的最大索引确定起始索引和终止索引,将起始索引、终止索引,以及在起始索引和终止索引之间的各索引,作为所述目标索引;
对每一目标索引,根据所述目标索引的索引对中的存储空间构建内存映射文件,根据所述目标索引的索引对中的偏移量,从所述数据文件检索内容块,作为所述目标索引对应的目标内容块;
返回各目标索引对应的目标内容块,以对返回的目标内容块进行显示。
4.根据权利要求3所述的数据分页检索的方法,其特征在于,所述根据所述页码、所述预设页容量和所述索引表中的最大索引确定起始索引和终止索引,包括:
计算所述页码减1后,与所述预设页容量的第一乘积,将所述第一乘积作为所述起始索引;
计算所述页码与所述预设页容量的第二乘积,并计算所述第二乘积减1的差值,判断所述差值是否小于所述最大索引,若是,则将所述差值作为所述终止索引,否则,将所述最大索引作为所述终止索引。
5.根据权利要求3所述的数据分页检索的方法,其特征在于,所述对每一目标索引,根据所述目标索引的索引对中的存储空间构建内存映射文件,根据所述目标索引的索引对中的偏移量,从所述数据文件检索内容块,作为所述目标索引对应的目标内容块,包括:
自起始索引开始,循环执行检索操作,直到对所述终止索引执行所述检索操作后,得到检索的各目标内容块;
其中,检索操作包括:按照自起始索引到终止索引的顺序,读取未执行检索操作的目标索引,根据所述目标索引的索引对中的存储空间构建内存映射文件,根据所述目标索引的索引对中的偏移量,从所述数据文件检索内容块,作为所述目标索引对应的目标内容块。
6.根据权利要求5所述的数据分页检索的方法,其特征在于,所述返回各目标索引对应的目标内容块,以对返回的目标内容块进行显示,包括:
按照自起始索引到终止索引的顺序,返回各目标索引对应的目标内容块,以在显示页面中,按照返回各目标内容块的顺序从上到下显示各目标内容块。
7.一种数据分页检索的装置,其特征在于,包括:
接收模块,用于对检索数据分页检索时,接收检索参数,所述检索参数包括需检索的目标内容块所在页的页码和预设页容量;
获取模块,用于获取对所述检索数据创建的索引表,所述索引表中包括所述检索数据中每一内容块在数据文件中的位置;
确定模块,用于确定所述索引表中符合所述检索参数的目标索引,将根据目标索引从所述数据文件中检索的内容块,作为所述目标内容块,返回所述目标内容块;
其中,所述检索数据由所述数据文件中符合检索条件的内容块组成;所述预设页容量为页面容纳内容块的最大值。
8.根据权利要求7所述的数据分页检索的装置,其特征在于,还包括创建模块,所述创建模块用于:
循环执行索引追加操作,直到遍历所述数据文件中的每一内容块,得到对所述检索数据创建的所述索引表;
所述索引追加包括:按照预设顺序每次从所述数据文件中加载至少一个内容块,对每一所加载内容块,判断所述所加载内容块是否符合所述检索条件,若是,构建所述所加载内容块的索引对,将所述索引对追加到索引表的末尾后,移出所述所加载内容块,否则,移出所述所加载内容块;
其中,所述索引对包括所述所加载内容块占用的存储空间,和相对于所述数据文件中某一预设位置处的内容块的偏移量。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述的数据分页检索的方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至6任一项所述的数据分页检索的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911050559.4A CN110825742B (zh) | 2019-10-31 | 2019-10-31 | 一种数据分页检索的方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911050559.4A CN110825742B (zh) | 2019-10-31 | 2019-10-31 | 一种数据分页检索的方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110825742A true CN110825742A (zh) | 2020-02-21 |
CN110825742B CN110825742B (zh) | 2022-09-06 |
Family
ID=69551776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911050559.4A Active CN110825742B (zh) | 2019-10-31 | 2019-10-31 | 一种数据分页检索的方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110825742B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111475473A (zh) * | 2020-04-14 | 2020-07-31 | 福建省福信富通网络科技股份有限公司 | 一种基于文件系统的流式动态数据存储方法及系统 |
CN113378022A (zh) * | 2020-03-10 | 2021-09-10 | 北京搜狗科技发展有限公司 | 一种站内搜索平台、搜索方法和相关装置 |
CN114706849A (zh) * | 2022-03-24 | 2022-07-05 | 深圳大学 | 一种数据检索方法、装置及电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080288449A1 (en) * | 2007-05-17 | 2008-11-20 | Sang-Heun Kim | Method and system for an aggregate web site search database |
CN101847161A (zh) * | 2010-06-02 | 2010-09-29 | 苏州搜图网络技术有限公司 | 搜索网页的方法和建立数据库的方法 |
US20130024450A1 (en) * | 2011-07-18 | 2013-01-24 | Dirk Thomsen | Converter traversal using power of two-based operations |
CN103617232A (zh) * | 2013-11-26 | 2014-03-05 | 北京京东尚科信息技术有限公司 | 一种针对HBase表的分页查询方法 |
CN105426424A (zh) * | 2015-11-04 | 2016-03-23 | 浪潮软件集团有限公司 | 一种网络数据定向分页式采集方法 |
CN106445927A (zh) * | 2015-08-04 | 2017-02-22 | 北京京东金融科技控股有限公司 | 数据分页查询方法及装置 |
CN108023948A (zh) * | 2017-12-04 | 2018-05-11 | 山东浪潮通软信息科技有限公司 | 一种处理第三方系统信息的系统及方法 |
CN108959308A (zh) * | 2017-05-23 | 2018-12-07 | 北京润乾信息系统技术有限公司 | 一种应对可追加数据的索引方法 |
-
2019
- 2019-10-31 CN CN201911050559.4A patent/CN110825742B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080288449A1 (en) * | 2007-05-17 | 2008-11-20 | Sang-Heun Kim | Method and system for an aggregate web site search database |
CN101847161A (zh) * | 2010-06-02 | 2010-09-29 | 苏州搜图网络技术有限公司 | 搜索网页的方法和建立数据库的方法 |
US20130024450A1 (en) * | 2011-07-18 | 2013-01-24 | Dirk Thomsen | Converter traversal using power of two-based operations |
CN103617232A (zh) * | 2013-11-26 | 2014-03-05 | 北京京东尚科信息技术有限公司 | 一种针对HBase表的分页查询方法 |
CN106445927A (zh) * | 2015-08-04 | 2017-02-22 | 北京京东金融科技控股有限公司 | 数据分页查询方法及装置 |
CN105426424A (zh) * | 2015-11-04 | 2016-03-23 | 浪潮软件集团有限公司 | 一种网络数据定向分页式采集方法 |
CN108959308A (zh) * | 2017-05-23 | 2018-12-07 | 北京润乾信息系统技术有限公司 | 一种应对可追加数据的索引方法 |
CN108023948A (zh) * | 2017-12-04 | 2018-05-11 | 山东浪潮通软信息科技有限公司 | 一种处理第三方系统信息的系统及方法 |
Non-Patent Citations (2)
Title |
---|
XIN WAN 等: "An Inquiry Based Collaborative Learning Using in E-NOTEBOOK System", 《2013 IEEE 13TH INTERNATIONAL CONFERENCE ON ADVANCED LEARNING TECHNOLOGIES》 * |
曹进军: "图书馆海量数据的查询优化及分页算法方案", 《情报探索》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113378022A (zh) * | 2020-03-10 | 2021-09-10 | 北京搜狗科技发展有限公司 | 一种站内搜索平台、搜索方法和相关装置 |
CN111475473A (zh) * | 2020-04-14 | 2020-07-31 | 福建省福信富通网络科技股份有限公司 | 一种基于文件系统的流式动态数据存储方法及系统 |
CN114706849A (zh) * | 2022-03-24 | 2022-07-05 | 深圳大学 | 一种数据检索方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110825742B (zh) | 2022-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110825742B (zh) | 一种数据分页检索的方法、装置、电子设备及存储介质 | |
CN109669925B (zh) | 非结构化数据的管理方法及装置 | |
CN107992577B (zh) | 一种哈希表数据冲突处理方法及装置 | |
CN108228799B (zh) | 对象索引信息的存储方法及装置 | |
CN111831804A (zh) | 一种关键短语的提取方法、装置、终端设备及存储介质 | |
WO2014106418A1 (en) | Method and apparatus for storing and reading files | |
CN108536739A (zh) | 元数据敏感信息字段识别方法、装置、设备及存储介质 | |
CN106598997B (zh) | 一种计算文本主题归属度的方法及装置 | |
CN110704433B (zh) | 列式存储数据的brin索引构建方法、数据检索方法及装置 | |
CN108376054B (zh) | 一种对标识数据进行索引的处理方法及装置 | |
CN111310224B (zh) | 日志脱敏方法、装置、计算机设备及计算机可读存储介质 | |
CN106815196B (zh) | 软文展现次数统计方法和装置 | |
CN111913913A (zh) | 访问请求的处理方法和装置 | |
CN107315806B (zh) | 一种基于文件系统的嵌入式存储方法和装置 | |
CN114971556A (zh) | 文件信息汇总方法、装置、电子设备及存储介质 | |
CN110851437A (zh) | 一种存储方法、装置及设备 | |
CN107301073B (zh) | 一种基于固态硬盘系统的配置信息检索方法及其装置 | |
CN111241036B (zh) | 一种异步io数据处理方法、装置、设备及介质 | |
CN111061508B (zh) | 一种Java卡及其性能优化方法 | |
CN107729518A (zh) | 一种关系型数据库的全文检索方法及装置 | |
JP7045970B2 (ja) | リスク特定装置、リスク特定方法、およびプログラム | |
CN111143294A (zh) | 电力采集终端数据检索方法、装置和电子设备 | |
CN112256685A (zh) | 基于电子表格的分割去重导入方法及相关产品 | |
CN110764777A (zh) | 一种elf文件生成方法、elf文件、设备及存储介质 | |
CN116361421B (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 |