IBM公司在今年四月发布了最新的DB2数据库,DB2关系型数据库管理系统(RDBMS)最新版中,添加了许多功能,包括内存数据处理、数据忽略(data skipping)、深度压缩以及列式分析等等。其中一些功能让推崇新时代关系型分析引擎以及NoSQL技术的粉丝也刮目相看。

其中新增的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做到了二者的无缝整合。

03-16 01:00