随着所有的炒作,似乎很难找到何时使用这个可靠的信息。 所以我提出了以下问题,如果事先确实是非常愚蠢的问题,我很抱歉:
我应该使用NoSQL作为用户数据吗? 例如配置文件,用户名+密码等。 我应该使用NoSQL作为重要内容吗? 例如文章,博客文章,产品库存等 我假设没有? 我觉得NoSQL只是用于快速访问可以丢失数据的事情。 但我也读过NoSQL应用程序有内置冗余,以便我不会丢失数据?
另外,如果上面的两个例子不好,你能给我具体的商业用例,我会使用NoSQL吗? 我看到很多一般的描述,但没有很多现实世界的例子。 我能想到的唯一的事情是用户到用户的消息和分析。
谢谢!
这真的是一个“它取决于”有点问题。 一些一般要点:
NoSQL通常适用于非结构化/“无模式”数据 - 通常,您不需要事先明确定义架构,只需在没有任何仪式的情况下添加新的字段 由于不支持每个RDBMS世界的JOIN,NoSQL通常支持非规范化模式。 所以你通常会对数据进行扁平的非规范化表示。 使用NoSQL并不意味着你可能会丢失数据。 不同的DB有不同的策略。 例如MongoDB,你可以选择什么级别来平衡性能与数据丢失的可能性 - 最佳性能=更大的数据丢失范围。 扩展NoSQL解决方案通常非常容易。 添加更多节点来复制数据是a)提供更多可扩展性的一种方法,b)如果一个节点出现故障,则可以提供更好的防止数据丢失的保护。 但是,依赖于NoSQL DB /配置。 NoSQL并不一定就像你推断的那样意味着“数据丢失”。 恕我直言,复杂/动态查询/报告最好从RDBMS提供。 通常NoSQL DB的查询功能是有限的。 它不一定是1或其他选择。 我的经验是在某些使用情况下将RDBMS与NoSQL结合使用。 NoSQL DB通常缺乏跨多个“表”执行原子操作的能力。 您真的需要了解并理解各种类型的NoSQL存储是什么,以及它们如何提供可伸缩性/数据安全等。很难给出全面的答案,因为它们真的都是不同的,并且以不同的方式解决问题。
以MongoDb为例,请查看他们的用例,看看他们认为什么是MongoDb的“非常适合”和“不太合适”用途。
我认为Nosql在这些场景中至少“更适合”(更多的补充是值得欢迎的)
只需添加更多节点即可轻松扩展。
查询大型数据集
想象一下,每天在twitter上发布大量推文。 在RDMS中,可能有数百万(或数十亿?)行的表,并且您不希望直接在这些表上执行查询,甚至没有提及,大多数情况下,复杂查询也需要表连接。
磁盘I / O瓶颈
如果网站需要根据用户的实时信息将结果发送给不同的用户,那么我们可能每秒钟都会谈论数十或数十万次的SQL读/写请求。 那么磁盘I / O将是一个严重的瓶颈。
链接地址:
http://www.djcxy.com/p/66407.html
上一篇:
NoSQL Use Case Scenarios or WHEN to use NoSQL
下一篇:
Data Mining in a Django/Postgres application