NoSQL的使用案例或何时使用NoSQL

随着所有的炒作,似乎真的很难find何时使用这个可靠的信息。 所以我提出了以下几个问题,如果事先提出这些问题真的很麻烦,我很抱歉:

  1. 我应该使用NoSQL作为用户数据吗? 如configuration文件,用户名+密码等
  2. 我应该使用NoSQL作为重要内容吗? 例如文章,博客文章,产品库存等

我假设不是? 我觉得NoSQL只是为了快速访问可以丢失数据的东西。 但是我也看到NoSQL应用程序有内置冗余,所以我不会丢失数据?

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

谢谢!

这真的是一个“这取决于”有点问题。 一些一般的观点:

  • NoSQL通常对非结构化/“无模式”数据有好处 – 通常,您不需要事先明确地定义架构,只需在没有任何仪式的情况下添加新的字段
  • 由于不支持每个RDBMS世界的JOIN,NoSQL通常支持非规范化模式。 所以你通常会有一个扁平的,非规范化的数据表示。
  • 使用NoSQL并不意味着你可能会丢失数据。 不同的数据库有不同的策略。 例如MongoDB,你可以根据性能和潜在的数据丢失情况select什么样的级别,最好的性能=更大的数据丢失范围。
  • 推出NoSQL解决scheme通常非常容易。 添加更多节点来复制数据是a)提供更多可扩展性的一种方法,b)如果一个节点出现故障,可以提供更好的防止数据丢失的保护。 但是,依赖于NoSQL DB /configuration。 NoSQL并不一定就像你推断的那样意味着“数据丢失”。
  • 恕我直言,复杂/dynamic查询/报告最好从RDBMS服务。 通常NoSQL DB的查询function是有限的。
  • 它不一定是一个或另一个select。 我的经验是在某些使用情况下将RDBMS与NoSQL结合使用。
  • NoSQL DB通常缺乏跨多个“表”执行primefaces操作的能力。

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

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

我认为Nosql至less在这些情况下是“更合适的”(更多的补充是值得欢迎的)

  1. 只需添加更多节点即可轻松扩展。

  2. 查询大型数据集

    想象一下,每天在twitter上发布大量推文。 在RDMS中,可能会有几百万(或几十亿)行的表,而且您不希望直接在这些表上执行查询,甚至在大多数情况下,复杂查询也需要表连接。

  3. 磁盘I / O瓶颈

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

Interesting Posts