分布式GK Summary算法


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 大小排序:

Q={(x1,rmin(x1),rmax(x1)),(x2,rmin(x2),rmax(x2)),...,(xn,rmin(xn),rmax(xn))}Q={(y1,rmin(y1),rmax(y1)),(y2,rmin(y2),rmax(y2)),...,(ym,rmin(ym),rmax(ym))}

  注,上述summary基于(v,rmin,rmax) 形式,之前博客已经说明,该形式等价于(v,g,Δ) ,后者主要方便新增数据的summary更新,但是前者可读性更高,故本文说明基于前者形式。

  如何merge生成最终Q

{(z1,rmin(z1),rmax(z1)),(z2,rmin(z2),rmax(z2)),...,(zn,rmin(zn),rmax(zs))}

  Merge方案:首先,考虑s=n+m ,关键是分配每个Q 中summary的zirminQ(zn) 以及rmaxQ(zn)
  不失一般性,假设分配Q 中的xrQzi ,满足:

maxysQ<xrminytQ>xr

  此时, 可以分配rminQ(zn)rmaxQ(zn)

rminQ(zi)={rminQ(xr)rminQ(xr)+rminQ(ys),ys,

rmaxQ(zi)={rmaxQ(xr)+rmaxQ(ys)rmaxQ(xr)+rmaxQ(yt)1,yt,

  分配完Q ,同样地,对Q 执行一次,这样Q 就补充到s=n+m ,这就是一种Merge方案。

  证明上述方案的可行性,已知QQ 满足误差约束条件:

maxiQ(gi+Δi)2ϵN

maxiQ(gi+Δi)2ϵM

  现在转化为如何证明:maxiQ(gi+Δi)2ϵ(N+M)
  证明之前,先说明merge的一般性质:
Q:maxiQ(gi+Δi)2ϵNQ:maxiQ(gi+Δi)2ϵMmerge(Q,Q):maxiQ(gi+Δi)2max(ϵ,ϵ)(N+M)

  证明这条性质,间接的也就证明上述merge方案的可行性。下面分2种情况分别证明:

  1) 在Q 中相连zizi+1 来源于同一个Q 或者Q ,不失一般性,假设都来源于Q ,分别对应于xrxr+1 。根据rmin(zn) 分配定义,可得rminQ(zi)rminQ(xr) ,同样地,rmaxQ(zi+1)rmaxQ(xr+1)+rmaxQ(yt)1 ,位置关系如下图所示:


这里写图片描述

  所以:

rmaxQ(zi+1)rminQ(zi)[rmaxQ(xr+1)+rmaxQ(yt)1]rminQ(xr)=[rmaxQ(xr+1)rminQ(xr)]+[rmaxQ(yt)1][rmaxQ(xr+1)rminQ(xr)]+[rmaxQ(yt)rminQ(yt1)]  (rminQ(yt1)1)2ϵN+2ϵM=2max(ϵ,ϵ)(N+M)

  2) 在Q 中相连zizi+1 来源不同,不失一般性,假设zi 源于Q ,zi+1 源于Q ,分别对应于xryt 。根据rmin(zn) 分配定义,可得rminQ(zi)rminQ(xr) ,同样地,rmaxQ(zi+1)rmaxQ(yt)+rmaxQ(xr+1)1 ,位置关系如下图所示:


这里写图片描述

  所以:

rmaxQ(zi+1)rminQ(zi)[rmaxQ(yt)+rmaxQ(xr+1)1]rminQ(xr)=[rmaxQ(xr+1)rminQ(xr)]+[rmaxQ(yt)1][rmaxQ(xr+1)rminQ(xr)]+[rmaxQ(yt)rminQ(yt1)]  (rminQ(yt1)1)2ϵN+2ϵM2max(ϵ,ϵ)(N+M)

  得证。

  最后,结论扩展:对于quantile summary 集合:Q1,Q2,...,Qk , 满足误差为ϵ1,ϵ2,...,ϵk 约束,Merge(Q1,Q2,...,Qk) 满足误差为:ϵ=max1..k(ϵi)

2.2 Prune操作

   Merge操作是将对应summary 合并到一块,生成summary 的结果数是增多的,如何减少Merge的结果数呢?即定义Prune操作,但减少并不是没有代价的,需要增大误差边界。下面定义Prune操作:

  假设将S 结果数减少到B ,Prune操作为Prune(S,B) ,其中|S| 代表QSummary S 对应的数据集大大小。

 QSummary Prune(QSummary S,int B){      QSummary R=ϕ;      for (i=1,(1/B)×|S|,(2/B)×|S|,(3/B)×|S|,...,|S|)     {          v=Query(S,i);    //GK Summary          rmin(v)=rmin(v) in summaryQ;          rmax(v)=rmax(v) in summaryQ;          R=R(v,rmin(v),rmax(v);     }     return R;}

   先说结论,Qϵapproximate quantile summary ,则:

Q=Prune(Q,B):(ϵ+1/(2B))approximate quantile summary

   证明:假设qiqi+1Prune(Q,B) 中的两个相连summary,位置分布如下图所示:

这里写图片描述

  其中vkqiQ 的排序,vmqi+1Q 的排序,因此,mk(i/B)×|S|

rmax(qi+1)rmin(qi)=rmax(vm)rmin(vk)=rmax(vm)+    +rmin(vm1)rmin(vm1)    +rmin(vm2)rmin(vm2)     +....    +rmin(vk+1)rmin(vk+1)    rmin(vk)

rmax(qi+1)rmin(qi)=rmax(vm)rmin(vm1)+rmin(vm1)rmin(vm2)+rmin(vm2)rmin(vm3)+....+rmin(vk+2)rmin(vk+1)+rmin(vk+1)rmin(vk)

rmax(qi+1)rmin(qi)=rmax(vm)rmin(vm1)+gm1+gm2+...+gk+1

  之前博文说明g 表示对应summary 覆盖数据量,因此,

gm1+gm2+...+gk+1(1/B)×|S|

  结合rmax(vm)rmin(vm1)2ϵ|S| , 可得:

rmax(qi+1)rmin(qi)2(ϵ+1/(2B))×|S|

  得证。


参考文献

  1. Emory大学Stream DB System课程关于分布式GK Summary算法材料:
    http://www.mathcs.emory.edu/~cheung/Courses/584-StreamDB/Syllabus/08-Quantile/Greenwald-D.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章