我们知道 关系型数据库遵守 ACID
非关系型数据库遵守CAP-base
疑问:
为什么只有关系型数据库提供事务处理支持?
如果我们想在微服务架构中对非关系型数据库进行分布式事务操作怎么办?
首先要明确的一点就是:
因为NoSQL的高拓展性(horizontal scaling)一旦我们要做事务操作 就一定是分布式的。
但是 NoSQL不支持事务/分布式事务、
为什么?
因为nosql一般都是强调扩展性的,这就是数据会有很多分区,分布在不同的机器上,要支持事务就得实现分布式事务,实现低延迟的分布式事务是一个业界难题。
但是SQL支持事务、分布式事务。
首先 如果我们只有一个Server 这也是常见的 那么支持事务就没有什么压力。
但是 如果我们的RD的server有好几个 (比如在微服务架构里面),那么就必须要实现分布式事务了。
怎么实现?
2PC 3PC SAGA TCC…
理解分布式事务
但是 最近MongoDB开始支持事务了?(since MongoDB4.0)
MongoDB的事务、ACID和一致性
总结一下就是SQL支持事务分布式事务 NoSQL不支持,但是也正在慢慢支持。
但是 因为NoSQL和微服务用的越来越多 一旦我们需要增删改查 那应该怎么办呢?



