怎麼看待oracle的exadata與share nothing系列的hadoop等,以及優缺點相互對比、各自的前途..對未來的影響?

在面對未來的大數據方向,oracle自己推出了處理大數據方案的exadata(一體機),也在itpub上看到有些高手在吐槽這個東西的設計,除了速度快的優點外,其他的不是很看好。那麼開源的share nothing系列的產品與它相比呢?各自都有哪些優缺點可以對比呢?以及他們對未來從事人員的關係,例如:exadata可能會減少dba的數量,提升dba的技術含量。而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產品了,但是要多租戶多任務並發公平調度,就很困難了。


推薦閱讀:

機器學習如何才能避免「只是調參數」?
通過數據挖掘你有過哪些意想不到的發現?
什麼是大數據?
數據分析和挖掘在售電市場的應用價值點在哪兒?
信息發達大數據時代,數據能為慈善事業帶來些什麼?

TAG:資料庫 | 甲骨文Oracle | Hadoop | Oracle資料庫 | 大數據 |