分佈式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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章