iT邦幫忙

2025 iThome 鐵人賽

DAY 1
2
Software Development

ClickHouse 系列:從資料庫底層架構到軟體應用實踐系列 第 1

Day 1|ClickHouse 系列:ClickHouse 是什麼?與傳統 OLAP/OLTP 資料庫的差異

  • 分享至 

  • xImage
  •  

ClickHouse 是由 Yandex 開發的 開源分布式列式資料庫管理系統(Column-oriented DBMS)。

主要針對 即時數據分析 (Real-Time Analytics) 場景設計,能夠在秒級內處理 PB 級數據。

架構

ClickHouse Architecture

ClickHouse 的整體設計邏輯非常清晰:以高效能讀取為核心,透過分散式架構與儲存最佳化,讓秒級查詢在 PB 級數據中成為可能。
從資料寫入、儲存、索引到查詢回傳,ClickHouse 有著一套完全為 OLAP 場景最佳化的底層架構。

我們可以將流程稍微簡化成以下步驟:

資料寫入 → 拆分成 Data Parts → Partition 劃分 → Primary Key 排序 → 壓縮 → Merge → 索引裁剪 → 向量化查詢 → 回傳結果

看不懂?沒關係,追完系列文章就全都懂了 😎

圖片取自 Architecture Overview

特色 & 特性

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),數據可秒級查詢分析。

OLAP v.s. OLTP 基本概念

分類 OLTP (Online Transaction Processing) OLAP (Online Analytical Processing)
主要用途 交易處理 (CRUD 操作) 數據分析、統計報表
操作特性 少量資料的頻繁寫入 大量資料的批次查詢
查詢型態 單筆/少量記錄查詢 大範圍聚合查詢 (Aggregation)
儲存結構 行式存儲 (Row-based) 列式存儲 (Column-based)
代表產品 MySQL, PostgreSQL, Oracle ClickHouse, Druid, Redshift

ClickHouse 與傳統 OLAP 資料庫的差異

項目 ClickHouse 傳統 Data Warehouse (如 Oracle DW, Teradata)
架構 分布式列式存儲 多數為行式存儲或需額外配置列式引擎
查詢速度 毫秒級到秒級回應 通常需數秒到數分鐘
硬體需求 可用商用硬體 多數需昂貴專用伺服器
成本 開源免費/雲端計價模式 軟硬體成本高昂
延展性 支援線性水平擴展 (Sharding/Replication) 擴展成本高

ClickHouse 與 OLTP 資料庫(如 MySQL, PostgreSQL)的差異

  1. OLTP 資料庫在於 ACID 交易完整性、寫入頻繁的即時處理。
  2. ClickHouse 更適合「大量讀取查詢」且「不需要頻繁即時修改」的場景(如報表查詢、BI 分析)。
  3. OLTP 常見的 UPDATE/DELETE 操作在 ClickHouse 中屬於非即時(Mutation 機制)。

結語

各位好,我是 Vic,這是我第一次投遞鐵人賽,會有參賽的原因是因為實習有用到 ClickHouse 這個資料庫服務,於是便一股腦鑽進來學習了,這個系列會著重於底層設計架構、優化...等細節,程式碼展示篇幅較少,內容應該會滿硬的XD(當然,我也同時在學習中),若你對這個系列感興趣,歡迎到我的部落格,上面更新速度比較快 XD,也會有其他的主題出現,對 軟體/前端/後端/AI Agent 開發有研究歡迎 Connect!


下一篇
Day 2|ClickHouse 系列:ClickHouse 為什麼選擇 Column-based 儲存?講解 Row-based 與 Column-based 的核心差異
系列文
ClickHouse 系列:從資料庫底層架構到軟體應用實踐30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言