【发布时间】:2012-12-06 19:46:38
【问题描述】:
我们有两个软件堆栈,Ruby on Rails 和 Java,它们共享一个 Mysql 数据库。我们正在使用 Jooq Java 数据库抽象层,它通过读取现有数据库模式并生成代码来工作。
我们一直依靠 Rails 迁移来跟踪架构更改,但我们的 Java 开发人员对此并不熟悉,我们的 Rails 开发人员不得不不止一次地为我们解决问题。这也是一个相当繁琐的过程,修改架构可能需要 5-10 分钟,而直接通过 MySql Workbench 等工具修改架构则需要几秒钟。
最好有一个解决方案来修改与 Rails 无关的数据库架构,有人可以推荐合适的方法吗?
【问题讨论】:
-
查看 Liquibase 或 Flyway。而且从不直接通过 SQL 工具进行更改。从长远来看太麻烦了。
-
您是否考虑过通过为所有数据库操作创建存储过程来在数据库上构建一个抽象层,并让 java 和 RoR 代码仅通过这些过程与数据库交互?这样,您就可以在不破坏任何代码的情况下更改数据库架构,无论是 RoR 还是 Java。
-
RedGate SQL Source Control 效果很好。我写了一份工作来每小时运行他们的 SQL 比较。检测源代码控制和数据库之间的差异。这样他们就不会失去同步。
-
请注意:迁移与 Rails 无关,Rails 在后台使用了一个名为 ActiveRecord 的库。我不建议这样做,但您可以实际提取数据库迁移到一个单独的项目。
标签: java mysql sql ruby-on-rails jooq