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
- Data Model
- Object-Relational Mismatch
- Document Store
- Relational Database Design
- Database Schema Design