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

Lưu trữ, Micro-partition, Time Travel & Zero-copy Clone trong Snowflake

Một phần “ma thuật” của Snowflake nằm ở cách nó quản lý dữ liệu tự động. Bạn không xây index, không chia phân vùng, không gom file — Snowflake làm hết dưới nắp capô. Bài này giải thích ba thứ bạn nên biết: micro-partition, Time Travelzero-copy clone.

Khi dữ liệu nạp vào, Snowflake tự chia thành các khối nhỏ gọi là micro-partition (mỗi khối ~50–500 MB dữ liệu chưa nén), lưu theo cộtnén lại. Với mỗi khối, Snowflake ghi lại siêu dữ liệu (giá trị nhỏ nhất/lớn nhất, số giá trị phân biệt…).

Khi bạn truy vấn, Snowflake dùng siêu dữ liệu để bỏ qua (prune) những khối chắc chắn không chứa dữ liệu cần — chỉ đọc phần liên quan. Đây là lý do truy vấn nhanh mà không cần bạn xây index thủ công.

Snowflake tăng tốc bằng cách đệm kết quả ở nhiều tầng, giúp truy vấn lặp lại gần như tức thì và không tốn compute:

Tầng đệmGiữ gìLợi ích
Result cacheKết quả truy vấn (24 giờ)Câu y hệt → trả ngay, 0 credit
Local disk cacheDữ liệu warehouse vừa đọcTruy vấn kế tiếp đọc nhanh hơn
Metadata cacheThống kê bảngĐếm/min/max trả lời tức thì

Time Travel — “du hành thời gian” về dữ liệu cũ

Phần tiêu đề “Time Travel — “du hành thời gian” về dữ liệu cũ”

Snowflake giữ lại trạng thái dữ liệu trước khi thay đổi trong một khoảng (mặc định 1 ngày, bản Enterprise tới 90 ngày). Nhờ đó bạn có thể truy vấn hoặc khôi phục dữ liệu như nó từng có ở quá khứ:

  • Lỡ UPDATE/DELETE sai? Xem lại dữ liệu 5 phút trước và khôi phục.
  • Bảng bị xóa nhầm? UNDROP TABLE đưa nó về tức thì.
  • Cần đối chiếu “số liệu cuối ngày hôm qua”? Truy vấn đúng mốc thời gian đó.
flowchart LR
  T0["Dữ liệu hôm nay"] -->|"Time Travel"| T1["Trạng thái 1 giờ trước"]
  T0 -->|"Time Travel"| T2["Trạng thái cuối ngày hôm qua"]
  T0 -->|"UNDROP"| T3["Bảng vừa xóa nhầm"]

Zero-copy Clone — nhân bản tức thì, không tốn dung lượng

Phần tiêu đề “Zero-copy Clone — nhân bản tức thì, không tốn dung lượng”

CLONE tạo một bản sao logic của bảng/schema/cả database ngay lập tứckhông nhân đôi dữ liệu vật lý — hai bản dùng chung micro-partition cho tới khi một bên thay đổi (lúc đó chỉ phần thay đổi mới tốn thêm chỗ).

Ứng dụng thực tế:

  • Môi trường test/dev trên dữ liệu thật: clone production sang dev trong vài giây, thử nghiệm thoải mái, không tốn kho.
  • Ảnh chụp trước khi nâng cấp: clone trước, đổi cấu trúc, lỡ hỏng thì quay lại.
  • Phân tích “what-if” trên một bản riêng mà không động vào dữ liệu gốc.
Chia sẻ: