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, education và nối bằng user_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.

Liên kết