心累系列-非关系与关系型数据库事务问题说明图解
- 现有逻辑 - 正确情况
- 现有逻辑 - 异常情况 - MongoDB保存或异常
- 现有逻辑 - 异常情况 - mysql 保存异常
- 优化逻辑 - 1
注意: 在事务只有一个保存或更新的情况下。
- 优化逻辑 - 2
- 对比:
二者结果相同!
- 为什么我们现在会使用现在这种 图 1-1 ?
心里学中的 路径依赖理论 惯性使我们会自然按照某种行为继续下去。
一旦进入某一路径(无论是“好”的还是“坏”的)就可能对这种路径产生依赖。
看下图就能清楚的知道我们为什么会现在这些逻辑了!
我们将 mongoDB 替换为 Mysql 。 结果一目了然。
- 补充
- 不管是现在逻辑还是优化逻辑,都需要保证 MongoDB 业务逻辑上允许重复插入或者 唯一(关键字段或组合关键字段MD5等)。
- 优化所解决的问题为 缩短 mysql 或者其他支持事物的数据库 事务锁所占用时间。
- 在选择使用数据库或者其他第三方框架的时候,请想明白为什么要使用它!不使用它可以吗?什么时候适合使用它!
- 在现有不支持熔断的老项目中,可以考虑引入Sentinel 限流,避免应为单个Http Api 功能照成全局不可以用状态。