NoSQL用例使用NoSQL的场景或时间

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

  1. 我应该对用户数据使用NoSQL吗?例如,配置文件,用户名+密码等。
  2. 重要的内容应该使用NoSQL吗?例如,文章,博客文章,产品清单等。

我猜不会吧?我觉得NoSQL只是用于快速访问的东西,数据丢失是可以接受的。但我也读到NoSQL应用程序有内置冗余,所以我不会丢失数据?

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

119319 次浏览

这真的是一个“视情况而定”的问题。一些一般< em > < / em >点:

  • NoSQL通常适用于非结构化/“无模式”数据——通常,您不需要预先显式地定义模式,只需包含新字段而无需任何仪式
  • NoSQL通常倾向于非规范化模式,因为在RDBMS世界中不支持join。所以你通常会有一个扁平的,非规格化的数据表示。
  • 使用NoSQL并不意味着你会丢失数据。不同的db有不同的策略。例如:MongoDB——你基本上可以选择什么级别来权衡性能和潜在的数据丢失——最好的性能=更大的数据丢失范围。
  • 扩展NoSQL解决方案通常非常容易。添加更多的节点来复制数据是一种方法,a)提供更多的可伸缩性,b)在一个节点宕机时提供更多的保护,防止数据丢失。但同样,这取决于NoSQL DB/配置。NoSQL并不一定像你所推断的那样意味着“数据丢失”。
  • 恕我直言,复杂/动态查询/报告最好由RDBMS提供。通常NoSQL DB的查询功能是有限的。
  • 不一定是1或其他选项。我的经验是在某些用例中使用RDBMS和NoSQL。
  • NoSQL数据库通常缺乏跨多个“表”执行原子操作的能力。

你真的需要了解各种类型的NoSQL存储是什么,以及它们是如何提供可伸缩性/数据安全性等。很难给出一个全面的答案,因为他们真的都是不同的,处理事情的方式也不同。

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

我认为Nosql至少在这些场景中“更适合”(欢迎更多的补充)

  1. 通过添加更多的节点,很容易横向扩展。

  2. 大数据集查询

    想象一下每天有无数的推文发布在推特上。在RDMS中,可能有数百万(或数十亿?)行的表,您不想直接对这些表进行查询,更不用说,大多数时候,复杂的查询还需要表连接

  3. 硬盘I/O瓶颈

    如果一个网站需要根据用户的实时信息将结果发送给不同的用户,我们谈论的可能是每秒数万或数十万个SQL读写请求。那么磁盘i/o将是一个严重的瓶颈