CN115640333A - 一种基于公约数的时序子结构多模式匹配查询方法及装置 - Google Patents
一种基于公约数的时序子结构多模式匹配查询方法及装置 Download PDFInfo
- Publication number
- CN115640333A CN115640333A CN202211357508.8A CN202211357508A CN115640333A CN 115640333 A CN115640333 A CN 115640333A CN 202211357508 A CN202211357508 A CN 202211357508A CN 115640333 A CN115640333 A CN 115640333A
- Authority
- CN
- China
- Prior art keywords
- substructure
- time
- time sequence
- query
- queue
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于公约数的时序子结构多模式匹配查询方法及装置。根据用户定义多个查询操作,其时序子结构的时间跨度大小由用户自定义,可获取时间定义时间跨度大小内的时序数据,并根据业务需求聚合计算对应时序子结构,对外部应用提供毫秒级计算和查询延时。本发明主要分为四个部分:定义时序子结构,初始化时序子结构,创建时序子结构和查询时序子结构。本发明可以在节省存储空间的同时保留历史更大时间跨度的数据并合理设计多个查询窗口查询顺序,进而在满足长短周期指标计算查询的业务需求的同时降低多流查询延迟,即使是时间跨度大的情况下依旧能够在毫秒级内返回查询的指标。
Description
技术领域
本发明涉及基于公约数的时序子结构多模式匹配查询方法及装置,提供一种适应不同时间跨度的时序子结构构建与查询方法,使得存储空间内时序子结构时间跨度大小能动态变化,获取离当前时间时间跨度大小内的时序数据,并通过时序窗口聚合技术有效节省查询时间。本发明主要适用于在用户行为实时分析、营销、行为习惯挖掘等技术领域,有效支撑长短周期时间跨度的指标计算与查询。
背景技术
在用户行为实时分析、营销等领域,经常会涉及如“某商品过去一小时内的交易额”、“某人在过去一周内点击某链接的频率”等相关流式聚合计算问题。由于现实的需求,查询的时间跨度大小是多种多样的,如上述的“一小时”、“一周”,而且在进行“过去一小时”、“过去一周”等限制下的聚合计算时,需要考虑时间也是在一直移动的,同时在这些领域中数据是实时流数据的方式展现的,即一组顺序、大量、快速、连续到达的数据序列,是一个随时间延续而无限增长的动态数据集合。基于上述原因,需要对数据按照时序进行子结构构建,然后在时序子结构上进行聚合计算,以满足业务需求的同时迅速处理流式大数据。
目前在存储空间中的时序数据查询方式主要分为三种,即滚动、滑动和会话,也是当前流行的开源流处理框架Flink采用的主要方法:在滚动方式中的存储空间内每个时序子结构时间跨度固定,且每个时序子结构位置相邻不重叠,这类子结构的时间跨度不可变;在滑动方式中,每个时序子结构包含时间跨度和滑动步长两个属性,滑动步长指的是两个子结构间的时间跨度,每个子结构内的时间跨度是相等的,因此每个时序子结构位置相邻但有可能重叠,一条数据可能在多个子结构中均有包含;在会话方式中,根据用户会话的起止时间定义时序子结构的时间跨度,若大于指定时间内没有接收到新的数据,默认会话结束,就会关闭这个时序子结构,这类子结构的时间跨度是可变但不可控的。
上述第一种和第二种方法虽然时间跨度是固定的,适合用户业务需求的查询,但是由于跨度固定不够灵活,对于一个不符合定义时间跨度单位的查询时,会发生以下问题:系统所定义的时间跨度为一秒,但要查询“某人在过去一周内点击某链接的频率”时,需要聚合一周中所有的时间跨度为一秒的时序子结构共604800个,这会造成过多的存储空间占用和频繁读写的性能问题,并且想要一次性的聚合如此多子结构需要非常多的计算时间,难以满足高频访问这部分数据的场景性能要求。
上述第三种方法时间跨度并不固定也不可控,这会导致在做时序子结构的聚合时精度偏低且难以精准聚合到相应的业务范围内。例如要查询“某商品过去一小时内的交易额”时,但在过去一天中该商品都处于被频繁发起交易的状态,此时时序子结构无法关闭,也就无法精确查询到一个小时内的攻击情况,特别流式数据有连续、快速的特点。这时若保存原始数据保证用户查询,那么很多无用信息也会被记录下来,带来很大的内存占用和查询延时,难以满足毫秒级延时和性能要求;若只保留计算后的时序子结构不保留原始数据,则用户无法查到一小时内的结果,无法满足业务需求。
综上所述,上述传统时序数据查询方法无法同时满足下面的要求:
1)提供精准的不同时间跨度的指标计算和查询;
2)在指标计算和查询的过程中,占用较少的存储空间,提供毫秒级的计算和查询延时。
发明内容
针对传统时序数据查询方法产生的问题,本发明提出了一种基于公约数的时序子结构多模式匹配查询方法及装置,在海量且时间跨度大的数据模式下,构建一种自定义时间跨度的时序子结构构建,所述时序子结构是一种保存在存储空间中的数据结构,其数据包含定义时间内进入存储空间并经过聚合计算的流式数据。根据用户需求定义任意步长的时序子结构,时间跨度包含几何倍的自然时间长度单位,有效保证查询精准度的同时,节省存储空间、降低计算查询延时并能够查询足够长的时间跨度范围。
本发明的目的是通过以下技术方案来实现的:第一方面,本发明提供了一种基于公约数的时序子结构多模式匹配查询方法,包括以下步骤:
(1)定义时序子结构:用户需要为多时序子结构定义一个时序子结构集合Substructure;Substructure包含参数range,代表Substructure包含数据的总时间范围;依据用户定义的range,聚合计算相应时间跨度的时序子结构,所有时序子结构时间跨度T根据用户需求而定为一个自然时间单位;
(2)初始化时序子结构:在定义完一个时序子结构队列Substructure之后,初始化一个时序子结构和其需维护的时序子结构队列,其时序子结构队列表述为时序中间态队列,时序中间态即时序子结构包含的原始数据聚合计算后获得的带有时间戳的数据中间状态;
(3)创建时序子结构:在聚合计算构建时序子结构过程中,根据以下步骤来创建时序子结构:
(3.1)定义时序子结构集合Substructure,当定义不为空时,将用户给定参数range作为Substructure的时间跨度单位;
(3.2)在所有时序子结构中寻找时间跨度为T的时序子结构,判断时序子结构是否过期,若时序子结构没有过期,将对应时间跨度T的时序子结构依照时间戳从近到远排列形成时序中间态队列,根据聚合计算逻辑计算并更新时序子结构存储的聚合值;若过期了则创建一个新的时序子结构,将根据聚合计算逻辑计算并存储其新的聚合值,并压入时序中间态队列的头部;
(3.3)判断时序中间态队列是否已满,若队列已满,新加入的数据将创建一个新的时序子结构,然后在队列的尾部弹出一个离当前时间最长的时序子结构并直接将其丢弃,而在队列最前方插入最新的子结构;
(4)查询时序子结构:用户给定查询的时间范围range之后,执行以下步骤:
(4.1)若找到了对应的时序子结构队列,在时序子结构的时间戳及range内找到在时序子结构队列中对应的起始时序子结构位置,然后根据聚合计算逻辑,针对寻找到的两个子结构位置间的所有子结构进行结构间的一次聚合计算,而不必进行重复的子结构内计算就能得出用户所查询的计算指标并将最终结果返回给用户;
(4.2)若用户的查询找不到对应的时序子结构队列,此时根据用户的查询条件重新构建一个以查询条件为定义的时序子结构队列,然后按照步骤(4.1)返回查询结果;
(4.3)当存在多个查询时,时序子结构查询算法可描述如下:对于一组无重复的查询时间窗口,第i个查询的时间窗口记为Wi{m*s,m*s+Ti},其中Ti为第i个查询时间窗口的时序子结构的时间跨度,s为两个时间切片开始时刻的间隔,m为大于等于0的整数,如果Ti>Tj,并且对任何间隔I=[a,b),如果Wi存在间隔Ia=[a,x)并且Wj存在间隔Ib=[y,b),使得a<y和x<b,那么Wi被Wj覆盖,表示为Wi≤Wj,对窗口Wj的查询能够复用对窗口Wi的查询结果,因此,可以计算这一组无重复的查询时间窗口的时间跨度的最大公约数,若结果对应的查询时间窗口为这一组无重复的查询时间窗口之一,则将其作为关键窗口,若结果不存在这一组无重复的查询时间窗口之中,此时以最大公约数对应的时间跨度新添加一个查询时间窗口,作为关键窗口,关键窗口能够被所有的查询时间窗口覆盖,其他窗口查询能够复用关键窗口,缩短查询时间。
进一步地,步骤(2)中,需要记录时序子结构定义的长度range,保证聚合计算后时序子结构的时间跨度不超过range。
进一步地,步骤(3.2)中,判断是否过期的依据是时序子结构所带时间戳与当前记录时间大小;若超过当前记录时间则表述已经过期。
进一步地,步骤(3.3)中,判断队列已满的方式是,在将时序子结构一个个压入到队列中后,当最后一个时序子结构所携带的时间戳距队列尾部时序子结构的时间戳的时间跨度超过了range时,则判断其队列已满。
第二方面,本发明提供了一种基于公约数的时序子结构多模式匹配查询装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,用于实现所述的基于公约数的时序子结构多模式匹配查询方法的步骤。
第三方面,本发明提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现所述的基于公约数的时序子结构多模式匹配查询方法的步骤。
本发明的有益效果:本发明提供的基于公约数的时序子结构多模式匹配查询方法及装置有以下几个技术特点:
1)存储空间内,有不同时间跨度的时序子结构,离当前时间距离越近,构建方法获取的时序子结构跨度越短,查询的时间跨度也越小,有越高的计算精确度;离当前时间距离越远,构建方法获取的时序子结构跨度越长,查询的时间跨度也越大,但计算精度较低。
2)虽然时间跨度大的查询计算精度较低,但是由于其时序子结构的时间跨度长,包含的自然时间单位大,因此需要的时序子结构数量就越少,相当于利用相对少的存储空间保留最长的历史数据。
3)满足查询时空局部性的原则。在应用中,用户倾向于查询较近的交易指标和数量,最新的指标数据会被最频繁的查询,需要最高的精准度;时间久的数据访问频率较低,且由于时间跨度大对精度的要求并不高。本发明能够准确的满足业务需求,且能提供毫秒级的计算和查询延迟。
4)节省计算和查询时间。在时间跨度大的场景中,需要对要求时间范围内的所有时序子结构进行聚合计算,由于有不同自然时间单位长度的时序子结构,而本发明方法能根据用户定义选取合适的自然时间单位为T的子结构进行聚合计算操作,同时在查询时只要有满足查询条件且计算完成的子结构队列在存储空间中,就不需要在子结构内进行重复的计算。当多个查询进行时,将重构其计算顺序,在必要时增加一个关键窗口以缩减时间。以上方式均能使得计算查询延时大大降低。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动前提下,还可以根据这些附图获得其他附图。
图1为本发明三个时序子结构示例示意图;
图2为时序子结构创建流程示意图;
图3为本发明实施例中初始的时序子结构示意图;
图4为本发明实施例中十小时后时序子结构状态示意图;
图5为本发明实施例中二十小时后时序子结构状态示意图;
图6为本发明实施例中时序子结构查询过程;
图7为本发明实施例中时序子结构查询的优化方法。
图8是本发明一种基于公约数的时序子结构多模式匹配查询装置的结构图。
具体实施方式
以下结合附图对本发明具体实施方式作进一步详细说明。
本发明可以聚合计算任意时间跨度的时序子结构,当查询时间跨度距当前时间越近时,就会聚合获取一系列时间跨度越短的时序子结构,其计算精度越高;当查询时间跨度距当前时间越远时,就会聚合获取一系列时间跨度越长的子结构,其计算精度越低。同时根据多模式的查询寻找其公约数,有效缩短查询时间。
本发明提供了一种基于公约数的时序子结构多模式匹配查询方法,包括以下步骤:
(1)定义时序子结构:用户需要为多时序子结构定义一个时序子结构集合Substructure:Substructure包含参数range,代表Substructure包含数据的总时间范围。依据用户定义的range,聚合计算相应时间跨度的时序子结构,所有时序子结构时间跨度T根据用户需求而定为一个自然时间单位。构建方法中时序子结构的计算精度依据其自然时间单位的大小而定,单位越小其时序子结构跨度越短但计算精度越高,单位越大其时序子结构跨度越长但计算精度越低。
(2)初始化时序子结构:在定义完一个时序子结构队列Substructure之后,初始化一个时序子结构和其需维护的时序子结构队列,其时序子结构队列表述为时序中间态队列,时序中间态即时序子结构包含的原始数据聚合计算后获得的带有时间戳的数据中间状态;同时记录时序子结构定义的长度range,保证聚合计算后时序子结构的时间跨度不超过range;
(3)创建时序子结构:如图2所示,在聚合计算构建时序子结构过程中,根据以下步骤来创建时序子结构:
(3.1)定义时序子结构集合Substructure,当定义不为空时,将用户给定参数range作为Substructure的时间跨度单位;
(3.2)在所有时序子结构中寻找时间跨度为T的时序子结构,判断时序子结构是否过期,判断是否过期的依据是时序子结构所带时间戳与当前记录时间大小。若时序子结构没有过期,将对应时间跨度T的时序子结构依照时间戳从近到远排列形成时序中间态队列,根据聚合计算逻辑计算并更新时序子结构存储的聚合值;若过期了就会创建一个新的时序子结构,将根据聚合计算逻辑计算并存储其新的聚合值,并压入时序中间态队列的头部。
(3.3)在步骤(3.2)时需要判断时序中间态队列是否已满,在将时序子结构一个个压入到队列中后,当最后一个时序子结构所携带的时间戳距队列尾部时序子结构的时间戳的时间跨度超过了range时,则判断其队列已满。若队列已满,新加入的数据将创建一个新的时序子结构,然后在队列的尾部会弹出一个离当前时间最长的时序子结构并直接将其丢弃,而在队列最前方会插入最新的子结构。
(4)查询时序子结构:用户给定查询的时间范围range之后,执行以下步骤:
(4.1)若找到了对应的时序子结构队列,在时序子结构的时间戳及range内找到其在时序子结构队列中对应的起始时序子结构位置,然后根据聚合计算逻辑,针对寻找到的两个子结构位置间的所有子结构进行结构间的一次聚合计算,而不必进行重复的子结构内计算就能得出用户所查询的计算指标并将最终结果返回给用户;
(4.2)若用户的查询找不到对应的时序子结构队列,此时根据用户的查询构建重新构建一个以查询条件为定义的时序子结构队列,然后按照步骤(4.1)返回查询结果。
(4.3)当存在多个查询时,当多个查询同时到达时,将为其排序,找出多个查询窗口中的关键窗口,通过多次复用关键窗口缩短多个查询的总时间。更具体的,当其关键窗口不在所有查询中,系统将自动构建一个关键窗口,使得这多个查询的总耗时最短。所述关键窗口为在查询过程中提供复用以最大程度缩减总查询时间的窗口,一般为几个或所有窗口的最大公约数。
如图1展示了三个时序子结构的例子。此例子中各个时序子结构定义了其Substructure,第一个子结构Substructure定义的range为5小时,第二个子结构Substructure定义的range为7秒,第三个子结构Substructure定义的range为100天。第一个子结构内部的时间跨度T以1小时为单位,整体范围为5小时,其子结构时间跨度在三个子结构中跨度较长,计算精度较高;第二个子结构内部的时间跨度T以1秒为单位,整体范围为7秒,其子结构时间跨度在三个子结构中跨度最短,计算精度最高;第三个子结构内部的时间跨度T以1天为单位,整体范围为100天,其子结构时间跨度在三个子结构中跨度最长,计算精度最低。
时序子结构查询算法可描述如下:
a)表示一组无重复的查询时间窗口,其中每一个内部窗口可表示为W<T,s>,其中T为窗口中一个时序子结构的时间跨度,s为两个时间切片开始时刻的间隔。所有这一类的时间窗口可以表示为W{m*s,m*s+T},其中m为大于等于0的整数。例如{[0,10),[2,12),…}等一系列时序子结构。用C来表示在此查询窗口的计算耗时,为每个窗口的计算耗时之和。
b)捕获参与查询的多个窗口之间的覆盖关系,也就是说,如果T1>T2,并且对任何间隔I=[a,b)来说,如果W1存在间隔Ia=[a,x)并且W2存在间隔Ib=[y,b),使得a<y和x<b,那么W1被W2覆盖,表示为W1≤W2。在这种情况下,对窗口W2的查询可以复用对窗口W1的查询结果,因此,在窗口W2的计算耗时可以表示为1+(r1-r2)/s2。因此,当窗口之间的覆盖关系很复杂时,可以加入一个关键窗口,关键窗口能够被所有的窗口覆盖。
c)用δ来表示收益函数,即不加入关键窗口时的计算耗时和加入关键窗口的计算耗时之差,在所有满足δ>0的窗口中,使得δ最大时的窗口即为最优的关键窗口(见算法2)。
d)当关键窗口在列表中时:假定有一组4个时间窗口,其时序子结构的时间跨度T分别为10p,20p,30p,40p(其中p为时间单位,可以是秒、分钟、天等,下同)。四个时间跨度的最小公倍数R=lcm{10p,20p,30p,40p}=120p,最大公约数F=gcd{10p,20p,30p,40p}=10p;因此在不复用计算结果的情况下计算耗时为120p*4=480p,这组时间窗口的关键窗口大小为10p。20p、30p、40p的时间窗口都可以复用10p的计算结果,同时40p可以复用20p的结果,因此,在复用计算结果后,10p的窗口计算耗时仍为120p,20p、30p的窗口计算耗时为12p,40p的窗口计算耗时为6p。此种方式能将耗时从480p降为(120p+12p+12p+6p)=150p,降低了68.75%。
e)当关键窗口不在列表中时:假定有一组3个时间窗口,其时序子结构的时间跨度T分别为20p,30p,40p。此时最小公倍数R=lcm{20p,30p,40p}=120p,最大公约数为F=gcd{20p,30p,40p}=10p,关键窗口大小为10p,但此时关键窗口并不在窗口列表内。若不添加任何窗口,只有40p的窗口可以复用20p窗口的计算结果,因此总耗时为(120p+120p+6p)=246p。为缩减时间可在列表中添加一个查询,其时间窗口大小为10p。总耗时可降为(120p+12p+12p+6p)=150p,相比不添加关键窗口降低了39%。
在时序子结构队列中,会将关键窗口存入,具体描述如下:
实施例:
本节将以一个样例的方式,对上述基于公约数的时序子结构多模式匹配查询方法进行进一步的说明。
该样例有如下假设:
1)样例中计算的指标为“某网站一段时间内的访问总量”,这在数字化产品分析领域是一个常见的计算指标,该领域也是一个流式大数据中常见的应用领域;
2)假设某网站W,在每分钟都会有10次的访问量,也就是每小时都有600次的访问量;
3)假设网站W中关于访问量的系统数据格式如表1所示:
表1.数据格式定义
4)时序子结构的Substructure定义了一个range,range定义的时间范围为100天;
5)当前时间为2020年12月1日0时,目前存储了100天的流水数据。
根据上述假设,初始情况下时序子结构状态如图3所示。在初始状态下,经过10小时,网站的访问数量增加了6000次,此时处理步骤如下:
1)在时序子结构维护的队列头中找到第一个子结构,判断其队列是否为空以及子结构是否过期。判断发现队列非空但子结构已经过期,此时创建一个新的时序子结构,跨度为1天,时间戳为“2020-12-01 00:00:00”,根据聚合计算逻辑计算并存储其新的聚合值为6000。
2)判断时序子结构维护的队列是否已满。队列已满,在队列的尾部会弹出一个子结构时间戳为“2020-08-24 00:00:00”,跨度为1天的时序子结构,直接将该子结构丢弃,在队列最前方会插入最新的子结构。此时,在单个计算节点下指标计算平均每笔相应时间只需19ms,如图4所示。
3)接着有经过了十小时,如图5所示,网站的访问数量又增加了6000次,此时处理步骤如下:在时序子结构维护的队列头中找到第一个子结构,判断其队列是否为空以及子结构是否过期。判断发现队列非空且子结构未过期,此时根据聚合计算逻辑计算并更新该子结构存储的聚合值为12000。此时,在单个计算节点下指标计算平均每笔相应时间只需18ms。
4)查询过程如下,假定在图5状态下用户给定查询的时间范围“过去两天内网站W的总访问量”,在时序子结构的时间戳及range内找到其在时序子结构队列中对应的子结构位置,如图6所示,其左边界是时间戳为“2020-11-30 00:00:00”的时序子结构,右边界是时间戳为“2020-12-01 00:00:00”的时序子结构,针对寻找到的两个子结构位置间的所有子结构进行一次聚合计算,得到值为26400。此时,在单个计算节点下指标查询平均每笔响应时间只需8ms。
5)假定此时有三条查询进入,其查询窗口分别为20h,30h,40h,均查询120小时内的总交易量,其最小公倍数R=lcm{20,30,40}=120,最大公约数F=gcd{20,30,40}=10。根据上述算法2,将生成三个候选关键窗口W<10,10>,W<5,5>,W<2,2>。然而,由于W<5,5>和W<2,2>都能够覆盖W<10,10>,且W<10,10>的收益函数δ最大,最优的候选者应该是W<10,10>,遂添加窗口大小为10h的关键窗口(如图7所示)。根据时序子结构聚合算法,关键窗口内的数据需计算120小时内的总交易量,共耗时5ms;第一、二两个窗口复用第一个窗口的计算结果总共耗时0.5ms;第三个窗口则复用第一个窗口的计算结果总共耗时0.25ms;总计耗时6.25ms,相比于直接计算减少了13.75ms的查询耗时。
表2为此多模式时序子结构和其余三种传统构建方法的多项性能对比:
表2.多模式时序子结构与Flink的性能对比
基于上述三种传统方法的Flink,由于无法动态可控的调整系统内时序子结构时间跨度,在长时间跨度如100天下,因为系统中的子结构跨度是固定的,其单位通常较小如1秒,在100天情况下要聚合数量非常大的子结构,延迟巨大,无法有效计算每笔计算和查询的响应时间;利用基于公约数的时序子结构多模式匹配查询技术,平均每笔计算响应时间仅需18.5ms,平均每笔查询响应时间仅需8ms。综上所述,此基于公约数的时序子结构多模式匹配查询技术能大大降低处理时间,使系统性能取得大幅提升。
与前述基于公约数的时序子结构多模式匹配查询方法的实施例相对应,本发明还提供了基于公约数的时序子结构多模式匹配查询装置的实施例。
参见图8,本发明实施例提供的一种基于公约数的时序子结构多模式匹配查询装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,用于实现上述实施例中的基于公约数的时序子结构多模式匹配查询方法。
本发明基于公约数的时序子结构多模式匹配查询装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图8所示,为本发明基于公约数的时序子结构多模式匹配查询装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图8所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的基于公约数的时序子结构多模式匹配查询方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。
Claims (6)
1.一种基于公约数的时序子结构多模式匹配查询方法,其特征在于,包括以下步骤:
(1)定义时序子结构:用户需要为多时序子结构定义一个时序子结构集合Substructure;Substructure包含参数range,代表Substructure包含数据的总时间范围;依据用户定义的range,聚合计算相应时间跨度的时序子结构,所有时序子结构时间跨度T根据用户需求而定为一个自然时间单位;
(2)初始化时序子结构:在定义完一个时序子结构队列Substructure之后,初始化一个时序子结构和其需维护的时序子结构队列,其时序子结构队列表述为时序中间态队列,时序中间态即时序子结构包含的原始数据聚合计算后获得的带有时间戳的数据中间状态;
(3)创建时序子结构:在聚合计算构建时序子结构过程中,根据以下步骤来创建时序子结构:
(3.1)定义时序子结构集合Substructure,当定义不为空时,将用户给定参数range作为Substructure的时间跨度单位;
(3.2)在所有时序子结构中寻找时间跨度为T的时序子结构,判断时序子结构是否过期,若时序子结构没有过期,将对应时间跨度T的时序子结构依照时间戳从近到远排列形成时序中间态队列,根据聚合计算逻辑计算并更新时序子结构存储的聚合值;若过期了则创建一个新的时序子结构,将根据聚合计算逻辑计算并存储其新的聚合值,并压入时序中间态队列的头部;
(3.3)判断时序中间态队列是否已满,若队列已满,新加入的数据将创建一个新的时序子结构,然后在队列的尾部弹出一个离当前时间最长的时序子结构并直接将其丢弃,而在队列最前方插入最新的子结构;
(4)查询时序子结构:用户给定查询的时间范围range之后,执行以下步骤:
(4.1)若找到了对应的时序子结构队列,在时序子结构的时间戳及range内找到在时序子结构队列中对应的起始时序子结构位置,然后根据聚合计算逻辑,针对寻找到的两个子结构位置间的所有子结构进行结构间的一次聚合计算,而不必进行重复的子结构内计算就能得出用户所查询的计算指标并将最终结果返回给用户;
(4.2)若用户的查询找不到对应的时序子结构队列,此时根据用户的查询条件重新构建一个以查询条件为定义的时序子结构队列,然后按照步骤(4.1)返回查询结果;
(4.3)当存在多个查询时,时序子结构查询算法可描述如下:对于一组无重复的查询时间窗口,第i个查询的时间窗口记为Wi{m*s,m*s+Ti},其中Ti为第i个查询时间窗口的时序子结构的时间跨度,s为两个时间切片开始时刻的间隔,m为大于等于0的整数,如果Ti>Tj,并且对任何间隔I=[a,b),如果Wi存在间隔Ia=[a,x)并且Wj存在间隔Ib=[y,b),使得a<y和x<b,那么Wi被Wj覆盖,表示为Wi≤Wj,对窗口Wj的查询能够复用对窗口Wi的查询结果,因此,可以计算这一组无重复的查询时间窗口的时间跨度的最大公约数,若结果对应的查询时间窗口为这一组无重复的查询时间窗口之一,则将其作为关键窗口,若结果不存在这一组无重复的查询时间窗口之中,此时以最大公约数对应的时间跨度新添加一个查询时间窗口,作为关键窗口,关键窗口能够被所有的查询时间窗口覆盖,其他窗口查询能够复用关键窗口,缩短查询时间。
2.根据权利要求1所述的一种基于公约数的时序子结构多模式匹配查询方法,其特征在于,步骤(2)中,需要记录时序子结构定义的长度range,保证聚合计算后时序子结构的时间跨度不超过range。
3.根据权利要求1所述的一种基于公约数的时序子结构多模式匹配查询方法,其特征在于,步骤(3.2)中,判断是否过期的依据是时序子结构所带时间戳与当前记录时间大小;若超过当前记录时间则表述已经过期。
4.根据权利要求1所述的一种基于公约数的时序子结构多模式匹配查询方法,其特征在于,步骤(3.3)中,判断队列已满的方式是,在将时序子结构一个个压入到队列中后,当最后一个时序子结构所携带的时间戳距队列尾部时序子结构的时间戳的时间跨度超过了range时,则判断其队列已满。
5.一种基于公约数的时序子结构多模式匹配查询装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,其特征在于,所述处理器执行所述可执行代码时,用于实现如权利要求1-4中任一项所述的基于公约数的时序子结构多模式匹配查询方法的步骤。
6.一种计算机可读存储介质,其上存储有程序,其特征在于,该程序被处理器执行时,实现如权利要求1-4中任一项所述的基于公约数的时序子结构多模式匹配查询方法的步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2022113476434 | 2022-10-31 | ||
CN202211347643 | 2022-10-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115640333A true CN115640333A (zh) | 2023-01-24 |
Family
ID=84947000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211357508.8A Pending CN115640333A (zh) | 2022-10-31 | 2022-11-01 | 一种基于公约数的时序子结构多模式匹配查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115640333A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116483874A (zh) * | 2023-06-25 | 2023-07-25 | 北京奇虎科技有限公司 | 业务查询方法、装置、设备及存储介质 |
-
2022
- 2022-11-01 CN CN202211357508.8A patent/CN115640333A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116483874A (zh) * | 2023-06-25 | 2023-07-25 | 北京奇虎科技有限公司 | 业务查询方法、装置、设备及存储介质 |
CN116483874B (zh) * | 2023-06-25 | 2023-12-05 | 北京奇虎科技有限公司 | 业务查询方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111159252A (zh) | 事务执行方法、装置、计算机设备及存储介质 | |
CN110058958B (zh) | 用于管理数据备份的方法、设备和计算机程序产品 | |
CN109960686A (zh) | 数据库的日志处理方法和装置 | |
CN104834657A (zh) | 用户行为分析方法及服务器 | |
WO2017185576A1 (zh) | 一种多流流式数据的处理方法、系统、存储介质及设备 | |
CN111722918A (zh) | 业务标识码生成方法、装置、存储介质及电子设备 | |
CN115640333A (zh) | 一种基于公约数的时序子结构多模式匹配查询方法及装置 | |
CN112905638B (zh) | 一种基于喇叭状的时间切片处理方法 | |
US20110179013A1 (en) | Search Log Online Analytic Processing | |
CN105512051B (zh) | 一种自学习型智能固态硬盘缓存管理方法和装置 | |
CN112347143A (zh) | 多数据流处理方法、装置、终端及存储介质 | |
CN112818039A (zh) | 一种解决乱序事件和晚到数据的精准窗口处理方法 | |
CN113961573B (zh) | 一种时序数据库查询方法和查询系统 | |
Ho et al. | Scalable group-based checkpoint/restart for large-scale message-passing systems | |
CN117472967B (zh) | 一种基于数据使用热度的数据生命周期管理方法及系统 | |
Lee et al. | Concurrency control using timestamp ordering in broadcast environments | |
CN103888498B (zh) | 信息推送方法、装置、终端及服务器 | |
US10366094B2 (en) | Data access using aggregation | |
CN113253924B (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN106933882A (zh) | 一种大数据增量计算方法和装置 | |
JP2023070105A (ja) | クエリパイプライン実行のスケジューリング | |
Li et al. | Two-level incremental checkpoint recovery scheme for reducing system total overheads | |
Lee et al. | Using predeclaration for efficient read-only transaction processing in wireless data broadcast | |
CN114547022B (zh) | 一种数据缓存优化的方法、系统、设备和存储介质 | |
CN115562866A (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 |