Kiến trúc Snowflake: 3 tầng & Multi-cluster Shared Data
Snowflake xây trên một kiến trúc đặc trưng gọi là multi-cluster, shared data (đa cụm, dùng chung dữ liệu). Hiểu kiến trúc này là hiểu vì sao Snowflake co giãn tốt, tách chi phí rõ ràng và gần như không cần vận hành.
Ba tầng tách biệt
Phần tiêu đề “Ba tầng tách biệt”flowchart TB
subgraph CS["☁️ Cloud Services — bộ não"]
direction LR
A1["Tối ưu truy vấn"]
A2["Bảo mật & quản trị"]
A3["Metadata & giao dịch"]
end
subgraph CP["⚡ Compute — Virtual Warehouses"]
direction LR
W1["WH Báo cáo / BI<br/>(size M)"]
W2["WH ETL / nạp liệu<br/>(size L)"]
W3["WH Khoa học dữ liệu<br/>(size XL)"]
end
subgraph ST["🗄️ Storage — một bản dữ liệu tập trung"]
D["Dữ liệu nén · lưu theo cột · micro-partition<br/>trên kho object đám mây (S3 / Blob / GCS)"]
end
CS --> CP
W1 --> D
W2 --> D
W3 --> D
① Tầng Lưu trữ (Storage)
Phần tiêu đề “① Tầng Lưu trữ (Storage)”Mọi dữ liệu nạp vào Snowflake được nén, lưu theo cột và chia thành các micro-partition trên kho lưu trữ object của đám mây. Đây là một bản dữ liệu duy nhất mà tất cả cụm tính toán cùng đọc. Bạn không thấy file, không quản phân vùng — Snowflake quản hết. Chi phí lưu trữ tính theo dung lượng nén thực tế, rẻ và tách riêng khỏi chi phí tính toán.
② Tầng Xử lý (Compute)
Phần tiêu đề “② Tầng Xử lý (Compute)”Sức tính toán đến từ các virtual warehouse — mỗi cụm là một nhóm máy chủ độc lập. Nhiều cụm cùng đọc chung tầng lưu trữ nhưng không ảnh hưởng lẫn nhau: đội BI chạy dashboard trên cụm của họ, đội ETL nạp dữ liệu trên cụm khác, đội khoa học dữ liệu huấn luyện mô hình trên cụm thứ ba — cùng một dữ liệu, không ai làm chậm ai.
③ Tầng Dịch vụ Đám mây (Cloud Services)
Phần tiêu đề “③ Tầng Dịch vụ Đám mây (Cloud Services)”Đây là “bộ não” điều phối toàn hệ thống: tối ưu truy vấn, quản lý siêu dữ liệu, xác thực & phân quyền, quản lý giao dịch và bảo mật. Tầng này cũng giữ result cache (bộ nhớ đệm kết quả) — câu truy vấn lặp lại trả về tức thì mà không tốn compute.
Multi-cluster: tự thêm cụm khi đông người dùng
Phần tiêu đề “Multi-cluster: tự thêm cụm khi đông người dùng”Với workload có lúc đông lúc vắng (ví dụ sáng thứ Hai cả công ty mở dashboard), một virtual warehouse có thể bật chế độ multi-cluster: Snowflake tự thêm cụm phụ khi hàng đợi truy vấn tăng, rồi tự bớt khi vắng. Người dùng luôn được phục vụ nhanh, còn bạn chỉ trả tiền cho số cụm thực sự chạy.
flowchart LR
U["Nhiều người dùng<br/>cùng truy vấn"] --> Q{"Hàng đợi tăng?"}
Q -->|"Có"| S["Snowflake tự bật<br/>thêm cụm (scale-out)"]
Q -->|"Vắng"| R["Tự thu về 1 cụm<br/>(tiết kiệm)"]
S --> D["Cùng một bản<br/>dữ liệu tập trung"]
R --> D
Liên hệ thực tế
Phần tiêu đề “Liên hệ thực tế”| Tình huống | Snowflake xử lý thế nào |
|---|---|
| Cuối tháng ai cũng chạy báo cáo | Multi-cluster tự scale-out, không nghẽn |
| ETL ban đêm nặng | Chạy trên cụm riêng, không đụng giờ BI |
| Cần thử nghiệm trên dữ liệu thật | Zero-copy clone (xem bài Lưu trữ & Time Travel) |
| Phòng ban A không được thấy dữ liệu phòng ban B | Phân quyền ở tầng Cloud Services (RBAC) |