我真的应该使用 NoSQL 吗?

Posted

技术标签:

【中文标题】我真的应该使用 NoSQL 吗?【英文标题】:Should I really use NoSQL? 【发布时间】:2012-09-23 21:25:15 【问题描述】:

我有一些报告结合了来自 3 个不同服务器的数据创建 json 并将其显示给用户。当有数千条记录时,无法通过 Web 处理它并且它会超时。我现在正在排队用户请求并生成一个 json 文件并发送一个链接,所以当用户打开链接时,我只显示数据而不是任何处理。

我最近遇到了 NoSql。在我的特殊情况下,除了能够在文件上运行查询之外,使用 NoSql 将数据存储到文件还有什么好处吗?

【问题讨论】:

这里有太多我们不知道的因素。你在一个团队中工作吗?如果是这样,该团队在 SQL 与 NoSQL 解决方案方面是否有更多经验?如果你选择他们不太熟悉的,他们会愿意学习吗?你可以试着回答这些问题,但还会有无数个。因此,我真的看不出有人能正确回答这个问题。 【参考方案1】:

如果您有数千条记录聚合结果,您应该能够使用 SQL 或 NoSQL 处理它们,以适应几乎任何用例。

NoSQL 不仅仅是让 SQL 更快的灵丹妙药,它是一种不同类型的数据存储解决方案,有自己的优势和劣势。

使用平面文件、SQL 还是 NoSQL 来聚合几千条数据记录是最佳选择,这在很大程度上取决于您的舒适区和查询要求。从性能的角度来看,所有这些都可以在这种大小的数据集上运行良好。如果您发现自己编写的不仅仅是琐碎的逻辑来管理当前文件,请根据您对每种方法的熟悉程度使用 SQL 或 NoSQL。

【讨论】:

哦,我明白了...您正在谈论聚合数据的临时存储。我会更新我的答案。【参考方案2】:

如果您要创建报告,答案很可能是“否”。 SQL 基本上是一个事务性和报告环境,您必须了解,在将 NoSQL 解决方案用作主存储时,您在很大程度上放弃了这两者。这也是为什么许多最令人印象深刻的 NoSQL 部署使用这些引擎作为传统 RDBMS 的辅助工具而不是替代产品的原因。

在这种情况下,我的建议是您希望考虑使用更多 SQL将您的服务器连接在一起,以便您可以将其作为单个 SQL 查询运行。我不知道您使用的是什么 RDBMS,所以我无法提供具体信息,但在 PostgreSQL 上,您可以执行外部数据包装器并使用它们从其他三台服务器查询数据。是的,你可以通过这些访问非 PostgreSQL 服务器.....

我的猜测是,如果只有几千行,您的问题是您在客户端编程中所做的事情可能在数据库端更有效。

【讨论】:

当然可以使用 NoSQL 进行报告。参见 Map/Reduce,例如indoos.wordpress.com/2010/02/08/bi-with-mapreduce 是的,但那是在输入上使用数据转换。如果您的报告要求发生变化,并且您明天需要一份超过 10 亿条记录的新报告,那么您就是 SOL。 如果您的报告要求发生变化,并且您使用带有不适当索引的 SQL,或者需要包含不在星型模式中的数据,那么您也将陷入困境。无论如何,OP 都在谈论几千条记录。

以上是关于我真的应该使用 NoSQL 吗?的主要内容,如果未能解决你的问题,请参考以下文章

什么时候应该使用 NoSQL 数据库而不是关系数据库?可以在同一个网站上使用两者吗?

任职要求中的熟系Redis,你真的熟悉吗?

NoSQL 的用例 [关闭]

Riak TS 不应该是一个没有 NoSQL 的数据库吗?

当我将视图添加到另一个视图(并且这两个视图都由视图控制器控制)时,我真的应该使用 addChildViewController 吗?

2019 年我应该在哪里存储我的 JWT,localStorage 真的不安全吗?