0.前言
本文主要介绍分布式GK Summay算法,考虑分布式流式数据库场景,博客内容来源主要是原始论文与Emory大学的流式数据库的课程内容,本文仅提取出关键内容加入笔者的个人理解,有错误还望谅解与告知。
1.背景
现在考虑分布式流式数据库,流式数据来源如下图:
上图中每个Processing Node需要统计对应的数据,然后将统计数据merge生成可查询的Summary。上篇博客我们知道对于数据流如何构建GK Summary来支持 ϵ−approximate ϕ−quantile 分位点查询,但是由于数据流来源分布不同,而查询应该基于全局数据,因此需要将所有GK Summary合并merge生成最终全局的Summary查询结构。本文就来探讨分布式GK summary的merge操作以及Prune操作。后续会介绍到Prune操作,不同于上篇GK Summary的delete与compress操作,该操作直接对Summary进行删减,会牺牲误差边界,merge与prune操作是后续A fast algorithm的基础操作。
2.分布式GK Summary算法
2.1 Merge操作
考虑2个summary merge情况,已经按照summary tuple内部 v 大小排序:
注,上述summary基于 (v,rmin,rmax) 形式,之前博客已经说明,该形式等价于 (v,g,Δ) ,后者主要方便新增数据的summary更新,但是前者可读性更高,故本文说明基于前者形式。
如何merge生成最终 Q :
Merge方案:首先,考虑 s=n+m ,关键是分配每个 Q 中summary的
不失一般性,假设分配 Q′ 中的 xr 到 Q 中
maxys∈Q″<xrminyt∈Q″>xr
此时, 可以分配 rminQ(zn) 与 rmaxQ(zn) :
rminQ(zi)={
rminQ′(xr)rminQ′(xr)+rminQ″(ys),不存在ys,其他