logo
Database Design

ACID vs BASE

一致性模型对比

下面是 ACID 与 BASE consistency models。

ACID

ACID 代表 Atomicity、Consistency、Isolation、Durability,用于在 transactions 处理中保证 data integrity。为了在 transaction 前后保持一致性,relational databases 往往遵循 ACID。

Atomic

一个 transaction 的所有操作要么全部成功,要么全部 rollback。

Consistent

Transaction 完成后,database 处于结构一致的状态。

Isolated

Transactions 之间互不干扰。Database 会协调并发访问,让 transactions 看起来像顺序执行。

Durable

一旦 transaction 完成并写入磁盘,即使系统故障,数据也会持久保存。

BASE

随着数据量增长和高 availability 需求,数据库设计也在变化。为了提升 scalability 与 availability,很多系统把部分逻辑从 database 转移到独立 servers,使 database 更专注于存储本身。

在 NoSQL 世界,ACID transactions 并不常见,因为很多 database 会放宽对即时一致性、数据新鲜度和精确性的要求,以换取 scale 与 resilience。

BASE 的约束比 ACID 松散,且二者没有严格的一一映射关系:

Basic Availability

Database 大多数时候可用。

Soft-state

Store 不要求强一致;不同 replicas 也不需要时刻一致。

Eventual consistency

数据不会立刻一致,但最终会收敛一致。系统仍可读,只是读到的可能不是最新值。

ACID vs BASE Trade-offs

没有绝对正确的选择,ACID 或 BASE 取决于应用需求。需要平衡一致性、可用性与性能。

BASE 的一致性更松散,因此选择 BASE 的系统需要更严格地设计一致性策略,了解所选 database 的 BASE 行为并在约束内工作。

相对地,BASE 的限制会增加系统复杂度,而 ACID transactions 则更简单直接。对于 data reliability 与 consistency 极其重要的场景,ACID database 是更合适的选择。

相关练习题

ACID vs BASE

暂无相关练习题