Skip to content

What ORMs lie to you #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
utterances-bot opened this issue May 26, 2021 · 1 comment
Open

What ORMs lie to you #1

utterances-bot opened this issue May 26, 2021 · 1 comment

Comments

@utterances-bot
Copy link

utterances-bot commented May 26, 2021

What ORMs lie to you

https://mozartilize.github.io/2018/01/15/what-orms-lie-to-you.html

Copy link
Owner

Old comment from my teamlead http://disq.us/p/1pdb5ek

"Việc tạo ra nhiều object model sẽ tạo nhiều relational model tương ứng, điều đó khiến cho việc query ở database trở nên phức tạp, giảm performance. Ví dụ về phía ứng dụng bạn muốn tạo 2 model Account liên quan đến thông tin đăng nhập hệ thống và Profile liên quan đến thông tin cá nhân người dùng, tương ứng bạn sẽ có 2 table tương tự trong database, nhưng thực ra bạn có thể chỉ cần tạo một table users để lưu những thông tin đó vào database."

Trên thực tế, để tăng performance của ứng dụng, thì ở lớp db vẫn phải nên chia 2 relation này ra. Đảm bảo tính atomic của functionality, table Account để thực hiện Authentication, Profile dùng để store thông tin của người dùng. Để xét xem 2 tables bào có thể gộp lại được không thì phải xét ở mức ứng dụng là các thông tin trong các tables đó có hay được sử dụng cùng nhau không. Đôi lúc có thể phải sử dụng denormalization. Việc tạo thêm table không phải là tiêu chí quan trọng trong các DBMS sau này.

Một ví dụ là 1 trang news có lượng bài lớn và traffic lớn sẽ tách biệt table Article (chứa metadata) và ArticleContent (chứa nội dung) ra thành 2 table. Lý do là trong những trang news, việc listing, highlight giữ vai trò quan trọng, nên cần index và query nhanh ở table Article, trích xuất ra dữ liệu như title, description của nhiều bài viết một lúc. Sau khi user lựa chọn 1 news, việc lấy nội dung 1 bài viết bằng primary key sẽ rất nhanh. Việc này sẽ bị giảm xuống nếu gộp luôn Article và ArticleContent vào 1 table.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants