《系统设计》课程学习笔记—ACID 和 BASE 一致性模型

157 阅读2分钟

让我们讨论一下 ACID 和 BASE 一致性模型。

ACID

术语 ACID 代表原子性、一致性、隔离性和持久性。ACID 属性用于在事务处理期间维护数据完整性。

为了保持事务前后的一致性,关系数据库遵循 ACID 属性。让我们理解这些术语:

原子性(Atomic)

事务中的所有操作只会都成功或者都被回滚。

一致性(Consistent)

在事务完成时,数据库在结构上是健全的。

隔离性(Isolated)

事务不会相互竞争。对数据的有争议的访问由数据库控制,以便事务看起来按顺序运行。

持久性(Durable)

一旦事务完成并写入和更新写入磁盘,即使发生系统故障,它也将保留在系统中。

BASE

随着数据量和高可用性需求的增加,数据库设计方法也发生了巨大变化。为了提高扩展能力,同时具有高可用性,我们将逻辑从数据库转移到单独的服务器。这样,数据库变得更加独立,并专注于存储数据的实际过程。

在 NoSQL 数据库世界中,ACID 事务不太常见,因为一些数据库放宽了对即时一致性、数据新鲜度和准确性的要求,以换取其他优点,如规模和恢复能力。

BASE 属性比 ACID 保证宽松得多,但在两个一致性模型之间没有直接的一对一映射。让我们理解这些术语:

基本可用性

数据库几乎大部分时间都在工作。

软状态(Soft-state)

存储不必保持写一致,不同的副本也不必始终保持相互一致。

最终一致性

数据可能不会立即一致,但最终会变得一致。系统中的读取由于不一致性,它们可能不会给出正确的响应。

ACID 与 BASE 的权衡

对于我们的应用程序是否需要ACID 或 BASE一致性模型,没有标准答案。这两种模型的设计都满足不同的要求。在选择数据库时,我们需要记住模型的属性和应用程序的需求。

考虑到 BASE 的松散一致性,如果开发人员为其应用程序选择 BASE 存储,他们需要更加了解并谨慎考虑一致性数据。他们有必要熟悉所选数据库的 BASE 行为,并在这些约束条件下工作。

另一方面,与 ACID 事务的简单性相比,围绕 BASE 限制进行规划有时可能是一个主要缺点。一个完整的 ACID 数据库非常适合数据可靠性和一致性至关重要的使用场景。