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做到了二者的無縫整合。