什么是一致性

文章探讨了一致性在不同领域的含义,包括ACID事务中保持数据库正确性的原则,多副本一致性确保所有副本同步,CAP理论中的一致性涉及分布式系统的可用性和分区容忍性,一致性哈希在分布式环境中的应用,以及线性一致性、外部一致性和最终一致性这三种分布式系统的一致性级别。
摘要由CSDN通过智能技术生成

一、不同的一致性

我们在不同的地方见到过一致性的概念,总结大概分为以下几类:

  • ACID里的一致性
  • 多副本的一致性
  • CAP理论的一致性
  • 一致性哈希

二、ACID里的一致性

1.最常见的定义是:事务的一致性是指系统从一个正确的状态,迁移到另一个正确的状态。
指的是事务前后的正确性是一致的。
Consistency ensures that a transaction can only bring the database from one valid state to another, maintaining database invariants: any data written to the database must be valid according to all defined rules, including constraints, cascades,triggers, and any combination thereof. This prevents database corruption by an illegal transaction, but does not guarantee that a transaction is correct.

2.“ensuring the consistency is the responsibility of user, not DBMS.”, "DBMS assumes that consistency holds for each transaction。
指的是对业务中和数据库中约束的检查,业务上的合理性,只靠AID手段不容易检查出逻辑性的问题来。比如转账操作中,账户金额不能为负数,这是业务逻辑上的要求,用一致性来保证。

3.This(Consistency)does not guarantee correctness of the transaction in all ways the application programmer might have wanted (that is the responsibility of application-level code) but merely that any programming errors cannot result in the violation of any defined database constraints.[1]
参考

三、多副本一致性

某些数据保存了多个副本,所有副本内容相同。

四、CAP理论中的一致性

整个分布式系统在对外的反馈上,与一台单机完全一样,不会因为分布式导致对外行为的前后冲突。

五、一致性哈希

一种哈希算法,指将存储节点和数据都映射到一个首尾相连的哈希环上,如果增加或者移除一个节点,仅影响该节点在哈希环上顺时针相邻的后继节点,其它数据也不会受到影响。
在移除或者添加一个服务器时,能够尽可能小地改变已存在的服务请求与处理请求服务器之间的映射关系。一致性哈希解决了简单哈希算法在分布式哈希表( Distributed Hash Table,DHT) 中存在的动态伸缩等问题。
对比非一致性哈希(普通的哈希),映射时如果节点发生变化,需要重新计算所有数据的映射值。

六、线性一致性、外部一致性、最终一致性的区别

这三个都是分布式系统的一致性级别
线性一致性:强一致性,侧重于单个key的场景
外部一致性:事务在数据库内的执行序列不能违背外部观察到的顺序,更侧重于对比传统数据库系统的内部一致性。
最终一致性:弱一致性。
外部一致性参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值