在数据库工程中放弃基于BASE的ACID

关系数据库的核心设计具有可靠性和一致性。 开发他们的工程师专注于交易模型,以确保始终保留ACID模型的四个原则。 然而,一个新的非结构化数据库模型的出现正在使ACID头朝上。 NoSQL数据库模型避开了高度结构化的关系模型,转而采用灵活的键/值存储方法。 这种非结构化的数据方法需要ACID模型的替代方案:BASE模型。

ACID模型的基本原理

ACID模型有四条基本原则:

事务的原子性确保每个数据库事务都是一个采用“全部或全部”方法执行的单个单元。 如果事务中的任何语句失败,则整个事务将回滚。

关系数据库还确保每个事务与数据库业务规则的一致性 。 如果原子事务的任何元素会破坏数据库的一致性,则整个事务将失败。

数据库引擎强制在同一时间或几乎同时发生的多个事务之间进行隔离 。 每笔交易发生在每一笔交易之前或之后,并且交易在开始时看到的数据库视图仅在交易结束之前由交易本身改变。 任何交易都不应该看到另一笔交易的中间产品。

最终的ACID原则( 持久性 )确保了一旦将事务提交给数据库,它将通过使用备份和事务日志而永久保留。 如果发生故障,这些机制可能会用于恢复已提交的交易。

BASE的核心原则

另一方面,NoSQL数据库包含了ACID模型过度或者实际上会阻碍数据库操作的情况。 相反,NoSQL依赖于已知的适当的软模型作为BASE模型。 该模型适应NoSQL提供的灵活性以及类似的非结构化数据管理和管理方法。 BASE由三个原则组成:

基本可用性 。 NoSQL数据库方法的重点在于即使在出现多个故障时数据的可用性。 它通过使用高度分布式的数据库管理方法来实现这一点。 NoSQL数据库并不是维护一个大型数据存储并关注该存储的容错,而是通过高度复制将数据传播到多个存储系统。 万一发生故障会中断对一段数据的访问,这不一定会导致数据库完全中断。

软状态 。 BASE数据库几乎完全放弃了ACID模型的一致性要求。 BASE背后的基本概念之一是数据一致性是开发人员的问题,不应该由数据库处理。

最终一致性 。 NoSQL数据库关于一致性的唯一要求是要求在将来的某个时间点,数据将会收敛到一致的状态。 但是,没有保证,但是,这将发生什么时候。 这完全背离了ACID的直接一致性要求,该要求禁止在事务完成之前执行事务并且数据库已经趋于一致状态。

BASE模型并不适合所有情况,但对于不需要严格遵守关系模型的数据库而言,它肯定是ACID模型的灵活替代方案。