1. 簡介
官方文檔:https://clickhouse.yandex/docs
ClickHouse 是一個采用列式存儲,用於聯機分析(OLAP)的數據庫管理系統(DBMS)
2.ClickHouse 的優點
2.1 "真正"的列式存儲
一個真正的列式存儲的數據庫管理系統中,除了數據本身之外不應該存在其他額外的數據。意味着為了避免在只旁邊存儲它們的長度 'number',必須支持固定長度的數值類型。ClickHouse 的數據類型都是固定長度。
2.2 實時的數據更新
ClcikHouse 數據是以增量的方式有序的存儲在 MergeTree 中。因此,數據可以持續不斷高效的寫入到表中,並且寫入的過程中不會存在任何加鎖的行為。
2.3 支持近似計算
ClickHouse 提供各種各樣在允許犧牲精度的情況下對查詢進行加速的方法
- 用於近似計算的各類聚合函數,如:distinct values, medians, quantiles
- 基於數據的部分樣本進行近似查詢。這時,僅會從磁盤檢索少部分比例的數據。
- 不使用全部的聚合條件,通過隨機選擇有限個數據聚合條件進行聚合。這在數據聚合條件滿足某些分布條件下,在提供相當准確的聚合結果的同時降低了計算資源的使用
2.4 支持數據復制和數據完整性
ClickHouse 使用異步的多住復制技術。當數據被寫入到任何一個可用副本后,系統在后台將數據分發給其他副本。
- 只有 MergeTree 系列里的表殼支持副本
- 副本是表級別的,不是整個服務器級的。
- 副本不依賴分片,每個分片有它的獨立副本
- 對於 Insert 和 Alter 語句操作數據的會在壓縮的情況下被復制
- CREATE,DROP,DETACH,RENAME 語句只會在單個服務器上執行,不會被復制
- CREATE TABLE 在運行此語句的服務器上創建一個新的可復制表。如果此表已存在其他服務器上,則給該表添加新副本。
- DROP TABLE 刪除運行此查詢的服務器上的副本。
- RENAME 重命名一個副本。換句話說,可復制表不同的副本可以有不同的名稱。
3. ClickHouse 的缺點
- 沒有完整的事務支持
- 缺少高頻率、低延遲的修改或刪除已存在數據的能力,僅能用於批量刪除或修改數據。
