Lakehouse & Bảng Apache Iceberg trong Snowflake
Từ lâu doanh nghiệp phải chọn giữa data lake (linh hoạt, rẻ, định dạng mở — nhưng khó quản trị, truy vấn chậm) và data warehouse (nhanh, có quản trị — nhưng dữ liệu nằm trong định dạng riêng của hãng). Lakehouse xóa ranh giới đó: dữ liệu ở định dạng mở trên kho đám mây, nhưng được truy vấn và quản trị như trong warehouse.
Snowflake hiện thực hóa lakehouse bằng bảng Apache Iceberg.
Apache Iceberg là gì?
Phần tiêu đề “Apache Iceberg là gì?”Apache Iceberg là một định dạng bảng mở (open table format) theo chuẩn cộng đồng, lưu dữ liệu dưới dạng file Parquet kèm lớp metadata mô tả schema, phiên bản và phân vùng. Vì là chuẩn mở, nhiều engine cùng đọc được một bảng Iceberg: Snowflake, Spark, Trino, Flink, và các công cụ khác.
flowchart TB
subgraph YOURCLOUD["🗄️ Kho đám mây CỦA BẠN (S3 / Azure / GCS)"]
ICE["Bảng Apache Iceberg<br/>(Parquet + metadata mở)"]
end
SNOW["❄️ Snowflake<br/>truy vấn · quản trị · Cortex AI"] --> ICE
SPARK["Apache Spark"] --> ICE
TRINO["Trino / Flink"] --> ICE
Vì sao điều này quan trọng?
Phần tiêu đề “Vì sao điều này quan trọng?”| Tiêu chí | Data lake “thuần” | Warehouse “đóng” | Lakehouse (Iceberg) |
|---|---|---|---|
| Định dạng | Mở | Riêng của hãng | Mở (Iceberg) |
| Quản trị, bảo mật | Yếu | Mạnh | Mạnh (Horizon) |
| Tốc độ truy vấn | Chậm | Nhanh | Nhanh |
| Khóa nhà cung cấp | Không | Có | Không |
| Nhiều engine đọc chung | Có | Khó | Có |
External Tables — truy vấn dữ liệu “tại chỗ”
Phần tiêu đề “External Tables — truy vấn dữ liệu “tại chỗ””Ngoài Iceberg, Snowflake còn đọc được external table: dữ liệu để nguyên trên kho đám mây (ví dụ kho file Parquet sẵn có), Snowflake truy vấn mà không nạp vào trong. Hữu ích khi bạn muốn khám phá nhanh dữ liệu lớn trước khi quyết định nạp hẳn.
Khi nào dùng gì?
Phần tiêu đề “Khi nào dùng gì?”- Bảng Snowflake gốc: hiệu năng cao nhất, đủ tính năng (Time Travel, clone…) — mặc định cho phần lớn workload.
- Bảng Iceberg: khi cần định dạng mở & chia sẻ đa engine, hoặc chiến lược “dữ liệu thuộc về chúng tôi”.
- External table: khám phá/truy vấn tạm dữ liệu đang nằm sẵn trên lake.
BSD giúp bạn chọn đúng mô hình cho từng tập dữ liệu khi thiết kế kiến trúc.