CN107391769B - 一种索引查询方法及装置 - Google Patents
一种索引查询方法及装置 Download PDFInfo
- Publication number
- CN107391769B CN107391769B CN201710817441.4A CN201710817441A CN107391769B CN 107391769 B CN107391769 B CN 107391769B CN 201710817441 A CN201710817441 A CN 201710817441A CN 107391769 B CN107391769 B CN 107391769B
- Authority
- CN
- China
- Prior art keywords
- index
- file
- block
- information
- original 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.)
- Active
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
-
- 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/134—Distributed indices
-
- 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/18—File system types
- G06F16/182—Distributed file systems
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种索引查询方法及装置,该方法包括:生成原始数据的倒排索引信息;对所述原始数据按照预设的LZO压缩模式进行压缩生成LZO压缩块,并生成对应的随机访问索引;将所述倒排索引信息按照索引文件格式写入到倒排索引文件;当接收到索引查询请求后,调用所述倒排索引文件,查找得到所述原始数据的倒排索引信息;根据所述倒排索引信息和所述随机访问索引,查找获取到所述原始数据在LZO压缩块中对应的位置,根据所述位置查找获得所述原始数据。通过本发明实现了提升实时索引查询性能的目的。
Description
技术领域
本发明涉及大数据技术领域,特别是涉及一种基于分布式文件系统的实时索引查询方法及装置。
背景技术
随着云时代的来临,数据正在发生着巨大的变化,客户数据、交易数据、社交媒体数据和网络行为数据等数据,都蕴含着巨大的高价值商业信息,它们决定着企业的未来和发展。显然,大数据时代已经降临,在商业、经济和其他领域中,商业决策将日益依赖于从海量数据中提取的信息,而并非基于经验和直觉。因此,基于大数据的实时查询的要求也变得越来越高了,而当前开源的大数据环境下的实时查询项目由于其性能、稳定性和经验积累等原因还存在一定的使用风险。
发明内容
针对于上述问题,本发明提供一种索引查询方法及装置,实现了提升实时索引查询性能的目的。
为了实现上述目的,根据本发明的第一方面,提供了一种索引查询方法,该方法包括:
获取分布式文件系统中的原始数据,并生成所述原始数据的倒排索引信息,其中,所述倒排索引信息包括文件名和偏移量;
对所述原始数据按照预设的LZO压缩模式进行压缩生成LZO压缩块,并生成对应的随机访问索引,其中,所述随机访问索引包括原始数据偏移量和压缩后块偏移量;
将所述倒排索引信息按照索引文件格式写入到倒排索引文件,其中,所述倒排索引文件包括文件头、索引块、文件索引块、区域检索块和文件尾;
当接收到索引查询请求后,解析所述查询请求,调用所述倒排索引文件,并通过读取所述区域检索块中的信息,查找得到所述原始数据的倒排索引信息;
根据所述倒排索引信息和所述随机访问索引,查找获取到所述原始数据在LZO压缩块中对应的位置,根据所述位置查找获得所述原始数据。
优选的,所述获取分布式文件系统中的原始数据之前,该方法还包括:
对所述原始数据进行监控,将所述原始数据的数据格式转换为CSV格式数据,其中,所述CSV为固定分隔符分隔值。
优选的,所述对所述原始数据按照预设的LZO压缩模式进行压缩生成LZO压缩块,并生成对应的随机访问索引,包括:
根据预设的压缩块的大小,采用LZO压缩模式将所述原始数据压缩成LZO压缩块;
生成所述LZO压缩块的索引,并记录在第一索引文件中;
设置第二索引文件,记录原始数据偏移量和压缩后块偏移量,并将所述第二索引文件定义为随机访问索引。
优选的,所述将所述倒排索引信息按照索引文件格式写入到倒排索引文件,包括:
写入所述倒排索引文件的文件头信息,其中,所述文件头信息为所述倒排索引文件的基本信息;
将所述倒排索引信息的索引值和位置信息写入到所述倒排索引文件中的索引块;
更新所述文件索引块信息和所述区域检索块信息;
将所述倒排索引信息写入的数量信息、区域检索块偏移量和文件索引块偏移量写入到所述倒排索引文件的文件尾。
优选的,所述当接收到索引查询请求后,解析所述查询请求,调用所述倒排索引文件,并通过读取所述区域检索块中的信息,查找得到所述原始数据的倒排索引信息,包括:
当接收到索引查询请求后,解析所述查新请求得到查询索引;
读取所述倒排索引文件的文件头和文件尾,获取所述倒排索引文件的区域检索块偏移量和文件索引块偏移量;
根据所述区域检索块偏移量和所述查询索引的索引值,找到所述查询索引所在的索引块;
在所述索引块中找到与所述查询请求对应的倒排索引信息。
优选的,所述根据所述倒排索引信息和所述随机访问索引,查找获取到所述原始数据在LZO压缩块中对应的位置,根据所述位置查找获得所述原始数据,包括:
读取所述倒排索引信息和所述随机访问索引,得到所述倒排索引信息中的偏移量,并根据所述偏移量查找到对应的所述LZO压缩块的偏移量;
根据所述LZO压缩块的偏移量找到对应的LZO压缩块,读取所述LZO压缩块中读取原始数据,将所述倒排索引中的偏移量中对应的原始数据始数作为起始位置,记录满足所述查询请求的原始数据。
根据本发明的第二方面,提供了一种索引查询装置,该装置包括:
获取模块,用于获取分布式文件系统中的原始数据,并生成所述原始数据的倒排索引信息,其中,所述倒排索引信息包括文件名和偏移量;
压缩模块,用于对所述原始数据按照预设的LZO压缩模式进行压缩生成LZO压缩块,并生成对应的随机访问索引,其中,所述随机访问索引包括原始数据偏移量和压缩后块偏移量;
写入模块,用于将所述倒排索引信息按照索引文件格式写入到倒排索引文件,其中,所述倒排索引文件包括文件头、索引块、文件索引块、区域检索块和文件尾;
第一查询模块,用于当接收到索引查询请求后,解析所述查询请求,调用所述倒排索引文件,并通过读取所述区域检索块中的信息,查找得到所述原始数据的倒排索引信息;
第二查询模块,用于根据所述倒排索引信息和所述随机访问索引,查找获取到所述原始数据在LZO压缩块中对应的位置,根据所述位置查找获得所述原始数据。
优选的,该装置还包括:
转换模块,用于对所述原始数据进行监控,将所述原始数据的数据格式转换为CSV格式数据,其中,所述CSV为固定分隔符分隔值。
优选的,所述压缩模块包括:
压缩单元,用于根据预设的压缩块的大小,采用LZO压缩模式将所述原始数据压缩成LZO压缩块;
生成单元,用于生成所述LZO压缩块的索引,并记录在第一索引文件中;
设置单元,用于设置第二索引文件,记录原始数据偏移量和压缩后块偏移量,并将所述第二索引文件定义为随机访问索引。
优选的,所述写入模块包括:
第一写入单元,用于写入所述倒排索引文件的文件头信息,其中,所述文件头信息为所述倒排索引文件的基本信息;
第二写入单元,用于将所述倒排索引信息的索引值和位置信息写入到所述倒排索引文件中的索引块;
更新单元,用于更新所述文件索引块信息和所述区域检索块信息;
第三写入单元,用于将所述倒排索引信息写入的数量信息、区域检索块偏移量和文件索引块偏移量写入到所述倒排索引文件的文件尾。
优选的,所述第一查询模块包括:
解析单元,用于当接收到索引查询请求后,解析所述查新请求得到查询索引;
第一读取单元,用于读取所述倒排索引文件的文件头和文件尾,获取所述倒排索引文件的区域检索块偏移量和文件索引块偏移量;
第一查找单元,用于根据所述区域检索块偏移量和所述查询索引的索引值,找到所述查询索引所在的索引块;
第二查找单元,用于在所述索引块中找到与所述查询请求对应的倒排索引信息。
优选的,所述第二查询模块包括:
第二读取单元,用于读取所述倒排索引信息和所述随机访问索引,得到所述倒排索引信息中的偏移量,并根据所述偏移量查找到对应的所述LZO压缩块的偏移量;
第三查找单元,用于根据所述LZO压缩块的偏移量找到对应的LZO压缩块,读取所述LZO压缩块中读取原始数据,将所述倒排索引中的偏移量中对应的原始数据始数作为起始位置,记录满足所述查询请求的原始数据。
相较于现有技术,本发明生成原始数据的倒排索引信息;对所述原始数据按照预设的LZO压缩模式进行压缩生成LZO压缩块,并生成对应的随机访问索引;将所述倒排索引信息按照索引文件格式写入到倒排索引文件;当接收到索引查询请求后,调用所述倒排索引文件,查找得到所述原始数据的倒排索引信息;根据所述倒排索引信息和所述随机访问索引,查找获取到所述原始数据在LZO压缩块中对应的位置,根据所述位置查找获得所述原始数据。通过预设模式的压缩方式实现了支持压缩的快速随机访问,并按照索引文件格式写入到倒排索引文件,结合了倒排技术和分块索引技术,在极大的压缩数据存储的同时实现分布式快速索引,提升实时索引查询性能的目的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例一提供的一种索引查询方法的流程示意图;
图2为本发明实施例二对应图1中步骤S12的生成索引方法的流程示意图;
图3为本发明实施例二对应图1中步骤S13的索引写入方法的流程示意图;
图4为本发明实施例二对应图1中步骤S14区域检索块查询的流程示意图;
图5为本发明实施例二对应图1中步骤S15原始数据查询的流程示意图;
图6为本发明实施例三提供的一种索引查询装置的结构示意图
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有设定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
实施例一
参见图1为本发明实施例一提供的一种索引查询方法的流程示意图,该方法包括以下步骤:
S11、获取分布式文件系统中的原始数据,并生成所述原始数据的倒排索引信息,其中,所述倒排索引信息包括文件名和偏移量;
具体的,生成的倒排索引信息针对原始数据而言,主要存储数据索引信息,即原始记录制定字段的位置信息。有了这个索引可以快速的查询数据所在文件以及对应数据的偏移量。之所以成为倒排索引是由于这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址,由于不是由记录在确定属性值,而是由属性值来确定记录的位置,因而成为倒排索引。带有倒排索引的文件称之为倒排索引文件。
并且在所述获取分布式文件系统中的原始数据之前,该方法还包括:
对所述原始数据进行监控,将所述原始数据的数据格式转换为CSV格式数据,其中,所述CSV为固定分隔符分隔值。
具体的,对原始数据进行监控时本发明实施例中优选的是MapReduce的PathFilter类监控原始数据目录数据的变化,同样也可用其它分布式监控方式,比如SparkStreaming,本发明对此不做限制。将数据以CSV格式上传到HDFS(分布式文件系统),即HDFS中的原始数据格式为CSV格式,CSV为固定分隔符数据。
S12、对所述原始数据按照预设的LZO压缩模式进行压缩生成LZO压缩块,并生成对应的随机访问索引,其中,所述随机访问索引包括原始数据偏移量和压缩后块偏移量;
具体的,LZO是一种数据压缩算法,LZO是Lempel-Ziv-Oberhumer的缩写,这个算法是无损算法,参考实现程序是线程安全的,实现它的一个自由软件工具是lzop。但是,经过分析主流的压缩方式都不支持的数据的随机访问,LZO文件格式为文件头和多个文件块,每个块包含了原始数据大小和压缩后大小,原始的LZO索引文件(index文件)中就是采用四字节表示块的大小,这样无法实现对LZO文件的随机访问,通过新定义八字节的原始偏移量和块偏移量索引文件(index2文件),可以快速定位到原始偏移量在LZO文件块的位置,并且通过HDFS的文件读取实现少量IO就能实现对LZO文件的随机访问(一般LZO块大小为256KB,而16字节的索引能标识1个LZO块,所以最多只需要256+640(即:10GB/256KB)=896KB就能对10GB压缩后的文件实现随机访问,考虑LZO压缩比为50%,即最多896KB的IO就能对20GB的原始数据进行随机访问),并且使得原始数据能兼容HDFS上的其它组件(Impala、Hive、MR等)。
S13、将所述倒排索引信息按照索引文件格式写入到倒排索引文件,其中,所述倒排索引文件包括文件头、索引块、文件索引块、区域检索块和文件尾;
具体的,先写入文件头信息,然后循环写入索引,并且记录文件信息、区域检索信息和文件尾信息。待所有索引都写完,在文件关闭时最后记录重要的文件偏移量、文件信息、区域检索信息和文件尾。
S14、当接收到索引查询请求后,解析所述查询请求,调用所述倒排索引文件,并通过读取所述区域检索块中的信息,查找得到所述原始数据的倒排索引信息;
S15、根据所述倒排索引信息和所述随机访问索引,查找获取到所述原始数据在LZO压缩块中对应的位置,根据所述位置查找获得所述原始数据。
具体的,读取索引文件时先读取文件头和文件尾,获取所有索引相关的参数和其它信息,再读取区域检索信息,从而找到索引块信息,最后读取索引块信息,读取过程中开始比较,并找到索引所在块。这样先找区域检索信息,再找索引块信息的二次索引方法所带来的好处就是只需要读取很少量的数据就能快速定位到原始数据所在位置;
在此过程中,索引采用了倒排索引的技术原理,也采用分块索引的技术原理,同时还加入了针对索引区分信息的二次索引,能大大提高索引读取性能,其中,所述倒排索引源于实际应用中需要根据属性的值来查找记录,这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址,由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引,所述分块索引就是把数据集合记录分成了若干份。
并且,在本发明实施例中索引方案不只针对单个字段,可将对不同的字段都生成对应索引文件,以实现多索引的目的。
通过本发明实施例一公开的技术方案,生成原始数据的倒排索引信息;对所述原始数据按照预设的LZO压缩模式进行压缩生成LZO压缩块,并生成对应的随机访问索引;将所述倒排索引信息按照索引文件格式写入到倒排索引文件;当接收到索引查询请求后,调用所述倒排索引文件,查找得到所述原始数据的倒排索引信息;根据所述倒排索引信息和所述随机访问索引,查找获取到所述原始数据在LZO压缩块中对应的位置,根据所述位置查找获得所述原始数据。通过预设模式的压缩方式实现了支持压缩的快速随机访问,并按照索引文件格式写入到倒排索引文件,结合了倒排技术和分块索引技术,在极大的压缩数据存储的同时实现分布式快速索引,提升实时索引查询性能的目的。
实施例二
参照本发明实施例一和图1中所描述的S11到S15步骤的具体过程,参见图2,所述步骤S12对所述原始数据按照预设的LZO压缩模式进行压缩生成LZO压缩块,并生成对应的随机访问索引,具体包括:
S121、根据预设的压缩块的大小,采用LZO压缩模式将所述原始数据压缩成LZO压缩块;
可以理解的是,通过对LZO源代码的修改,实现了相关索引文件的生产和MapReduce等支持类,其中,MapReduce是一种编程模式,主要是用于大规模数据集的并行运算。MapReduce监控目录对原始数据实现LZO压缩,获得压缩文件块,LZO文件格式为文件头和多个文件块,每个块包含了原始数据大小和压缩后大小,原始的LZO索引文件(index文件)中就是采用四字节表示块的大小,这样无法实现对LZO文件的随机访问,通过新定义八字节的原始偏移量和块偏移量索引文件(index2文件),可以快速定位到原始偏移量在LZO文件块的位置,并且通过HDFS的文件读取实现少量IO就能实现对LZO文件的随机访问(一般LZO块大小为256KB,而16字节的索引能标识1个LZO块,所以最多只需要256+640(即:10GB/256KB)=896KB就能对10GB压缩后的文件实现随机访问,考虑LZO压缩比为50%,即最多896KB的IO就能对20GB的原始数据进行随机访问),并且使得原始数据能兼容HDFS上的其它组件(Impala、Hive、MR等)。
S122、生成所述LZO压缩块的索引,并记录在第一索引文件中;
S123、设置第二索引文件,记录原始数据偏移量和压缩后块偏移量,并将所述第二索引文件定义为随机访问索引。
具体的,第一索引文件中具体记录的是当前LZO压缩块压缩前后的大小,而第二索引文件记录了相当于文件开始位置的偏移量,是一个累计值,所以通过这两个偏移值可以快速定位压缩前的数据可以在哪个压缩块找到,即是本发明定义的LZO压缩的随机访问索引。
在生成随机访问索引后,需要通过MapReduce对所述随机索引按照索引类型进行合并,比如,可以按照ID或者时间进行索引合并,同时可以利用MapReduce的排序过程实现对数据的排序,合并排序后的索引数据能更好地进行分块索引。
相应的,参见图3,所述步骤S13将所述倒排索引信息按照索引文件格式写入到倒排索引文件,具体包括:
S131、写入所述倒排索引文件的文件头信息,其中,所述文件头信息为所述倒排索引文件的基本信息;
具体的,写入所述索引文件的文件头信息,所述文件头信息包括版本号、块大小、索引类型和索引名称。
S132、将所述倒排索引信息的索引值和位置信息写入到所述倒排索引文件中的索引块;
具体的,索引块中包含多个单个索引,并且每个单个索引包含索引值、位置数(即表示该索引值下由多少个位置信息)、记录数(表示该索引值下有多少条记录)和单个位置信息,所述单个位置信息包含文件ID(表示位于哪个文件)和偏移量(表示文件偏移信息)
S133、更新所述文件索引块信息和所述区域检索块信息;
S134、将所述倒排索引信息写入的数量信息、区域检索块偏移量和文件索引块偏移量写入到所述倒排索引文件的文件尾。
因此,由上面的文件定义可以看出文件头、索引块支持顺序写入,程序实现时只需要缓存区域检索块、文件索引块和文件尾需要的信息(占用很小)。
以平均16字节的索引字段长度计算:一个索引块能存储7200条索引数据,而在区域检索块中只占用24字节,1亿条记录最多只需要读取(1亿*24)/(7200*1024)=326KB区域检索块的数据和最多256KB的索引块的索引信息就能查询到索引记录。
对应的,参见图4,所述步骤S14当接收到索引查询请求后,解析所述查询请求,调用所述倒排索引文件,并通过读取所述区域检索块中的信息,查找得到所述原始数据的倒排索引信息,具体包括:
S141、当接收到索引查询请求后,解析所述查新请求得到查询索引;
S142、读取所述倒排索引文件的文件头和文件尾,获取所述倒排索引文件的区域检索块偏移量和文件索引块偏移量;
具体的,通过文件尾和文件头获取所有索引相关的参数和信息,其中,所述文件为包括表示区域检索块的偏移量和表示文件索引块的偏移量。
S143、根据所述区域检索块偏移量和所述查询索引的索引值,找到所述查询索引所在的索引块;
S144、在所述索引块中找到与所述查询请求对应的倒排索引信息;
对应的,参见图5,所述步骤S15根据所述倒排索引信息和所述随机访问索引,查找获取到所述原始数据在LZO压缩块中对应的位置,根据所述位置查找获得所述原始数据,具体包括:
S151、读取所述倒排索引信息和所述随机访问索引,得到所述倒排索引信息中的偏移量,并根据所述偏移量查找到对应的所述LZO压缩块的偏移量;
S152、根据所述LZO压缩块的偏移量找到对应的LZO压缩块,读取所述LZO压缩块中读取原始数据,将所述倒排索引中的偏移量中对应的原始数据始数作为起始位置,记录满足所述查询请求的原始数据。
具体的结合所述步骤S14,表示了索引查询的全过程,读取索引文件时先读取文件头和文件尾,获取所有索引相关的参数和其它信息,再读取区域检索信息,从而找到索引块信息,最后读取索引块信息,读取过程中开始比较,并找到索引所在块。这样先找区域检索信息,再找索引块信息的二次索引方法所带来的好处就是只需要读取很少量的数据就能快速定位到原始数据所在位置。
根据本发明实施例二公开的技术方案,通过对LZO压缩算法的改进,加入了块偏移了和原始偏移量,对原始数据进行了压缩实现了随机访问,并对生成的索引进行了合并排序;在索引写入到索引文件中采用了倒排索引技术和分块索引技术,并在索引写入结束后记录了文件偏移量、文件信息、区域检索信息和文件尾;在索引读取过程中,先读取索引文件的文件头和文件尾,再读取区域检索信息,最后读取索引块数据,这样先找区域检索信息,再找索引块信息的二次索引方法所带来的好处就是只需要读取很少量的数据就能快速定位原始数据所在位置。在索引查询要求和空间要求的同时也能保障原始数据的可用性,以及能方便的与其他大数据组件通用数据,主要应用于高入库性能和高实时查询性能的场景。进而实现了提升实时索引查询性能的目的。
实施例三
与本发明实施例一和实施例二所公开的方法相对应,本发明的实施例三还提供了一种索引查询装置,参见图6,该装置具体包括:
获取模块1,用于获取分布式文件系统中的原始数据,并生成所述原始数据的倒排索引信息,其中,所述倒排索引信息包括文件名和偏移量;
压缩模块2,用于对所述原始数据按照预设的LZO压缩模式进行压缩生成LZO压缩块,并生成对应的随机访问索引,其中,所述随机访问索引包括原始数据偏移量和压缩后块偏移量;
写入模块3,用于将所述倒排索引信息按照索引文件格式写入到倒排索引文件,其中,所述倒排索引文件包括文件头、索引块、文件索引块、区域检索块和文件尾;
第一查询模块4,用于当接收到索引查询请求后,解析所述查询请求,调用所述倒排索引文件,并通过读取所述区域检索块中的信息,查找得到所述原始数据的倒排索引信息;
第二查询模块5,用于根据所述倒排索引信息和所述随机访问索引,查找获取到所述原始数据在LZO压缩块中对应的位置,根据所述位置查找获得所述原始数据。
相应的,该装置还包括:
转换模块6,用于对所述原始数据进行监控,将所述原始数据的数据格式转换为CSV格式数据,其中,所述CSV为固定分隔符分隔值。
具体的,所述压缩模块2包括:
压缩单元21,用于根据预设的压缩块的大小,采用LZO压缩模式将所述原始数据压缩成LZO压缩块;
生成单元22,用于生成所述LZO压缩块的索引,并记录在第一索引文件中;
设置单元23,用于设置第二索引文件,记录原始数据偏移量和压缩后块偏移量,并将所述第二索引文件定义为随机访问索引。
对应的,所述写入模块3包括:
第一写入单元31,用于写入所述倒排索引文件的文件头信息,其中,所述文件头信息为所述倒排索引文件的基本信息;
第二写入单元32,用于将所述倒排索引信息的索引值和位置信息写入到所述倒排索引文件中的索引块;
更新单元33,用于更新所述文件索引块信息和所述区域检索块信息;
第三写入单元34,用于将所述倒排索引信息写入的数量信息、区域检索块偏移量和文件索引块偏移量写入到所述倒排索引文件的文件尾。
对应的,所述第一查询模块4包括:
解析单元41,用于当接收到索引查询请求后,解析所述查新请求得到查询索引;
第一读取单元42,用于读取所述倒排索引文件的文件头和文件尾,获取所述倒排索引文件的区域检索块偏移量和文件索引块偏移量;
第一查找单元43,用于根据所述区域检索块偏移量和所述查询索引的索引值,找到所述查询索引所在的索引块;
第二查找单元44,用于在所述索引块中找到与所述查询请求对应的倒排索引信息。
对应的,所述第二查询模块5包括:
第二读取单元51,用于读取所述倒排索引信息和所述随机访问索引,得到所述倒排索引信息中的偏移量,并根据所述偏移量查找到对应的所述LZO压缩块的偏移量;
第三查找单元52,用于根据所述LZO压缩块的偏移量找到对应的LZO压缩块,读取所述LZO压缩块中读取原始数据,将所述倒排索引中的偏移量中对应的原始数据始数作为起始位置,记录满足所述查询请求的原始数据。
在本发明的实施例三中,通过获取模块获取分布式文件系统中的原始数据,并生成倒排索引信息;通过压缩模块进行压缩生成LZO压缩块,并生成对应的随机访问索引;通过写入模块将所述倒排索引信息按照索引文件格式写入到倒排索引文件;当接收到索引查询请求后,通过第一查询模块和第二查询模块调用所述倒排索引文件,查找得到所述原始数据的倒排索引信息;根据所述倒排索引信息和所述随机访问索引,查找获取到所述原始数据在LZO压缩块中对应的位置,根据所述位置查找获得所述原始数据。通过预设模式的压缩方式实现了支持压缩的快速随机访问,结合了倒排技术和分块索引技术,在极大的压缩数据存储的同时实现分布式快速索引,提升实时索引查询性能的目的。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种索引查询方法,其特征在于,该方法包括:
获取分布式文件系统中的原始数据,并生成所述原始数据的倒排索引信息,其中,所述倒排索引信息包括文件名和偏移量;
对所述原始数据按照预设的LZO压缩模式进行压缩生成LZO压缩块,并生成对应的随机访问索引,其中,所述随机访问索引包括原始数据偏移量和压缩后块偏移量,所述对所述原始数据按照预设的LZO压缩模式进行压缩生成LZO压缩块,并生成对应的随机访问索引,包括:根据预设的压缩块的大小,采用LZO压缩模式将所述原始数据压缩成LZO压缩块;生成所述LZO压缩块的索引,并记录在第一索引文件中;设置第二索引文件,记录原始数据偏移量和压缩后块偏移量,并将所述第二索引文件定义为随机访问索引;
将所述倒排索引信息按照索引文件格式写入到倒排索引文件,其中,所述倒排索引文件包括文件头、索引块、文件索引块、区域检索块和文件尾;
当接收到索引查询请求后,解析所述查询请求,调用所述倒排索引文件,并通过读取所述区域检索块中的信息,查找得到所述原始数据的倒排索引信息;
根据所述倒排索引信息和所述随机访问索引,查找获取到所述原始数据在LZO压缩块中对应的位置,根据所述位置查找获得所述原始数据。
2.根据权利要求1所述的方法,其特征在于,所述获取分布式文件系统中的原始数据之前,该方法还包括:
对所述原始数据进行监控,将所述原始数据的数据格式转换为CSV格式数据,其中,所述CSV为固定分隔符分隔值。
3.根据权利要求1所述的方法,其特征在于,所述将所述倒排索引信息按照索引文件格式写入到倒排索引文件,包括:
写入所述倒排索引文件的文件头信息,其中,所述文件头信息为所述倒排索引文件的基本信息;
将所述倒排索引信息的索引值和位置信息写入到所述倒排索引文件中的索引块;
更新所述文件索引块信息和所述区域检索块信息;
将所述倒排索引信息写入的数量信息、区域检索块偏移量和文件索引块偏移量写入到所述倒排索引文件的文件尾。
4.根据权利要求1所述的方法,其特征在于,所述当接收到索引查询请求后,解析所述查询请求,调用所述倒排索引文件,并通过读取所述区域检索块中的信息,查找得到所述原始数据的倒排索引信息,包括:
当接收到索引查询请求后,解析所述索引查询请求得到查询索引;
读取所述倒排索引文件的文件头和文件尾,获取所述倒排索引文件的区域检索块偏移量和文件索引块偏移量;
根据所述区域检索块偏移量和所述查询索引的索引值,找到所述查询索引所在的索引块;
在所述索引块中找到与所述索引查询请求对应的倒排索引信息。
5.根据权利要求1所述的方法,其特征在于,所述根据所述倒排索引信息和所述随机访问索引,查找获取到所述原始数据在LZO压缩块中对应的位置,根据所述位置查找获得所述原始数据,包括:
读取所述倒排索引信息和所述随机访问索引,得到所述倒排索引信息中的偏移量,并根据所述偏移量查找到对应的所述LZO压缩块的偏移量;
根据所述LZO压缩块的偏移量找到对应的LZO压缩块,读取所述LZO压缩块中读取原始数据,将所述倒排索引中的偏移量中对应的原始数据始数作为起始位置,记录满足所述查询请求的原始数据。
6.一种索引查询装置,其特征在于,该装置包括:
获取模块,用于获取分布式文件系统中的原始数据,并生成所述原始数据的倒排索引信息,其中,所述倒排索引信息包括文件名和偏移量;
压缩模块,用于对所述原始数据按照预设的LZO压缩模式进行压缩生成LZO压缩块,并生成对应的随机访问索引,其中,所述随机访问索引包括原始数据偏移量和压缩后块偏移量,所述压缩模块包括:压缩单元,用于根据预设的压缩块的大小,采用LZO压缩模式将所述原始数据压缩成LZO压缩块;生成单元,用于生成所述LZO压缩块的索引,并记录在第一索引文件中;设置单元,用于设置第二索引文件,记录原始数据偏移量和压缩后块偏移量,并将所述第二索引文件定义为随机访问索引;
写入模块,用于将所述倒排索引信息按照索引文件格式写入到倒排索引文件,其中,所述倒排索引文件包括文件头、索引块、文件索引块、区域检索块和文件尾;
第一查询模块,用于当接收到索引查询请求后,解析所述查询请求,调用所述倒排索引文件,并通过读取所述区域检索块中的信息,查找得到所述原始数据的倒排索引信息;
第二查询模块,用于根据所述倒排索引信息和所述随机访问索引,查找获取到所述原始数据在LZO压缩块中对应的位置,根据所述位置查找获得所述原始数据。
7.根据权利要求6所述的装置,其特征在于,该装置还包括:
转换模块,用于对所述原始数据进行监控,将所述原始数据的数据格式转换为CSV格式数据,其中,所述CSV为固定分隔符分隔值。
8.根据权利要求6所述的装置,其特征在于,所述写入模块包括:
第一写入单元,用于写入所述倒排索引文件的文件头信息,其中,所述文件头信息为所述倒排索引文件的基本信息;
第二写入单元,用于将所述倒排索引信息的索引值和位置信息写入到所述倒排索引文件中的索引块;
更新单元,用于更新所述文件索引块信息和所述区域检索块信息;
第三写入单元,用于将所述倒排索引信息写入的数量信息、区域检索块偏移量和文件索引块偏移量写入到所述倒排索引文件的文件尾。
9.根据权利要求6所述的装置,其特征在于,所述第一查询模块包括:
解析单元,用于当接收到索引查询请求后,解析所述索引查询请求得到查询索引;
第一读取单元,用于读取所述倒排索引文件的文件头和文件尾,获取所述倒排索引文件的区域检索块偏移量和文件索引块偏移量;
第一查找单元,用于根据所述区域检索块偏移量和所述查询索引的索引值,找到所述查询索引所在的索引块;
第二查找单元,用于在所述索引块中找到与所述索引查询请求对应的倒排索引信息。
10.根据权利要求6所述的装置,其特征在于,所述第二查询模块包括:
第二读取单元,用于读取所述倒排索引信息和所述随机访问索引,得到所述倒排索引信息中的偏移量,并根据所述偏移量查找到对应的所述LZO压缩块的偏移量;
第三查找单元,用于根据所述LZO压缩块的偏移量找到对应的LZO压缩块,读取所述LZO压缩块中读取原始数据,将所述倒排索引中的偏移量中对应的原始数据始数作为起始位置,记录满足所述查询请求的原始数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710817441.4A CN107391769B (zh) | 2017-09-12 | 2017-09-12 | 一种索引查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710817441.4A CN107391769B (zh) | 2017-09-12 | 2017-09-12 | 一种索引查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107391769A CN107391769A (zh) | 2017-11-24 |
CN107391769B true CN107391769B (zh) | 2020-10-09 |
Family
ID=60351600
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710817441.4A Active CN107391769B (zh) | 2017-09-12 | 2017-09-12 | 一种索引查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107391769B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109582653B (zh) * | 2018-11-14 | 2020-12-08 | 网易(杭州)网络有限公司 | 文件的压缩、解压缩方法及设备 |
CN109977074B (zh) * | 2019-03-11 | 2021-04-27 | 北京东方国信科技股份有限公司 | 一种基于hdfs的lob数据处理方法及装置 |
CN110222074A (zh) * | 2019-06-14 | 2019-09-10 | 北京金山云网络技术有限公司 | 索引查找方法、查找装置、电子设备及存储介质 |
CN110704385A (zh) * | 2019-10-25 | 2020-01-17 | 南京录信软件技术有限公司 | 一种基于Lucene的Payloads压缩方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102201007A (zh) * | 2011-06-14 | 2011-09-28 | 悠易互通(北京)广告有限公司 | 一种大规模数据搜索系统 |
CN102708187A (zh) * | 2012-05-14 | 2012-10-03 | 成都信息工程学院 | 基于Hbase数据库的倒排索引混合压缩及解压方法 |
CN106777258A (zh) * | 2016-12-28 | 2017-05-31 | 银江股份有限公司 | 一种医疗大数据存储中Hbase行键的编码及压缩方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9484954B1 (en) * | 2015-09-10 | 2016-11-01 | Intel Corporation | Methods and apparatus to parallelize data decompression |
-
2017
- 2017-09-12 CN CN201710817441.4A patent/CN107391769B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102201007A (zh) * | 2011-06-14 | 2011-09-28 | 悠易互通(北京)广告有限公司 | 一种大规模数据搜索系统 |
CN102708187A (zh) * | 2012-05-14 | 2012-10-03 | 成都信息工程学院 | 基于Hbase数据库的倒排索引混合压缩及解压方法 |
CN106777258A (zh) * | 2016-12-28 | 2017-05-31 | 银江股份有限公司 | 一种医疗大数据存储中Hbase行键的编码及压缩方法 |
Non-Patent Citations (3)
Title |
---|
Hadoop系统性能优化与功能增强综述;董新华;《计算机研究与发展》;20131231;1-15页 * |
中文搜索引擎分块倒排索引存储模式;马健;《计算机应用》;20130701;2031-2036页 * |
基于HBase的全文索引及检索技术的研究;吴国泉;《中国优秀硕士学位论文全文数据库》;20170515;138-197页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107391769A (zh) | 2017-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391769B (zh) | 一种索引查询方法及装置 | |
CN101446984B (zh) | 一种文件存储方法、装置及文件删除方法和装置 | |
CN111400408A (zh) | 数据同步方法、装置、设备及存储介质 | |
KR101663547B1 (ko) | 데이터베이스의 아카이빙 방법 및 장치, 아카이빙된 데이터베이스의 검색 방법 및 장치 | |
CN103733195A (zh) | 管理用于基于范围的搜索的数据的存储 | |
US11625412B2 (en) | Storing data items and identifying stored data items | |
CN105912636B (zh) | 一种基于Map/Reduce的ETL数据处理方法和装置 | |
CN108776682B (zh) | 基于对象存储的随机读写对象的方法和系统 | |
CN111241177B (zh) | 数据采集方法、系统及网络设备 | |
WO2014058711A1 (en) | Creation of inverted index system, and data processing method and apparatus | |
CN116049153B (zh) | 数据库的数据处理方法、装置、电子设备及存储介质 | |
JP2019512124A (ja) | インデックス情報を生成するデータベースのアーカイビング方法及び装置、インデックス情報を含むアーカイビングされたデータベースの検索方法及び装置 | |
CN109271545A (zh) | 一种特征检索方法及装置、存储介质和计算机设备 | |
CN104834650A (zh) | 一种有效查询任务生成方法及系统 | |
CN108038253B (zh) | 一种日志查询的处理方法及装置 | |
CN111026709A (zh) | 基于集群访问的数据处理方法及装置 | |
CN114297196A (zh) | 元数据存储方法、装置、电子设备及存储介质 | |
CN109101644A (zh) | 一种动静态日志文件扫描采集方法 | |
CN111045994B (zh) | 一种基于kv数据库的文件分类检索方法及系统 | |
CN107070987B (zh) | 用于分布式对象存储系统的数据获取方法及系统 | |
CN115794783A (zh) | 数据去重方法、装置、设备和介质 | |
CN110968581B (zh) | 数据存储方法及装置 | |
JP2015191585A (ja) | データ加工装置、情報処理装置、方法、およびプログラム | |
EP4195068B1 (en) | Storing and retrieving media recordings in an object store | |
CN114780779A (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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220725 Address after: F5015, Shuli street, Zhongshan District, Guangdong Province Patentee after: Shenzhen Uway Technology Co.,Ltd. Address before: Room 601-06, floor 5, building 7, courtyard 8, West Binhe Road, Yongdingmen, Dongcheng District, Beijing 100077 Patentee before: BEIJING YOUWANG ZHUBANG INFORMATION TECHNOLOGY Co.,Ltd. |
|
TR01 | Transfer of patent right |