[数据库]ACID、CAP、BASE特性
SQL与noSQL
对比项 | 关系型SQL | 非关系型SQL |
---|---|---|
数据存储 | 关系表 | 数据集(键值/JSON文档/哈希表/其它) |
模式结构 | 结构化、提前定义表结构 | 动态调整模式,非结构化 |
扩展方式 | 纵向扩展,提高处理能力 | 横向扩展、增加分布式节点 |
数据查询 | 标准通用的查询语言SQL | 非标准非结构化的查询语言(unQL) |
关键特性 | ACID | CAP、BASE |
主要优势 | 结构化、事务处理、易于维护使用 | 扩展性、灵活调整、大数据分析 |
主要劣势 | 扩展性、高并发场景、大数据分析 | 事务支持较弱、标准不统一 |
ACID特性
关系型数据库遵从ACID规则:
A:Atomicity,原子性,一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间的某个环节。如果执行过程中发生错误,会被恢复到事务开始前的状态,就像这个事务从来没有执行过一样。
C:Consistency,一致性,在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
I:Isolation,隔离性,数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
D:Durability,持久性,事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
CAP特性
非关系型数据库遵从CAP规则:
C:Consistency,强一致性
A:Availability,可用性
P:Partition tolerance,分区容错性
CAP的3选2:
- CAP特性,在分布式系统中,最多只能实现上面的两点
- 由于网络硬件肯定会出现延时、丢包等问题,所以,分区容性是必须要实现的
- 需要在一致性和可用性之间进行权衡,没有NoSQL系统能够同时保证这三点
BASE特性
BASE理论是对CAP中一致性和可用性权衡的结果:
BA:Basically Available,基本可用
S:Soft state,软状态
E:Eventually consistent,最终一致性
BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。