Nội dung
Danh sách bài học
- 01~18 phút
Data types — vì sao TIMESTAMPTZ thay TIMESTAMP cứu deploy multi-region
PG types: int variants, TEXT vs VARCHAR(n), TIMESTAMPTZ vs TIMESTAMP, NUMERIC vs FLOAT (money), UUID, BYTEA, ARRAY, RANGE. 4 type pitfall production.
- 02~18 phút
Constraints — DB last line of defense, không trust app validation
NOT NULL, UNIQUE, PK, FK, CHECK, EXCLUDE, deferred constraint. Cascading. Vì sao app-level validate race-prone, DB-level enforce safe.
- 03~22 phút
Normalization 1NF→3NF — refactor TaskFlow tags TEXT thành junction table
1NF atomic value, 2NF no partial dependency, 3NF no transitive dependency. Codd 1970-1972. Pitfall over-normalize. TaskFlow refactor demo step-by-step.
- 04~18 phút
Denormalization tradeoff — khi nào break 3NF có chủ đích
Read vs write amplification. 3 pattern: cached column (denormalized FK label), counter table (precomputed COUNT), materialized view. Sync mechanism trigger/app/CDC.
- 05~18 phút
Surrogate vs natural key — UUIDv7 thay UUIDv4 cứu B-tree page split
Bigserial vs UUID v4 vs UUIDv7 vs natural key. Page split cost, enumeration attack risk, distributed system tradeoff. Snowflake context.
- 06~22 phút
Migration với Atlas — declarative state thay Flyway/Liquibase imperative
Atlas declarative workflow + 50+ lint rules. Vì sao thay Flyway 2025-2026. Liquibase chuyển FSL. Demo apply + revert + CI gate.