Cấu trúc Delta Table – Metadata & Transaction Log¶
🟠 Quan trọng · Data Platform
Cấu trúc thư mục Delta¶
my_table/
├── _delta_log/ ← Transaction Log
│ ├── 00000000000000000000.json
│ ├── 00000000000000000001.json
│ └── 00000000000000000010.checkpoint.parquet
├── part-00000-xxx.parquet ← Data files
└── part-00001-xxx.parquet
Transaction Log (_delta_log)¶
Mỗi file JSON = 1 commit (1 thay đổi). Trong đó chứa:
| Thành phần | Ý nghĩa |
|---|---|
| add | File Parquet mới được thêm vào |
| remove | File Parquet bị loại bỏ (không xóa vật lý ngay) |
| metaData | Thông tin schema, partition columns, format |
| commitInfo | Ai thay đổi, lúc nào, thao tác gì (INSERT, UPDATE, MERGE...) |
Cơ chế quản lý thay đổi¶
Khi bạn thực hiện UPDATE một dòng trong Delta:
- Delta KHÔNG sửa file cũ (Parquet là immutable)
- Tạo file Parquet MỚI chứa dữ liệu đã cập nhật
- Ghi vào transaction log: remove file cũ + add file mới
- File cũ vẫn tồn tại (dùng cho Time Travel) cho đến khi chạy VACUUM
Checkpoint¶
Mỗi 10 commit, Delta tạo 1 file checkpoint (.parquet) tổng hợp trạng thái → đọc nhanh hơn thay vì replay tất cả JSON.