Năng suất & công cụ dev
Spec Layer 1: Raw Layer
Lakehouse layer spec: Layer 1: Raw Layer
2026-03-173 phút đọcVI
📥 Spec – Layer 1: Raw Layer
🧭 1. Mục đích
Raw Layer là lớp đầu tiên trong chuỗi pipeline Lakehouse, dùng để lưu trữ dữ liệu gốc, chưa qua xử lý, chưa chuẩn hóa, được ingest trực tiếp từ hệ thống nguồn thông qua batch hoặc streaming.
Lớp này phục vụ:
- Lưu trữ trung thực dữ liệu để có thể truy vết, đối chiếu trong trường hợp sai sót ở tầng sau.
- Hỗ trợ debug, kiểm toán (audit), hoặc build lại pipeline downstream mà không cần kết nối lại với hệ thống nguồn.
- Duy trì tính immutable (bất biến) của dữ liệu gốc.
🏗️ 2. Cấu trúc lưu trữ
| Thành phần | Giá trị cấu hình |
|---|---|
| Định dạng file | Parquet hoặc JSON (tùy loại dữ liệu) |
| Partitioning | Theo ingest_date hoặc store_id |
| Storage format | Apache Iceberg (ưu tiên) hoặc Delta Lake |
| Vị trí lưu | minio://lakehouse/raw/<domain>/<table>/<ingest_date>/... |
| Sơ đồ phân tầng | raw.crm.customer_raw, raw.risk.blacklist_raw, v.v. |
⚙️ 3. Cơ chế ingest
🔄 Batch
- Dùng Airbyte với chế độ CDC hoặc Full Refresh
- Lưu metadata ingest:
source_name,ingest_time,record_hash
⚡ Streaming
- Qua Kafka topic → ingest bởi Flink hoặc Spark structured streaming
- Có thể ingest từ REST API, webhook hoặc log collector (Logstash, Filebeat)
📐 4. Chuẩn schema & lưu trữ
| Tiêu chí | Yêu cầu |
|---|---|
| Schema | Tự động phát hiện từ nguồn, không ép schema |
| Versioning | Ghi version theo batch run hoặc Kafka offset |
| Audit cột bắt buộc | __ingest_time, __source_system, __batch_id, __is_deleted |
| Chính sách lưu trữ | 90 ngày với dữ liệu raw; có thể extend tùy domain |
| Immutable | Không sửa đổi file sau khi đã ghi – chỉ append |
| Compression | Snappy (Parquet) hoặc gzip (JSON) |
| Logging ingest | Ghi log theo batch với trạng thái: Success, Partial, Error |
🧪 5. Kiểm thử & xác nhận dữ liệu
| Loại kiểm thử | Mục tiêu kiểm thử |
|---|---|
| Schema drift check | Kiểm tra schema có thay đổi so với lần ingest trước |
| Row count check | So sánh số dòng với dữ liệu gốc |
| Hash check | Đảm bảo không ghi trùng hoặc thiếu record |
| Sample inspect | Random 10–20 dòng để so sánh trực quan với hệ thống nguồn |
🔐 6. Bảo mật & quyền truy cập
| Quy định | Mô tả |
|---|---|
| Quyền ghi | Chỉ Airbyte, Kafka/Flink pipeline được phép ghi |
| Quyền đọc | Chỉ nhóm Data Engineering & Audit, không dùng cho phân tích trực tiếp |
| PII masking | Không áp dụng ở Raw, nhưng gắn nhãn phân loại dữ liệu nhạy cảm |
| Audit log | Ghi log người truy cập, thời gian và hành động |
🧩 7. Ví dụ cấu trúc thư mục dữ liệu
minio://lakehouse/raw/
├── crm/
│ ├── customer_raw/
│ │ ├── ingest_date=2025-06-24/
│ │ │ ├── part-0001.parquet
│ │ │ └── ...
│ └── contact_raw/
│ └── ingest_date=2025-06-24/
│ └── ...
├── lending/
│ └── contract_raw/
│ └── ingest_date=2025-06-24/
│ └── ...
📎 8. Tài liệu & quản lý metadata
- Tự động sinh mô tả bảng qua
dbt source freshness - Gắn
tag: raw,domain: crm,sensitivity: high - Tự động đồng bộ schema với DataHub hoặc Amundsen
