咋看待oracle的exadata与share nothing系列的hadoop等,以及优缺点相互对比、各自的前途..对未来的影响

exadata的架构我也仔细思考过很久,个人愚见,exadata引进了部分MPP思想,当并非MPP native,只有share nothing才可以做到MPP native。exadata的MPP成分:存储节点相当于sharding节点,支持列式存储和query predicate push down,计算节点相当于mapreduce的reduce聚合运算节点。exadata vs GP的区别,看两个大表Jion的场景,A jion B,jion键是A和B的主键;A、Bsharding分片都是两个,sharding原则相同,A的分片1和B的分片1都在同一个节点;如果是GP,在本地就可以做join,然后做汇总,如果是exadata,估计要把所有sharding分片数据读取到计算节点才能做join。这个例子中,exadata缺点无法利用data locality的特性。另外一个例子,A jion B,如果A的分片跟B的分片不在同一节点,GP的处理是对B或者A或者AB一起的分片择优做data redistribution,这个过程比较复杂,类似map reduce里面的shuffle,也有点像RDBMS里面的hash join,而且如何择优做redistribution、join,是一个hard problem,数学上讲是个NP问题,需要采用启发式搜索的决策树算法;GP针对此问题实现了一个复杂的并行的分布式的基于代价的查询计划优化器叫做orca,apache的HAWQ也是用的这个。exadata是否会做这件事不太确定,个人猜测应该是聚合到计算节点来做join,如果是这样,那exadata就是一个利用硬件堆积性能的伪MPP数据库。补充一点,涉及到大量数据的网络传输,任务较多时,不同任务之间的互相影响可能会导致单个步骤执行过慢而影响整个系统的性能,实现一个分布式OLAP并没有那么难,很多公司都号称有MPP产品了,但是要多租户多任务并发公平调度,就很困难了。


    推荐阅读