【问题标题】:How Does NoSQL Scale Out Exactly?NoSQL 如何准确地横向扩展?
【发布时间】:2013-03-31 02:38:46
【问题描述】:

我使用 SQL Server 2012。我有一个按用户 ID 跨物理层分片的数据库。在我的应用程序中,用户是一个聚合根(即,在没有整个用户进出的情况下,关于用户的任何内容都不会来自或进入我的存储库)。关于一个特定用户的一切都存在于一台特定的机器上。

我的系统比使用 NoSQL 的系统可扩展性差吗?或者,有人能解释一下 NoSQL 系统是如何准确地跨服务器扩展的吗?他们不需要以与我正在做的类似的方式进行分片吗?我们都读过 NoSQL 支持可扩展性,但目前我不知道 MongoDB 会如何使我的架构受益。

【问题讨论】:

    标签: sql nosql scalability


    【解决方案1】:

    MongoDB 允许您 scale in two ways: shardingreplication。我认为你可以在 MS SQL Server 中做到这两点。

    通常不同的是数据模型:

    • 在关系数据库中,通常有多个相互引用的表。从理论上讲,您可以通过使用多个集合来对 MongoDB 做类似的事情,但是这不是通常的做法。相反,在 MongoDB 中,您倾向于将所有属于同一集合的数据存储在同一个集合中。因此,通常您的集合少于数据库中的表。这在很多时候会导致更多的冗余(数据被复制)。您可以尝试在关系数据库中执行此操作,但这并不是那么容易(表会更少,每个都有更多列)。

    • MongoDB 集合比表更灵活,因为您不需要预先定义数据模型(列/属性的确切列表、数据类型)。这允许您更改数据模型而无需更改表 - 缺点是您需要在应用程序中考虑到这一点(您不能依赖具有相同结构的所有行/文档)。我不确定你是否可以在 MS SQL Server 中做到这一点。

    • 在 MongoDB 中,每个文档都是一个 Json 对象,所以它是一个树而不是一个平面表。这允许数据模型具有更大的灵活性。例如,在我正在开发的应用程序(Apache Jackrabbit Oak / MongoMK)中,对于每个属性(列),我们可以存储多个值;每个版本都有一个值。在关系数据库中这样做是可能的,但相当棘手。

    【讨论】:

      猜你喜欢
      • 2015-06-08
      • 2012-02-02
      • 2021-11-05
      • 1970-01-01
      • 2021-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      相关资源
      最近更新 更多