麻烦从以下几个方面做个比较:
1. 并发性能 ?
2.事务回滚性能,TD可以直接放弃回滚,DB2不可以?
3.稳定性,TD稳定性是否明显高于DB2,db2 DPF BUG很多?
4.成本 ?
欢迎讨论。。。。。
我们曾经做个多次PoC测试DB2 DPF与Teradata的性能,总体来说,DB2的性能还是领先的。我想从多个层面来分析一下你提出的这个问题。
首先先说相同点,DB2 DPF和Teradata都是Share nothing的MPP架构,在对数据hash分区的处理上,两者基本使用了同样的技术。
再说说不同点。
1. Teradata支持列式存储,DB2目前也在开发列式存储功能,但还只支持单机(10.5版本的BLU功能),对于DPF的支持应该不远了。不管有没有列存储功能,从我们PoC的结果来看,列存储也并不是适用于所有的场景,只有在宽表的场景里,列存储才比较有优势。
2. 数据库质量上,我想DB2要更胜一筹,在DBA领域里,大家比较公认的一个事情就是DB2的优化器是最优秀的,这一点可能还是因为DB2是最早的数据库产品,初期有一大批优秀的科学家参与研发,所以最核心的优化器表现最为优异。
3. DB2是一个全系列的产品,不只有MPP架构的DPF,还有Share everything架构的pureScale,以及单机版本ESE,即使在数据仓库领域使用的DPF功能,也是可以进行正常的增删改查操作,不像某些列式MPP数据库不支持增删改。不管架构如何,DB2对应用来讲都是透明的。
4. TD成本高,这个也是大家公认的
基于以上的分析,我们比较倾向于IBM的DB2数据库,从长远角度来看,DB2仍然是传统关系型数据库中不错的选择。
补充两点:
DB2的并发性非常好,金融机构用的比较多,并发性肯定没有问题的。
放弃回滚,DB2也可以支持,要设置table的not logged属性就可以了。但放弃回滚就意味着出问题的时候,表会被标记为drop pending状态,只能将其删除。不过数据仓库里面很少会有回滚吧,数据加载用load是不需要回滚的,查询语句也不需要回滚。