Database Mastery — Roadmap 16 Tuần

Người hướng dẫn: Principal Database Engineer & Staff Data Engineer Học viên: Hieu — Fullstack Web Dev (2+ năm) → Senior Engineer với chiều sâu DB Phương pháp: PostgreSQL Internals + DDIA + Database Internals (Alex Petrov) + High Performance MySQL + Designing Data-Intensive Applications + thực chiến production Tham chiếu chính: Database Internals — Alex Petrov, DDIA — Kleppmann, PostgreSQL Documentation, The Internals of PostgreSQL — Hironobu Suzuki, Designing Data Intensive Applications Quan hệ với khóa khác:


Triết lý học

"Index không phải magic. Mỗi index là một cây B-tree thật, tốn disk, tốn RAM, tốn write amplification.
Hiểu nó tốn gì thì mới biết khi nào đáng."

Hầu hết dev 2-3 năm viết SQL theo kiểu “query chạy được”. Senior viết SQL theo kiểu “query này dùng index nào, đọc bao nhiêu page, có spill ra disk không, có giữ lock không”. Khóa này rèn 4 thứ:

  1. Hiểu nội tại — Biết DB lưu byte trên disk thế nào, plan query ra sao, lock hoạt động ra sao.
  2. Đọc EXPLAIN như đọc code — Không guess, không “thêm index xem sao”. Đọc query plan, đo, sửa, đo lại.
  3. Vận hành production — Backup, restore, migration zero-downtime, monitoring, capacity.
  4. Chọn đúng DB cho đúng workload — Relational, KV, document, time-series, search, vector, columnar. Mỗi loại có giá riêng.

Tổng quan 16 tuần

gantt
    title Database Mastery — 16 Weeks
    dateFormat  YYYY-MM-DD
    axisFormat  %b %d

    section Phase 1: Relational Deep Dive
    Tuần 01 - DB Internals Refresh        :d1, 2026-05-25, 7d
    Tuần 02 - Schema Design & Normalization :d2, after d1, 7d
    Tuần 03 - Indexing Mastery            :d3, after d2, 7d
    Tuần 04 - Query Optimization & EXPLAIN :d4, after d3, 7d
    Tuần 05 - Transactions & Locking      :d5, after d4, 7d

    section Phase 2: Operations
    Tuần 06 - Connection Pooling & Pgbouncer :d6, after d5, 7d
    Tuần 07 - Backup, PITR & Disaster Recovery :d7, after d6, 7d
    Tuần 08 - Zero-downtime Migration     :d8, after d7, 7d
    Tuần 09 - DB Observability & Tuning   :d9, after d8, 7d

    section Phase 3: NoSQL & Specialized
    Tuần 10 - Redis Mastery               :d10, after d9, 7d
    Tuần 11 - DynamoDB & Cassandra        :d11, after d10, 7d
    Tuần 12 - Document DBs - MongoDB       :d12, after d11, 7d

    section Phase 4: Modern Workload
    Tuần 13 - Search Engines - ES/OpenSearch :d13, after d12, 7d
    Tuần 14 - OLAP & Columnar - ClickHouse :d14, after d13, 7d
    Tuần 15 - Vector DB cho AI            :d15, after d14, 7d

    section Phase 5: Application Patterns
    Tuần 16 - ORM, N+1, CQRS, Multi-tenancy :d16, after d15, 7d

Phase 1: Relational Deep Dive (Tuần 1–5)

Đa số dev gặp 80% bài toán DB ở phase này. Master nó trước khi đi rộng.

TuầnChủ đềMục tiêuBài học
01Database Internals RefreshStorage engine (B-tree vs LSM), page layout, WAL, buffer pool, checkpoint, MVCC mechanics — đào sâu hơn Tuan-Foundations-Database-InternalsTuan-01-DB-Internals-Refresh
02Schema Design & Normalization1NF→BCNF, khi nào denormalize, surrogate vs natural key, EAV anti-pattern, soft delete patterns, audit table designTuan-02-Schema-Design-Normalization
03Indexing MasteryB-tree variants, covering index, partial, expression, multi-column order, GIN/GiST/BRIN/Hash, index-only scan, bloatTuan-03-Indexing-Mastery
04Query Optimization & EXPLAINĐọc EXPLAIN ANALYZE, planner statistics, cardinality estimation, join algorithms (nested loop, hash, merge), CTE pitfalls, window functionTuan-04-Query-Optimization-EXPLAIN
05Transactions & LockingACID thực chiến, isolation levels, MVCC visibility rules, SELECT FOR UPDATE, advisory locks, deadlock detection, optimistic vs pessimisticTuan-05-Transactions-Locking

Kỹ năng then chốt sau Phase 1:

  • Đọc EXPLAIN ANALYZE và chỉ ra bottleneck trong 30 giây
  • Thiết kế schema cho domain mới (chọn key, FK, index, partition)
  • Giải thích khi nào B-tree thua LSM và ngược lại
  • Reproduce + fix deadlock từ pg_locks
  • Phân biệt 4 isolation levels và pick đúng level cho từng use case

Phase 2: Operational Excellence (Tuần 6–9)

Code chạy được là tối thiểu. Code chạy 3 năm production không xuống là engineering.

TuầnChủ đềMục tiêuBài học
06Connection Pooling & PgBouncerPool sizing math, transaction vs session pooling, prepared statement trap, pool exhaustion, RDS Proxy, ProxySQL cho MySQLTuan-06-Connection-Pooling-PgBouncer
07Backup, PITR & Disaster Recoverypg_basebackup, WAL archiving, PITR, logical vs physical backup, RPO/RTO, test restore drill, S3 cold storage, retention policyTuan-07-Backup-PITR-DR
08Zero-downtime MigrationExpand-contract pattern, gh-ost / pt-osc, online DDL Postgres 12+, partition swap, dual-write, backfill chunking, rollback planTuan-08-Zero-Downtime-Migration
09DB Observability & Performance Tuningpg_stat_statements, autovacuum tuning, bloat detection, slow query log, USE method cho DB, capacity planning, p99 latencyTuan-09-DB-Observability-Tuning

Kỹ năng then chốt sau Phase 2:

  • Thiết kế backup strategy đủ tiêu chuẩn audit (RPO < 5 phút, RTO < 1h)
  • Migrate schema trên bảng 100M rows không downtime
  • Phân tích bloat, thiết lập autovacuum cho high-write workload
  • Setup pg_stat_statements + Grafana dashboard cho production

Phase 3: NoSQL & Specialized Stores (Tuần 10–12)

Relational không phải búa duy nhất. Biết khi nào đặt nó xuống và cầm dụng cụ khác.

TuầnChủ đềMục tiêuBài học
10Redis MasteryData structures (String/Hash/List/Set/ZSet/Stream/HLL/Bitmap), persistence (RDB/AOF), Cluster mode, Lua scripting, atomic patterns, anti-patternsTuan-10-Redis-Mastery
11DynamoDB & CassandraSingle-table design, partition key chiến lược, hot partition, LSI/GSI, eventual consistency, Cassandra tunable consistency, CQL anti-patternsTuan-11-DynamoDB-Cassandra
12Document DBs — MongoDBDocument model, embedding vs referencing, aggregation pipeline, sharding strategy, change streams, MongoDB anti-patterns (subdoc growth, unbounded array)Tuan-12-MongoDB-Document-DB

Kỹ năng then chốt sau Phase 3:

  • Thiết kế single-table DynamoDB cho một domain (3+ access pattern)
  • Phân biệt khi nào dùng Redis vs Memcached vs in-memory DB
  • Giải thích trade-off document vs relational, không rơi vào tư duy “MongoDB linh hoạt hơn”

Phase 4: Modern Workload (Tuần 13–15)

2026: AI, real-time analytics, full-text search là baseline. Không phải optional.

TuầnChủ đềMục tiêuBài học
13Search Engines — Elasticsearch/OpenSearchInverted index, BM25, analyzer pipeline, mapping design, refresh interval, hot-warm-cold, hybrid với pgvector, khi nào dùng ES vs Postgres FTSTuan-13-Search-Engines-ES
14OLAP & Columnar — ClickHouse/DuckDBColumnar storage, vectorized execution, materialized view, MergeTree engine, khi nào ClickHouse thắng Postgres 100x, OLAP vs OLTP trade-off, BigQuery/Snowflake basicsTuan-14-OLAP-Columnar-ClickHouse
15Vector DB cho AIEmbedding cơ bản, pgvector vs Qdrant vs Pinecone, HNSW vs IVF vs DiskANN, hybrid search (dense + sparse), filtered search, RAG pipelineTuan-15-Vector-DB-AI

Kỹ năng then chốt sau Phase 4:

  • Thiết kế search system với ES từ index mapping → query DSL → ranking
  • Phân tích khi nào move analytics khỏi Postgres sang ClickHouse (chi phí + benefit)
  • Build RAG production-ready với pgvector, biết khi nào cần switch sang Qdrant
  • Hiểu HNSW graph traversal đủ để debug recall thấp

Phase 5: Application Patterns (Tuần 16)

DB nằm trong app code. Pattern application-level quyết định 50% performance.

TuầnChủ đềMục tiêuBài học
16ORM, N+1, CQRS, Multi-tenancyORM anti-patterns (N+1, lazy loading trap), DataLoader/batch, repository pattern, CQRS với DB, event sourcing trade-off, multi-tenancy ở DB level (RLS, schema-per-tenant, hybrid)Tuan-16-ORM-CQRS-Multi-Tenancy

Kỹ năng then chốt sau Phase 5:

  • Phát hiện N+1 từ APM/log trong 5 phút
  • Implement multi-tenancy với RLS (Row Level Security) đúng chuẩn
  • Quyết định khi nào dùng CQRS với separate read model, khi nào over-engineering

Bonus Chapters (đọc khi sẵn sàng)

Topic chuyên sâu hoặc xu hướng 2024-2026. Không bắt buộc theo thứ tự.

#Chủ đềMục tiêuBài học
Bonus-0Postgres Partitioning Deep DiveRange/list/hash, pruning, sub-partition, attach/detach, pg_partman, migrationTuan-Bonus-Postgres-Partitioning
Bonus-1Time-series DBs — TimescaleDB/InfluxDB v3/VictoriaMetricsHypertable, chunk, continuous aggregate, retention policy, Prometheus storage internalsTuan-Bonus-Time-Series-DB
Bonus-2Graph DBs — Neo4j/CypherProperty graph model, Cypher query, khi nào graph thắng relational (>3 join hops, social/recommend)Tuan-Bonus-Graph-DB-Neo4j
Bonus-3Embedded DBs — SQLite/DuckDB/RocksDBWAL mode, khi nào SQLite scale tốt (Litestream, edge), DuckDB cho local analytics, RocksDB như storage primitiveTuan-Bonus-Embedded-DBs
Bonus-4CDC Deep Dive — Debezium/Kafka ConnectLogical replication slot, Debezium connector, CDC topic design, schema evolution, link với Tuan-Bonus-Outbox-PatternTuan-Bonus-CDC-Debezium
Bonus-5Distributed SQL — CockroachDB/TiDBGlobally distributed transactions, Raft per range, link với Tuan-Bonus-Multi-Region-Active-Active-DSQL nhưng đào sâu engineering sideTuan-Bonus-Distributed-SQL-Engineering
Bonus-6MySQL Internals & High PerformanceInnoDB internals, gap lock vs next-key lock, group replication, ProxySQL, khác biệt với Postgres khi nào quan trọngTuan-Bonus-MySQL-Internals
Bonus-7Lakehouse EngineeringLink sang Case-Design-Modern-Data-Lakehouse nhưng đào sâu: Iceberg metadata layer, Z-ordering, file pruning, time travelTuan-Bonus-Lakehouse-Engineering
Bonus-8Database Security & ComplianceColumn encryption, transparent data encryption, PII scrubbing, audit log, GDPR right-to-erasure ở DB level, link với Tuan-15-Data-Security-EncryptionTuan-Bonus-DB-Security-Compliance

Case Studies (sau Phase 4)

Mỗi case study là một bài tập tổng hợp — không phải design hệ thống mà là design data layer cho hệ thống đó.

#Case StudyMục tiêuBài học
01Design Data Layer cho E-commerceProduct catalog (relational + search + cache), order (ACID, idempotency), inventory (concurrency), recommendation (vector)Case-Design-Data-Ecommerce
02Design Data Layer cho SaaS Multi-tenantRLS vs schema-per-tenant, noisy neighbor, billing data, tenant migrationCase-Design-Data-SaaS-Multi-tenant
03Design Data Layer cho Realtime AnalyticsEvent ingestion (Kafka → ClickHouse), pre-aggregation, hot/cold split, query latency budgetCase-Design-Data-Realtime-Analytics
04Design Data Layer cho AI Product (RAG)Document store, embedding pipeline, vector index choice, hybrid retrieval, freshnessCase-Design-Data-AI-RAG
05Migrate Monolith DB → Microservices DBDatabase-per-service, dual-write, CDC, data ownership, distributed transaction trade-offCase-Design-Migrate-Monolith-DB

Dependency Map giữa các tuần

graph LR
    D01[Tuần 01<br>Internals] --> D02[Tuần 02<br>Schema]
    D01 --> D03[Tuần 03<br>Indexing]
    D02 --> D03
    D03 --> D04[Tuần 04<br>EXPLAIN]
    D04 --> D05[Tuần 05<br>Tx & Locking]

    D05 --> D06[Tuần 06<br>Pooling]
    D05 --> D07[Tuần 07<br>Backup/PITR]
    D02 --> D08[Tuần 08<br>Migration]
    D04 --> D09[Tuần 09<br>Observability]

    D09 --> D10[Tuần 10<br>Redis]
    D09 --> D11[Tuần 11<br>DynamoDB]
    D09 --> D12[Tuần 12<br>MongoDB]

    D11 --> D13[Tuần 13<br>Search/ES]
    D04 --> D14[Tuần 14<br>OLAP]
    D10 --> D15[Tuần 15<br>Vector DB]

    D03 --> D16[Tuần 16<br>App Patterns]
    D05 --> D16

    style D03 fill:#f9a825,stroke:#333,stroke-width:2px
    style D04 fill:#f9a825,stroke:#333,stroke-width:2px
    style D05 fill:#f9a825,stroke:#333,stroke-width:2px
    style D15 fill:#66bb6a,stroke:#333

Lưu ý: Tuần 3-4-5 (vàng) là xương sống. Nếu thời gian hạn chế, master 3 tuần này trước, mọi thứ khác sẽ dễ hơn.


Cách phối hợp với System Design Mastery

TopicTại Database-MasteryTại System-Design-Mastery
ShardingEngineering: shard key design, resharding, cross-shard JOINArchitecture: khi nào shard, vitess/citus, Tuan-07-Database-Sharding-Replication
ReplicationOperational: streaming/logical, replication lag debugDistributed: leader election, Tuan-Bonus-Consensus-Raft-Paxos
ConsistencyMVCC visibility, isolation level pickTheory: linearizability, Tuan-Bonus-Consistency-Models-Isolation
Distributed SQLTiDB/CRDB engineering, debugConcept: Tuan-Bonus-Multi-Region-Active-Active-DSQL
Vector DBHNSW/IVF, pgvector tuning, RAG implServing: Tuan-Bonus-LLM-Serving-Infrastructure
LakehouseIceberg metadata, query engineeringArchitecture: Case-Design-Modern-Data-Lakehouse

Nguyên tắc: Khóa SD trả lời “thiết kế thế nào”. Khóa DB trả lời “làm cho nó chạy + vận hành thế nào”. Đọc song song nếu có thể.


Quy trình học mỗi tuần

  1. Đọc bài — File Tuan-XX.md tương ứng
  2. Setup lab local — Docker compose Postgres/Redis/ES/ClickHouse tùy tuần
  3. Reproduce experiment — Mỗi tuần có 3-5 thí nghiệm (vd: tạo bloat, deadlock, slow query)
  4. Đo bằng số — Mọi claim phải có benchmark: pgbench, sysbench, custom workload
  5. Viết postmortem ngắn — Nếu broke gì đó, viết lại nguyên nhân + cách phát hiện vào Daily Note

Tags hệ thống

  • #database — Tag chung
  • #postgresql, #mysql, #redis, #mongodb, #dynamodb, #clickhouse, #elasticsearch, #vector-db
  • #indexing, #query-optimization, #transaction, #locking
  • #operations — Backup, migration, monitoring
  • #performance — Tuning, benchmark
  • #anti-pattern — Cái nên tránh
  • #trade-off — Quyết định kiến trúc
  • #case-study — Bài tổng hợp

Cam kết

Mục tiêu khóa này không phải biến bạn thành DBA. Mục tiêu là làm bạn trở thành engineer mà team có thể trust khi DB có vấn đề — người mà khi production p99 nhảy, người ta gọi đầu tiên; khi schema mới được đề xuất, người ta gửi RFC cho review; khi cost DB tăng 3x, người ta nhờ analyse.

16 tuần. Mỗi tuần một viên gạch. Built on EXPLAIN, not vibes.


Cập nhật lần cuối: 2026-05-16 Xem thêm: MOC-Database-Mastery