代码之家  ›  专栏  ›  技术社区  ›  Iain Holder

应用程序数据同步-与旧应用程序一起运行新应用程序

  •  1
  • Iain Holder  · 技术社区  · 16 年前

    我们正在更换遗留系统。这两个应用程序将在一段时间内同时运行。用户将能够使用这两个系统中的任何一个,而挑战在于能够使他们的数据库彼此保持同步。

    目前摆在桌面上的两种解决方案是:

    1. 位于每台计算机上并由另一个应用程序调用的Web服务。
      • 需要修改本机对象基类上的Save方法。这是侵入性的,在关闭时可能会出现问题。
    2. 一个单独的windows服务,它轮询每个数据库并计算出更改的内容,并根据需要转发适应的更新。

    其他被建议但被拒绝的(我愿意重新考虑)是:

    • BizTalk或其他总线(看起来像一把大锤,对于切换解决方案来说太复杂)
    • 修改所有存储过程(noooo.)
    • SSI(对此还不太了解)

    感谢你的任何想法。

    编辑:注意,模式完全不同。

    4 回复  |  直到 16 年前
        1
  •  1
  •   Mitchel Sellers    16 年前

    2秒,这是一个非常紧迫的时间线,我猜你的windows应用程序解决方案可能不会削减它,如果一次有数百个更改或任何更改,并且投票时间几乎必须是每秒钟,才能在2秒内完成。

    数据库是否使用相同的结构?如果是这样,我会考虑实施复制。

    在注释和添加模式完全不同之后,我必须说,我确实看到了两组操作。

    1. 修改应用程序中的数据存储选项,以在两个表中进行插入/更新/删除。优点:即时,无需外部流程共享。缺点:必须修改所有代码,难以禁用等。

    2. 如前所述,创建一个同步应用程序,以同步更改的数据。优点:传输完成后可以简单地禁用。缺点:编写非常复杂,尤其是在有大量表的情况下。另外,2秒钟的时间也不是那么快,要完成这项任务是非常困难的

        2
  •  0
  •   HLGEM    16 年前

    就我个人而言,我会拒绝用户同时使用这两个系统的想法。如果用户1在系统1上更改了记录1,而用户2在系统2上以不同的方式更改了记录1,您将如何解决此问题?

    此外,如果你不要求人们使用新系统,他们也不会。在大多数组织中,对变革的抵制非常强烈。

    我认为没有合理的方法来获得2秒的同步。这是一个荒谬的要求,应该明确地告诉商业方面。

    有时候,当业务用户想要一些不合理的东西时,你不得不反击。

        3
  •  0
  •   Community CDub    8 年前

    我认为,基本策略应该是逐步将数据更新权限和可能性从传统应用程序切换到新应用程序。用户将能够看到双方的数据,但只能通过其中一个应用程序进行更新。

    (顺便说一句,这种方法也会迫使用户逐渐切换到新版本,从而避免 expected and annoying resistance issue already exposed by @HLGEM )

    1. 设置允许数据从旧数据库传输到新数据库的所有过程。我想在接下来的几个月里你需要运行它们几次。。。
    2. 在这里,您应该已经确定了可以一起移动的同构表组。以一种方式合并前面的代码,您将为这些组中的每一组获得一个“数据传输”过程和一个“反向传输”过程。

    然后,对于这些组中的每一组

    1. 将“反向传输”过程作为新数据库中的触发器进行组织

    我想您能够传输的第一类数据将是不包含任何外键的列表。

    以这种方式工作,你将逐渐从一种你有

    • 读/写旧版应用程序+只读 新应用程序

    • 只读旧版应用程序+读/写 新应用。
        4
  •  0
  •   Iain Holder    16 年前