发明名称 基于时间滑动窗口的数据流点连接查询方法
摘要 本发明涉及基于时间滑动窗口的数据流点连接查询方法,该方法将一定时间内到来的数据流的元组存入缓冲区,进而对缓冲区内的元组批量与其要连接的时间滑动窗口内的元组进行连接,将完成连接的元组批量删除,将未完成连接的元组批量插入到其对应的时间滑动窗口中;从而大大减少了对时间滑动窗口加锁和解锁操作次数;将缓冲区未完成连接的元组插入到其对应的时间滑动窗口时用顺序存储链表存储元组在时间滑动窗口中的位置,顺序存储链表的头结点中存储该缓冲区的开辟时间,避免查找时间滑动窗口中过期数据时对整个时间窗口进行遍历,只需对顺序存储链表头结点进行遍历,即可找到时间滑动窗口中一批过期元组,降低了运算量,提高了效率。
申请公布号 CN103309966B 申请公布日期 2016.02.24
申请号 CN201310219213.9 申请日期 2013.06.04
申请人 中国科学院信息工程研究所 发明人 王坤朋;王伟平;木伟民;孟丹
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 北京轻创知识产权代理有限公司 11212 代理人 杨立
主权项 基于时间滑动窗口的数据流点连接查询方法,其特征在于,包括如下步骤:步骤1:为数据流A和数据流B分别建立基于时间的滑动窗口,分别为时间滑动窗口A和时间滑动窗口B,进入步骤2;步骤2:为数据流A和数据流B分别设定更新周期为ta和tb;步骤3:处理数据流A则依次执行步骤4至步骤8,处理数据流B则依次执行步骤9至步骤13;所述步骤4至步骤8与步骤9至步骤13并行执行;步骤4:数据流A的更新周期到来时创建一个缓冲区A(n‑1),n=2、3、4……,接收该更新周期内到来的数据流A的元组,并初始化元组的状态为有效,该缓冲区中所有元组具有相同的时间戳,时间戳为该缓冲区创建的时刻;步骤5:数据流A的更新周期再次到来时,缓冲区A(n‑1),n=2、3、4……,不再接收元组,而是开辟新的缓冲区A(n),n=2、3、4……,来接收后续到来的元组,同时对缓冲区A(n‑1)中的元组进行处理;步骤6:缓冲区A(n‑1)中所有的元组依次对时间滑动窗口B进行探测,查找与缓冲区A(n‑1)中元组连接属性值相同的元组;如果找到连接属性值相同的元组则进行连接并表明缓冲区A(n‑1)中该元组连接成功,如果未找到表明连接失败;步骤7:查看缓冲区A(n‑1)中所有元组连接情况,将连接成功的元组批量删除,将连接失败的元组批量插入到时间滑动窗口A中;步骤8:检查在时间滑动窗A口中停留时间超过预定时间TA且时间戳最小的一批元组并清理,检测是否有数据流A的元组到来,如果有则返回步骤5,否则待缓冲区A(n)中和时间滑动窗口A中的元组都处理完后结束;步骤9:数据流B的更新周期开始时创建一个缓冲区B(n‑1),n=2、3、4……,接收该更新周期内到来的数据流B的元组,并初始化元组的状态为有效,该缓冲区中所有元组具有相同的时间戳,该时间戳为缓冲区创建的时刻;步骤10:数据流B的更新周期再次到来时,缓冲区B(n‑1),n=2、3、4……,不再接收元组,而是开辟新的缓冲区B(n),n=2、3、4……,来接收后续到来的元组,同时对缓冲区B(n‑1)中的元组进行处理;步骤11:缓冲区B(n‑1)中的所有元组顺次对时间滑动窗口A进行探测,查找与缓冲区中B(n‑1)元组连接属性值相同的元组;如果找到连接属性值相同的元组则进行连接且表明缓冲区B(n‑1)中该元组连接成功,如果未找到表明连接失败;步骤12:查看缓冲区B(n‑1)中所有元组的连接情况;将连接成功的元组批量删除,将连接失败的元组批量插入到时间滑动窗口B中;步骤13:检查在时间滑动窗口B中停留时间超过预定时间TB且时间戳最小的一批元组并清理,检测是否有数据流B的元组到来,如果有则返回步骤10,否则待缓冲区B(n)中和时间滑动窗口B中的元组都处理完后结束。
地址 100093 北京市海淀区闵庄路甲89号