架構(gòu)比對(duì)
Apache Doris、Clickhouse 、Greenplum都是基于MPP架構(gòu)的實(shí)現(xiàn)的可用于數(shù)倉分析的數(shù)據(jù)庫管理系統(tǒng)。下邊通過具體的架構(gòu)設(shè)計(jì)分析三者的區(qū)別。
Apache Dodis
官網(wǎng)描述
Apache Doris是一個(gè)現(xiàn)代化的MPP分析型數(shù)據(jù)庫產(chǎn)品。
架構(gòu)圖

架構(gòu)描述
1. 高可靠
Apache Doris 使用了主從架構(gòu)進(jìn)行設(shè)計(jì)。通過Fronted Engine(前端引擎) 的主從達(dá)到高可用的目的。FE主要有有三個(gè)??,?個(gè)是leader,?個(gè)是follower,還有?個(gè)observer。leader跟follower,主要是?來達(dá)到元數(shù)據(jù)的?可?,保證單節(jié)點(diǎn)宕機(jī)的情況下,元數(shù)據(jù)能夠?qū)崟r(shí)地在線恢復(fù),?不影響整個(gè)服務(wù)。erver只是?來擴(kuò)展查詢節(jié)點(diǎn),就是說如果在發(fā)現(xiàn)集群壓??常?的情況下,需要去擴(kuò)展整個(gè)查詢的能?,那么可以加observer的節(jié)點(diǎn)。observer不參與任何的寫?,只參與讀取。Apache Doris?元數(shù)據(jù)層?,Doris采?Paxos協(xié)議以及Memory + Checkpoint + Journal的機(jī)制來確保元數(shù)據(jù)的?性能及?可靠。
2. 高可用
Apache Doris 通過建表的時(shí)候指定多副本的機(jī)制實(shí)現(xiàn)高可靠的功能。
3. 高效查詢
Doris整體架構(gòu)整合Coogle Mesa + Apache Impala + ORC列式從存儲(chǔ)三種技術(shù)。通過Mesa實(shí)現(xiàn)預(yù)聚合特性,Impala 實(shí)現(xiàn)MPP連接處理的特性,ORC列式存儲(chǔ)更適合OLAP數(shù)據(jù)分析。
多副本的機(jī)制減少數(shù)據(jù)網(wǎng)絡(luò)拷貝,也提供了查詢的效率。
將數(shù)據(jù)進(jìn)行分區(qū)、分桶然后分發(fā)散列到各個(gè)節(jié)點(diǎn)實(shí)現(xiàn)分布式計(jì)算。還有其他的索引、引擎等優(yōu)化暫不從架構(gòu)層面對(duì)比分析了。
ClickHouse
官網(wǎng)描述
ClickHouse是一個(gè)用于聯(lián)機(jī)分析(OLAP)的列式數(shù)據(jù)庫管理系統(tǒng)(DBMS)。
架構(gòu)圖

架構(gòu)描述
1. 高可靠
ClickHouse則采用Multi-Master多主架構(gòu),集群中每個(gè)角色對(duì)等,客戶端訪問任意一個(gè)節(jié)點(diǎn)都能得到相同的效果。
2. 高可用
同樣也是支持?jǐn)?shù)據(jù)的多副本,這樣單點(diǎn)故障不影響數(shù)據(jù)的查詢。
3. 高效查詢
多副本節(jié)點(diǎn)計(jì)算可以基于本地?cái)?shù)據(jù)較少IO傳輸。
純列式存儲(chǔ)適合OLAP聚合分析。
數(shù)據(jù)分區(qū)、分片、分塊多進(jìn)程+多線程并行計(jì)算。分塊數(shù)和cpu核心數(shù)相同,充分利用CPU多線程并行計(jì)算。
表引擎豐富,尤其是MergeTree引擎做了通過各種維度的優(yōu)化更適合OLAP分析。
Greenplum
官網(wǎng)描述
GP(GreenPlum)是業(yè)界最快最高性價(jià)比的關(guān)系型分布式數(shù)據(jù)庫,它在開源的PG(PostgreSql)的基礎(chǔ)上采用MPP架構(gòu)(Massive Parallel Processing,海量并行處理),具有強(qiáng)大的大規(guī)模數(shù)據(jù)分析任務(wù)處理能力。Greenplum 是全球領(lǐng)先的大數(shù)據(jù)分析引擎,專為分析、機(jī)器學(xué)習(xí)和AI而打造。
架構(gòu)圖

架構(gòu)描述
1:高可靠
采用master+standby的方式實(shí)現(xiàn)服務(wù)的高可靠。
1)????????創(chuàng)建與客戶端的會(huì)話鏈接和管理;
2)????????SQL的解析并造成分布式的執(zhí)行計(jì)劃;
3)????????將生成好的執(zhí)行計(jì)劃分發(fā)到每一個(gè)Segment上執(zhí)行;
4)????????收集Segment的執(zhí)行結(jié)果;
5)????????不存儲(chǔ)業(yè)務(wù)數(shù)據(jù),只存儲(chǔ)數(shù)據(jù)字典;
6)????????能夠一主一備(standby),分布在兩臺(tái)機(jī)器上,為了提升性能,最好單獨(dú)占用一臺(tái)機(jī)器。
2:高可用
數(shù)據(jù)冗余-Segment 鏡像保護(hù)。主節(jié)點(diǎn)(Primary Segment)故障后會(huì)自動(dòng)切換到鏡像節(jié)點(diǎn)(Mirror Segment),集群仍然保持可用狀態(tài)。當(dāng)主節(jié)點(diǎn)恢復(fù)并啟動(dòng)以后,主節(jié)點(diǎn)會(huì)自動(dòng)恢復(fù)期間的變動(dòng)。
3:高效查詢
多級(jí)分區(qū)、也支持列式存儲(chǔ)。多節(jié)點(diǎn)并行計(jì)算。
當(dāng)然Greenplum不僅僅支持OLAP,同時(shí)OLTP 是一款優(yōu)秀的HTAP數(shù)據(jù)庫。
小結(jié)
以上對(duì)三款數(shù)據(jù)庫架構(gòu)層面進(jìn)行了簡單介紹,由于使用場景不同,穩(wěn)定性,易用性、擴(kuò)展性以及生態(tài)各有千秋,不存在孰好孰壞,可以根據(jù)自己的使用場景,詳細(xì)了解哪款數(shù)據(jù)庫更能契合自己的場景解決自己的問題。