ClickHouse
🔷 1. ClickHouse là gì?
ClickHouse là một column-oriented OLAP database management system được tối ưu cho:
Tốc độ truy vấn cực nhanh
Xử lý dữ liệu lớn (big data)
Tải ghi cao, truy vấn phân tích nhanh
Time-series và log analytics
Được sử dụng bởi Yandex, Cloudflare, Uber, Lyft, Alibaba, và nhiều công ty lớn khác.
🔷 2. So sánh Column-Oriented vs Row-Oriented
Dùng tốt cho
OLTP - transactional workloads
OLAP - analytical workloads
Truy vấn
SELECT * WHERE id = 5
SELECT AVG(sales) BY region
Hiệu suất
Nhanh khi ghi/lấy 1 dòng
Nhanh khi query 1 cột trên nhiều dòng
Cách lưu
Theo dòng
Theo cột
🔷 3. Khi nào nên dùng ClickHouse?
ClickHouse phù hợp khi bạn cần:
✅ Realtime analytics ✅ Thống kê logs, events, time-series ✅ Truy vấn dữ liệu lớn với nhiều phép tính aggregate (AVG, SUM, COUNT, GROUP BY...) ✅ Truy vấn phức tạp với tốc độ dưới 100ms trên TB dữ liệu
🔷 4. Kiến trúc tổng quan
MergeTree Engine: nền tảng cho bảng hỗ trợ index, partition, TTL...
Materialized Views: tính toán dữ liệu sẵn theo nhu cầu (dạng cache).
Distributed tables: xử lý dữ liệu phân tán.
Compression: cực tốt, giảm chi phí lưu trữ đáng kể.
🔷 5. Cài đặt cơ bản (dùng Docker)
docker run -d --name clickhouse \
-p 8123:8123 \
-p 9000:9000 \
yandex/clickhouse-server
Port
8123
: HTTP interfacePort
9000
: Native TCP protocol (dùng cho Golang client)
🔷 6. Tạo bảng và insert dữ liệu
-- Tạo bảng
CREATE TABLE users (
id UInt64,
name String,
age UInt8,
created_at DateTime
) ENGINE = MergeTree
ORDER BY id;
-- Insert
INSERT INTO users VALUES (1, 'Tài', 27, now());
-- Query
SELECT name, age FROM users WHERE age > 20;
🔷 7. Các loại Engine phổ biến
MergeTree
Cơ bản nhất, hỗ trợ index, TTL, PARTITION
ReplacingMergeTree
Xóa bản ghi cũ, giữ lại bản mới
SummingMergeTree
Dùng để auto cộng dồn dữ liệu
AggregatingMergeTree
Lưu trữ kết quả tổng hợp
Distributed
Dùng cho cluster, phân mảnh ngang
🔷 8. Tích hợp với Golang
Dùng client như: ClickHouse-Go
import "github.com/ClickHouse/clickhouse-go/v2"
conn, err := clickhouse.Open(&clickhouse.Options{
Addr: []string{"localhost:9000"},
Auth: clickhouse.Auth{
Database: "default",
Username: "default",
Password: "",
},
})
🔷 9. Các điểm mạnh nổi bật
✅ Ghi hàng triệu bản ghi mỗi giây ✅ Truy vấn cực nhanh trên hàng tỷ dòng ✅ Column compression rất tốt (giảm dung lượng ~5–10x) ✅ Hỗ trợ các function analytics nâng cao ✅ Có thể mở rộng theo chiều ngang (scale out)
🔷 10. Các điểm cần lưu ý
❌ Không hỗ trợ cập nhật theo dòng (row-based update) như MySQL ✅ Có thể update theo batch hoặc dùng ReplacingMergeTree ❌ Không hỗ trợ transaction ✅ Nhưng có khả năng xử lý atomic insert
🔷 11. Use Cases phổ biến
Monitoring (logs, metrics) – thay Prometheus/Grafana backend
Realtime analytics – lượt truy cập, dashboard, tracking
E-commerce product insights
Fintech / fraud detection
IoT data ingestion & query
Last updated