Giao diện
Database: kiến thức chung
Phần này gồm kiến thức đúng với mọi database quan hệ: cách mô hình hoá, các pattern lưu trữ hay gặp, cách dùng database trong ứng dụng, và lý thuyết nền. Cách từng engine cài đặt cụ thể nằm ở phần MySQL và PostgreSQL. Trang có nhãn draft trong sidebar mới là dàn ý.
Mục lục
Kỹ năng: Viết SQL khi phỏng vấn · Phân tích bài toán
Mô hình hoá: Chuẩn hoá & phá chuẩn · Quan hệ & dữ liệu dạng cây
Pattern lưu trữ: Sinh ID · EAV, JSON & thuộc tính động · Polymorphic association · Versioning & lịch sử · Soft delete & lưu trữ · Tiền & sổ cái · Multi-tenant · Dữ liệu chuỗi thời gian · Bộ đếm, hot row & bảng tổng hợp · Full-text search · Đa ngôn ngữ · Dữ liệu địa lý
Đồng thời & toàn vẹn: Chống trùng & race condition · Hàng đợi bằng database · Phân trang
Database trong ứng dụng: Bẫy của ORM · Migration trong team · Tách đọc / ghi · Xử lý dữ liệu lớn theo lô · View, trigger, stored procedure · Test với database
Vận hành: Giám sát database · Backup & khôi phục · Bảo mật database · Thời gian & múi giờ
Lý thuyết: Transaction & isolation · Cấu trúc lưu trữ · SQL vs NoSQL · OLTP vs OLAP · Thuật toán join
Ghi gì vào đâu
Mỗi khái niệm có một trang chính ở mục nền tảng nhất mà nó sinh ra; các mục khác chỉ nói phần riêng của mình rồi dẫn link sang.
| Kiến thức | Trang chính | Ví dụ |
|---|---|---|
| Đúng với mọi database quan hệ | /database/ | EAV, cách lưu lịch sử, sinh ID |
| Cách một engine cài đặt | /mysql/, /postgresql/ | MVCC bằng undo log, gap lock, VACUUM |
| Nhiều máy, mạng, đồng hồ | /distributed/ | Replication tổng quát, CAP, đồng thuận, idempotency |
| Nhiều service | /architecture/microservices | Database riêng mỗi service, saga, outbox |
| Bài “thiết kế hệ thống X” | /system-design/ | Đặt vé, flash sale, chat |