Kai's personal website build with astro.

Monotonic reads 单调读


今天在看 MongoDB 文档的时候,读到 non-monotonic reads 一词,名字很熟悉,但是印象已经模糊了,查漏补缺一下。

单调读 monotonic reads

单调读(monotonic reads)是数据库事务中的一个概念,是事务一致性保证中的一个方面。指在一个事务或会话中,随着时间的推移,读取到的数据不会“回退”。

一致性约束强度:强一致性 > 单调读 > 最终一致性 > 弱一致性。在讨论分布式事务的一致性约束时,不太常提起单调读,但它能提供的保证比最终一致性更强。

分布式事务回顾

CAP 定理

CAP 定理指出,分布式系统不可能同时满足以下三个要求,强调了设计分布式系统时面临的根本性权衡:

BASE 理论

BASE 理论是对 CAP 中一致性和可用性权衡的一种实现方式,它提供了一种在放宽一致性要求下实现高可用性和可伸缩性的设计原则。

传统事务回顾

ACID

隔离级别

脏读

读到其他事务未提交的数据

解决方案:提升隔离级别到 RC

不可重复读

读到已提交但被其他事务修改的数据,导致前后结果不一致

解决方案:

幻读

读到已提交但被其他事务插入的数据,跟不可重复读的区别在于,幻读通常出现在查询多条数据的时候

解决方案:

存一些链接

https://jepsen.io/consistency/models/monotonic-reads