中文

亚 O(log n) 乱序滑动窗口聚合

数据结构与算法 2018-10-29 v1 数据库

摘要

滑动窗口聚合对数据流中最新信息进行总结。用户指定该总结的计算方式,通常指定为结合二元算子,因为这是已知最通用的形式,可借此避免朴素地扫描每个窗口。对于严格按序到达,在假设结合算子的前提下存在每窗口变化 O(1)O(1) 时间的算法。与此同时,实践中流数据略有乱序到达十分常见,例如由于时钟漂移或通信延迟。遗憾的是,对于乱序流,人们不得不求助于高延迟的缓冲,或付出每插入/淘汰 O(logn)O(\log n) 时间的代价,其中 nn 为窗口大小。本文提出 FiBA 的设计、分析与实现,一种新颖的滑动窗口聚合算法,其每插入或淘汰的摊还上界为 O(logd)O(\log d) 时间,其中 dd 为插入或淘汰值到窗口较近一端的距离。这意味着对于按序到达为 O(1)O(1) 时间,对于轻微乱序到达近乎 O(1)O(1) 时间,并随着 dd 趋近 nn 平滑过渡到 O(logn)O(\log n)。我们还证明了运行时间的匹配下界,表明其最优性。我们的算法与先前最先进技术同样通用:它仅需结合性,而不需可逆性或交换性。该算法的核心在于手指查找技术、惰性重平衡与位置感知部分聚合的精心结合。我们进一步展示如何回答聚合子窗口以供窗口共享的范围查询。最后,我们的实验评估表明 FiBA 在实践中表现良好并支持理论发现。

关键词

引用

@article{arxiv.1810.11308,
  title  = {Sub-O(log n) Out-of-Order Sliding-Window Aggregation},
  author = {Kanat Tangwongsan and Martin Hirzel and Scott Schneider},
  journal= {arXiv preprint arXiv:1810.11308},
  year   = {2018}
}