MongoDB embed 和 has 求教

mobiwolf · 2012年09月12日 · 最后由 gina 回复于 2012年09月13日 · 1960 次阅读

embed 是说的嵌入式的,就是说本来就是一体的,类似于组合关系,嵌入与被嵌入之间是一个完整的整体,不可分隔。读取被嵌入的,那么嵌入的也就跟着读取出来了。

has 是说的是引用关系,不是一体的,但是是一个聚合的关系,拥有与被拥有之间是互相独立的个体,只是因为逻辑需要构成一个聚合体。读取拥有的,被拥有的引用被读取,本身数据没有被读取。

以上的理解,对吗?

如果对,那么很多时候,在 Mongodb 中,有的关系,既可以用 embed,也可以用 has。 比如: 一个游戏可以在某平台上运行

游戏和平台之间既可以是 embed 关系,也可以是 has_many 关系。使用哪个是不是取决于看游戏的时候是不是一定要平台数据?

求指点!

thx

这个看具体的业务模式吧,一般来说,嵌入的做法,读取效率比较高,因为一次就把整个文档读取出来了。数据量增大后,更新效率降低。如果是“读多写少”,比较适合这种情况。

引用的做法,就是存储在多个文档了,更新效率较高,但是读取数据时,要访问多个文档,效率随数量增加而降低。如果更新比较频繁,适合这种情况。

@daqing 恩,理解了一些。呵呵

3 楼 已删除
需要 登录 后方可回复, 如果你还没有账号请 注册新账号