【问题标题】:Why would using a nosql/document/MongoDB as a relational database be inferior?为什么使用 nosql/document/MongoDB 作为关系数据库会逊色?
【发布时间】:2017-07-06 15:21:43
【问题描述】:

我最近被介绍到 MongoDB,并且非常喜欢(与我用于所有项目的 MySQL 相比)。

但是在某些特定情况下,将我的数据与使用简单 ID 相互“链接”的文档一起存储更有意义(以减少重复数据)。

例如,我可能有CountryUser 文档,其中用户的位置实际上是Country 的ID(因为Country 文档包含更多数据,因此在每个文档中重复Country 数据用户没有意义)。

我很好奇的是..与使用适当的关系数据库相比,为什么MongoDB会逊色?

是不是因为我可以通过连接来保存事务(而不是用 MongoDB 做两个事务)?

【问题讨论】:

    标签: mongodb rdbms nosql


    【解决方案1】:

    这是个好问题..!!

    我会说,将 nosql db 用于您描述的数据类型绝对没有错。对于简单的用例,它会很好地工作。

    唯一的一点是,关系数据库的设计很久以前就用于存储和查询结构良好的数据......并定义了适当的关系。因此,对于大量结构良好的数据,所提供的性能和功能将远远超过 nosql 数据库提供的性能和功能。因为他们更成熟了..这是他们的球赛..!!

    另一方面,nosql 数据库旨在处理大量非结构化数据,并且对分布式环境扩展具有开箱即用的支持。所以它现在是一个完全不同的球类游戏..

    他们基本上以不同的方式处理数据,因此有不同的策略/执行计划来获取给定的数据..

    【讨论】:

      【解决方案2】:

      MongoDB 从一开始就被设计为可在多个服务器上进行扩展。当 MongoDB 数据库对于单个服务器来说太慢或太大时,您可以通过将更大的集合“分片”来添加额外的服务器。这意味着集合在不同的服务器之间划分,每个服务器负责管理集合的不同部分。

      MongoDB 不做 JOIN 的原因是,当一个或两个集合被分片到多个节点上时,不可能让 JOIN 表现良好。 JOIN 需要将表/集合 A 的每个条目与表/集合 B 的每个条目进行比较。当所有数据都在一个服务器上时,有一些快捷方式。但是当数据分布在多台服务器上时,需要在它们之间进行大量数据的比较和同步。这将需要大量的网络流量,并使操作非常缓慢和昂贵。

      【讨论】:

      • 我不确定这是否能回答问题,MongoDB 会逊色的原因。
      【解决方案3】:

      您只有两个表,国家和用户是否正确。如果是这样,在我看来,唯一重复的数据是外键,这没什么大不了的。如果有更多重复,那我质疑数据库设计本身。

      在概念上,您可以在 NOSQL 中做到这一点,但为什么呢?仅仅因为 NOSQL 是新的?好的,那就去学习吧,但要记住,“如果它没有坏,就不要修理它。”显然应用程序已经在关系上运行。如果数据存储在 MongoDB 中的单独文档中并且您希望将它们相互关联,您将需要使用链接,这将比连接更多工作并且速度更慢。您将不得不存储一个链接,这并不比存储外键好。或者,您可以在 MongoDB 中将一个文档嵌入到另一个文档中,这甚至可能会增加重复。

      如果它当前运行在 MySQL 上,那么它就没有运行在分布式服务器上,所以 Mongo 对分布式服务器的使用是无关紧要的。您必须添加服务器才能利用这一点。如果表在关系中正确索引,则不必搜索大量数据。

      但是,这不是一个复杂的应用程序,您可以使用其中任何一个。如果数据存储在具有关系的 MPP 环境中,它将运行得非常好,根本不需要搜索大量数据。但是,在 MPP 中选择分区键有两个要求: 1. 选择一个能够实现数据均匀分布的分区键;和 2. 选择一个可以允许配置数据的键。我建议您在两个文件中使用与分区键(分片键)相同的键。

      尽管我很喜欢 MongoDB,但我看不出移动应用的价值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-19
        • 2011-03-14
        • 1970-01-01
        • 2011-05-08
        • 1970-01-01
        • 1970-01-01
        • 2011-08-04
        相关资源
        最近更新 更多