Skip to content

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ứcTrang chínhVí 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/microservicesDatabase riêng mỗi service, saga, outbox
Bài “thiết kế hệ thống X”/system-design/Đặt vé, flash sale, chat