Java 将旧应用程序的用户迁移到工作应用程序上的新用户

Java 将旧应用程序的用户迁移到工作应用程序上的新用户,java,oracle,migration,Java,Oracle,Migration,我正在考虑在两个系统之间迁移用户的可能方法。它是一个金融系统,一个web应用程序(Java、Spring、Hibernate、Oracle、JBoss等)。有50万用户需要与其数据(如帐户、承包商、传输等)一起迁移。新的应用程序已经在运行,拥有10000个用户 目前我只考虑在线/离线迁移。在线意味着,在迁移过程中,应用程序对其用户保持可访问性,离线意味着我关闭它并显示技术中断消息,迁移正在进行。客户端不想关闭应用程序,因此这意味着在线迁移。当应用程序处于打开状态(用户可以访问)时,许多用户可能会

我正在考虑在两个系统之间迁移用户的可能方法。它是一个金融系统,一个web应用程序(Java、Spring、Hibernate、Oracle、JBoss等)。有50万用户需要与其数据(如帐户、承包商、传输等)一起迁移。新的应用程序已经在运行,拥有10000个用户

目前我只考虑在线/离线迁移。在线意味着,在迁移过程中,应用程序对其用户保持可访问性,离线意味着我关闭它并显示技术中断消息,迁移正在进行。客户端不想关闭应用程序,因此这意味着在线迁移。当应用程序处于打开状态(用户可以访问)时,许多用户可能会执行不同的操作(也使用外部系统),许多后台进程正在工作并更改数据库数据。在线迁移风险很大: -没有数据库备份,因为在迁移过程中,许多用户会在应用程序中执行不同的操作,因此没有返回点, -迁移过程中出现的问题可能会阻塞联机用户(数据库、事务锁等)


也许你有一些优点可以让我的客户相信在线迁移是无稽之谈?它们可能按应用程序层划分——Jboss服务器风险、数据库风险、业务风险。

在迁移过程中,您必须将存储(数据库)置于只读模式。应用程序不会关闭,但一些改变数据的功能将不可用。在只读模式期间,将数据复制到新的主站点上。一旦复制了所有数据,用户必须重定向到新站点,应用程序将再次变为读写


如果只读模式不可接受,则必须保持两个数据库同步。像GoldenGate这样的产品可以为您做到这一点。

客户管理财务数据所需的不仅仅是“在线迁移有风险:-无数据库备份”这一论点。真愚蠢。也许您可以建议在几个月内进行增量脱机迁移。每周一次,服务器在产品的最低流量点停机几个小时,可能是凌晨2点到5点之类的。迁移5k用户或其他什么。最终每个人都会脱离旧的系统,我们会讨论这个问题,但他们不是技术人员,他们不知道会发生什么坏事。你只需要尽可能地让它安静下来。“永久性地丢失客户数据,没有追索权”肯定会给你的客户带来危险。你只能为那些不听的人做这么多。如果他们想让你违背你的建议,那么在法律上保护自己不承担任何责任或其他事情可能是明智的。然而,这是一个金融应用程序,它必须在繁忙时间读写,当它不能写入数据库时,它没有这样的业务异常处理。它会说“未知问题,未知内部问题,请稍后再试或与管理员联系”,我需要一些额外的开发和测试。