2011-10-03 44 views
0

我只是想用mongoid和rails来寻求一些关于数据库设计的建议。在rails中使用Mongoid树进行多种多样的事务?

如果我有复杂的对象需要相互引用的能力,这是否是一个合适的解决方案。

class Tree 
    include Mongoid::Document 
    include Mongoid::Tree 
end 

class Group < Tree 
end 

class People < Tree 
end 

class Cars < Tree 
end 

etc... 

因此,他们可以都属于彼此,是兄弟姐妹或是孩子。这是否会提高性能,因为它们都在同一个集合中?相比之下,如果我想在2,3和4模式之间使用habtm关系。不能完全确定在同一个系列中调用的单独模型是否更快或适当的设计。

我尝试这种设计的主要原因是因为我正在阅读nosql背后的想法,就是使用嵌套对象来最小化对数据库的调用。与单独的集合相比,引用同一集合中的子对象有什么区别吗?甚至跨多个集合?

这里有几个问题,但希望有人能帮点我朝着正确的方向:)

回答

1

是的,不错的选择!你想像这样使用继承来将它们存储在同一个集合中。 您只需访问一个收藏集 - 这可以更快地访问儿童/父母。

+0

我也想问一下,在同一个集合中还是在自己的集合中拥有用户也是一个好主意? – seogrady

+0

我认为你的问题更像是一个玩具的例子......嗯......在一个集合中拥有人物,团体和汽车在现实世界的应用中可能不是一个好主意。你需要检查模型之间的关系。通常情况下,不相关的东西是独立的顶级集合。依赖别的东西可能是嵌入式文档或参考文档。 – Tilo