DB2 的数据库分区特性(DPF)蛮适合那种数据量爆炸的场景,是你在做数据仓库或者商业智能系统的时候。它的非共享架构,一个节点挂了不影响其他的,扩展性也比较灵活,直接多加几个分区就能顶住更高的负载。
数据哈希分布的机制挺有意思,简单说就是把数据按哈希值均匀地扔到不同的分区上,这样并发查询起来效率高多。你写的SELECT
语句,可以在多个节点上一起跑,响应也快。
还有个叫Fast Communication Manager的玩意儿,专门搞分区间通信的,负责保持数据一致性和协调。看着高级,其实你不需要太操心,用起来平滑。
有些朋友会问,DPF 和pureScale有啥区别?一个是非共享(DPF),一个是共享磁盘(pureScale)。前者适合数据重的业务,后者偏向高可用场景,各有千秋。
配置方面也不麻烦,像db2nodes.cfg
这种配置文件,定义清楚哪个节点干什么,多个节点共享就行,基本上改好一次跑通了就稳定了。
哦对了,如果你玩过 MPP(Massively Parallel Processing),DPF 这个思路你会觉得挺熟的。想起Greenplum
和MapReduce
了吧?思路上有点像,不过 DB2 的实现算是老牌又稳当的。
如果你现在在搞 ETL 或者需要跑大表查询的项目,强烈建议你研究一下这个特性。顺手给你贴几个相关资料链接,按着这个顺序啃下来,理解就通了:
如果你正踩在性能瓶颈上,不妨用 DPF 来撑一撑,配置到位后,数据量翻倍都不慌。