1. 分身大法--pureScale

  在介绍pureScale之前,不得不先谈一下IBM DB2 for z/OS,因为DB2 pureScale 的思路和架构几乎全部来自于DB2 for z/OS。当今没有一款数据库产品能够在扩展性和高可用性方面与DB2 for z/OS相提并论,原因是DB2 for z/OS 采用额底层技术可以确保服务器持续满足SLA(Service-Level Agreement的缩写,意思是服务等级协议)的要求,其Coupling Facility 技术提供了几种的锁处理和全局缓存机制,这为服务器扩展和高速恢复提供了可能。因此DB2 pureScale 完全继承了DB2 for z/OS 的优良传统,使用软件实现了类 z/OS的功能,同时这些软件借助于直接内存读写(RDMA)技术,绕过CPU中断处理,完全可以替换 z/OS硬件底层实现,实现大吞吐量和高响应的时间。

   pureScale是DB2 的一种架构方式,同时这种架构方式归类为IBM对share Disk的一种具体实现。其中有三个特点。

   a. 无限的扩展能力:DB2 pureScale 最多支持128个节点,同时增加节点对性能提升计划是线性关系。在没有硬件瓶颈的情况下,性能损失是非常少的。

   b. 应用透明:应用无须改动即可支持pureScale架构,同时扩展节点对应用无影响。

   c. 持续的高可用性:单个节点失效对整体的应用几乎无影响,并且可以进行快速恢复。

图 1. DB2 pureScale 环境的主要组件

说明: 上面使用了 4 个 AIX 6.1 LPAR — 2 个成员和 2 个 CF — 来说明所有的基本验证步骤。

pureScale 的安装与管理请参考: 

  http://www.ibm.com/developerworks/cn/data/library/techarticle/dm-1011db2purescalefeature/

  http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-1005purescalefeature/

2. 九阴白骨爪--continue Data Ingest

Ingest 是DB2 V10.1 的新特性,为了通过大量持续的数据流来实时和并发的快速进行数据导入而引入的新概念。这样避免数据被锁,可以24小时对数据库进行操作。Ingest有数据修复的功能,在数据导入中断时能找到中断点并能继续进行数据导入。Ingest 支持复杂的sql表达式语法,是更加的好用的客户端软件。用户可以用Ingest做Insert ,Update,Delete ,Replace和Merge操作,更方便为客户提供服务。

  Ingest支持文件和管道两种输入类型,支持DEL、ASC两种数据格式,支持SQL表达式,支持Insert、Update、Replace、Delete和Merge操作,支持并发更改、插入,删除,可以根据时间间隔或数据条数来提交数据。Ingest会把未插入的数据放入文件、表中、或者直接丢弃,支持修复和重启。

  Ingest支持ESC、PureScale和DPF环境。Ingest与数据引擎使用标准化的外部连接,是个多线程的工具,速度快,效率高。

 (1)传输:传输程序从数据源中读取,并将记录放置在格式化程序队列中。对于INSERT操作,每个输入源都有一个传输程序线程(例如,每个输入文件都有一个线程)。对于UPDATE和Delete操作,只有一个传输程序线程。

(2)格式化:格式化程序会解析每条记录,将数据转化成DB2数据库系统所需要的格式并将每条已格式化的记录放置在该记录分区上的其中某个清空程序队列中。

(3)清空:清空程序发出SQL语句以对DB2表执行操作。

INGEST 与Load、Import 在功能上的差异:

1. Ingest只支持del和asc数据格式,而Import还可以支持WSD和ixf格式,load还可以支持Ixf和cursor格式。

2.Ingest用于支持ASC数据格式的参数与Load、import不同,Import、load使用method L()来统一设置所有字段的位置,而Ingest分别使用Position(:)来处理每个字段。

3.Ingest支持把错误数据放入文件或表中,Load支持把错误数据放入文件中,Import不支持把错误数据放到数据表文件中。

   DB2 10.1 版本还增加了很多特性,例如:自适应压缩,超级异步,重做延迟,多备机,runstats支持索引采样,优化查询性能,增强监控、安全性能等。这里就不一一介绍了,希望大家可以到IBM developerWorks 中国上检索。最后介绍一下自适应压缩的设计实现。

自适应实际使用两种压缩算法。

    第一种方法使用表级别压缩字典,根据表中数据抽样的重复情况来整天压缩数据,第一次创建表级别压缩字典时,系统使用启用经典压缩后添加至表中的大约第一个兆字节数据中的数据样本构建该字典。除非显式导致字典重建,否则系统不会再次更新该字典。即使重建该字典,该字典也只反映整个表中数据的样本。也就是说,表级别字典是静态字典,表级别压缩字典存储在应用该字典的对象的隐藏行中,并且会高速缓存在内存中以便快速访问。

   第二种方法使用基于页级别字典的压缩算法以根据每个数据页中的数据重复情况来压缩数据,这些字典将重复字节模式映射至小得多的符号,然后这些符号会替换表中的较长字节模式。表级别压缩字典存储在为其创建该字典的表对象中,用于压缩整改表的数据。页级压缩字典与数据页中的数据存储在一起,仅用于压缩该页中的数据,需要的空间也极少。