首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

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

  •  
  •   Breadykid · 36 天前 · 1282 次点击
    这是一个创建于 36 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想问下,跨不同数据库,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 的。。。

    第 1 条附言  ·  35 天前
    偏向在单应用服务里操作,像是用 transactionTemplate
    14 回复  |  直到 2019-09-18 12:03:00 +08:00
        1
    lolizeppelin   35 天前 via Android
    工作流呗还能咋办
        2
    pangleon   35 天前
    你非要实时不就是分布式事务么?你怎么理解你自己说的 “不用同步”的?不是只有数据同步叫同步,你这是状态同步一样也是同步。

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

    除此之外,就是上分布式事务了,估计楼上说的那些都不好使,最后还得自己造轮子。然后发现这个轮子不好造,一开始以为最多是造一辆马车,结果发现是艘宇宙飞船。。。
        7
    ziding   35 天前
    最简单的 2PC 提交,影响性能。复杂的 TCC,SAGA,消息
        8
    boyhailong   35 天前
    实际中有这么复杂的需求?
        9
    XiLemon   35 天前 via iPhone
    老哥,怎么感觉在某个群里见过这个问题呢
        10
    Breadykid   34 天前
    @xuanbg oracle 有什么回滚方案吗
        11
    Breadykid   34 天前
    @boyhailong 公司是要造这个轮子。。。
        12
    Breadykid   34 天前
    @XiLemon 所以,你在哪个群
        13
    XiLemon   34 天前 via iPhone
    @Breadykid 加一下试试👀
        14
    xuanbg   34 天前
    @Breadykid oracle 不就是正常的数据库事务么。。。我的意思就是用同一个数据库,至少数据库不要搞分布式。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4188 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 05:47 · PVG 13:47 · LAX 22:47 · JFK 01:47
    ♥ Do have faith in what you're doing.