一种索引压缩方法、索引解压缩方法及装置与流程

未命名 10-19 阅读:100 评论:0


1.本技术涉及网络与基础架构安全技术领域,具体而言,涉及一种索引压缩方法、索引解压缩方法及装置。


背景技术:

2.随着计算机技术的发展,信息系统规模日益庞大,系统内运行设备的种类和数量也不断增长,这些因素直接导致了信息系统内产生的日志数据的规模和种类急剧增加。日志数据作为对信息系统分析的关键信息,除了要在存储过程中保证数据的安全性和存储效率外,在对数据的检索过程中,应该确保检索过程的高效性。lucene是一个高性能、可伸缩的信息搜索库(information retrieval),其架构清晰,易于扩展,而且索引文件格式独立于应用平台,从而使索引文件能够跨平台共享,实现了分块索引。利用lucene可以很好的解决对日志文件构建索引,加速查询的问题,但其构建索引需要额外的空间进行存储,随着数据规模的不断增大,索引会给存储系统带来巨大的压力。


技术实现要素:

3.本技术实施例的目的在于提供一种索引压缩方法、索引解压缩方法及装置,利用自定义类重构写索引和读索引过程,加入压缩算法,存储压缩后的索引数据,减小了存储压力,解决了日志数据索引的存储问题。
4.本技术实施例提供了一种索引压缩方法,所述方法包括:
5.利用自定义类compresseddirect拦截原始lucene的写索引数据流;
6.将所述写索引数据流存储至利用自定义类预先创建的缓冲区;
7.读取所述写索引数据流并利用压缩算法进行压缩;
8.将压缩后的写索引数据流持久化到磁盘中并清空所述缓冲区。
9.在上述实现过程中,利用自定义类重构写索引过程,增加了压缩算法,以存储压缩后的写索引数据流,缓解了存储压力,解决了日志数据索引的存储问题。
10.进一步地,在所述将所述写索引数据流存储至利用自定义类预先创建的缓冲区的步骤之前,所述方法还包括:
11.构建compressedindexoutput实例;
12.利用所述compressedindexoutput实例设置多种压缩算法、初始化默认缓冲区大小,以初始化压缩信息。
13.在上述实现过程中,支持多种压缩算法,可根据不同需求灵活选择。
14.进一步地,所述将压缩后写索引数据流持久化到磁盘中,包括:
15.利用compressedindexoutput实例中的flushbuffer()方法将压缩后写索引数据流持久化到磁盘中。
16.在上述实现过程中,flushbuffer()方法用于处理缓冲区里的数据,待数据经过压缩后便会刷新缓冲区的起始位置,之后将处理过后的数据持久化到磁盘。
17.进一步地,所述方法还包括:
18.构建compressmetafile元数据文件,用于记录压缩元数据,所述压缩元数据包括文件头魔数、缓冲区大小、块数、文件大小、压缩算法、crc32校验值。
19.在上述实现过程中,利用自定义压缩元数据存储文件compressmetafile,保存整个压缩过程的参数,用于后续解压缩的检验。
20.本技术实施例还提供一种索引解压缩方法,所述方法包括:
21.利用自定义类compresseddirect类拦截原始lucene的查询索引数据流,以利用预先创建的compressedindexinput实例对所述查询索引数据流进行管理;
22.加载和解析compressmetafile元数据文件,以利用所述compressmetafile元数据文件中的压缩元数据构建缓冲区;
23.利用所述压缩元数据对所述查询索引数据流进行解压缩,并将解压缩数据并放入缓冲区;
24.解压缩完成后,将所述解压缩数据送入数据流中并清空所述缓冲区。
25.在上述实现过程中,通过自定义的compresseddirect类和自定义的compressedindexinput类重构原始lucene的读索引过程,并在此过程中完成数据的解压缩。
26.进一步地,所述加载和解析compressmetafile元数据文件,以利用所述compressmetafile元数据文件中的压缩元数据构建缓冲区,包括:
27.利用readmeta()方法读取所述compressmetafile元数据文件中的压缩元数据;
28.对所述压缩元数据进行crc32校验和文件头魔数校验;
29.若校验均通过,则利用所述compressmetafile元数据文件中的压缩元数据构建解压缩索引的缓冲区。
30.在上述实现过程中,利用compressmetafile元数据文件中的压缩元数据进行解压缩检验和创建缓冲区。
31.本技术实施例还提供一种索引压缩装置,所述装置包括:
32.写索引数据获取模块,用于利用自定义类compresseddirect拦截原始lucene的写索引数据流;
33.缓冲区创建模块,用于将所述写索引数据流存储至利用自定义类预先创建的缓冲区;
34.压缩模块,用于读取所述写索引数据流并利用压缩算法进行压缩;
35.数据持久化模块,用于将压缩后写索引数据流持久化到磁盘中并清空所述缓冲区。
36.在上述实现过程中,利用自定义类重构写索引过程,增加了压缩算法,以存储压缩后的写索引数据流,缓解了存储压力,解决了日志数据索引的存储问题。
37.本技术实施例还提供一种索引解压缩装置,所述装置包括:
38.读索引数据获取模块,用于利用自定义类compresseddirect类拦截原始lucene的查询索引数据流,以利用预先创建的compressedindexinput实例对所述查询索引数据流进行管理;
39.缓冲区构建模块,用于加载和解析compressmetafile元数据文件,以利用所述
compressmetafile元数据文件中的压缩元数据构建缓冲区;
40.解压缩模块,用于利用所述压缩元数据对所述查询索引数据流进行解压缩,并将解压缩数据并放入缓冲区;
41.缓冲区清空模块,用于解压缩完成后,将所述解压缩数据送入数据流中并清空所述缓冲区。
42.在上述实现过程中,通过自定义的compresseddirect类和自定义的compressedindexinput类重构原始lucene的读索引过程,并在此过程中完成数据的解压缩。
43.本技术实施例还提供一种电子设备,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行计算机程序以使所述电子设备执行上述中任一项所述的索引压缩方法。
44.本技术实施例还提供可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述中任一项所述的索引压缩方法。
附图说明
45.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
46.图1为本技术实施例提供的一种索引压缩方法的流程图;
47.图2为本技术实施例提供的写索引的具体流程图;
48.图3为本技术实施例提供的设置压缩信息的流程图;
49.图4为本技术实施例提供的一种索引解压缩方法的流程图;
50.图5为本技术实施例提供的读索引的具体流程图;
51.图6为本技术实施例提供的缓冲区构建流程图;
52.图7为本技术实施例提供的一种索引压缩装置的结构框图;
53.图8为本技术实施例提供的一种索引解压缩装置的结构框图;
54.图9为本技术实施例提供的另一种索引解压缩装置的结构框图。
55.图标:
56.100-写索引数据获取模块;110-实例构建模块;200-缓冲区创建模块;300-压缩模块;400-数据持久化模块;500-读索引数据获取模块;600-缓冲区构建模块;601-压缩元数据获取模块;602-校验模块;603-缓冲区获取模块;700-解压缩模块;800-缓冲区清空模块。
具体实施方式
57.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
58.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
59.实施例1
60.请参看图1,图1为本技术实施例提供的一种索引压缩方法的流程图。
61.lucene的整个索引流程大致包括:采集数据-》创建文档-》分析文档-》索引文档-》持久化到磁盘。本技术主要应用于lucene在处理完数据将要持久化到磁盘这一过程中。采用自定义类继承原始lucene处理索引的类,通过自定义类重构了lucene索引的原始流程并加入多种压缩算法。
62.该方法重构读索引和写索引过程,并加入可选择的压缩算法,以将压缩后的数据存储至磁盘,解决日志数据索引的存储问题,缓解了系统的存储压力。具体包括写索引和读索引两部分,其中,写索引过程具体如下。
63.该方法具体包括以下步骤:
64.步骤s100:利用自定义类compresseddirect拦截原始lucene的写索引数据流;
65.如图2所示,为写索引的具体流程图。拦截数据流:通过自定义compresseddirect类中的createoutput方法拦截原始lucene构建索引的写索引数据流,将其交给自定义的compressedindexoutput实例进行管理(当写索引数据流走到compressedindexoutput中将由其管理,具体包括数据会先被放入缓冲区中,当缓冲区满了将会把其中的数据压缩,更新压缩的信息,然后持久化到磁盘)。
66.具体地,自定义compresseddirect类的具体实现为,继承fsdrectory类,并重写createoutput()、openinput()、deletefile()方法。写索引的过程主要用到createoutput()方法,该createoutput()方法可以根据数据是否需要压缩创建相应的indexoutput实例,用于对后续数据流中的数据进行处理,以此做到拦截原始lucene数据流的操作。
67.步骤s200:将所述写索引数据流存储至利用自定义类预先创建的缓冲区;
68.创建缓冲区:compressedindexoutput实例首先完成初始化,例如,开辟内存空间、设置压缩算法、初始化默认缓冲区大小、crc校验器等,为后续操作做准备,并创建后续操作的数据缓冲区。
69.具体地,compressedindexoutput实例是由compresseddirect的createoutput()方法创建的。compressedindexoutput类的具体实现为:继承indexoutput类,重写writebytes()、writebyte()、getchecksum()、getfilepointer()、close()方法,再加入多个自定义方法与属性用于处理数据压缩,例如增加writecompressmetafile()方法用于构建压缩元数据文件、flushbuffer()方法用于将数据刷新到磁盘。写索引过程首先会在创建compressedindexoutput实例时完成参数的初始化,例如设置压缩算法、初始化默认缓冲区大小等。后续操作主要用到writebytes()方法,用于对数据流中的数据进行压缩处理。
70.步骤s300:读取所述写索引数据流并利用压缩算法进行压缩;
71.构建compressmetafile元数据文件,用于记录压缩元数据,所述压缩元数据包括文件头魔数、缓冲区大小、块数、文件大小、压缩算法、crc32校验值。
72.compressmetafile元数据文件为自定义的以.cif结尾的保存压缩信息的文件,其数据结构包含文件头魔数、块数、文件大小、压缩算法、crc32校验值等信息,用于记录此次压缩的过程,便于后续读索引过程中的校验及解压缩。
73.compressmetafile元数据文件为自定义的保存压缩元数据的文件,用于保存整个压缩过程的参数,用于后续解压缩的检验。其中文件头魔数用于标识文件类型及定义文件的数据结构等;缓冲区大小用于下次读索引构建同样大小的缓冲区方便读取;块数、文件大小、压缩算法这些参数用于记录本次压缩操作,便于后续解压缩;crc32校验值用于后续读操作验证文件可用性。
74.步骤s400:将压缩后的写索引数据流持久化到磁盘中并清空所述缓冲区。
75.利用compressedindexoutput实例中的flushbuffer()方法将压缩后写索引数据流持久化到磁盘中。
76.具体地,将数据流中压缩过的数据持久化到磁盘具体利用compressedindexoutput实例中的flushbuffer()方法。flushbuffer()方法的作用是处理缓冲区里的数据,待数据经过压缩后便会刷新缓冲区的起始位置,之后将处理过后的数据持久化到磁盘。
77.执行完上述步骤后,将会清空数据缓冲区,释放不需要的内存资源,创建的实例也会由jvm垃圾回收机制自行处理。至此,写索引的全部流程全部结束。
78.将原始lucene写索引的过程完全重构,加入压缩算法,使得索引文件较未压缩的大小有了明显的减小,提升磁盘利用率。
79.其中,如图3所示,为设置压缩信息的流程图,在步骤s200之前,该方法还包括:
80.步骤s111:构建compressedindexoutput实例;
81.步骤s112:利用所述compressedindexoutput实例设置多种压缩算法、初始化默认缓冲区大小,以初始化压缩信息。
82.示例地,compressmetafile元数据文件中内置了三种常见压缩算法,分别是zstd、zip、lz4压缩算法。其中,lz4压缩算法的压缩比最高,可使压缩后的文件占用空间最小,但相对最耗时;zstd压缩算法的压缩比最低,压缩后的文件占用空间较大,但速度最快;zip压缩算法相对上述两个算法性能最均衡,压缩比和压缩速度都适中,所以经过测试,系统默认的压缩算法为zip,后续可根据不同需求通过参数灵活改变。该方法支持多种压缩算法,可根据不同需求灵活选择。
83.本技术实施例还提供一种索引解压缩方法,如图4所示,为一种索引解压缩方法的流程图,该方法为读索引过程,所述方法具体包括以下步骤:
84.步骤s500:利用自定义类compresseddirect类拦截原始lucene的查询索引数据流,以利用预先创建的compressedindexinput实例对所述查询索引数据流进行管理;
85.如图5所示,为读索引的具体流程图。具体地:
86.拦截数据流:通过自定义compresseddirect类中的openinput()方法拦截原始lucene查询索引的数据流,将其交给自定义的compressedindexinput实例进行管理。
87.具体地,拦截原始lucene的查询索引的数据流主要由自定义compresseddirect类中的openinput()方法完成。openinput()方法首先会验证索引是否经过压缩处理,然后根据结果创建相应的indexinput实例,用于对后续数据流中的数据进行处理,以此做到拦截原始lucene的查询索引数据流的操作。
88.步骤s600:加载和解析compressmetafile元数据文件,以利用所述compressmetafile元数据文件中的压缩元数据构建缓冲区;
89.解析compressmetafile元数据文件:compressedindexoutput实例首先完成初始化,利用readmeta()方法读取compressmetafile元数据文件中的压缩元数据,会先进行crc32校验,验证文件完整性,再进行文件头魔数校验,之后读取块数、文件大小、压缩算法等压缩元数据,根据这些压缩元数据构建读索引的缓冲区。
90.compressedindexinput实例便是由compresseddirect的openinput()方法创建的。compressedindexinput类的具体实现为,继承indexinput类,重写readbytes()、readbyte()、slice()、seek()、length()、getfilepointer()、clone()、close()方法,并加入多个自定义方法与属性用于处理数据解压缩,例如增加readmeta()、loadchunk()、readchunkanddecomress()方法。
91.步骤s700:利用所述压缩元数据对所述查询索引数据流进行解压缩,并将解压缩数据并放入缓冲区;
92.解压缩数据:根据compressmetafile元数据文件中的压缩元数据,读取压缩过的索引文件,利用相应的解压缩算法将数据解压缩后放入缓冲区里。
93.解压缩过程,首先会使用compressmetafile读取到的压缩算法,得到相应的对称的解压缩算法。再使用compressedindexoutput的readchunkanddecomress()方法计算出每个块的起始位置,并运用解压缩算法解压数据,最后将数据放入缓冲区里。
94.步骤s800:解压缩完成后,将所述解压缩数据送入数据流中并清空所述缓冲区。
95.待解压缩完成后,将缓冲区里的数据放入数据流中。执行完上述步骤后,将会清空数据缓冲区,释放不需要的内存,创建的实例也会由jvm垃圾回收机制自行处理。至此,读索引的流程全部结束,完成将压缩过的索引进行解压查询输出。
96.其中,如图6所示,为缓冲区构建流程图,步骤s600具体包括以下步骤:
97.步骤s601:利用readmeta()方法读取所述compressmetafile元数据文件中的压缩元数据;
98.步骤s602:对所述压缩元数据进行crc32校验和文件头魔数校验;
99.步骤s603:若校验均通过,则利用所述compressmetafile元数据文件中的压缩元数据构建解压缩索引的缓冲区。
100.具体地,compressedindexinput初始化完成后,利用自定义的readmeta()方法读取compressmetafile元数据文件中的数据,进行crc32校验,检测数据经过传输后是否出现错误,之后验证文件头魔数,检测文件是否有效。若上述验证出现问题则会生成相应的异常信息程序终止;若通过校验,则会读取compressmetafile中的其他参数,用于构建解压缩索引的缓冲区。
101.示例地,利用上述方法具体的写索引步骤如下:
102.步骤s11:准备待索引的日志文件15000条,大小为1617kb。
103.步骤s12:创建compresseddirect实体类,采用默认值(需要压缩、压缩算法为zip、缓冲区大小为32kb)。加载日志文件,准备创建索引。此时lucene的原始数据流已被拦截,交给自定义的compressedindexoutput类中的数据压缩流程处理。
104.步骤s13:设置索引输出位置。
105.步骤s14:查看索引是否正确持续化到磁盘。
106.另将步骤s12中创建compresseddirect实体类时赋不需要压缩参数值即可得到原
始lucene数据不进行压缩的索引大小。结果显示,不需要压缩索引的流程最后得到的索引文件大小为493kb。需要压缩索引的流程最后得到的索引文件大小为240kb,另外compressmetafile元数据文件大小为1kb。
107.具体的读索引步骤如下:
108.步骤s15:创建compresseddirect实体类,加载索引。此时lucene的读索引流程已被拦截,交给自定义的compressedindexinput类中的数据解压缩压缩流程处理。
109.步骤s16:设置需要查询的内容,例如:
110.termquery query=new termquery(new term("op",new bytesref("delete")));意为查询日志中op字段为delete的数据。
111.步骤s17:设置结果输出位置。
112.步骤s18:查看是否为正确的结果。
113.另将步骤s15中创建compresseddirect实体类时加载索引导入未压缩的索引。结果显示,经压缩的索引和未经压缩的索引所得到的结果一致。综上所述,本技术的整个压缩索引流程可实际应用,且效果明显。
114.实施例2
115.本技术实施例提供一种索引压缩装置,如图7所示,为一种索引压缩装置的结构框图,所述装置包括但不限于:
116.写索引数据获取模块100,用于利用自定义类compresseddirect拦截原始lucene的写索引数据流;
117.缓冲区创建模块200,用于将所述写索引数据流存储至利用自定义类预先创建的缓冲区;
118.压缩模块300,用于读取所述写索引数据流并利用压缩算法进行压缩;
119.数据持久化模块400,用于将压缩后写索引数据流持久化到磁盘中并清空所述缓冲区。
120.该装置还包括实例构建模块110,用于:
121.构建compressedindexoutput实例;
122.利用所述compressedindexoutput实例设置多种压缩算法、初始化默认缓冲区大小,以初始化压缩信息。
123.通过自定义的compresseddirect类和自定义的compressedindexoutput类完全重构原始lucene的写索引过程,在其中加入压缩算法。
124.本技术实施例还提供一种索引解压缩装置,如图8所示,为一种索引解压缩装置的结构框图,所述装置包括但不限于:
125.读索引数据获取模块500,用于利用自定义类compresseddirect类拦截原始lucene的查询索引数据流,以利用预先创建的compressedindexinput实例对所述查询索引数据流进行管理;
126.缓冲区构建模块600,用于加载和解析compressmetafile元数据文件,以利用所述compressmetafile元数据文件中的压缩元数据构建缓冲区;
127.解压缩模块700,用于利用所述压缩元数据对所述查询索引数据流进行解压缩,并将解压缩数据并放入缓冲区;
128.缓冲区清空模块800,用于解压缩完成后,将所述解压缩数据送入数据流中并清空所述缓冲区。
129.如图9所示,为另一种索引解压缩装置的结构框图,缓冲区构建模块600包括:
130.压缩元数据获取模块601,用于利用readmeta()方法读取所述compressmetafile元数据文件中的压缩元数据;
131.校验模块602,用于对所述压缩元数据进行crc32校验和文件头魔数校验;
132.缓冲区获取模块603,用于若校验均通过,则利用所述compressmetafile元数据文件中的压缩元数据构建解压缩索引的缓冲区。
133.通过自定义的compresseddirect类和自定义的compressedindexinput类完全重构原始lucene的读索引过程,并在此过程中完成数据的解压缩。
134.本技术实施例还提供一种电子设备,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行计算机程序以使所述电子设备执行实施例1所述的索引压缩方法。
135.本技术实施例还提供可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行实施例1所述的索引压缩方法。
136.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本技术的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
137.另外,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
138.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
139.以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图
中不需要对其进行进一步定义和解释。
140.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。
141.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

技术特征:
1.一种索引压缩方法,其特征在于,所述方法包括:利用自定义类compresseddirect拦截原始lucene的写索引数据流;将所述写索引数据流存储至利用自定义类预先创建的缓冲区;读取所述写索引数据流并利用压缩算法进行压缩;将压缩后的写索引数据流持久化到磁盘中并清空所述缓冲区。2.根据权利要求1所述的索引压缩方法,其特征在于,在所述将所述写索引数据流存储至利用自定义类预先创建的缓冲区的步骤之前,所述方法还包括:构建compressedindexoutput实例;利用所述compressedindexoutput实例设置多种压缩算法、初始化默认缓冲区大小,以初始化压缩信息。3.根据权利要求1所述的索引压缩方法,其特征在于,所述将压缩后写索引数据流持久化到磁盘中,包括:利用compressedindexoutput实例中的flushbuffer()方法将压缩后写索引数据流持久化到磁盘中。4.根据权利要求1所述的索引压缩方法,其特征在于,所述方法还包括:构建compressmetafile元数据文件,用于记录压缩元数据,所述压缩元数据包括文件头魔数、缓冲区大小、块数、文件大小、压缩算法、crc32校验值。5.一种索引解压缩方法,其特征在于,所述方法包括:利用自定义类compresseddirect类拦截原始lucene的查询索引数据流,以利用预先创建的compressedindexinput实例对所述查询索引数据流进行管理;加载和解析compressmetafile元数据文件,以利用所述compressmetafile元数据文件中的压缩元数据构建缓冲区;利用所述压缩元数据对所述查询索引数据流进行解压缩,并将解压缩数据并放入缓冲区;解压缩完成后,将所述解压缩数据送入数据流中并清空所述缓冲区。6.根据权利要求5所述的索引解压缩方法,其特征在于,所述加载和解析compressmetafile元数据文件,以利用所述compressmetafile元数据文件中的压缩元数据构建缓冲区,包括:利用readmeta()方法读取所述compressmetafile元数据文件中的压缩元数据;对所述压缩元数据进行crc32校验和文件头魔数校验;若校验均通过,则利用所述compressmetafile元数据文件中的压缩元数据构建解压缩索引的缓冲区。7.一种索引压缩装置,其特征在于,所述装置包括:写索引数据获取模块,用于利用自定义类compresseddirect拦截原始lucene的写索引数据流;缓冲区创建模块,用于将所述写索引数据流存储至利用自定义类预先创建的缓冲区;压缩模块,用于读取所述写索引数据流并利用压缩算法进行压缩;数据持久化模块,用于将压缩后写索引数据流持久化到磁盘中并清空所述缓冲区。8.一种索引解压缩装置,其特征在于,所述装置包括:
读索引数据获取模块,用于利用自定义类compresseddirect类拦截原始lucene的查询索引数据流,以利用预先创建的compressedindexinput实例对所述查询索引数据流进行管理;缓冲区构建模块,用于加载和解析compressmetafile元数据文件,以利用所述compressmetafile元数据文件中的压缩元数据构建缓冲区;解压缩模块,用于利用所述压缩元数据对所述查询索引数据流进行解压缩,并将解压缩数据并放入缓冲区;缓冲区清空模块,用于解压缩完成后,将所述解压缩数据送入数据流中并清空所述缓冲区。9.一种电子设备,其特征在于,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行计算机程序以使所述电子设备执行根据权利要求1至4中任一项所述的索引压缩方法。10.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行权利要求1至4任一项所述的索引压缩方法。

技术总结
本申请实施例提供一种索引压缩方法、索引解压缩方法及装置,涉及网络与基础架构安全技术领域。该方法包括利用自定义类CompressedDirect拦截原始Lucene的写索引数据流;将所述写索引数据流存储至利用自定义类预先创建的缓冲区;读取所述写索引数据流并利用压缩算法进行压缩;将压缩后的写索引数据流持久化到磁盘中并清空所述缓冲区。该方法利用自定义类重构写索引和读索引过程,加入压缩算法,存储压缩后的索引数据,减小了存储压力,解决了日志数据索引的存储问题。决了日志数据索引的存储问题。决了日志数据索引的存储问题。


技术研发人员:沈明正
受保护的技术使用者:北京天融信科技有限公司 北京天融信软件有限公司
技术研发日:2023.07.14
技术公布日:2023/10/15
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐