跨库的数据库事务回滚操作

2019-09-16 13:30:46 +08:00
 Breadykid

想问下,跨不同数据库,oracle,mysql,pg 的事务操作有什么解决方案吗?不用同步,只要回滚。
背景都是单库。
同一个事务中,以下任一步骤异常则全部回滚。
例如:步骤 3 异常,1、2、3 操作回滚

  1. 读取 mysql 库 A 表 A 添加至 mysql 库 DW 表 A
  2. 读取 mysql 库 DW 表 A 添加至 mysql 库 DW 表 B
  3. 读取 oracle 库 DW 表 B 添加至 oracle 库 DW 表 C
  4. 读取 oracle 库 B 表 B 添加至 mysql 库 DW 表 B

LZ 是 Javaer。。。工程是 springboot 的。。。

5815 次点击
所在节点    程序员
15 条回复
lolizeppelin
2019-09-16 13:58:35 +08:00
工作流呗还能咋办
pangleon
2019-09-16 14:04:54 +08:00
你非要实时不就是分布式事务么?你怎么理解你自己说的 “不用同步”的?不是只有数据同步叫同步,你这是状态同步一样也是同步。

要么上分布式事务中间件,目前有不少方案了,TCC,SAGA,消息。对现有系统侵入性最小的是消息模式
monsterxx03
2019-09-16 14:08:29 +08:00
LeeSeoung
2019-09-16 14:29:51 +08:00
关键词 分布式事务 有很多可以用的框架,但都不是很好用。。
dog82
2019-09-16 15:04:29 +08:00
分布式事务,以前用过 jboss 系列的 narayana,感觉云里雾里的。
后来听说 spring 可以集成 atomikos
xuanbg
2019-09-16 15:59:46 +08:00
最省事的方案就是统统换成 oracle,消灭提出问题的人……不对,是数据库,也能解决问题。也许这个办法还最省钱也说不定呢。

除此之外,就是上分布式事务了,估计楼上说的那些都不好使,最后还得自己造轮子。然后发现这个轮子不好造,一开始以为最多是造一辆马车,结果发现是艘宇宙飞船。。。
ziding
2019-09-17 09:25:39 +08:00
最简单的 2PC 提交,影响性能。复杂的 TCC,SAGA,消息
boyhailong
2019-09-17 11:37:31 +08:00
实际中有这么复杂的需求?
XiLemon
2019-09-17 12:11:03 +08:00
老哥,怎么感觉在某个群里见过这个问题呢
Breadykid
2019-09-18 09:11:20 +08:00
@xuanbg oracle 有什么回滚方案吗
Breadykid
2019-09-18 09:11:44 +08:00
@boyhailong 公司是要造这个轮子。。。
Breadykid
2019-09-18 09:12:04 +08:00
@XiLemon 所以,你在哪个群
XiLemon
2019-09-18 09:36:12 +08:00
@Breadykid 加一下试试👀
xuanbg
2019-09-18 12:03:00 +08:00
@Breadykid oracle 不就是正常的数据库事务么。。。我的意思就是用同一个数据库,至少数据库不要搞分布式。
734695609
2020-06-01 14:52:37 +08:00
@Breadykid 请问一下帖主最后是怎么解决的?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/601140

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX