24-09-2026 - Designing Data-Intensive Applications

Mục tiêu buổi đọc

  • Đọc trang 27-44 của 02 - Data Models and Query Languages.
  • Hiểu data model như một lớp abstraction, không chỉ là định dạng lưu trữ.
  • So sánh relational và document model qua object-relational mismatch, cardinality, schema flexibility và locality.

Kế hoạch đọc

  • Đọc Relational Model Versus Document Model.
  • Vẽ lại profile example dưới dạng tree và dưới dạng các relational table.
  • Phân biệt one-to-many, many-to-one và many-to-many trong ví dụ résumé.
  • Ghi lại khi nào schema-on-read tốt hơn schema-on-write.
  • Tự đưa ra một quyết định relational/document cho hệ thống đã biết.

Ghi chú trong lúc đọc

  • Data model đang che abstraction nào?
  • Dữ liệu nào thực sự tạo thành một aggregate tự chứa?
  • Reference nào có khả năng tiến hóa thành many-to-many?
  • Locality giúp query nào và làm update nào đắt hơn?
  • Schema được enforce ở database hay application?

Câu hỏi review

  • Vì sao một data model làm một số thao tác tự nhiên nhưng làm thao tác khác khó hơn?
  • Object-relational mismatch xuất hiện ở đâu trong ví dụ résumé?
  • Vì sao lưu region và industry bằng ID tốt hơn text tự do?
  • Tại sao dữ liệu ứng dụng thường trở nên liên kết hơn theo thời gian?
  • Hierarchical/CODASYL model khác relational model về access path như thế nào?
  • Document model thắng relational model khi nào, và thua khi nào?
  • “Schemaless” bỏ sót trách nhiệm nào của application?
  • Data locality có thể trở thành bất lợi trong trường hợp nào?

Điểm cần đối chiếu với section note

Viết lại bằng lời của tôi

Liên kết