更簡潔更高效,Doris對比ClickHouse、MySQL、Presto、HBase
構建統一的OLAP
OLAP,即在線分析處理平臺。
保險公司試圖構建一個數據倉庫,能夠承擔面向客戶、分析師和管理層的數據分析工作負載。主要任務包括:
- 自助保險合同查詢:保險客戶可以通過合同ID檢查其合同詳情。它還應支持諸如保險期限、保險類型和理賠金額等篩選條件。
- 多維分析:分析師根據需要基于不同的數據維度開發報告,以便提取見解,促進產品創新和反欺詐工作。
- 儀表盤:創建保險銷售趨勢的可視化概覽,以及不同指標的橫向和縱向比較。
組建數據架構
用戶從Lambda架構開始,將數據流水線分為批處理環節和流處理環節。對于實時數據流,采用Flink CDC;對于批量導入,結合Sqoop、Python和DataX構建自己的數據集成工具,名為Hisen。
然后,實時數據和離線數據在數據倉庫層匯合,該層由五個組件組成。
1.ClickHouse
數據倉庫采用扁平表設計,ClickHouse在扁平表讀取方面表現出色。但隨著業務的發展,ClickHouse面臨兩個挑戰:
- 為了支持跨表連接和點查詢,用戶需要星型模式,但在ClickHouse中實現起來很困難。
- 保險合同的更改需要實時更新到數據倉庫。在ClickHouse中,這是通過重新創建扁平表覆蓋舊表來完成的,但速度不夠快。
2.MySQL
計算后的數據指標存儲在MySQL中,但隨著數據規模的增長,MySQL開始出現問題,如執行時間延長和錯誤。
3.Apache Hive + Presto
Hive是批處理環節的主要執行器。它可以轉換、聚合和查詢離線數據。Presto是Hive的補充,用于交互式分析。
4.Apache HBase
HBase負責主鍵查詢。它從MySQL和Hive中讀取客戶狀態,包括客戶信用、保險期限和保額總和。然而,由于HBase不支持二級索引,它在讀取非主鍵列方面的能力有限。另外,作為NoSQL數據庫,HBase不支持SQL語句。
這些組件必須相互協作,以滿足所有需求,使得數據倉庫的工作量過大。這不容易上手,因為工程師必須接受所有這些組件的培訓。此外,架構的復雜性增加了延遲風險。
因此,用戶試圖尋找一個能更好滿足他們需求的工具。首先需要的是實時能力,包括實時寫入、實時更新和對數據查詢的實時響應。其次,需要更靈活的數據分析能力,以支持面向客戶的自助查詢,如多維分析、大表的連接查詢、主鍵索引、匯總和鉆取。然后,在批處理方面,還希望數據寫入具有高吞吐量。
最終選擇了Apache Doris。
用Apache Doris替換四個組件
Apache Doris能夠進行實時和離線數據分析,支持高吞吐量的交互式分析和高并發的點查詢。這就是為什么它可以取代ClickHouse、MySQL、Presto和Apache HBase,并作為整個數據系統的統一查詢網關。
改進后的數據流水線是一個更簡潔的Lambda架構。
Apache Doris提供了各種數據攝取方法。它在數據寫入方面速度快。此外,它還實現了寫入合并(Merge-on-Write)以提高并發點查詢的性能。
1.降低成本
新架構降低了用戶的人力成本。一方面,更簡單的數據架構使得維護更加容易;另一方面,開發人員不再需要在數據服務API中連接實時和離線數據。
用戶還可以通過使用Doris節省金錢,因為它支持分層存儲。它允許用戶將大量很少訪問的歷史數據存儲在對象存儲中,這樣存儲數據的成本更低。
2.提高效率
Apache Doris可以達到數萬的查詢每秒(QPS),并在毫秒內響應數十億的點查詢,因此它可以輕松處理面向客戶的查詢。將熱數據與冷數據分離的分層存儲也提高了查詢效率。
3.服務可用性
作為存儲、計算和數據服務的統一數據倉庫,Apache Doris方便了災難恢復。由于組件較少,不必擔心數據丟失或重復。
用戶的服務可用性的重要保證是Apache Doris的跨集群復制(CCR)功能。它可以在幾分鐘甚至幾秒鐘內將數據從集群同步到集群,并實現兩種機制來確保數據可靠性:
- Binlog:該機制可以自動記錄數據更改并為每個數據修改操作生成一個日志ID。增量日志ID確保數據更改可追溯和有序。
- 數據持久化:在系統崩潰或緊急情況下,數據將存儲在磁盤中。
對Apache Doris的深入了解
Apache Doris可以替代ClickHouse、MySQL、Presto和HBase,因為它在整個數據處理流程中具備全面的能力。
在數據攝取方面,Apache Doris基于對Flink CDC和寫入合并的支持,實現低延遲的實時寫入。它通過標簽機制和事務加載來保證寫入的Exactly-Once。
在數據查詢方面,Apache Doris支持星型模式和扁平表聚合,因此可以在多表連接和大型單表查詢中提供高性能。Apache Doris還提供了各種加速不同查詢的方法,如用于全文搜索和范圍查詢的倒排索引,用于點查詢的短路查詢計劃和預編譯語句等。