Bỏ qua để đến nội dung

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.

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

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.

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
Tình huốngSnowflake xử lý thế nào
Cuối tháng ai cũng chạy báo cáoMulti-cluster tự scale-out, không nghẽn
ETL ban đêm nặngChạy trên cụm riêng, không đụng giờ BI
Cần thử nghiệm trên dữ liệu thậtZero-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 BPhân quyền ở tầng Cloud Services (RBAC)
Chia sẻ: