Chọn đúng database là một quyết định system design then chốt — giữa SQL (relational) và các loại NoSQL (document, key-value, v.v.), dựa trên dữ liệu, access pattern, quy mô và nhu cầu consistency. Những database khác nhau phù hợp với những yêu cầu khác nhau.
SQL vs NoSQL (lựa chọn chính)
SQL (relational: PostgreSQL, MySQL) → dữ liệu có cấu trúc, bảng, quan hệ, ACID:
✓ strong consistency, query/join phức tạp, transaction, schema được định nghĩa rõ
✓ cho: dữ liệu quan hệ, transaction, query phức tạp (hầu hết app truyền thống)
NOSQL → nhiều mô hình phi quan hệ, schema linh hoạt, thường dễ horizontal scaling hơn:
→ DOCUMENT (MongoDB) → các document linh hoạt kiểu JSON
→ KEY-VALUE (Redis, DynamoDB) → tra cứu đơn giản, nhanh, caching
→ WIDE-COLUMN (Cassandra) → quy mô khổng lồ, write throughput cao
→ GRAPH (Neo4j) → quan hệ/mạng lưới
✓ cho: schema linh hoạt, quy mô khổng lồ, access pattern đặc thù, throughput cao
