Infobright工作原理

2021-09-01 19:01:00 字數 1077 閱讀 3863

前面已經簡要分析了infobright的構架,現在來介紹infobright的工作原理。

粗糙集(rough sets)是infobright的核心技術之一。infobright在執行查詢的時候會根據知識網路(knowledge grid)把dp分成三類:

相關的dp(relevant packs),滿足查詢條件限制的dp

不相關的dp(irrelevant packs),不滿足查詢條件限制的dp

可疑的dp(suspect packs),dp裡面的資料部分滿足查詢條件的限制

下面是乙個案例:

如圖所示,每一列總共有5個dp,其中限制條件是a>6。所以a1、a2、a4就是不相關的dp,a3是相關的dp,a5是可疑的dp。那麼執行查詢的時候只需要計算b5中滿足條件的記錄的和然後加上sum(b3),sum(b3)是已知的。此時只需要解壓縮b5這個dp。從上面的分析可以知道,infobright能夠很高效地執行一些查詢,而且執行的時候where語句的區分度越高越好。where區分度高可以更精確地確認是否是相關dp或者是不相關dp亦或是可以dp,盡可能減少dp的數量、減少解壓縮帶來的效能損耗。在做條件判斷的使用,一般會用到上一章所講到的histogram和cmap,它們能夠有效地提高查詢效能。

多表連線的的時候原理也是相似的。先是利用pack-to-pack產生join的那兩列的dp之間的關係。

比如:select max(x.d) from t join x on t.b = x.c where t.a > 6。pack-to-pack產生t.b和x.c的dp之間的關係矩陣m。假設t.b的第乙個dp和x.c的第乙個dp之間有元素交叉,那麼m[1,1]=1,否則m[1,1]=0。這樣就有效地減少了join操作時dp的數量。

前面降到了解壓縮,順便提一提dp的壓縮。每個dp中的64k個元素被當成是乙個序列,其中所有的null的位置都會被單獨儲存,然後其餘的non-null的資料會被壓縮。資料的壓縮跟資料的型別有關,infobright會根據資料的型別選擇壓縮演算法。infobright會自適應地調節演算法的引數以達到最優的壓縮比。

**

infobright安裝與配置

infobright是基於專利技術的列式資料庫,乙個基於mysql開發的開源資料倉儲 data warehouse 軟體,可作為mysql的乙個儲存引擎來使用,select查詢與普通mysql無區別。一 幾大優點 1 高壓縮比率,平均壓縮比可達10 1。經測試,我們的1500萬條697m日誌資料壓縮...

Infobright 資料倉儲

據倉庫引擎,採用他們自己的knowledge grid架構 一直沒有明白這兩個單詞 該引擎採取內部管理自身優化查詢的方式,給使用者帶來更為輕鬆的體驗。我們所要做的就是寫出 漂亮 的sql,後面我會關於sql語句說點有趣的東西。infobright像很多優秀的開源軟體一樣,也都具有兩個版本,社群版 i...

infobright系列二 資料遷移

安裝之後把之前infobright的資料遷移到新安裝的infobright上。2 scp 把舊資料拷到新安裝的infobright上 3 修改 etc my ib.cnf的資料目錄 4 修改 etc init.d mysqld ib 的相應資料目錄 5 啟動服務 option knlevel,val...