2011-11-24 66 views
1

它变得越来越普遍,在我的应用程序中,我必须维护级联树结构。MongoDB - 帮助级联层次结构?

树定义了权限以及与其关联的所有对象。级联下来,以便改变它,修改(或派生数据)整个子树。

使用ActiveRecord和SQL处理起来相当复杂。一种选择是对其进行非规范化并使用“路径”:“root/child1/child2”和SQL like -s来使用它。

但我刚开始想知道数据库本身是否适合这个,也许可以考虑使用MongoDB。

还有一些其他部分可能不适合与MongoDB一起使用:交易(在付款,预订期间)。

所以我的问题是,切换到MongoDB有助于解决“层叠层次结构”问题?

+0

它可能是重复的:http://stackoverflow.com/questions/6448415/mongodb-storing-a-hierarchical-tree-structure – ShiningRay

+0

谢谢。那里的链接提供了在MongoDB中使用树的好概述。但不要认为它是重复的,并且倾向于用“是”来回答我的问题。 –

回答

0

所以我的问题是,切换到MongoDB有助于解决“层叠层次结构”问题?

最主要的好处是能够将整个层次结构存储在一个文档中。然后,你可以基本上用他们的权限“注释”文档的部分。很显然,这样的“注释”实际上并不存在,它们只是文档中的字段,所以这将涉及到为所有这些构建一个图层。

所以从理论上讲,完全可以做你想做的事情,但它确实有一些限制。

特别是,当MongoDB查询文档时,它查询整个文档。如果您的整个层次结构适合单个文档,那么您可以通过一个查询获得整个层次结构。如果没有,那么你开始回到处理这个问题的SQL方法。