我正在开发一个项目,我们正在构建几个新的rails应用程序,这些应用程序旨在与需要使用相同数据库的旧应用程序一起运行。旧数据库使用Oracle。
我认为干净地切换并且不同时在同一个数据库上运行新旧应用程序是理想的,但在这种情况下,它根本不可能。遗留应用程序太大,运行一个非常复杂的系统,这是业务的核心。目的是一次取代它。
但要做到这一点,我们需要启动每个处理部分应用程序的rails应用程序 - 并与当前运行的旧应用程序共享数据库。
我已经看了很多,并且找不到任何明确的rails文档来描述我们可能遇到的问题 - 或者即使它是可能的。我知道Heroku现在支持运行指向单个数据库的多个rails应用程序。我发现很多关于这样做的人的讨论,但没有任何真正确定潜在风险的地方。
这可能吗?可能会出现哪些具体问题?
编辑:为了澄清,遗留应用程序不是基于rails的。它基于一些完全不同的技术。
答案 0 :(得分:1)
虽然这是可能的,但您必须非常小心,特别是如果您有两个系统在同一个表上执行迁移。
理想情况下,一个应用程序“拥有”数据库并承担迁移各种表的责任,但是可以将其拆分,以便某些表由一个应用程序拥有,而另一些表由另一个应用程序拥有。 schema_migrations
表应该能够独立跟踪这些。
如果你必须在两个应用程序中对同一个表进行修改,你将遇到麻烦,因为无法确保在另一个应用程序之前进行一次修改,迁移链是独立的。
如果你小心避免这种事情,那通常很好。
确保您拥有一个强大的测试环境来模拟两个应用程序串联运行时会发生什么。