心累系列-非关系与关系型数据库事务问题说明图解

  • 现有逻辑 -  正确情况

1569561405995-143.png

  • 现有逻辑 - 异常情况 - MongoDB保存或异常

1569561497805-381.png

  • 现有逻辑 - 异常情况 - mysql 保存异常

1569561542633-122.png


  • 优化逻辑 - 1

1569561601380-100.png

                     注意: 在事务只有一个保存或更新的情况下。

 
  • 优化逻辑 - 2 

1569561625468-418.png


  • 对比:

1569563012516-366.png

       二者结果相同!


  • 为什么我们现在会使用现在这种  图 1-1 ?

                心里学中的 路径依赖理论  惯性使我们会自然按照某种行为继续下去。                             

                一旦进入某一路径(无论是“好”的还是“坏”的)就可能对这种路径产生依赖。

 

       看下图就能清楚的知道我们为什么会现在这些逻辑了!

1569562224988-685.png

 我们将 mongoDB 替换为 Mysql 。  结果一目了然。

 

  • 补充
  1.  不管是现在逻辑还是优化逻辑,都需要保证 MongoDB 业务逻辑上允许重复插入或者 唯一(关键字段或组合关键字段MD5等)。
  2. 优化所解决的问题为 缩短 mysql 或者其他支持事物的数据库  事务锁所占用时间。
  3. 在选择使用数据库或者其他第三方框架的时候,请想明白为什么要使用它!不使用它可以吗?什么时候适合使用它!
  4. 在现有不支持熔断的老项目中,可以考虑引入Sentinel 限流,避免应为单个Http Api 功能照成全局不可以用状态。

 

posted @ 2019-10-09 14:49  atliwen  阅读(335)  评论(0编辑  收藏  举报