1

我正在构建一个使用mysql和postgres数据库的应用程序。由于postgis,我使用postgres,因为这个应用程序是基于位置的。 Postgres只有一个数据库Places,而mysql包含所有其他数据库。在开发过程中,我在各种模型中建立了一些关联,包括Place模型。但正如我意识到的那样,由于不同的数据库,关联的Join查询失败。Rails模型关联但不同的数据库

我的想法是只移动Postgres DB中的所有表格。因此,我对MySQL没有特别的需求。

但是从MySQL迁移到Postgres是我的最后一个选择。我想知道是否有任何方法可以使坐在不同数据库中的模型之间进行无缝协作?

感谢

+0

让你的应用程序清理它不是一个好的做法,联系到不同的数据库 –

回答

2

作为直接回答你的问题,你可以使用PostgreSQL的国外资料包装(FDW)功能从其他数据库,包括MySQL参考表。

http://www.postgresql.org/docs/current/interactive/ddl-foreign-data.html

http://wiki.postgresql.org/wiki/Foreign_data_wrappers

http://www.postgresql.org/docs/current/interactive/sql-createserver.html

http://www.postgresql.org/docs/current/interactive/sql-createforeigntable.html

这就是说,规划的优化,其加入的外国表的查询能力受到严重限制。尽管针对一个外部表的简单查询应该表现得相当好,但如果您试图通过复杂的声明式查询来行使SQL的真正威力,那么它可能比在PostgreSQL上慢得多。

我的建议是如果切实可行的话,将它全部转移到PostgreSQL。如果这会导致时间表过于糟糕,那么可以考虑使用FDW作为快速启动和运行的临时“桥梁”,并根据您的机会或需要移动表格,以优化性能。

+0

感谢您的意见。我实际上继续前进,并将所有内容移至postgres数据库。尽管Postgres-Rails适配器没有标识'tsvector'等一些小问题,但与FDW相比,所有内容都很简单。 – hashpipe