首页 文章

NoSQL用例场景或何时使用NoSQL [关闭]

提问于
浏览
202

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

  • 我应该将NoSQL用于用户数据吗?例如 . Profiles ,用户名密码等

  • 我应该将NoSQL用于重要内容吗?例如 . 文章,博客文章,产品库存等

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

如果以上两个例子都不好,你能给我一些我会使用NoSQL的特定业务用例吗?我看到了很多一般性的描述,但没有很多真实的例子 . 我能想到的唯一事情是用户到用户的消息传递和分析 .

谢谢!

2 回答

  • 149

    这真的是一个"it depends"有点问题 . 一些 general 点:

    • NoSQL通常适用于非结构化/ "schemaless"数据 - 通常,您不需要预先明确定义您的模式,只需包含新字段而无需任何仪式

    • NoSQL通常支持非规范化模式,因为每个RDBMS世界都不支持JOIN . 因此,您通常会对数据进行扁平化,非规范化表示 .

    • 使用NoSQL并不意味着您可能会丢失数据 . 不同的DB有不同的策略 . 例如MongoDB - 您基本上可以选择在性能与数据丢失潜力之间进行权衡的级别 - 最佳性能=更大的数据丢失范围 .

    • 扩展NoSQL解决方案通常非常容易 . 添加更多节点以复制数据是一种方法:a)提供更高的可扩展性; b)在一个节点出现故障时提供更多的数据丢失保护 . 但同样,取决于NoSQL DB /配置 . NoSQL并不一定意味着"data loss"就像你推断的那样 .

    • 恕我直言,复杂/动态查询/报告最好从RDBMS提供 . NoSQL DB的查询功能通常是有限的 .

    • 它不必是1或其他选择 . 我的经验是将RDBMS与NoSQL结合使用用于某些用例 .

    • NoSQL数据库通常缺乏跨多个"tables"执行原子操作的能力 .

    你真的需要了解和理解各种类型的NoSQL存储是什么,以及它们如何提供可扩展性/数据安全性等 . 很难给出全面的答案,因为它们确实是不同的并且以不同的方式解决问题 .

    以MongoDb为例,查看他们的Use Cases以查看他们建议使用MongoDb的"well suited"和"less well suited" .

  • 8

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

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

    • 查询大数据集

    想象一下每天在Twitter上发布的大量推文 . 在RDMS中,可能存在包含数百万(或数十亿?)行的表,并且您不希望直接对这些表进行查询,甚至没有提及,大多数情况下,复杂查询也需要表连接 .

    • 磁盘I / O瓶颈

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

相关问题