ClickHouse 是由 Yandex 開發的 開源分布式列式資料庫管理系統(Column-oriented DBMS)。
主要針對 即時數據分析 (Real-Time Analytics) 場景設計,能夠在秒級內處理 PB 級數據。
ClickHouse 的整體設計邏輯非常清晰:以高效能讀取為核心,透過分散式架構與儲存最佳化,讓秒級查詢在 PB 級數據中成為可能。
從資料寫入、儲存、索引到查詢回傳,ClickHouse 有著一套完全為 OLAP 場景最佳化的底層架構。
我們可以將流程稍微簡化成以下步驟:
資料寫入 → 拆分成 Data Parts → Partition 劃分 → Primary Key 排序 → 壓縮 → Merge → 索引裁剪 → 向量化查詢 → 回傳結果
看不懂?沒關係,追完系列文章就全都懂了 😎
ClickHouse 技術特性 | 說明 |
---|---|
Columnar Storage | 只讀取需要的欄位,避免不必要的 I/O。 |
Vectorized Execution | 將資料轉成 SIMD 批次處理,加速 CPU 運算效率。 |
Compression | 各種編碼方式 (LZ4, ZSTD, Delta Encoding) 提供高壓縮比,降低儲存成本。 |
Data Skipping Indexes | 不需掃描全部資料,可根據索引直接跳過不相關的數據區塊,查詢更快。 |
MergeTree 儲存引擎 | 強大靈活的底層結構,支援分區、排序鍵、TTL 清理機制,適合大量數據分析。 |
Materialized Views | 可將複雜查詢結果預先計算並實時更新,大幅加快查詢速度。 |
分布式架構 | 支援 Sharding 與 Replica ,易於擴展到 PB 級數據處理規模。 |
Near-Real-Time Ingestion | 支援高吞吐量寫入 (如 Kafka Stream),數據可秒級查詢分析。 |
分類 | OLTP (Online Transaction Processing) | OLAP (Online Analytical Processing) |
---|---|---|
主要用途 | 交易處理 (CRUD 操作) | 數據分析、統計報表 |
操作特性 | 少量資料的頻繁寫入 | 大量資料的批次查詢 |
查詢型態 | 單筆/少量記錄查詢 | 大範圍聚合查詢 (Aggregation) |
儲存結構 | 行式存儲 (Row-based) | 列式存儲 (Column-based) |
代表產品 | MySQL, PostgreSQL, Oracle | ClickHouse, Druid, Redshift |
項目 | ClickHouse | 傳統 Data Warehouse (如 Oracle DW, Teradata) |
---|---|---|
架構 | 分布式列式存儲 | 多數為行式存儲或需額外配置列式引擎 |
查詢速度 | 毫秒級到秒級回應 | 通常需數秒到數分鐘 |
硬體需求 | 可用商用硬體 | 多數需昂貴專用伺服器 |
成本 | 開源免費/雲端計價模式 | 軟硬體成本高昂 |
延展性 | 支援線性水平擴展 (Sharding/Replication) | 擴展成本高 |
各位好,我是 Vic,這是我第一次投遞鐵人賽,會有參賽的原因是因為實習有用到 ClickHouse 這個資料庫服務,於是便一股腦鑽進來學習了,這個系列會著重於底層設計架構、優化...等細節,程式碼展示篇幅較少,內容應該會滿硬的XD(當然,我也同時在學習中),若你對這個系列感興趣,歡迎到我的部落格,上面更新速度比較快 XD,也會有其他的主題出現,對 軟體/前端/後端/AI Agent 開發有研究歡迎 Connect!