订单的Mongoid Schema设计

时间:2015-05-19 02:49:32

标签: ruby-on-rails mongodb mongoid

我正在试图找出MongoDB / Mongoid / Rails购物车的更好的架构设计。

class User
  ...
  embeds_many :orders
end

class User
  ...
  has_many :orders
end

尝试从性能的角度来决定哪个更好。想使用embeds_many,但是如果我想在一个页面上列出所有订单(例如在管理界面中),我不确定查询性能如何。

1 个答案:

答案 0 :(得分:0)

这里最重要的是如果嵌入orders,那么它就不能有任何其他关联(除了它自己的嵌入对象)。所以它不能,例如,has_many products。它不能belong_to一个shipment。没有。如果模式可以处理这个,那么确定。

第二个问题是,您是否要列出orders独立于users的所有内容?如果是,那么你真的不应该嵌入它们。如果你这样做,那么你将进行一堆数据库调用,这会降低你的页面加载速度。 Heroku实际上关闭了我的网站(自动)几次,因为我做了类似这样的事情,我(在不知不觉中)尝试在一个页面加载中进行数百次调用。我稍微改变了我的代码,加载速度更快,没有抱怨。

所以,我会说不要嵌入它们。从逻辑上讲,orders应与users分开,因为它们不是users的固有部分。