CN114595280B - 基于滑动窗口的时间成员查询方法、装置、终端及介质 - Google Patents
基于滑动窗口的时间成员查询方法、装置、终端及介质 Download PDFInfo
- Publication number
- CN114595280B CN114595280B CN202210500764.1A CN202210500764A CN114595280B CN 114595280 B CN114595280 B CN 114595280B CN 202210500764 A CN202210500764 A CN 202210500764A CN 114595280 B CN114595280 B CN 114595280B
- Authority
- CN
- China
- Prior art keywords
- sliding
- query
- window
- sliding window
- data structure
- 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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
-
- 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/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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/248—Presentation of query results
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于滑动窗口的时间成员查询方法、装置、终端及介质,上述方法包括:基于目标数据流,建立结构化索引,所述结构化索引包括多个滑动窗口,所述滑动窗口基于概率数据结构建立,所述概率数据结构包括第一设定数量的布隆过滤器,每个布隆过滤器存储所述目标数据流中第二设定数量的元素且每个所述元素使用同一个哈希函数同时存储在第二设定数量的布隆过滤器中;基于查询的时间周期,根据二分查找法在所述结构化索引中查找,获得与所述时间周期对应的滑动窗口集;基于查询的成员元素,依次查询所述滑动窗口集中的滑动窗口,获得查询结果。与现有技术相比,查询效率高、查询结果准确;不仅可以实现成员查询,还能实现频数查询。
Description
技术领域
本发明涉及数据存储技术领域,尤其涉及的是一种基于滑动窗口的时间成员查询方法、装置、终端及介质。
背景技术
目前很多领域中出现了数据流的应用需求,例如电信网络、连锁的零售业的销售、科学实验、动态产品加工过程以及传感器网络等。
数据流一般具有实时性、时效性、无限性以及瞬时性的特点。数据流的处理目标,最重要的是支持实时、连续的查询,以用于信息统计、性能评估、状态监控、实时处理、模式挖掘和辅助决策。除了实时查询外,对于很多应用,查询和参考历史的数据信息也是必要的。例如电信业务的话单查询,可能需要数月之前的特定通话记录、过去某一段时间的相关统计等。
因此,在数据流处理中,时间成员查询和频数查询是常见的两项任务。时间成员查询用于查询一个元素在某段时间周期中是否出现过;频数查询用于查询一个元素在某段时间周期中出现的次数。
然而,现有的时间成员查询算法PBF(Persistent bloom filter)的时间周期不能滑动,查询结果的准确率不高,并且无法实现频数查询。
发明内容
本发明的主要目的在于提供一种基于滑动窗口的时间成员查询方法、装置、终端及介质,旨在解决现有技术中的时间成员方法查询结果准确率不高、不能实现频数查询的问题。
为了实现上述目的,本发明第一方面提供一种基于滑动窗口的时间成员查询方法,其中,上述方法包括:
基于目标数据流,建立结构化索引,所述结构化索引包括多个滑动窗口,所述滑动窗口的周期长度设有多种,所述滑动窗口基于概率数据结构建立,所述概率数据结构包括第一设定数量的布隆过滤器,每个布隆过滤器存储所述目标数据流中第二设定数量的元素且每个所述元素使用同一个哈希函数同时存储在第二设定数量的布隆过滤器中;
基于查询的时间周期,根据二分查找法在所述结构化索引中查找,获得与所述时间周期对应的滑动窗口集;
基于查询的成员元素,依次查询所述滑动窗口集中的滑动窗口,获得查询结果。
可选的,所述结构化索引包括至少两层索引层,每层所述索引层均包括所述滑动窗口,每层所述索引层中的所述滑动窗口的周期长度相同且各个所述索引层的所述周期长度不相同,还包括:
基于所述结构化索引创建二叉树模型,所述滑动窗口形成所述二叉树模型的节点。
可选的,所述二叉树模型中叶节点对应的滑动窗口的周期长度为所述目标数据流的一个周期长度,所述结构化索引中相邻所述索引层的滑动窗口的周期长度呈倍数关系。
可选的,在所述概率数据结构中存储所述目标数据流中的元素,包括:
更新所述概率数据结构中的布隆过滤器;
基于所述目标数据流中的元素的序号,确定所述概率数据结构中的位置索引;
以所述位置索引为起始位置,将所述元素保存在连续的所述第二设定数量的布隆过滤器中。
可选的,所述更新所述概率数据结构中的布隆过滤器,包括:
以先入先出的队列方式更新所述概率数据结构中的布隆过滤器,所述概率数据结构的队首以滑动方式接收新的布隆过滤器,所述概率数据结构的队尾以滑动方式淘汰旧的布隆过滤器。
可选的,基于查询的成员元素,依次查询所述滑动窗口集中的滑动窗口,获得查询结果,包括:
基于所述滑动窗口的周期长度,获得所述滑动窗口的子窗口集;
若所述成员元素在所述子窗口集中的任一子窗口中不存在,则判定所述查询结果为不存在;
否则判定所述查询结果为存在。
可选的,所述布隆过滤器为计数型布隆过滤器,所述基于查询的成员元素,依次查询所述滑动窗口集中的滑动窗口,获得查询结果,还包括:
若所述成员元素存在于所述滑动窗口,获取所述滑动窗口中保存的所述成员元素的次数;
累加所有的所述次数,获得成员元素的频数查询结果;
输出所述频数查询结果。
本发明第二方面提供一种基于滑动窗口的时间成员资格查询装置,其中,上述装置包括:
数据构建模块,用于建立结构化索引,所述结构化索引包括多个滑动窗口,所述滑动窗口的周期长度设有多种,所述滑动窗口基于概率数据结构建立,所述概率数据结构包括第一设定数量的布隆过滤器,每个布隆过滤器存储所述目标数据流中第二设定数量的元素且每个所述元素使用同一个哈希函数同时存储在第二设定数量的布隆过滤器中;
匹配模块,用于基于查询的时间周期,根据二分查找法在所述结构化索引中查找,获得与所述时间周期对应的滑动窗口集;
查询模块,用于基于查询的成员元素,依次查询所述滑动窗口集中的滑动窗口,获得查询结果。
本发明第三方面提供一种智能终端,上述智能终端包括存储器、处理器以及存储在上述存储器上并可在上述处理器上运行的基于滑动窗口的时间成员查询程序,上述基于滑动窗口的时间成员查询程序被上述处理器执行时实现任意一项上述基于滑动窗口的时间成员查询方法的步骤。
本发明第四方面提供一种计算机可读存储介质,上述计算机可读存储介质上存储有基于滑动窗口的时间成员查询程序,上述基于滑动窗口的时间成员查询程序被处理器执行时实现任意一项上述基于滑动窗口的时间成员查询方法的步骤。
由上可见,与现有技术相比,本发明方案设计以布隆过滤器为结构单元的概率数据结构,概率数据结构中使用一个哈希函数将目标数据流的元素存储在多个布隆过滤器中,并通过该概率数据结构建立目标数据流的结构化索引,结构化索引中包括了多种周期长度的滑动窗口,通过二分查找法查找结构化索引时,查询效率高、查询结果准确;由于以布隆过滤器为结构单元,不仅可以实现成员查询,还能实现频数查询。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例提供的基于滑动窗口的时间成员查询方法的流程示意图;
图2是图1实施例的概率数据结构示意图;
图3是图1实施例的时间周期分段方法示意图;
图4是图1实施例实现频数查询的流程示意图;
图5是本发明实施例提供的基于滑动窗口的时间成员查询装置的结构示意图;
图6是本发明实施例提供的一种智能终端的内部结构原理框图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况下,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当…时”或“一旦”或“响应于确定”或“响应于检测到”。类似的,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述的条件或事件]”或“响应于检测到[所描述条件或事件]”。
下面结合本发明实施例的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其它不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
目前很多领域中出现了数据流的应用需求,例如电信网络、连锁的零售业的销售、科学实验、动态产品加工过程以及传感器网络等。它们连续地产生大量的数据,而又要求根据这些数据实时得到想要的结果,这种应用是传统的数据库管理系统所不能很好地解决的,因此传统的数据库管理系统主要针对持久稳定的数据集进行数据管理,这种持续增长的数据流用稳定的数据集来表示显得不再适合。
在数据流处理中,时间成员查询和频数查询是常见的两项任务。时间成员查询用于查询一个元素在某段时间周期中是否出现过;频数查询用于查询一个元素在某段时间周期中出现的次数。
为了支持这种查询,我们必须对数据流提取出能保留原始数据特征的概要信息,形成持久性的数据,使用有限的存储系统及一些特殊的存储方法来存储和管理这些信息。目前时间成员查询算法PBF(Persistent bloom filter)较佳地实现了时间成员查询。然而,现有的PBF算法中的时间周期不能滑动,查询结果的准确率仍需进一步地改进;并且现有的PBF算法由于是位查找,只能实现成员资格查询,无法实现频数查询。
本发明方案提出了一种新颖且高效的以布隆过滤器为结构单元的概率数据结构,通过将该概率数据结构结合PBF算法,实现了支持滑动窗口的增强型PBF,提升查询的准确率,并且可以通过变换概率数据结构中的结构单元(Sketch)为支持频数查询的结构单元,就可以同时实现时间成员查询和频数查询。
示例性方法
如图1所示,本发明实施例提供一种基于滑动窗口的时间成员查询方法,具体的,上述方法包括如下步骤:
步骤S100:基于目标数据流,建立结构化索引,所述结构化索引包括多个滑动窗口,所述滑动窗口的周期长度设有多种,所述滑动窗口基于概率数据结构建立,所述概率数据结构包括第一设定数量的布隆过滤器,每个布隆过滤器存储所述目标数据流中第二设定数量的元素且每个所述元素使用同一个哈希函数同时存储在第二设定数量的布隆过滤器中;
其中,目标数据流是指各种领域中产生的实时、连续、海量的数据。如高速、海量的网络数据,数据流可能是各种业务数据流,如IP业务流、用户点击流、用户查询流、网页服务器日志等。这种持续增长的数据流用现有的数据库系统来管理已经不再适合,因此,本发明提出了一种HoppingSketch(概率数据结构)来管理数据流。
具体的, HoppingSketch(概率数据结构)包括m个布隆过滤器,每个布隆过滤器大小为n位,每个布隆过滤器使用一个哈希函数存储k个元素的数据,且每个元素存储在k个布隆过滤器中,所述的k个布隆过滤器称为滑动窗口, k为周期长度。
在HoppingSketch中存储新元素时,根据目标数据流中的元素的序号,首先确定在HoppingSketch中的位置索引,然后以所述位置索引为起始位置,将新元素保存在连续的k个布隆过滤器中。显然存储新元素时,会更新概率数据结构中的布隆过滤器,即将HoppingSketch中m个布隆过滤器中最旧的布隆过滤器删除,创建新的布隆过滤器加入至HoppingSketch中。
由于在高速和有限的内存中,频繁的分配和释放内存,会导致负载不均衡,影响内存的处理效率。因此,本发明并没有采取先清除m个布隆过滤器中最旧的元素的信息,然后根据释放的内存创建新的布隆过滤器等常规方法,而是以先入先出的队列方式更新概率数据结构中的布隆过滤器,概率数据结构的队首以滑动方式接收新布隆过滤器,概率数据结构的队尾以滑动方式淘汰旧布隆过滤器。假定使用一个数组R来存储所有的m个布隆过滤器,变量lat表示最新元素的序号,m个布隆过滤器Blat-m+1,Blat-m+2,...,Blat存储在R中(lat>=m),布隆过滤器Bk存储在R[k mod m]。存储新元素时,将变量lat加1,然后删除旧的布隆过滤器R[lat mod m],然后为R[lat mod m]分配一个新的布隆过滤器。通过上述内存共享方法,可以提高内存分配的效率,避免发生负载不均衡的现象。
具体的如图2所示,假设m=6,k=3,元素6被存储至B6、B7、B8中。当新元素7需要存储时,删除最旧的布隆过滤器B3,创建新布隆过滤器B9,元素7被存储至布隆过滤器B7、B8、B9中。
与常规的一个布隆过滤器使用多个哈希函数存储所不同,本发明是将一个元素使用一个哈希函数存储在k个布隆过滤器中,如上述的元素7被存储至3个布隆过滤器B7、B8、B9中。也就是说元素w会插入至下述布隆过滤器Bw,Bw+1,…,Bw+k-1中。当将元素e插入第i个布隆过滤器Bi时,使用第i个布隆过滤器中唯一的哈希函数hi(.)对e进行哈希操作,即设置布隆过滤器Bi中的位Bi[(hi(e)+w) mod n]为1,其中w 为新元素的序号,n是布隆过滤器的位大小。具体的如图2所示,例如将元素8,即(e,8)插入至B8、B9、B10中时,使用同一个哈希函数对元素e进行处理,当将(e,8)插入B9时,我们把位B9[(h9(e)+8)mod n]设置为1。
在上述HoppingSketch的数据结构的基础上,接收目标数据流时,本发明建立包括多个滑动窗口的结构化索引,并且滑动窗口的周期长度设有多种。查询时就可以在滑动窗口中进行查询,提高查询效率和查询的准确率。
进一步的,基于上述HoppingSketch的数据结构,本实施例基于目标数据流建立的结构化索引设有L层索引层(L>=2),每层索引层均包括滑动窗口。并且每层索引层中的滑动窗口的周期长度相同,且各个索引层的周期长度不相同。由于本实施例为了查询快速和高效,根据结构化索引创建了二叉树模型,因此本实施例的结构化索引中相邻索引层滑动窗口的周期长度呈两倍关系,并且第L-1层的滑动窗口的周期长度对应于目标数据流的一个周期长度。假定l层滑动窗口的长度为Kl,则 Kl=2L-l-1,其中,l[0,L-1]。l层中包括Ml个滑动窗口,其中。为了下面论述中便于与第L-1层的滑动窗口区分,本发明将0、1、…L-2层的窗口称为超级窗口。其中,l层的滑动窗口w记为Wl,w,由(w-1)Kl+1, (w-1)Kl+2, …, wK_l组成。从Wl,w的定义可以看出,对于l=0, 1,…,L-2层,Wl,w=Wl+1,2w-1 Wl+1,2w。因此,可以用二叉树模型来表示结构化索引,每个二叉树的节点对应于一个滑动窗口Wl,w,并且该节点有两个子节点,分别为Wl+1,2w-1和Wl+1,2w。二叉树模型中的叶子节点对应于L-1层的滑动窗口,也就是说二叉树叶子节点对应的滑动窗口的周期长度为1。
由上述可以得出,与现有的时间成员查询方法PBF所不同,本发明中每个二叉树节点中的数据的是HoppingSketch,而PBF中的二叉树节点中的数据是布隆过滤器。
从Ml的定义可以看出,如果元素e存储在L-1层的HoppingSketch中,则包含元素e的层i的超级窗口e’也存储在层i的HoppingSketch中。当需要存储新元素e的序号为w时,枚举索引层l=0,1,…,L-1,对于满足条件w mod 2L-l-1=1的索引层,为其分配一个新的布隆过滤器,然后在超级窗口中插入新元素e,实现二叉树模型的动态创建。
步骤S200:基于查询的时间周期,根据二分查找法在结构化索引中查找,获得与所述时间周期对应的滑动窗口集;
具体的,首先如图3所示根据二分查找法将时间周期分段,获得不同的时间段,再在二叉树模型中查找该时间段,获得二叉树节点对应的滑动窗口,将该滑动窗口加入滑动窗口集中。所有的时间段查找完毕后,就获得与时间周期对应的滑动窗口集。对于一个时间周期[x,y],可以获得对应的O(logM)个滑动窗口。滑动窗口集可能包括二叉树叶子节点对应的L-1层的滑动窗口,也可能包括0、1、…L-2层的滑动窗口(即超级窗口)。二分查找法是本领域的常规技术手段,在此不再赘述。需要说明的是,在结构化索引中查找元素的具体方法并不限于本实施例中在二叉树模型中查找的方法,具体可以根据结构化索引采取的查找模型作相应替换。
步骤S300:基于查询的成员元素,依次查询滑动窗口集中的滑动窗口,获得查询结果。
具体的,根据查询的成员元素,在滑动窗口集中的每个滑动窗口中进行判定,若是在任一个滑动窗口中判定为不存在,则查询结果为不存在,否则判定为存在。
具体步骤包括:根据滑动窗口的长度,获得滑动窗口的子窗口集,其中每个子窗口为一个布隆过滤器。若成员元素在子窗口集中的任一子窗口中不存在时,则判定该滑动窗口中不存在上述成员元素,否则判定该滑动窗口中存在上述成员元素。也就是说对于第w个元素e,查询(e,w)在Bw,Bw+1,…,Bw+k-1中是否存在时,当且仅当被查询的布隆过滤器之一报告“不存在”时,即w<=i<=w+k-1, Bi没有被删除和Bi[(hi(e)+i) mod n]=0时,结果为不存在,否则结果为存在。
在一些实施场景中,如图2所示,查询元素(e,3)是否存在时,在B3,B4,B5查询是否“存在”。由于B3,B4在阶段3已被清空(或保存到外部存储),跳过它们并查询B5。如果布隆过滤器B5报告“存在”,即B5[(h5(e)+3)mod n]=1,那么元素(e,3)存在。
由上所述,本实施例设计以布隆过滤器为结构单元的概率数据结构,概率数据结构中使用一个哈希函数将目标数据流的元素存储在多个布隆过滤器中,并通过该概率数据结构建立目标数据流的结构化索引,结构化索引中包括了多种周期长度的滑动窗口,通过二分查找法查找结构化索引时,查询效率高、查询结果准确。
进一步的,使用计数型布隆过滤器作为概率数据结构中的结构单元,基于查询的成员元素,依次查询所述滑动窗口集中的滑动窗口,获得查询结果,如图4所示,还包括如下步骤:
步骤SA10:若所述成员元素存在于所述滑动窗口,获取所述滑动窗口中保存的所述成员元素的次数;
步骤SA20:累加所有的所述次数,获得成员元素的频数查询结果;
步骤SA30:输出所述频数查询结果。
具体的,如上述步骤S200所述,获得成员元素对应的滑动窗口集后,依次查询滑动窗口集中的滑动窗口,不仅判定成员元素在滑动窗口中是否存在,还包括若成员元素存在于滑动窗口中时,还获取到滑动窗口中保存的成员元素的次数,然后累加所有的次数,获得成员元素的频数查询结果并输出。在计数型布隆过滤器中查询元素的次数是本领域的常规技术手段,在此不再赘述。
综上所述,本发明将HoppingSketch实现为一个通用数据流处理框架,它可以通过变换不同的Sketch单元灵活地实现不同的功能,例如将Sketch单元替换为支持频数查询的Sketch(CM Sketch、CU Sketch、Count Sketch等)就可以实现频数查询的功能,因此能够同时实现时间成员查询和频数查询。
示例性设备
如图5所示,对应于上述基于滑动窗口的时间成员查询方法,本发明实施例还提供一种基于滑动窗口的时间成员资格查询装置,上述基于滑动窗口的时间成员资格查询装置包括:
数据构建模块600,用于基于目标数据流,建立结构化索引,所述结构化索引包括多个滑动窗口,所述滑动窗口的周期长度设有多种,所述滑动窗口基于概率数据结构建立,所述概率数据结构包括第一设定数量的布隆过滤器,每个布隆过滤器存储所述目标数据流中第二设定数量的元素且每个所述元素使用同一个哈希函数同时存储在第二设定数量的布隆过滤器中;
具体的,本发明提出了一种HoppingSketch(概率数据结构)来管理数据流。HoppingSketch(概率数据结构)包括m个布隆过滤器,每个布隆过滤器大小为n位,每个布隆过滤器使用一个哈希函数存储k个元素的数据,且每个元素存储在k个布隆过滤器中,所述的k个布隆过滤器称为滑动窗口, k为周期长度。
在上述HoppingSketch的数据结构的基础上,接收目标数据流时,本发明建立包括多个滑动窗口的结构化索引,并且滑动窗口的周期长度设有多种。查询时就可以在滑动窗口中进行查询,提高查询效率和查询的准确率。
进一步的,基于上述HoppingSketch的数据结构,本实施例基于目标数据流建立的结构化索引设有L层索引层(L>=2),每层索引层均包括滑动窗口。并且每层索引层中的滑动窗口的周期长度相同,且各个索引层的周期长度不相同。由于本实施例为了查询快速和高效,根据结构化索引创建了二叉树模型,因此本实施例的结构化索引中相邻索引层滑动窗口的周期长度呈两倍关系,并且第L-1层的滑动窗口的周期长度对应于目标数据流的一个周期长度。假定l层滑动窗口的长度为Kl,则 Kl=2L-l-1,其中,l [0,L-1]。l层中包括Ml个滑动窗口,其中。为了下面论述中便于与第L-1层的滑动窗口区分,本发明将0、1、…L-2层的窗口称为超级窗口。其中,l层的滑动窗口w记为Wl,w,由(w-1)Kl+1, (w-1)Kl+2, …, wK_l组成。从Wl,w的定义可以看出,对于l=0, 1,…,L-2层,Wl,w=Wl+1,2w-1 Wl+1,2w。因此,可以用二叉树模型来表示结构化索引,每个二叉树的节点对应于一个滑动窗口Wl,w,并且该节点有两个子节点,分别为Wl+1,2w-1和Wl+1,2w。二叉树模型中的叶子节点对应于L-1层的滑动窗口,也就是说二叉树叶子节点对应的滑动窗口的周期长度为1。
由上述可以得出,与现有的时间成员查询方法PBF所不同,本发明中每个二叉树节点中的数据的是HoppingSketch,而PBF中的二叉树节点中的数据是布隆过滤器。
从Ml的定义可以看出,如果元素e存储在L-1层的HoppingSketch中,则包含元素e的层i的超级窗口e’也存储在层i的HoppingSketch中。当需要存储新元素e的序号为w时,枚举索引层l=0,1,…,L-1,对于满足条件w mod 2L-l-1=1的索引层,为其分配一个新的布隆过滤器,然后在超级窗口中插入新元素e,实现二叉树模型的动态创建。
匹配模块610,用于基于查询的时间周期,根据二分查找法在所述结构化索引中查找,获得与所述时间周期对应的滑动窗口集;
具体的,首先如图3所示根据二分查找法将时间周期分段,获得不同的时间段,再在二叉树模型中查找该时间段,获得二叉树节点对应的滑动窗口,将该滑动窗口加入滑动窗口集中。所有的时间段查找完毕后,就获得与时间周期对应的滑动窗口集。对于一个时间周期[x,y],可以获得对应的O(logM)个滑动窗口。滑动窗口集可能包括二叉树叶子节点对应的L-1层的滑动窗口,也可能包括0、1、…L-2层的滑动窗口(即超级窗口)。
查询模块620,用于基于查询的成员元素,依次查询所述滑动窗口集中的滑动窗口,获得查询结果。
具体的,根据查询的成员元素,在滑动窗口集中的每个滑动窗口中进行判定,若是在任一个滑动窗口中判定为不存在,则查询结果为不存在,否则判定为存在。
具体的,本实施例中,上述基于滑动窗口的时间成员查询装置的各模块的具体功能可以参照上述基于滑动窗口的时间成员查询方法中的对应描述,在此不再赘述。
基于上述实施例,本发明还提供了一种智能终端,其原理框图可以如图6所示。上述智能终端包括通过系统总线连接的处理器、存储器、网络接口以及显示屏。其中,该智能终端的处理器用于提供计算和控制能力。该智能终端的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和基于滑动窗口的时间成员查询程序。该内存储器为非易失性存储介质中的操作系统和基于滑动窗口的时间成员查询程序的运行提供环境。该智能终端的网络接口用于与外部的终端通过网络连接通信。该基于滑动窗口的时间成员查询程序被处理器执行时实现上述任意一种基于滑动窗口的时间成员查询方法的步骤。该智能终端的显示屏可以是液晶显示屏或者电子墨水显示屏。
本领域技术人员可以理解,图6中示出的原理框图,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的智能终端的限定,具体的智能终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种智能终端,上述智能终端包括存储器、处理器以及存储在上述存储器上并可在上述处理器上运行的基于滑动窗口的时间成员查询程序,上述基于滑动窗口的时间成员查询程序被上述处理器执行时进行以下操作指令:
基于目标数据流,建立结构化索引,所述结构化索引包括多个滑动窗口,所述滑动窗口的周期长度设有多种,所述滑动窗口基于概率数据结构建立,所述概率数据结构包括第一设定数量的布隆过滤器,每个布隆过滤器存储所述目标数据流中第二设定数量的元素且每个所述元素使用同一个哈希函数同时存储在第二设定数量的布隆过滤器中;
基于查询的时间周期,根据二分查找法在所述结构化索引中查找,获得与所述时间周期对应的滑动窗口集;
基于查询的成员元素,依次查询所述滑动窗口集中的滑动窗口,获得查询结果。
本发明实施例还提供一种计算机可读存储介质,上述计算机可读存储介质上存储有基于滑动窗口的时间成员查询程序,上述基于滑动窗口的时间成员查询程序被处理器执行时实现本发明实施例提供的任意一种基于滑动窗口的时间成员查询方法的步骤。
应理解,上述实施例中各步骤的序号大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将上述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟是以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,上述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以由另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
上述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,上述计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,上述计算机程序包括计算机程序代码,上述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读介质可以包括:能够携带上述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,上述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不是相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.基于滑动窗口的时间成员查询方法,其特征在于,所述方法包括:
基于目标数据流,建立结构化索引,所述结构化索引包括多个滑动窗口,所述滑动窗口的周期长度设有多种,所述滑动窗口基于概率数据结构建立,所述概率数据结构包括第一设定数量的布隆过滤器,每个布隆过滤器存储所述目标数据流中第二设定数量的元素且每个所述元素使用同一个哈希函数同时存储在第二设定数量的布隆过滤器中,所述第二设定数量的连续的布隆过滤器构成所述滑动窗口;基于查询的时间周期,根据二分查找法在所述结构化索引中查找,获得与所述时间周期对应的滑动窗口集;
基于查询的成员元素,依次查询所述滑动窗口集中的滑动窗口,获得查询结果。
2.如权利要求1所述的基于滑动窗口的时间成员查询方法,其特征在于,所述结构化索引包括至少两层索引层,每层所述索引层均包括所述滑动窗口,每层所述索引层中的所述滑动窗口的周期长度相同且各个所述索引层的所述周期长度不相同,还包括:
基于所述结构化索引创建二叉树模型,所述滑动窗口形成所述二叉树模型的节点。
3.如权利要求2所述的基于滑动窗口的时间成员查询方法,其特征在于,所述二叉树模型中叶节点对应的滑动窗口的周期长度为所述目标数据流的一个周期长度,所述结构化索引中相邻所述索引层的滑动窗口的周期长度呈倍数关系。
4.如权利要求1所述的基于滑动窗口的时间成员查询方法,其特征在于,在所述概率数据结构中存储所述目标数据流中的元素,包括:
更新所述概率数据结构中的布隆过滤器;
基于所述目标数据流中的元素的序号,确定所述概率数据结构中的位置索引;
以所述位置索引为起始位置,将所述元素保存在连续的所述第二设定数量的布隆过滤器中。
5.如权利要求4所述的基于滑动窗口的时间成员查询方法,其特征在于,所述更新所述概率数据结构中的布隆过滤器,包括:
以先入先出的队列方式更新所述概率数据结构中的布隆过滤器,所述概率数据结构的队首以滑动方式接收新的布隆过滤器,所述概率数据结构的队尾以滑动方式淘汰旧的布隆过滤器。
6.如权利要求1所述的基于滑动窗口的时间成员查询方法,其特征在于,基于查询的成员元素,依次查询所述滑动窗口集中的滑动窗口,获得查询结果,包括:
基于所述滑动窗口的周期长度,获得所述滑动窗口的子窗口集;
若所述成员元素在所述子窗口集中的任一子窗口中不存在,则判定所述查询结果为不存在;
否则判定所述查询结果为存在。
7.如权利要求1所述的基于滑动窗口的时间成员查询方法 ,其特征在于,所述布隆过滤器为计数型布隆过滤器,所述基于查询的成员元素,依次查询所述滑动窗口集中的滑动窗口,获得查询结果,还包括:
若所述成员元素存在于所述滑动窗口,获取所述滑动窗口中保存的所述成员元素的次数;
累加所有的所述次数,获得成员元素的频数查询结果;
输出所述频数查询结果。
8.基于滑动窗口的时间成员资格查询装置,其特征在于,所述装置包括:
数据构建模块,用于基于目标数据流,建立结构化索引,所述结构化索引包括多个滑动窗口,所述滑动窗口的周期长度设有多种,所述滑动窗口基于概率数据结构建立,所述概率数据结构包括第一设定数量的布隆过滤器,每个布隆过滤器存储所述目标数据流中第二设定数量的元素且每个所述元素使用同一个哈希函数同时存储在第二设定数量的布隆过滤器中,所述第二设定数量的连续的布隆过滤器构成所述滑动窗口;
匹配模块,用于基于查询的时间周期,根据二分查找法在所述结构化索引中查找,获得与所述时间周期对应的滑动窗口集;
查询模块,用于基于查询的成员元素,依次查询所述滑动窗口集中的滑动窗口,获得查询结果。
9.智能终端,其特征在于,所述智能终端包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的基于滑动窗口的时间成员查询程序,所述基于滑动窗口的时间成员查询程序被所述处理器执行时实现如权利要求1-7任意一项所述基于滑动窗口的时间成员查询方法的步骤。
10.计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有基于滑动窗口的时间成员查询程序,所述基于滑动窗口的时间成员查询程序被处理器执行时实现如权利要求1-7任意一项所述基于滑动窗口的时间成员查询方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210500764.1A CN114595280B (zh) | 2022-05-10 | 2022-05-10 | 基于滑动窗口的时间成员查询方法、装置、终端及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210500764.1A CN114595280B (zh) | 2022-05-10 | 2022-05-10 | 基于滑动窗口的时间成员查询方法、装置、终端及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114595280A CN114595280A (zh) | 2022-06-07 |
CN114595280B true CN114595280B (zh) | 2022-08-02 |
Family
ID=81820442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210500764.1A Active CN114595280B (zh) | 2022-05-10 | 2022-05-10 | 基于滑动窗口的时间成员查询方法、装置、终端及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114595280B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104794170A (zh) * | 2015-03-30 | 2015-07-22 | 中国科学院信息工程研究所 | 基于指纹多重哈希布隆过滤器的网络取证内容溯源方法 |
CN105429968A (zh) * | 2015-11-06 | 2016-03-23 | 北京数智源科技股份有限公司 | 基于布隆过滤器的网络取证载荷归属方法及系统 |
CN105989061A (zh) * | 2015-02-09 | 2016-10-05 | 中国科学院信息工程研究所 | 一种滑动窗口下多维数据重复检测快速索引方法 |
CN110532307A (zh) * | 2019-07-11 | 2019-12-03 | 北京大学 | 一种流滑动窗口的数据存储方法及查询方法 |
CN113206740A (zh) * | 2020-01-30 | 2021-08-03 | Ovh公司 | 使用经适配的布隆过滤器对数据包/帧的内容进行处理的方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200821913A (en) * | 2006-11-15 | 2008-05-16 | Univ Nat Chiao Tung | String matching system by using bloom filter to achieve sub-linear computation time and method thereof |
-
2022
- 2022-05-10 CN CN202210500764.1A patent/CN114595280B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105989061A (zh) * | 2015-02-09 | 2016-10-05 | 中国科学院信息工程研究所 | 一种滑动窗口下多维数据重复检测快速索引方法 |
CN104794170A (zh) * | 2015-03-30 | 2015-07-22 | 中国科学院信息工程研究所 | 基于指纹多重哈希布隆过滤器的网络取证内容溯源方法 |
CN105429968A (zh) * | 2015-11-06 | 2016-03-23 | 北京数智源科技股份有限公司 | 基于布隆过滤器的网络取证载荷归属方法及系统 |
CN110532307A (zh) * | 2019-07-11 | 2019-12-03 | 北京大学 | 一种流滑动窗口的数据存储方法及查询方法 |
CN113206740A (zh) * | 2020-01-30 | 2021-08-03 | Ovh公司 | 使用经适配的布隆过滤器对数据包/帧的内容进行处理的方法和系统 |
Non-Patent Citations (2)
Title |
---|
One-Hashing Bloom Filter;Yang Tong 等;《IEEE》;20160211;第289-298页 * |
Sliding Sketches: A Framework using Time Zones for Data Stream Processing in Sliding Windows;Yang Tong等;《ACM》;20200820;第1015-1025页 * |
Also Published As
Publication number | Publication date |
---|---|
CN114595280A (zh) | 2022-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Aggarwal et al. | A framework for on-demand classification of evolving data streams | |
Qiao et al. | Fast Bloom filters and their generalization | |
EP1211612A2 (en) | A data structure and storage and retrieval method supporting ordinality based searching and data retrieval | |
CN113612749B (zh) | 一种面向入侵行为的溯源数据聚类方法及装置 | |
US20070226209A1 (en) | Methods and Apparatus for Clustering Evolving Data Streams Through Online and Offline Components | |
US20140122921A1 (en) | Data store capable of efficient storing of keys | |
JP2004518226A (ja) | データベースシステムおよびクエリオプティマイザ | |
CN110719106B (zh) | 一种基于节点分类排序的社交网络图压缩方法及系统 | |
CN110532307B (zh) | 一种流滑动窗口的数据存储方法及查询方法 | |
CN113190720B (zh) | 一种基于图压缩的图数据库构建方法、装置及相关组件 | |
US20070067327A1 (en) | Performing recursive database operators | |
CN113987105B (zh) | 基于滑动窗口的标签感知图形流草图构建方法及应用 | |
CN108563715A (zh) | 一种分布式的趋同行为挖掘方法与系统 | |
Kiran et al. | Discovering maximal periodic-frequent patterns in very large temporal databases | |
CN114595280B (zh) | 基于滑动窗口的时间成员查询方法、装置、终端及介质 | |
CN100397816C (zh) | 在网络设备中对接收数据包进行分类的方法 | |
CN112269726A (zh) | 一种数据处理方法及装置 | |
Likitha et al. | Discovering maximal partial periodic patterns in very large temporal databases | |
CN108011735B (zh) | 社区发现方法及装置 | |
CN112506875B (zh) | 文件存储方法、相关装置及文件存储系统 | |
CN115277245A (zh) | 基于属性的多维异常根因定位方法、系统及存储介质 | |
Nabil et al. | Mining frequent itemsets from online data streams: Comparative study | |
CN114884834A (zh) | 一种低开销的Top-k网络流高精度提取架构及方法 | |
CN109657018B (zh) | 一种分布式车辆行驶数据查询方法及终端设备 | |
Ahmadi et al. | A memory-optimized Bloom filter using an additional hashing function |
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 |