一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种面向时序数据的索引分区管理方法和系统

2022-05-06 05:49:12 来源:中国专利 TAG:


1.本发明属于信息技术领域,具体涉及一种面向时序数据的索引分区管理方法和系统。


背景技术:

2.随着互联网的发展和普及,网络中的信息量呈现爆炸式增长。实际应用中大部分数据都有一个共同特点那就是时序性,例如社交媒体、智能家居、监控摄像、物联网等数据。通常,对于时序数据的查询往往只局限在某一个时间段内,而不会对全量的时序数据进行查询分析。目前,在时间维度对各种网络数据进行查询分析,已成为挖掘网络空间数据潜在价值的重要手段。
3.考虑到真实业务场景中时序数据的质量往往参差不齐,很多时候数据并不会按照时间的先后顺序来创建索引。比如物联网应用中硬件设施问题或者网络传输等问题都会导致时序数据的采集和回传出现中断,导致时序数据出现不同程度的乱序。乱序数据不仅会影响时序数据的高效管理,更会对时序数据的索引管理带来极大的影响。
4.目前时序数据库技术在时序数据应用场景中广泛应用,可以在时间维度实现对时序数据的高效组织存储。但时序数据库支持的索引功能有限,进而导致其查询功能有限,不能有效地对时序数据进行统计分析。


技术实现要素:

5.针对现有的时序数据管理技术的不足,本发明提出了一种面向时序数据的索引分区管理方法和系统。该方法将时序数据的索引在时间维度进行分区管理,同时针对存在乱序数据的应用场景,对索引的分区组织方式做了优化。在执行指定时间范围的查询分析任务时,可以根据时间范围快速过滤掉不相关的索引文件,只需访问少量的索引磁盘文件就可以完成查询任务,提升基于时间维度的查询分析任务的效率。同时还可以以时间分区为单位高效地执行索引数据的迁移和删除等生命周期管理等操作。
6.本发明采用的技术方案如下:
7.一种面向时序数据的索引分区管理方法,采用以下步骤创建索引:
8.将一条时序数据中各个字段创建索引所需的必要信息封装到一个document对象中;
9.根据时序数据的时间值,基于time detector组件判断时序数据的索引所属的索引分区;
10.根据时序数据所属的索引分区的起止时间,从time partition metadata组件中得到该索引分区的元数据信息以及与该索引分区相关的indexwriter对象;
11.利用对应索引分区的indexwriter对象对document对象中封装的数据进行索引创建操作。
12.可选地,所述基于time detector组件判断时序数据的索引所属的索引分区,包
括:
13.保留两个能够写入索引数据的索引分区,分别为最近可写索引分区和乱序缓存索引分区,分别用来保存大部分时间有序数据的索引以及部分乱序数据对应的索引;
14.通过time detector组件决定一条时序数据的索引是属于最近可写索引分区还是乱序缓存索引分区;time detector组件根据当前时间和索引分区的窗口大小,维护一个最近可写索引分区,如果一条时序数据对应的时间值属于最近可写索引分区,则该条时序数据是有序的;反之则该条时序数据为无序的,将其对应的索引写入乱序缓存索引分区中。
15.可选地,所述最近可写索引分区随当前时间不断滚动更新,时间范围在最近可写索引分区的时间范围之前的索引分区为只读索引分区。
16.可选地,所述time partition metadata组件负责维护所有索引分区的元数据信息;索引分区的元数据信息在内存中存放在一个map当中,键是由索引分区的起始时间和终止时间组成,值包含索引分区的indexwriter、indexreader组件,索引分区的磁盘存放路径,以及索引分区中索引的数据量;所述time partition metadata组件还负责索引分区元数据信息的持久化保存,以避免索引分区元数据信息的丢失。
17.可选地,所述利用对应索引时间分区的indexwriter对document对象中封装的数据进行索引创建操作,包括:首先将索引数据缓存在内存中,此时内存中的索引数据不能够被查询到;然后将内存中的数据刷写到磁盘上,成为能够被查询到的索引文件。
18.可选地,对于创建的索引,采用以下步骤查询索引:
19.对于指定时间范围的索引查询任务,首先访问time partition metadata组件筛选出与查询时间范围有交集的索引分区;
20.针对每一个与查询时间范围有交集的索引分区,根据查询条件分别构建查询对象,然后分别使用一个线程来执行查询对象对应的索引查询子任务;
21.将每个索引分区的子查询结果首先按相关性进行局部排序,然后再将多个子查询结果进行全局排序,最后返回终端用户。
22.可选地,将乱序缓存索引分区的乱序索引数据定期按时间范围进行拆分,将拆分后的索引数据合并到对应时间范围的只读索引分区中,以避免乱序缓存索引分区影响查询性能。
23.一种面向时序数据的索引分区管理系统,其包括:
24.创建索引模块,用于按照本发明的上述方法创建索引;
25.查询索引模块,用于按照本发明的上述方法查询索引。
26.本发明的有益效果如下:
27.1.本发明提出的面向时序数据的索引分区管理方法和系统,可以与lucene等主流的全文索引技术整合,以此来支持多种索引类型和查询类型。
28.2.本发明提出的面向时序数据的索引分区管理方法和系统,将时序数据索引数据在时间维度进行分区管理,在执行指定时间范围的查询分析任务时,可以快速过滤掉不相关的索引文件,大幅度提升查询效率。同时,对于时效性差的历史数据,可以以索引时间分区为单位高效地执行索引数据的批量迁移和删除等生命周期管理等操作。适合查询类型复杂且数据量大的时序数据应用场景。
29.3.本发明提出的面向时序数据的索引分区管理方法和系统,在处理乱序数据索引
方面做了索引分区管理优化,在乱序数据的应用场景中,同样保持高效的索引创建和索引查询性能。
附图说明
30.图1是本发明提出的索引分区管理方法的框架示意图。
31.图2是本发明提出的索引分区管理方法的创建索引流程图。
32.图3是本发明提出的索引分区管理方法的查询索引流程图。
具体实施方式
33.为使本发明的上述目的、特征和优点能够更加明显易懂,下面通过具体实施例和附图,对本发明做进一步详细说明。
34.图1是本发明提出的索引分区管理方法的框架示意图。本发明中提出的面向时序数据的索引分区管理方法,将索引数据按时间分区来管理,其中每个索引分区都相当于一组独立的索引,每个索引分区都有其各自的indexwriter(索引生成器)、indexreader(索引查询器)等与索引创建、查询等相关的关键功能组件。每个索引分区中的数据都最终存储在独立的文件夹中。对于所有索引分区的元数据信息,例如每个索引分区的起止时间、索引分区中索引磁盘文件的存放路径等,都会保存在time partition metadata(时间分区元数据)组件中。每条时序数据都会有一个时间字段值,time detector(时间探测器)组件会根据时序数据的时间字段值确定其所属的索引分区,然后在该索引分区下创建索引。
35.此外,考虑到乱序数据的应用场景。每次向一个索引分区中写入索引数据,会先写入内存,然后将内存中的索引数据刷写到磁盘。如果将索引数据按时间分区管理,对乱序数据创建索引将会导致大量的索引时间分区同时写入索引数据的问题,进而导致大量的索引分区同时进行内存索引数据刷写磁盘、磁盘索引文件合并等操作。随着索引分区数量的增加,磁盘io的效率会变得越来越差,从而严重影响索引创建的效率。
36.为了缓解乱序数据对索引创建造成的影响,提升磁盘io的效率,本发明提出的索引分区管理方法采用一个临时的索引分区来暂存乱序索引数据,减少对乱序数据创建索引时需要访问磁盘的索引分区个数。由于临时的乱序索引分区中包含的索引数据时间范围是不确定的,随着该分区中包含的索引数据越来越多,会一定程度上影响基于时间范围的查询性能。本发明提出的索引分区管理方法会定期将乱序索引分区按时间范围进行拆分,并将拆分后的索引数据重新合并到对应时间范围的索引分区中。以此来控制乱序数据对索引创建和查询带来的影响。
37.按照本发明提供的方案,一种面向时序数据的索引分区管理方法大致可以分为创建索引步骤和查询索引步骤。
38.创建索引的过程如图2所示,分为如下步骤:
39.步骤1.对于一条包含多个字段的时序数据记录,首先需要确定各个字段需要创建的索引类型,例如对文本字段创建全文索引、对数值字段创建数值范围索引等。然后将每个字段的索引类型,是否需要对本字段的原始值进行额外存储的布尔标记位,创建全文索引所需的分词器等信息封装到一个document(文档)对象中。如果一个字段除了要创建索引外,还需要对该字段的原始值进行存储,则该字段对应的进行存储的布尔标记位stored为
true。如果一个字段需要创建全文索引,则document中还包括对该字段值进行分词的分词器。
40.步骤2.根据时序数据的时间值,基于time detector组件判断该条时序数据的索引所属的索引分区。
41.步骤3.根据时序数据所属的索引分区的起止时间,从time partition metadata组件中得到该索引分区的元数据信息以及与该索引分区相关的indexwriter对象。如果该索引分区尚未创建,则创建该索引分区并将其元数据信息保存在time partition metadata组件中。
42.步骤4.使用对应索引分区的indexwriter对象,对document中封装的数据进行实际的索引创建操作。索引数据首先会缓存在内存中,此时内存中的索引数据不可以被查询到。内存中的数据之后会被刷写到磁盘上变为可以被查询到的索引文件。
43.上述的,步骤2中,考虑到时序数据质量不佳,需要对部分乱序数据创建索引的场景。为了避免该场景下出现同时向多个索引分区写入索引数据,从而导致多个索引分区都频繁的刷写、合并小的磁盘索引文件的情况,进一步提升每次磁盘访问的效率,需要控制同时可以写入索引数据的索引分区个数。同时,考虑到时序数据的特点,当前写入的时序数据大部分还是时间有序的,而乱序数据只占相对较少的一部分。在创建索引时只保留了两个可以写入索引数据的索引分区,分别为最近可写索引分区和乱序缓存索引分区,分别用来保存大部分时间有序数据的索引以及部分乱序数据对应的索引。
44.上述的,步骤2中,一条时序数据的索引是属于最近可写索引分区还是乱序缓存索引分区,即一条数据乱序与否,是由time detector组件决定的。time detector会根据当前时间和索引分区的窗口大小,维护一个最近可写索引分区,如果一条时序数据对应的时间值属于该最近可写索引分区,则该条时序数据是有序的;反之则为无序的,其对应的索引应当写入乱序缓存索引分区中。例如当前时间为5月17号,索引分区窗口大小为30天,那么最近可写索引分区为5月1号到5月30号,如果一条时序数据的时间值在5月1号到5月30号之间,则其索引会写入最近可写索引分区;反之则写入乱序缓存索引分区。最近可写索引分区是随当前系统时间不断滚动更新的,例如,如果当前系统时间已经到了5月31号,那么新的最近可写时间分区的时间范围就是5月31号到6月29号。而时间范围在5月1号到5月30号之间的索引分区则变为了一个只读索引分区(即除了乱序缓存索引分区,用来写入乱序数据。对于其他的索引分区,如果时间范围在最近可写索引分区的时间范围之前,该索引分区为只读索引分区),不会再有索引数据直接写入到该分区中。当最近可写索引分区滚动变为只读索引分区时,为了提升只读索引分区的查询性能,还会对该分区底层的索引文件执行一次合并操作。
45.上述的,步骤3中,time partition metadata组件负责维护所有索引分区的元数据信息。索引分区的元数据信息在内存中存放在一个map(映射)当中,键是由索引分区的起始时间和终止时间组成,值则包含了该索引分区的indexwriter、indexreader等重要索引功能组件,该索引分区的磁盘存放路径,该索引分区中索引的数据量等重要信息。
46.上述的,步骤3中,为了避免索引分区元数据信息的丢失,time partition metadata组件还负责索引分区元数据信息的持久化保存。当对内存中的索引分区元数据信息进行更新时,会同时将更新后的元数据信息持久化到磁盘文件上。
47.查询索引的过程如图3所示,分为如下步骤:
48.步骤1.对于指定时间范围的索引查询任务,首先访问time partition metadata组件筛选出与查询时间范围有交集的索引分区。
49.步骤2.针对每一个与查询时间范围有交集的索引分区,根据查询条件分别构建query(查询)对象,然后分别使用一个线程来执行本query对象对应的索引查询子任务。
50.步骤3.将每个索引分区的子查询结果按相关性进行局部排序,然后再将多个子查询结果进行全局排序,最后返回终端用户
51.上述的,步骤2中,由于乱序缓存索引分区中包含的乱序索引数据的时间范围是不确定的,这会导致乱序缓存索引分区的时间范围通常较大。因此,在执行指定时间窗口范围的查询时,乱序缓存索引分区通常会与查询时间范围有交集。为了避免乱序缓存索引分区影响查询性能,需要控制乱序缓存索引分区中索引的数量。为此,乱序缓存索引分区的乱序索引数据会定期按时间范围进行拆分,同时将拆分后的索引数据重新合并到对应时间范围的只读索引分区中。以此来缓解引入乱序缓存索引分区对查询带来影响。
52.上述的,步骤3中,对于一个索引分区查询子结果中的每一条匹配数据,都有一个与查询条件相关程度的打分值。每个索引分区子查询结果中的匹配数据首先会按相关性打分进行局部的排序,过滤掉部分不相关的数据。为了使得最终返回的查询结果中最相关的数据在前,还须要对所有索引分区的查询子结果按相关性进行全局排序,然后再返回终端用户。
53.本发明的关键点是:
54.1.本发明提出的面向时序数据的索引分区管理方法,将时序数据索引在时间维度进行分区管理,同时在处理乱序数据索引方面做了索引分区管理优化。在时序数据场景中可以提供高效地查询分析以及索引数据管理等功能。
55.2.本发明提出的面向时序数据的索引分区管理方法,主要包含如下3个功能组件:索引时间分区组件相当于一组独立的索引,负责索引数据的持久化存储,根据索引时间分区中索引数据的特点又可以具体分为最近可写索引分区、乱序缓存索引分区,只读索引分区。time partition metadata组件负责维护所有索引时间分区的元数据信息,并提供查询索引和创建索引时的所访问接口。time detector组件负责根据时序数据的时间字段值确定其所属的索引时间分区。
56.3.本发明提出的面向时序数据的索引分区管理方法,主要提供了创建索引功能和查询索引功能。在创建索引时,首先创建document索引对象,然后根据时间值确定索引数据所属的索引时间分区,接着获取到该索引分区对应的元数据信息以及indexwriter对象,最后通过indexwriter执行索引创建操作,并将索引写入对应的索引分区中。在查询索引时,首先筛选出与查询时间范围有交集的索引分区,然后对于每一个相关索引分区分别使用一个线程来执行本分区的索引查询子任务,接着对每个索引分区的子查询结果进行局部排序和全局排序,最后将查询结果返回终端用户。
57.4.本发明提出的面向时序数据的索引分区管理方法,引入特殊的乱序缓存索引分区,在创建索引时暂时保存乱序数据对应的索引。以此来控制同时可以写入索引数据的索引分区个数,优化磁盘效率,提升索引创建性能。
58.5.本发明提出的面向时序数据的索引分区管理方法,会定期对乱序缓存索引分区
的乱序索引数据按时间范围进行拆分,并将拆分后的索引数据重新合并到对应时间范围的只读索引分区中。以此来缓解引入乱序缓存索引分区给查询性能带来影响。
59.为更好地表达本发明中提出的面向时序数据的索引分区管理方法,下面针对索引创建和索引查询两个功能流程,结合具体的实施实例对本发明作进一步说明。
60.以社交媒体数据中的微博数据为例,由于每条微博数据都有其发布时间,因此可以看做是一种时序数据。一条微博数据还包含微博标题、微博内容、转发评论数等其他字段。同时假设当前系统时间为5月17号,索引时间分区窗口大小为30天,则当前的最近可写分区时间范围是5月1号至5月30号。
61.对于索引创建流程,首先对一条发布时间为5月16号的微博数据创建索引。第一步,对微博标题、微博内容字段创建全文索引并对微博转发评论数、发布时间字段创建数值范围索引,并构建包含各字段索引的document对象。第二步,使用time detector组件判断该条微博数据的发布时间属于当前最近可写分区。第三步,由于最近可写分区是第一次写入索引数据,须要先初始化该索引分区的磁盘存放位置、indexwriter、indexreader等关键元数据信息。然后将其保存在time partition metadata组件中。第四步,利用最近可写分区的indexwriter对象对本条微博索引数据进行保存。接着对发布时间为2月1号、3月7号、4月16号的三条微博数据创建索引,整体流程同样分为四步。由于通过time detector组件判断,这三条微博数据的发布时间均不属于当前最近可写分区,因此这三条微博数据索引会写入乱序缓存索引分区,此时乱序缓存索引分区的时间范围为2月1号至4月16号。
62.对于索引查询流程,以查询4月1号至今微博内容中包含“杂交水稻”的微博信息为例。第一步,通过time partition metadata组件筛选出与查询时间范围有交集的索引分区,此时只有最近可写索引分区和乱序缓存索引分区符合条件。第二步,基于微博内容字段的关键字查询和微博发布时间字段的范围查询构建布尔查询对象,每个分区分别使用一个线程来执行索引查询子任务。第三步,将每个索引分区的子查询结果按相关性进行全局排序,然后返回终端用户。现在对乱序缓存索引分区按时间范围进行拆分,将其中的三条微博索引数据分别写入时间范围为2月1号至3月1号、3月2号至3月31号、4月1号至4月30号三个只读索引时间分区中。此时再执行上述查询,满足查询时间范围的只有最近可写索引分区和时间范围为4月1号至4月30号的只读索引分区。这两个索引分区中只包含两条微博数据索引,相比于乱序缓存索引分区进行拆分前,最近可写索引分区和乱序缓存索引分区包含了四条微博数据索引,减少了执行查询时访问的索引数据量,提升了查询效率。
63.基于同一发明构思,本发明的另一个实施例提供一种面向时序数据的索引分区管理系统,其包括:
64.创建索引模块,用于按照本发明方法的创建索引的步骤创建索引;
65.查询索引模块,用于按照本发明方法的查询索引的步骤查询索引。
66.基于同一发明构思,本发明的另一实施例提供一种电子装置(计算机、服务器、智能手机等),其包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行本发明方法中各步骤的指令。
67.基于同一发明构思,本发明的另一实施例提供一种计算机可读存储介质(如rom/ram、磁盘、光盘),所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现本发明方法的各个步骤。
68.以上公开的本发明的具体实施例,其目的在于帮助理解本发明的内容并据以实施,本领域的普通技术人员可以理解,在不脱离本发明的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书的实施例所公开的内容,本发明的保护范围以权利要求书界定的范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献