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

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à 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
Tiêu chíData lake “thuần”Warehouse “đóng”Lakehouse (Iceberg)
Định dạngMởRiêng của hãngMở (Iceberg)
Quản trị, bảo mậtYếuMạnhMạnh (Horizon)
Tốc độ truy vấnChậmNhanhNhanh
Khóa nhà cung cấpKhôngKhông
Nhiều engine đọc chungKhó

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.

  • 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.

Chia sẻ: