Chọn theo mô hình truy vấn + yêu cầu nhất quán + cách scale, không theo trào lưu.
Chọn SQL khi:
- Dữ liệu có cấu trúc rõ, quan hệ nhiều, cần JOIN linh hoạt.
- Cần giao dịch ACID và nhất quán mạnh (thanh toán, kho, đặt chỗ).
- Truy vấn ad-hoc đa dạng, chưa biết trước hết cách hỏi.
Chọn NoSQL khi:
- Dữ liệu bán cấu trúc / schema hay đổi, cần lặp nhanh.
- Cần scale ngang và throughput rất cao, chấp nhận eventual consistency.
- Mẫu truy cập biết trước và đơn giản (tra theo khóa, đọc tài liệu nguyên khối).
- Loại dữ liệu chuyên biệt (đồ thị quan hệ, time-series, key-value cache).
Thực tế nhiều hệ dùng cả hai (polyglot persistence): Postgres cho dữ liệu giao dịch, Redis cache, Elasticsearch cho tìm kiếm... Mặc định nên bắt đầu bằng SQL trừ khi có lý do rõ ràng.