IBM公司在今年四月發布了最新的DB2資料庫,其中新增加了BLU加速器(BLU Acceleration)功能。從表面上看,BLU加速器是一個類似於列式儲存+記憶體計算的功能,但其中還有一些技術細節值得DBA注意。對此,資料庫諮詢顧問Curt Monash在他的部落格中對BLU加速器進行了細緻的解讀,方便DBA更深入地瞭解DB2 10.5版本中的這一新功能。
BLU加速器是新版DB2資料庫中的一個功能,它的作用類似於一個列式分析型DBMS。如果對BLU和非BLU表進行串連,其過程是先將所有BLU表串連,然後結果集再與其他DB2進行串連。至此,除了Oracle之外的其他主流企業級資料庫產品都已經添加了列式儲存的功能。
IBM宣稱,BLU能夠線性垂直擴充到64核CPU,而水平擴充將很快實現。IBM建議所有面向分析負載的DB2表都應該使用BLU加速器。第一個版本的BLU加速器針對10 TB層級資料庫進行了最佳化,其能力可以處理20 TB資料。
BLU加速器在技術方面的創新亮點包括:
查詢功能完全管道化(pipelining ),表掃描可以共用
資料忽略(Data Skipping)功能能夠有效降低I/O
基於單指令多資料結構(SIMD)的向量化(Vectorization )。
機率緩衝取代傳統LRU(Least Recently Used),經常被引用的資料區塊出現在記憶體當中的幾率就越大。這一功能的背後還有更複雜的隨機演算法支援。
“自動化工作負載管理”功能,IBM認為查詢之間的資源爭用是造成資源浪費的主要原因,這一功能讓BLU加速器與傳統DB2資料庫相比在並發性上產生差異性優勢。
此外,BLU採用列示儲存模型,在資料壓縮上同樣具備一定優勢。BLU壓縮包括了近似的霍夫曼編碼、首碼編碼和差值壓縮。此外IBM稱,所有的壓縮演算法都是保序的,因此範圍判斷可以直接在壓縮資料上執行,也就是說可以直接在壓縮的資料上進行處理和分析。這是BLU壓縮功能中最大的亮點。
同其他列式資料庫系統一樣,BLU加速器的寫資料效能是效能瓶頸所在。對此,IBM給出的解釋是在資料庫中對新資料進行移動(包括記憶體中和磁碟中的資料),是BLU加速器的優勢之一。IBM支援的方法包括:
BLU加速器支援LOAD、SQL INSERT、UPDATE、DELETE和其他三個基於SQL的操作,即INGEST、IMPORT和EXPORT(另外還包括BACKUP和RESTORE,它們也是移動資料的方式之一)。由於資料匯入的文法和語義都保持不變,因此意味著你不需要做任何修改就可以繼續使用IBM Data Stage或者其他第三方的ETL工具。
與其他列式資料庫廠商保證效能的方式有所不同,IBM沒有選擇使用表的delta地區來插入新資料,然後再非同步移動行資料到欄區域,這種資料的二次載入對於效能將造成很大影響。IBM的方法是,針對主表直接添加資料,然後使用批量轉換來平攤列式處理所帶來的延遲問題。通過批量處理資料,可以極大程度地消除列式資料庫的固有開銷,並且完全避免了資料的二次處理。
此外,IBM還為BLU加速器添加了新的列式日誌方法。從表面上來看,它與DB2傳統的基於日誌的交易恢複相同,但是其中日誌的資料格式是按照列的方式重新組織的。再加上XOR日誌功能,BLU可以極大程度上縮減日誌空間。而且BLU加速器的表能夠與傳統的資料庫表共存,IBM做到了二者的無縫整合。