是分布式系统、数据库理论和ACID事务模型中的核心概念之一)
一致性Consistency是分布式系统、数据库理论和ACID事务模型中的核心概念之一指在事务执行前后系统始终处于满足预定义完整性约束的“合法状态”。在数据库中一致性确保事务不会破坏数据的业务规则如外键约束、唯一性、余额非负等即使多个事务并发执行最终结果也等价于某个串行执行的正确结果。需注意一致性 ≠ 复制一致性如强一致性、最终一致性后者属于分布式一致性模型如CAP理论中的Consistency描述的是多个副本间的数据同步程度。而ACID中的Consistency更侧重于语义正确性与业务逻辑约束的保持依赖应用层与数据库共同保障例如通过触发器、检查约束、事务逻辑实现。简言之ACID一致性保证事务遵守数据完整性规则是逻辑层面的正确性分布式一致性如线性一致性、顺序一致性描述多节点间读写操作的可见性与顺序保证。# 示例银行转账事务中保障一致性deftransfer(from_acc,to_acc,amount):iffrom_acc.balanceamount:raiseValueError(Insufficient balance)# 业务规则检查from_acc.balance-amount to_acc.balanceamount# 数据库约束如CHECK(balance 0)进一步兜底ACID中的Consistency与CAP理论中的Consistency名称相同但语义、关注层次和保障机制完全不同这是分布式系统学习中极易混淆的关键点ACID 中的 Consistency一致性本质逻辑/语义一致性即事务执行前后数据库必须始终满足预定义的完整性约束如主键唯一、外键引用存在、CHECK约束、业务规则等。目标保证数据“正确”——例如转账后总金额不变、账户余额不为负、订单状态流转合法。责任主体应用逻辑 数据库约束共同承担。数据库提供约束机制NOT NULL、UNIQUE、FOREIGN KEY、CHECK但复杂业务规则如“用户等级≥3才可发帖”需由应用在事务中显式校验。前提假设单节点或强同步的可靠环境不考虑网络分区。CAP 中的 Consistency一致性本质读写一致性强一致性特指线性一致性Linearizability任何读操作都能读到最新写入的值且所有节点对数据的观察顺序与真实事件发生顺序一致。目标解决分布式多副本场景下的数据可见性问题确保客户端不会读到过期或冲突的数据。责任主体系统协议层保障如Paxos/Raft共识算法、两阶段提交、Quorum机制。前提背景明确面对网络分区Partition Tolerance不可避的现实需在C、A、P间权衡。✅ 关键区别总结维度ACID ConsistencyCAP Consistency强一致性性质业务规则合规性What is right?副本间状态同步及时性When is visible?作用域单数据库实例内或事务协调器下跨多个节点/副本的分布式系统是否可选是ACID强制要求否则不是ACID事务是CAP三选二中的一个可放弃项破坏后果数据逻辑错误如负余额、孤儿记录读到脏数据、陈旧数据或不一致视图⚠️ 补充说明CAP中的“C”常被误称为“数据一致性”实则专指线性一致性这一特定强一致性模型而最终一致性Eventual Consistency、因果一致性等均属于CAP框架下“放弃C、选择AP”的不同弱一致性方案——它们不违背ACID一致性只要每个节点本地事务仍满足ACID只是牺牲了跨节点的实时可见性。