我正在考虑一个针对当前项目的noSQL解决方案,但对于其中许多数据库中的“最终一致性”子句,我犹豫不决。最终一致性是否与处理复制滞后的mySQL数据库不同?我过去在滞后复制中使用的一个解决方案是,当需要立即保持数据一致性时,从主服务器读取数据。
然而,我对为什么关系数据库声称具有很强的数据一致性感到困惑。我想我应该使用交易,这将给我很强的一致性。那么,假设mySQL复制可能滞后,编写应用程序是一种好做法吗?
发布于 2021-09-10 17:44:31
为了完整起见,我也将用CAP定理的观点回答这个问题。Oh和酸的浓度与CAP的浓度不一样。
根据CAP定理中的一致性,即每个读取都接收最近的写入或错误(这称为线性化,即强一致性,即原子一致性),MySQL在默认情况下并不强一致,因为它使用异步复制。因此,有一段时间,组中的一些节点进行最近的写入,而一些节点仍然没有写入。
另外,如果您的MySQL版本是8.0.14或更高版本,那么group_replication_consistency是可配置的,但它的默认值仍然是最终的(这是不可配置的,是以前的MySQL版本中的默认值,我相信大多数应用程序都是在这个版本上运行)。详细信息:https://dev.mysql.com/doc/refman/8.0/en/group-replication-configuring-consistency-guarantees.html
此外,如果您使用的是MySQL集群(这是一种不同的产品/技术,我觉得他们把它称为集群),MySQL文档本身就说它只能保证最终的一致性。详细信息:https://dev.mysql.com/doc/mysql-cluster-manager/1.4/en/mcm-eventual-consistency.html
因此,我们可以安全地说,这是一个最终一致的系统。并且每个异步复制的系统最终在定义上是一致的。
https://stackoverflow.com/questions/25690976
复制相似问题