Delta Lake vs Iceberg vs Parquet¶
🔴 Rất quan trọng · Data Platform
Delta Lake là gì?¶
Là storage layer mã nguồn mở, chạy trên data lake (S3, ADLS, HDFS). Bổ sung ACID transactions, versioning, schema enforcement mà Parquet thuần không có.
📐 Hình dung đơn giản: Delta = Parquet files + Transaction Log (metadata)
So sánh¶
| Tiêu chí | Parquet | Delta Lake | Iceberg |
|---|---|---|---|
| Bản chất | File format | Storage layer (Parquet + metadata) | Table format (Parquet/ORC + metadata) |
| ACID Transaction | ❌ | ✅ | ✅ |
| Time Travel | ❌ | ✅ (theo version) | ✅ (theo snapshot) |
| Schema Evolution | Manual | Tự động enforce + merge | Tự động enforce + evolution |
| UPDATE/DELETE | ❌ (immutable) | ✅ (MERGE, DELETE) | ✅ |
| Engine hỗ trợ | Hầu hết | Chủ yếu Spark/Databricks | Đa engine (Spark, Trino, Flink...) |
| Vendor | Apache | Databricks (open-source) | Netflix → Apache |
Ưu điểm Delta¶
- ACID Transactions: Đảm bảo dữ liệu không bị corrupt khi nhiều job ghi đồng thời
- Time Travel: Quay lại version cũ dễ dàng, rất tiện debug và audit
- Schema Enforcement: Tự động reject dữ liệu sai schema, giữ chất lượng
- MERGE (Upsert): Hỗ trợ SCD2, upsert rất tiện lợi
Nhược điểm Delta¶
- Phụ thuộc nhiều vào hệ sinh thái Databricks/Spark
- Small file problem: Nhiều lần ghi nhỏ tạo ra nhiều file nhỏ → cần OPTIMIZE/VACUUM
- Transaction log lớn dần theo thời gian, cần chạy VACUUM định kỳ