跳到主要内容

ACID 与 BASE

ACID(可用性优先于一致性)

  • 原子性确保事务要么完全成功,要么完全失败。
  • 一致性:在 ACID 中,C 表示事务遵循所有数据库规则,例如唯一键、触发器、级联。相比之下,CAP 中的 C 仅指单副本一致性,是 ACID 一致性的一个严格子集。
  • 隔离性确保并发执行的事务使数据库保持在一个状态,这个状态与按顺序执行事务时所获得的状态相同。
  • 持久性确保一旦事务被提交,即使在系统故障(例如停电或崩溃)的情况下,它也将保持提交状态。

BASE(可用性优先于一致性)

  • 基本可用表示系统保证可用。
  • 软状态表示系统的状态可能会随着时间的推移而变化,即使没有输入。这主要是由于最终一致性模型。
  • 最终一致性表示系统将在一段时间后变得一致,前提是系统在此期间没有接收到输入。

虽然大多数 NoSQL 采用 BASE 原则,但它们正在学习或朝着 ACID 发展。例如,Google Spanner 提供强一致性。MongoDB 4.0 增加了对多文档 ACID 事务的支持。

References: