Coursera 笔记

Module 01 · Introducing NoSQL

ACID versus BASE OperationsACID 与 BASE 操作对比

Coursera ↗

欢迎观看关于 ACID 与 BASE 操作 的介绍视频。通过本视频,您将了解 ACID 和 BASE 的定义,描述它们之间的差异,并识别适用的使用场景。


 ACID 与 BASE 的区别

在关系型数据库管理系统(RDBMS)与 NoSQL 数据库之间,最显著的区别之一就是它们的数据一致性模型。现在广泛使用的两种一致性模型分别是 ACID 和 BASE:

  • 关系型数据库使用 ACID 模型。
  • NoSQL 数据库通常使用 BASE 模型。

例如,MongoDB(一个基于文档的 NoSQL 数据库)从 4.0 版本开始支持 ACID 事务。

尽管 ACID 和 BASE 模型常被视为对立或互相竞争的存在,但实际上这两者各有其优势和劣势。


 ACID 模型

ACID 是数据库操作中保证事务的四个关键特性:

  1. 原子性(Atomicity):
    • 事务中的所有操作要么成功执行,要么全部回滚,确保不会出现部分成功的情况。
  2. 一致性(Consistency):
    • 事务完成后,数据库的结构完整性不会被破坏,保证数据从一个一致的状态过渡到另一个一致的状态。
  3. 隔离性(Isolation):
    • 事务在执行过程中不会被其他事务干扰,确保每个事务的独立性,防止并发操作导致数据不一致。
  4. 持久性(Durability):
    • 事务完成后,相关数据会永久存储,即使发生网络或电源故障,数据也不会丢失。

ACID 的应用场景

  • 金融机构:金融交易依赖于 ACID 事务的原子性,确保转账等操作准确无误。例如,银行转账操作要求资金从一个账户扣除并且立即存入另一个账户。如果操作中途失败,可能导致资金丢失或重复交易。
  • 数据仓库:需要保证数据一致性的应用程序,ACID 模型可以提供强一致性,适用于需要频繁进行小规模、并发事务的场景。

ACID 的优点:

  • 强一致性,适合需要严格数据完整性和可靠性的系统。

 BASE 模型

BASE 是 NoSQL 数据库中的一致性模型,通常用于分布式、需要高可用性的系统。

BASE 是 ACID 的对立面,提供了一种不同的取舍,即优先保证 可用性,而牺牲了一定的一致性。

BASE 的含义:

  1. 基本可用(Basically Available):
    • 数据库保证可用性,虽然不强制要求立即一致性,但能确保数据在某些节点不可用时依然能继续服务请求。
  2. 软状态(Soft State):
    • 由于没有强一致性,数据的状态在某些时刻可能不一致。
  3. 最终一致性(Eventually Consistent):
    • BASE 模型并不要求立即一致性,但最终会在系统稳定时达到一致。即数据可能在一段时间内不一致,但最终会同步到一致状态。

BASE 的应用场景

  1. 社交媒体和大数据分析:
    • 社交网络应用,如 Facebook、Twitter 等,可以利用 BASE 模型来支持大量的用户交互数据。虽然不同节点的数据可能存在短暂不一致,但系统始终保持可用。
  2. 全球在线服务:
    • Netflix、Spotify、Uber 等全球性服务平台,使用 BASE 数据存储来确保应用随时可用,即使某些数据库节点不可用,系统也能继续运行。
  3. 用户数据存储:
    • 用户个人资料存储、音乐播放历史等应用场景中,BASE 模型提供高可用性和快速响应,即使在数据同步过程中可能出现轻微不一致。

BASE 的优点:

  • 高可用性,适合需要跨多个地理位置和时区实时提供服务的系统。

 总结

通过本视频,您了解了:

  • ACID 和 BASE 是两种常见的一致性模型,用于关系型数据库和 NoSQL 数据库。
  • ACID 代表 原子性、强一致性、隔离性和持久性,适合对数据一致性要求严格的系统,如银行转账和数据仓库。
  • BASE 代表 基本可用、软状态和最终一致性,适合需要高可用性和大规模分布式服务的应用,如社交媒体和全球在线服务。
  • 两种模型各有优缺点,具体使用哪个模型,取决于业务需求和应用场景。