基于MPP:
shared nothing架構(gòu)阐斜,主機(jī)衫冻、操作系統(tǒng)、內(nèi)存谒出、存儲都是自我控制的隅俘,不存在共享,每個節(jié)點(diǎn)都是一個單獨(dú)的數(shù)據(jù)庫笤喳。節(jié)點(diǎn)之間的信息交互是通過節(jié)點(diǎn)網(wǎng)絡(luò)實(shí)現(xiàn)为居。數(shù)據(jù)分不到多個節(jié)點(diǎn)來實(shí)現(xiàn)規(guī)模數(shù)據(jù)的存儲,通過并行查詢來提高查詢性能杀狡。
MPP特征:任務(wù)并行執(zhí)行蒙畴,數(shù)據(jù)分布式存儲,分布式計(jì)算呜象,私有資源膳凝,橫向水平擴(kuò)展,shared nothing恭陡。
MPP典型:gp蹬音,presto,impala休玩,sparksql著淆,drill等劫狠,有很好的數(shù)據(jù)量和靈活性支持,但是對響應(yīng)時間是沒有保證的牧抽,當(dāng)數(shù)據(jù)量和計(jì)算復(fù)雜度增加后嘉熊,響應(yīng)時間會變慢遥赚,從秒級到分鐘級扬舒,甚至小時級都有可能。
基于搜索引擎:
elasticsearch凫佛,solr等讲坎,在數(shù)據(jù)入庫時,姜數(shù)據(jù)轉(zhuǎn)化為倒排索引愧薛,采用scatter-gather 計(jì)算模型晨炕,犧牲靈活性獲取很好的查詢性能,在搜索類查詢上能做到亞秒級響應(yīng)毫炉,但是對于掃描聚合為主的查詢瓮栗,隨著處理數(shù)據(jù)量的增加,響應(yīng)退化到分鐘級瞄勾。
基于預(yù)處理:
druid费奸、kylin 在入庫時對數(shù)據(jù)進(jìn)行預(yù)聚合,進(jìn)一步犧牲靈活性換取性能进陡,以實(shí)現(xiàn)對超大數(shù)據(jù)集的秒級響應(yīng)愿阐。
presto、druid趾疚、sparkSQL缨历、kylin可以分為三類。其中presto和spark sql都是解決分布式查詢問題糙麦,提供SQL查詢能力辛孵,但數(shù)據(jù)加載不一定能保證實(shí)時。Druid是保證數(shù)據(jù)實(shí)時寫入赡磅,但查詢上不支持SQL魄缚,或者說目前只支持部分SQL,我個人覺得適合用于工業(yè)大數(shù)據(jù)仆邓,比如一堆傳感器實(shí)時寫數(shù)據(jù)的場景鲜滩。Kylin是MOLAP,就是將數(shù)據(jù)先進(jìn)行預(yù)聚合节值,然后把多維查詢變成了key-value查詢徙硅。
從成熟度來講:kylin>spark sql>Druid>presto
從超大數(shù)據(jù)的查詢效率來看:Druid>kylin>presto>spark sql
從支持的數(shù)據(jù)源種類來講:presto>spark sql>kylin>Druid