Hỏi tỉ lệ đọc/ghi trước khi vẽ kiến trúc, vì hai hướng tối ưu ngược nhau.
Đọc-nặng (mạng xã hội, tin tức, sàn thương mại — đọc thường gấp hàng chục tới hàng trăm lần ghi):
- Cache nhiều tầng, CDN cho nội dung công khai.
- Read replica để chia tải đọc.
- Denormalize và dựng sẵn dữ liệu lúc ghi (precompute), đổi công sức lúc ghi lấy tốc độ lúc đọc.
- Thêm index thoải mái hơn, vì index có lợi cho đọc.
Ghi-nặng (log, metric, IoT, tracking sự kiện):
- Ghi theo lô và ghi bất đồng bộ qua queue thay vì mỗi sự kiện một transaction.
- Ít index lại, vì mỗi index là thêm chi phí cho mỗi lần ghi.
- Partition/shard theo thời gian hoặc theo nguồn để tránh dồn ghi vào một chỗ.
- Chọn kho phù hợp với ghi tuần tự (LSM-tree, time-series DB) thay vì cố ép vào một bảng quan hệ có nhiều index.
- Cache gần như vô dụng ở đường ghi — đừng dựa vào nó.
Nếu cả hai đều nặng và hai đường có yêu cầu khác hẳn nhau, đó là lúc cân nhắc tách đường đọc và đường ghi (CQRS): ghi vào mô hình chuẩn hoá, đồng bộ sang mô hình đọc đã dựng sẵn. Đổi lại phải chấp nhận độ trễ đồng bộ giữa hai bên, nên đừng dùng khi chưa thật sự cần.