Object-Relational Mismatch
Định nghĩa
Object-Relational Mismatch là khác biệt giữa object model trong application và relational model trong database, khiến dữ liệu phải được chuyển đổi giữa nested objects/collections và tables/rows/foreign keys.
Ví dụ
Một user profile chứa nhiều position và education record:
- application xem đây là một object có các collection lồng nhau;
- relational database thường tách thành
users,positions,educationvà nối bằnguser_id; - document database có thể lưu toàn bộ aggregate thành một JSON tree.
ORM giải quyết đến đâu?
ORM giảm code ánh xạ và boilerplate, nhưng không xóa khác biệt về identity, relationship, query, transaction boundary và loading strategy. N+1 query, lazy loading và object lifecycle vẫn là dấu hiệu của mismatch.
Trade-off
Document model giảm mismatch khi dữ liệu là một aggregate tự chứa. Lợi thế này suy giảm khi entity được chia sẻ giữa nhiều aggregate và relationship chuyển thành many-to-many.