Sysbase可以說是列式資料庫的先驅,Sysbase IQ 15 就是Sybase 目前最新的列式資料庫。它具有強大的功能,包括資料的快速載入、超高速的分析效能、強大的業務智能分析、領先的資料建模能力等等。 Infobright是一個基於MySQL的資料倉儲系統,共工的不周山的blog上有挺詳細的介紹。
同樣是列式資料庫,但是Infobright和Sybase IQ系列還是有很大的不同。Infobright採用的Knowledge Grid來組織資料,Infobright內部是沒有索引,就這點就節省了不少的空間。而Sybase IQ系列還是使用了索引,而這些索引我個人的理解就是位元影像索引的改進版。白皮書上說,Infobright的資料壓縮比可以是10:1到40:1,個人拿龐大的日誌資料庫做了個小小實驗,感覺壓縮也沒那麼誇張。如果依據位元影像索引的思想,每列資料的相似性越高就會具有越高的壓縮比。Infobright應該也是滿足這一點的,但是具體Knowledge Grid內部如何?還不清楚,有待繼續考究。
Infobright的優點有很多,簡單列舉如下:
Infobright的優點:
1)高壓縮比率
2)快速響應複雜的分析查詢語句
3)隨著資料庫的逐漸增大,查詢和裝載效能基本保持穩定
4)沒有特殊的資料倉儲模型比如星狀模型、雪花模型)要求
5)無需要物化視圖、複雜的資料分區策略、索引
6)實施和管理簡單,需要極少的管理
7)和眾多的BI套件相容,比如Pentaho、Cognos、Jaspersoft。
Infobright有兩個版本ICE和IEE,目前ICE的版本是3.3.1,支援64位Linux和32位windows。ICE不支援DML,也就是不支援insert、update等操作。
粗糙集Rough Sets)是Infobright的核心技術之一。Infobright在執行查詢的時候會根據知識網路Knowledge Grid)把DP分成三類:
相關的DPRelevant Packs),滿足查詢條件限制的DP
不相關的DPIrrelevant Packs),不滿足查詢條件限制的DP
可疑的DPSuspect Packs),DP裡面的資料部分滿足查詢條件的限制
下面是一個案例:
,每一列總共有5個DP,其中限制條件是A>6。所以A1、A2、A4就是不相關的DP,A3是相關的DP,A5是可疑的DP。那麼執行查詢的時候只需要計算B5中滿足條件的記錄的和然後加上SumB3),SumB3)是已知的。此時只需要解壓縮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會自適應地調節演算法的參數以達到最優的壓縮比。