我正处于项目的计划阶段,我有以下情况:
我有一个带有唯一ID,名称和附加信息的元素。
每个元素可以有多个父母子女或没有孩子。例如
元素A没有父母和三个孩子B,C和D(所有这些都是类似A的类型)
元素B有一个父(当然是A)和两个孩子E和F.
另一个例子是,元素C有两个父母A和B以及零个或多个孩子。
我遇到的唯一要求是我使用数据库,但我可以在MongoDB或Postgresl之间自由选择。数据经常被读取但不会被更改。
我相信MongoDB是更好的解决方案。虽然有任何想法吗?
编辑:根据要求提供更多信息:
我对两者都没什么经验,所以知识不是争论。我们现在和将来(未来5年)的参赛人数不到1500,参赛人数不会超过5000人。
我做了一些研究,发现了sql的嵌套集和树的mongoDB文档,我相信mongoDb更方便
答案 0 :(得分:0)
总的来说,我对PostgreSQL和存储树很满意。 WITH RECURSIVE
为您提供了一个良好的遍历和导航框架。使用MongoDB,您可能会遇到map / reduce。
这并不意味着没有一些困难。这些都是可以解决的,但可能需要一些努力。最大的是WITH RECURSIVE
通常用于进行广度优先搜索。你可以进行深度优先搜索,但这样做是可能的。请注意,关系数据库针对集合进行了高度优化,因此深度优先搜索很少是您想要的。实质上,您的所有搜索策略都采用一套搜索策略。
图表比树更复杂,当然,但有很多方法可以解决这个问题。
现在,我知道PostgreSQL比我知道的MongoDB要好得多,但关系系统在查询方面通常比NoSQL系统更灵活,我会谨慎地抛出它。