专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

为什么NoSQL数据库比关系型数据库更可伸缩

QA: 为什么NoSQL数据库比关系型数据库更可伸缩?

AN: 关系型数据库遵循ACID原则;Nosql数据库遵循BASE原则。这个问题的答案与 NoSQL和SQL无关,而与BASE和ACID有关。

首先,RDBMS为了保持数据完整性和支持事务,多服务器RDBMS将需要具有快速的后端通信通道以同步所有可能的事务和写入,同时防止/处理死锁。

其次,可伸缩性必须分解成其组成部分:

读取扩展=处理更多数量的读取操作
写扩展=处理更大数量的写操作

符合ACID的数据库(如传统RDBMS的数据库)可以扩展读取。它们本质上不比NoSQL数据库低效率,因为(可能)性能瓶颈是由NoSQL(有时)缺乏(例如联接和位置限制)引起的,您可以选择不使用它们。群集SQL RDBMS可以通过在群集中引入其他节点来扩展读取。读操作可以扩展到多远,这是有限制的,但是当您在集群中引入更多节点时,很难扩展写操作。

写扩展是事情变得繁琐的地方。ACID原则施加了各种约束,您在最终一致(BASE)架构中看不到这些约束:

  • 原子性意味着交易必须整体上完成或失败,因此必须在幕后进行大量记账以保证这一点。
  • 一致性约束意味着群集中的所有节点必须相同。如果您写入一个节点,则在将响应返回给客户端之前,必须将该写入复制到所有其他节点。这使得传统的RDBMS集群难以扩展。
  • 持久性约束意味着,为了永不丢失写入,您必须确保在将响应返回给客户端之前,已将写入刷新到磁盘。

为了扩大写操作或集群中节点的数量超过某个点,您必须能够放宽一些ACID要求:

  • 删除原子性可让您缩短锁定表(数据集)的持续时间。示例:MongoDB,CouchDB。
  • 删除一致性使您可以扩大群集节点之间的写入。例如:riak,cassandra。
  • 降低持久性使您无需写入磁盘即可响应写命令。示例:memcache,redis。

NoSQL数据库通常遵循BASE模型而不是ACID模型。他们放弃了A,C和/或D要求,反过来又提高了可伸缩性。有些工具(例如Cassandra)可让您在需要时选择ACID的担保。但是,并非所有NoSQL数据库始终都具有更好的可伸缩性。

原味地址:为什么NoSQL数据库比SQL更可伸缩

未经允许不得转载:搜云库技术团队 » 为什么NoSQL数据库比关系型数据库更可伸缩

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们