Document Store
Định nghĩa
Document Store là NoSQL database lưu dữ liệu thành document tự chứa, thường ở dạng JSON/BSON, với schema linh hoạt và query theo field trong document.
Cách hiểu bằng lời của tôi
Document store mạnh khi một aggregate được đọc cùng nhau: order kèm shipping/payment snapshot, product catalog, profile, content document. Triết lý là “store together what you read together”. Nếu dùng nó như relational database và join nhiều collection ở read time, latency và complexity sẽ tăng nhanh.
Pattern MongoDB
- Embed hoặc denormalize dữ liệu thường đọc cùng nhau.
- Shape document theo access pattern.
- Với read view phức tạp, dùng CQRS và event processing để materialize collection tối ưu cho query.
- Tránh biến mỗi request thành mini-ETL nhiều
$lookup.
Trade-off
- Read nhanh và predictable hơn khi document đúng shape.
- Write/update phức tạp hơn vì duplication cần đồng bộ.
- Multi-document transaction có thể có overhead hoặc caveat.
- Schema linh hoạt không thay thế data modeling.
Hình dạng quan hệ
Document model tự nhiên với one-to-many tạo thành một tree và dữ liệu thường được đọc như một aggregate. Khi nhiều entity được dùng chung, quan hệ chuyển thành many-to-one hoặc many-to-many; lúc đó hệ phải chọn reference + join, nhiều round trip, hoặc duplication + synchronization.
Schema và locality
- “Schemaless” thường là schema-on-read: application vẫn giả định structure và chịu trách nhiệm tương thích version.
- Locality có lợi khi đọc toàn document.
- Locality gây lãng phí nếu chỉ cần một phần nhỏ hoặc document lớn phải rewrite khi update.
- Nên giữ document tương đối nhỏ và tránh cấu trúc tăng không giới hạn.