小编典典

NoSQL 用例场景或何时使用 NoSQL

all

随着所有的炒作,似乎很难找到关于何时使用它的可靠信息。所以我提出以下问题,如果这些问题真的很愚蠢,我很抱歉:

  1. 我应该对用户数据使用 NoSQL 吗?例如个人资料、用户名+密码等。
  2. 我应该对重要内容使用 NoSQL 吗?例如文章、博客文章、产品库存等。

我假设没有?而且我觉得 NoSQL 只是用于可以快速访问的东西,可以从中丢失数据。但我也读到 NoSQL 应用程序具有内置冗余,这样我就不会丢失数据?

另外,如果上面的两个例子不好,你能给我具体的业务用例,我会使用 NoSQL
吗?我看到了很多一般性的描述,但没有很多现实世界的例子。我能想到的唯一事情是用户对用户的消息传递和分析。


阅读 83

收藏
2022-05-05

共1个答案

小编典典

这确实是一个“取决于”的问题。一些 一般 要点:

  • NoSQL 通常适用于非结构化/“无模式”数据 - 通常,您无需预先明确定义模式,只需包含新字段而无需任何仪式
  • 由于 RDBMS 世界不支持 JOIN,NoSQL 通常倾向于非规范化模式。因此,您通常会对数据进行扁平化、非规范化的表示。
  • 使用 NoSQL 并不意味着您可能会丢失数据。不同的数据库有不同的策略。例如 MongoDB - 您基本上可以选择在性能与数据丢失可能性之间进行权衡的级别 - 最佳性能 = 更大的数据丢失范围。
  • 扩展 NoSQL 解决方案通常非常容易。添加更多节点来复制数据是一种方法:a)提供更大的可扩展性,b)在一个节点出现故障时提供更多的数据丢失保护。但同样,取决于 NoSQL 数据库/配置。NoSQL 并不一定意味着您推断的“数据丢失”。
  • 恕我直言,复杂/动态查询/报告最好由 RDBMS 提供。NoSQL DB 的查询功能通常是有限的。
  • 它不必是 1 或其他选择。我的经验是在某些用例中将 RDBMS 与 NoSQL 结合使用。
  • NoSQL DB 通常缺乏跨多个“表”执行原子操作的能力。

您确实需要了解并了解各种类型的 NoSQL
存储是什么,以及它们如何提供可扩展性/数据安全性等。很难给出一个全面的答案,因为它们确实都是不同的并且以不同的方式处理事情.

以 MongoDb 为例,查看他们的用例以了解他们建议的 MongoDb
的“非常适合”和“不太适合”的用途。

2022-05-05