NoSQL(MongoDB)或SQL(PostgreSQL)用于存储树/图形结构

时间:2013-06-11 09:09:12

标签: sql mongodb postgresql nosql

我正处于项目的计划阶段,我有以下情况:

我有一个带有唯一ID,名称和附加信息的元素。

每个元素可以有多个父母子女或没有孩子。例如

元素A没有父母和三个孩子B,C和D(所有这些都是类似A的类型)

元素B有一个父(当然是A)和两个孩子E和F.

另一个例子是,元素C有两个父母A和B以及零个或多个孩子。

我遇到的唯一要求是我使用数据库,但我可以在MongoDB或Postgresl之间自由选择。数据经常被读取但不会被更改。

我相信MongoDB是更好的解决方案。虽然有任何想法吗?

编辑:根据要求提供更多信息:

我对两者都没什么经验,所以知识不是争论。我们现在和将来(未来5年)的参赛人数不到1500,参赛人数不会超过5000人。

我做了一些研究,发现了sql的嵌套集和树的mongoDB文档,我相信mongoDb更方便

1 个答案:

答案 0 :(得分:0)

总的来说,我对PostgreSQL和存储树很满意。 WITH RECURSIVE为您提供了一个良好的遍历和导航框架。使用MongoDB,您可能会遇到map / reduce。

这并不意味着没有一些困难。这些都是可以解决的,但可能需要一些努力。最大的是WITH RECURSIVE通常用于进行广度优先搜索。你可以进行深度优先搜索,但这样做是可能的。请注意,关系数据库针对集合进行了高度优化,因此深度优先搜索很少是您想要的。实质上,您的所有搜索策略都采用一套搜索策略。

图表比树更复杂,当然,但有很多方法可以解决这个问题。

现在,我知道PostgreSQL比我知道的MongoDB要好得多,但关系系统在查询方面通常比NoSQL系统更灵活,我会谨慎地抛出它。