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 Travel và zero-copy clone.
Micro-partition — tối ưu tự động
Phần tiêu đề “Micro-partition — tối ưu tự động”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ột và né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.
Bộ nhớ đệm nhiều tầng (caching)
Phần tiêu đề “Bộ nhớ đệm nhiều tầng (caching)”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 đệm | Giữ gì | Lợi ích |
|---|---|---|
| Result cache | Kết quả truy vấn (24 giờ) | Câu y hệt → trả ngay, 0 credit |
| Local disk cache | Dữ liệu warehouse vừa đọc | Truy vấn kế tiếp đọc nhanh hơn |
| Metadata cache | Thố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/DELETEsai? 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ức mà khô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.