我有一个即将推出的项目,我无法决定是坚持使用SQL还是切换到NoSQL。它基本上是一个报告系统,主界面报告用户输入的数据。
这是我已经绘制出来的架构:
因为这个架构是如此嵌套,所以我开始考虑NoSQL。使用SQL,我担心我会得到一堆垃圾来到树的底部(Record模型)。
我的担忧是双重的:
我的问题: 鉴于我的担忧,您认为这个架构 - 因为它的嵌套程度如何 - 更适合NoSQL?如果是这样,你认为对“记录”的报道会很困难吗?
我意识到在没有更多信息的情况下回答这些问题可能很困难,所以请告诉我其他信息可能对您提供答案有所帮助。
提前感谢您的帮助!
答案 0 :(得分:9)
我的意见:
我盯着图表大约3秒钟,这显然是关系型的。 RDBMS的好处远远超过了NoSQL解决方案。 为什么你想使用NoSQL?是否有超过100,000条记录(可能超过一百万)?你需要微秒/毫秒的性能吗?
NoSQL,据我所知,并不是因为你不喜欢很多连接。这是因为分层数据的大系统并不适合所有情况。然而,这非常适合这种情况。
答案 1 :(得分:4)
您可能会将所有{organization,region,campus,event}层次结构内嵌到一个基于层次/树的/自引用关系中。也许是“用户”。 这将大大减少所需的表数量。例如,请看一下这个实现:Interesting tree/hierarchical data structure problem(实际上比你的更复杂)。
BTW:我对“度量模型”的含义并不了解。寸?英里到加仑?或者只是“测量”?你能解释一下你打算做什么吗?编辑:BTW2:你建议的模型技术上对于postgres来说并不太难。但它可能比人类所需的更大。
答案 2 :(得分:2)
我的问题:鉴于我的担忧,你认为这个架构 - 因为 它的嵌套程度如何 - 更适合NoSQL?
深度嵌套不是专业或反对SQL / NoSQL。
如果是这样,你有>认为报道“记录”会很困难吗?
这是引爆点,在这里你没有向我们提供相关信息:你的案件中这个“报告”的内容是什么?
一个报告汇总了多少数据?例如
它只汇总所有records
并返回它们的总和吗?
它是否聚合了许多图层?
报告是否严格评估分层结构还是将event1.metric4.record42
与event2.metric18.record50
(或类似内容)相关联?
必须将多少数据从NoSQL DB传输到您的应用程序只是为了聚合它而抛弃大部分部分。
您的数据的结构如何?好吧 - 看起来非常有条理。
这些是RDBM证明其价值的典型情况/点。如果这些项目在您的情况下不重要,那么您可以自由选择。