【问题标题】:Why to use NoSQL DB when we could scale out SQL DB by sharing?当我们可以通过共享扩展 SQL DB 时,为什么还要使用 NoSQL DB?
【发布时间】:2020-12-19 05:14:50
【问题描述】:

我最近读到,NoSQL DB 比传统 SQL DB 更容易横向扩展。

但是考虑到我在 SQL DB 中有一个巨大的表,那么我可以很容易地根据一些哈希函数在多个服务器之间分配行。 例如- 如果我有 4 台服务器,我可以做 (id%4),其中 id 是表的主键,以确定在哪个表上存储该特定行。

通过这样做,我们不仅可以扩展 SQL DB,还可以确保遵循 ACID 属性。

那为什么还要使用 NoSQL 呢?

【问题讨论】:

    标签: sql database nosql scaling horizontal-scrolling


    【解决方案1】:

    NOSQL 数据库倾向于放松数据库的 ACID 属性。例如,它们允许“最终”一致性,而不是“立即”一致性。

    也就是说,如果您更新表中的一行,那么在事务提交后的一段时间内其他查询可能会看到旧值。最终,每个人​​都会看到相同的值。

    因为这很宽松,NOSQL 数据库在优化方面具有更大的灵活性——尤其是不需要等待集群中的所有节点都同意某事。

    在过去的几十年里,关系数据库并没有停滞不前,因此它们经常提供锁定和接近事务的变体。

    根据我的经验,这可以在大量交易环境中产生影响。然而,出于许多目的,SQL 数据库上的事务完整性保证是值得的。

    注意:NOSQL 实际上是指一类“替代”数据库。 NOSQL 中的“NO”代表“不仅”。实际上,我认为这些都是功能生态系统的一部分。 NOSQL 还可以指代文档存储、键值对数据库、图形数据库、GIS 数据库——任何类型的复杂数据库通常具有重要的重叠功能。

    【讨论】:

    • 感谢您的回答。我知道最终的一致性会随着他们放弃 ACID 属性而提高执行速度。但问题是,当我们可以选择在关系数据库中进行分片时,为什么说它们比 SQL 数据库更好地横向扩展(水平扩展),我认为这是我在问题中提到的扩展数据库的简单方法。跨度>
    • @AtharwaAdawdakar 。 . .因为它们放宽了关系数据库实施的数据和事务完整性规则。您以较低的标准实施,通常可以提高速度。它是以数据一致性为代价的。
    猜你喜欢
    • 2020-10-04
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多