Chọn kiểu lưu trữ (Storage selection)
Chọn loại database/data store phải cân nhắc nhiều yếu tố, không chỉ nêu tên một công nghệ. Câu trả lời tốt trong phỏng vấn chứng minh bạn hiểu vấn đề cốt lõi và trade-off, không thuộc lòng công thức.
Các yếu tố cân nhắc
- Workload OLTP vs OLAP: giao dịch trực tuyến (đọc/ghi nhỏ, nhanh, ACID → RDBMS) hay phân tích (truy vấn tổng hợp lớn → columnar/data warehouse).
- Mô hình dữ liệu & kiểu truy vấn:
- Quan hệ phức tạp → RDBMS (SQL)
- Key-value, truy cập qua key → Redis, DynamoDB
- Document JSON lồng nhau → MongoDB, Couchbase
- Đồ thị (mạng xã hội, follower) → Graph DB (Neo4j)
- File/media lớn → Object storage (S3, GCS) + DB lưu metadata
- Quy mô & mở rộng: dự kiến hàng tỷ bản ghi → ưu tiên giải pháp partition tốt (Cassandra); vừa phải → RDBMS đơn giản, tin cậy hơn.
- Transaction & nhất quán: cần strong consistency → ACID/CP; chấp nhận trễ → AP (Cassandra, DynamoDB) → CAP Theorem.
- Chi phí & kinh nghiệm team: PostgreSQL (miễn phí) vs Oracle (đắt); team đã quen công nghệ nào.
- Khác: bảo mật, compliance, vị trí triển khai.
Polyglot Persistence
Với hệ thống lớn/microservices, mỗi service có thể dùng một loại DB riêng - dùng nhiều data store kết hợp là bình thường. Đừng cố ép mọi thứ vào một database duy nhất.
Liên quan
- SQL vs NoSQL - quyết định cơ bản đầu tiên
- Sharding · Database Index - tối ưu khi quy mô lớn
- CAP Theorem · Consistency Models - yếu tố nhất quán