一、怎么看待oracle的exadata與share nothing系列的hadoop等
exadata的架構(gòu)我也仔細(xì)思考過(guò)很久,個(gè)人愚見,exadata引進(jìn)了部分MPP思想,當(dāng)并非MPP native,只有share nothing才可以做到MPP native。exadata的MPP成分:存儲(chǔ)節(jié)點(diǎn)相當(dāng)于sharding節(jié)點(diǎn),支持列式存儲(chǔ)和query predicate push down,計(jì)算節(jié)點(diǎn)相當(dāng)于mapreduce的reduce聚合運(yùn)算節(jié)點(diǎn)。exadata vs GP的區(qū)別,看兩個(gè)大表Jion的場(chǎng)景,A jion B,jion鍵是A和B的主鍵;A、Bsharding分片都是兩個(gè),sharding原則相同,A的分片1和B的分片1都在同一個(gè)節(jié)點(diǎn);如果是GP,在本地就可以做join,然后做匯總,如果是exadata,估計(jì)要把所有sharding分片數(shù)據(jù)讀取到計(jì)算節(jié)點(diǎn)才能做join。這個(gè)例子中,exadata缺點(diǎn)無(wú)法利用data locality的特性。
另外一個(gè)例子,A jion B,如果A的分片跟B的分片不在同一節(jié)點(diǎn),GP的處理是對(duì)B或者A或者AB一起的分片擇優(yōu)做data redistribution,這個(gè)過(guò)程比較復(fù)雜,類似map reduce里面的shuffle,也有點(diǎn)像RDBMS里面的hash join,而且如何擇優(yōu)做redistribution、join,是一個(gè)hard problem,數(shù)學(xué)上講是個(gè)NP問(wèn)題,需要采用啟發(fā)式搜索的決策樹算法;GP針對(duì)此問(wèn)題實(shí)現(xiàn)了一個(gè)復(fù)雜的并行的分布式的基于代價(jià)的查詢計(jì)劃優(yōu)化器叫做orca,apache的HAWQ也是用的這個(gè)。exadata是否會(huì)做這件事不太確定,個(gè)人猜測(cè)應(yīng)該是聚合到計(jì)算節(jié)點(diǎn)來(lái)做join,如果是這樣,那exadata就是一個(gè)利用硬件堆積性能的偽MPP數(shù)據(jù)庫(kù)。補(bǔ)充一點(diǎn),涉及到大量數(shù)據(jù)的網(wǎng)絡(luò)傳輸,任務(wù)較多時(shí),不同任務(wù)之間的互相影響可能會(huì)導(dǎo)致單個(gè)步驟執(zhí)行過(guò)慢而影響整個(gè)系統(tǒng)的性能,實(shí)現(xiàn)一個(gè)分布式OLAP并沒有那么難,很多公司都號(hào)稱有MPP產(chǎn)品了,但是要多租戶多任務(wù)并發(fā)公平調(diào)度,就很困難了。
延伸閱讀:
二、SQL是什么
Structured Query Language
‘SQL’是結(jié)構(gòu)化查詢語(yǔ)言,是一種用來(lái)操作?RDBMS?的數(shù)據(jù)庫(kù)語(yǔ)言,當(dāng)前關(guān)系型數(shù)據(jù)庫(kù)都支持使用SQL語(yǔ)言進(jìn)行操作,也就是說(shuō)可以通過(guò)?SQL?操作 oracle,sql server,mysql,sqlite 等等所有的關(guān)系型的數(shù)據(jù)庫(kù)
SQL語(yǔ)句主要分為:DQL:數(shù)據(jù)查詢語(yǔ)言,用于對(duì)數(shù)據(jù)進(jìn)行查詢,如select**
DML:數(shù)據(jù)操作語(yǔ)言,對(duì)數(shù)據(jù)進(jìn)行增加、修改、刪除,如insert、udpate、delete**
TPL:事務(wù)處理語(yǔ)言,對(duì)事務(wù)進(jìn)行處理,包括begin transaction、commit、rollback
DCL:數(shù)據(jù)控制語(yǔ)言,進(jìn)行授權(quán)與權(quán)限回收,如grant、revoke
DDL:數(shù)據(jù)定義語(yǔ)言,進(jìn)行數(shù)據(jù)庫(kù)、表的管理等,如create、drop
CCL:指針控制語(yǔ)言,通過(guò)控制指針完成表的操作,如declare cursor對(duì)于web程序員來(lái)講,重點(diǎn)是數(shù)據(jù)的crud(增刪改查),必須熟練編寫DQL、DML,能夠編寫DDL完成數(shù)據(jù)庫(kù)、表的操作,其它語(yǔ)言如TPL、DCL、CCL了解即可SQL 是一門特殊的語(yǔ)言,專門用來(lái)操作關(guān)系數(shù)據(jù)庫(kù)不區(qū)分大小寫