1. 程式人生 > 其它 >分散式資料庫(DorisDB、Clickhouse、TiDB)調研

分散式資料庫(DorisDB、Clickhouse、TiDB)調研

# 分散式資料庫(DorisDB、Clickhouse、TiDB)調研

1. 效能功能特點

B站視訊:DorisDB VS ClickHouse OLAP PK

1.1 DorisDB

場量:線上資料應用

訪問官方網站
DorisDB企業版文件

DorisDB是鼎石科技由Apache Doris核心研發團隊打造的新一代企業級MPP資料庫。它繼承了Apache Doris專案十多年研發成果,累積了線上數千臺伺服器穩定執行經驗,並在此基礎上,對傳統MPP資料庫進行了開創性的革新。DorisDB重新定義了MPP分散式架構,叢集可擴充套件至數百節點,支援PB級資料規模,是當前唯一可以在大資料規模下進行線上彈性擴充套件的企業級分析型資料庫。DorisDB還打造了全新的向量化執行引擎,單節點每秒可處理多達100億行資料,查詢速度比其他產品快10—100倍!
  • 單表/多表查詢,DorisDB總體時間最短
  • 單表查詢:DorisDB最快次數最多,ClickHouse次之
  • 多表查詢:DorisDB所有執行均最快
  • DorisDB多表關聯效率好
  • 支援各種主流分散式Join,不僅支援大寬表模型,還支援星型模型和雪花模型
  • 資料按列儲存,第一列單獨存放,查詢時,只訪問查詢涉及的列,降低I/O
  • Mysql協議相容,支援標準的SQL語言,可直接對接主流的BI系統
  • 與 R 語言可以實現無縫對接,用 R 語言可直接操作 Doris 資料庫,進行資料分析、資料探勘等工作
  • 分片方式儲存資料,小查詢只需要用到部分機器資源,能極大提高併發查詢量
  • 可以實現多層聚合,能執行復雜的SQL查詢,大表Join,高基數聚合查詢
  • 能有效利用多機資源保證查詢效能,總體持有成本低,叢集資源利用率高
  • 資料匯入有事務保證,可以很容易地實現不丟不重
  • 支援實時資料的增量聚合計算
  • 擴容時只需遷移部分資料分片,可線性擴充套件,副本自動均衡,系統自動完成,不影響線上服務
  • 開箱即用,自適應,無須額外優化
  • 高可用:無單點瓶頸(類Paxos一致性演算法)
  • 高度自治:無外部依賴,副本自修復,資料自均衡,一鍵擴容、縮容
  • 極簡運維:無外部依賴,整個系統只有兩種程序,自動故障恢復(視覺化運維管理平臺需要企業版)
  • 視覺化管理 工具,生態完善,使用 Prometheus、Grafana 將監控項指標列出
  • 支援雲化部署
  • 支援線上更改表模式(加減列,建立 Rollup),不影響當前服務,不阻塞讀、寫操作,非同步執行不需要使用者一直盯著
  • 穩定可靠:完成SSB等測試集功能完備,每天千萬條隨機SQL驗證,引入SQLite/Spark等外部DB 200萬標準測試集通過
  • 內部支援訂閱 Kafka 資料流,實現直接對接 Kafka(可自動感知 Kafka 中 partition 變化,合理排程併發匯入),支援對 Kafka 原始資料做二次處理(如轉換,過濾等)
  • 三層微批驅動(MPP+排程)
    • DWD 明細層: 明細事實、維度表、明細寬表
    • DWS 彙總層:公共彙總、通用檢視、聚合寬度
    • ADS 應用層:業務指標、彙總結果、物化檢視
  • 美團 VIPKID 等大廠用作資料分析平臺,可服務高併發固定報表,OLAP 高維分析和 Adhoc 即席查詢(可通過 Mysql Binlog -> Kafka -> DorisDB 同步資料)
  • 極速向量化引擎

【主要缺點】

  • DorisDB 主要解決 PB 級別的資料量(如果高於 10 PB 級別,不推薦使用,可以考慮用 Hive 等工具)
  • 不適合做大規模的批處理,當前版本由於是全記憶體計算,所以面對大規模資料的複雜ETL容易記憶體不足(短期內可能不能得到解決,官方稱這是之後研發的一個方向)
  • 目前不支援insert overwrite,可以用truncate+insert into代替
  • 周邊生態比較不完善
  • 部分SQL語法不支援

【商業特性】

  • 暫未開源,承諾可以免費永久使用
  • 社群核心研發人員都是中國人,國內有商業化支援,服務更加本地化,支術支援無障礙
  • 百度將 Doris 貢獻給 Apache 社群之後,許多外部使用者也成為了 Doris 的使用者,例如新浪微博,美團,小米等著名企業
  • Apache Doris開源版可直接下載使用,DorisDB分標準版和企業版,需要申請使用

【部署環境】

  • 準備3臺物理機: Linux(Centos 7+)、Java 1.8+
  • CPU需要支援AVX2指令集cat /proc/cpuinfo |grep avx2有結果輸出表明CPU支援,如果不支援建議找合適的機器進行部署測試,DorisDB使用向量化技術需要一定的指令集支援才能發揮效果。
  • 將DorisDB的二進位制產品包分發到目標主機的部署路徑並解壓,可以考慮使用新建的DorisDB使用者來管理。
  • BE推薦16核64GB以上(DorisDB的元資料都在記憶體中儲存),FE推薦8核16GB以上
  • 磁碟可以使用HDD或者SSD
  • 網路需要萬兆網絡卡和萬兆交換機
  • FE節點之間的時鐘相差不能超過5s,使用NTP協議校準時間。一臺機器上只可以部署單個FE節點。所有FE節點的http_port需要相同。
  • 一般至少部署3個BE例項,每個例項的新增步驟相同

【基本概念】

  • FE:FrontEnd DorisDB的前端節點,負責管理元資料,管理客戶端連線,進行查詢規劃,查詢排程等工作。
  • BE:BackEnd DorisDB的後端節點,負責資料儲存,計算執行,以及compaction,副本管理等工作。
  • Broker:DorisDB中和外部HDFS/物件儲存等外部資料對接的中轉服務,輔助提供匯入匯出功能。
  • DorisManager:DorisDB 管理工具,提供DorisDB叢集管理、線上查詢、故障查詢、監控報警的視覺化工具。
  • Tablet:DorisDB 表的邏輯分片,也是DorisDB中副本管理的基本單位,每個表根據分割槽和分桶機制被劃分成多個Tablet儲存在不同BE節點上。

【資源下載】

Release Notes:
https://forum.dorisdb.com/t/topic/301

文件地址:
http://doc.dorisdb.com/

測試FAQ:
http://doc.dorisdb.com/2228586

1.2 ClickHouse

場景:日誌分析、寬表分析

ClickHouse全稱是Click Stream,Data Warehouse,簡稱ClickHouse就是基於頁面的點選事件流,面向資料倉庫進行OLAP分析。ClickHouse是一款開源的資料分析資料庫,由戰鬥民族俄羅斯Yandex公司研發的,Yandex是做搜尋引擎的,就類似與Google,百度等。
  • 毫秒級響應,為了高效的使用CPU,資料不僅僅 按列儲存,同時還按向量進行處理(區別與HBase,ClickHouse的是完全列式儲存,HBase具體說是列族式儲存)
  • 資料壓縮空間大,減少IO;處理單查詢高吞吐量每臺伺服器每秒最多數十億行
  • 寫入速度非常快,50-200M/s,對於大量的資料更新非常適用
  • ClickHouse多表 查詢需要更改SQL ,使型別一致才可以,且欄位名、表名區分大小寫
  • ClickHouse單機效能強悍,價效比較高
  • 不需要任何資料預處理
  • 支援批量更新
  • 支援高可用(多主結構,在後面的結構設計中會講到)
  • 不依賴Hadoop複雜生態(像ES一樣,開箱即用)

【主要缺點】

  • 不支援事務,不支援真正的刪除/更新,ClickHouse的定位是 分析性資料庫,而不是嚴格的關係型資料庫
  • 不支援標準的SQL語言,無法直接對接主流的BI系統(最新版已支援類似SQL的join,但效能不好)
  • 幾乎不支援分散式Join,在分析模型上僅支援大寬表模式
  • 不支援高併發,Clickhouse快是因為採用了並行處理機制,即使一個查詢,也會用伺服器一半的CPU去執行,所以ClickHouse不能支援高併發的使用場景,預設單查詢使用CPU核數為伺服器核數的一半,安裝時會自動識別伺服器核數,可以通過配置檔案修改該引數
  • 難以實現高併發查詢,且無法通過擴容提高併發能力
  • MergeTree合併不完全
  • 聚合操作依賴單點完成,操作資料量大時存在明顯效能瓶頸
  • 對高基數列進行精確去重操作(如計算APP的DAU)時,受限於單點聚合的處理方式,效能瓶頸明顯
  • 受限於單機的實體記憶體,一旦query的mem消耗過大,將被kill
  • 不擅長根據主鍵按行粒度查詢(但是支援這種操作)
  • 不擅長按行刪除資料(但是支援這種操作)
  • 沒有強型別校驗,資料可能被內部機制進行擷取,造成資料不一致

【商業特性】

  • 不盈利
  • 俄羅斯的‘百度’叫做 Yandex,戰鬥民族開源神器

【部署環境】

  • ClickHouse 可以在任何具有 x86_64、AArch64 或 PowerPC64LE CPU 架構的 Linux、FreeBSD 或 Mac OS X 上執行
  • 官方預構建二進位制檔案通常針對 x86_64 進行編譯並利用 SSE 4.2 指令集

【其他】

  • MySQL單條SQL是單執行緒的,只能跑滿一個core,ClickHouse相反,有多少CPU,吃多少資源,所以飛快

1.3 TiDB

場景:OLTP 同時兼顧OLAP

  • 支援更新/刪除
  • 兼顧了OLTP的需求
  • 支援Flink ExactlyOnce語意,支援冪等

【主要缺點】

  • 無列式儲存 (新版本有了)
  • 無預計算手段
  • 無向量化執行
  • 無預聚合功能
  • OLAP 效能相對 ClickHouse 或 DorisDB 較弱

2. 名詞簡介

MPP

MPP ( Massively Parallel Processing ),即大規模並行處理,海量資料併發查詢。

在資料庫非共享叢集中,每個節點都有獨立的磁碟儲存系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺數據節點通過專用網路或者商業通用網路互相連線,彼此協同計算,作為整體提供資料庫服務。非共享資料庫叢集有完全的可伸縮性、高可用、高效能、優秀的價效比、資源共享等優勢。簡單來說,MPP 是將任務並行的分散到多個伺服器和節點上,在每個節點上計算完成後,將各自部分的結果彙總在一起得到最終的結果 ( 與 Hadoop 相似 )。

OLAP

資料分析的目標則是探索並挖掘資料價值,作為企業高層進行決策的參考,通常被稱為OLAP(On-Line Analytical Processing,聯機分析處理)。

業務資料積累時所產生的價值資訊則被OLAP不斷呈現,企業高層通過參考這些資訊會不斷調整經營方針,也會促進基礎業務的不斷優化。

OLAP不應該對OLTP產生任何影響,(理想情況下)OLTP應該完全感覺不到OLAP的存在。

OLTP

業務類系統主要供基層人員使用,進行一線業務操作,通常被稱為OLTP(On-Line Transaction Processing,聯機事務處理)。從功能角度來看,OLTP負責基本業務的正常運轉。

物化檢視

物化檢視是提取某些維度的組合建立對使用者透明的卻有真實資料的視圖表格。類似於MSSQL Server中的snapshot,靜態快照。