1

我正在开展一个项目,我们正在构建几个新的 Rails 应用程序,这些应用程序旨在与需要使用相同数据库的遗留应用程序一起运行。旧数据库使用 Oracle。

我相信只是干净地切换并且不在同一个数据库上运行新旧应用程序是理想的,但在这种情况下这是不可能的。旧版应用程序太大,运行一个非常复杂的系统,这是业务的核心。目的是一次更换一点。

但要做到这一点,我们需要启动 Rails 应用程序,每个应用程序都处理应用程序的一部分——并与当前运行的遗留应用程序共享数据库。

我环顾四周,找不到任何明确的 Rails 文档来描述我们可能遇到的问题——或者即使有可能。我知道 Heroku 现在支持运行多个指向单个数据库的 rails 应用程序。我发现很多关于这样做的人的讨论,但没有真正确定潜在风险在哪里。

这可能吗?可能会出现哪些具体问题?

编辑:澄清一下,遗留应用程序不是基于 Rails 的。它基于一些完全不同的技术。

4

1 回答 1

1

虽然这是可能的,但您必须非常小心,特别是如果您有两个系统在同一个表上执行迁移。

理想情况下,一个应用程序“拥有”数据库并承担迁移各种表的责任,但可以将其拆分,以便一些表由一个应用程序拥有,而一些表由另一个应用程序拥有。该schema_migrations表应该能够独立跟踪这些。

如果您必须在两个应用程序中对同一个表进行修改,您将遇到麻烦,因为无法确保一个修改先于另一个修改,迁移链是独立的。

如果你小心避免这种事情,通常没问题。

确保你有一个健壮的测试环境来模拟当两个应用程序同时运行时会发生什么。

于 2013-05-08T19:09:43.730 回答