MongoDB - is DBREF necessary?

寵の児 提交于 2019-11-27 08:03:13

Dbref in my opinion should be avoided when work with mongodb, at least if you work with big systems that require scalability.

As i know all drivers make additional request to load DBRef, so it's not 'join' within database, it is very expensive.

Is there a way to reference other documents without having the somewhat redundant $ref-field?

Yes, keep references in the mind, create naming conventions for 'foreign keys' (something like RefUserId or just UserId) and store just id of referenced document. Load referenced documents yourself when needed. Also keep your eyes open for any denormalization, embedding you can do, because it's usually greatly improve performance.

Unless you use driver specific methods for accessing dbref, it should be unnecessary.

In cases where you're managing the join manually (i.e. you know which other collection to "join" to), storing just the ObjectId is enough.

Max Heiber

From the docs:

Manual references are an alternative, and the docs say manual references are preferable to DBREFs (though I'm not sure why). DBREFs are helpful when the referenced object lives in another database or where the collection name would not otherwise be obvious.

Denormalization/embedding is preferable to any kind of linking because then you get atomic updates and don't need to re-query for the related data.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!