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.

Liên kết