1

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

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

但是从 MySQL 迁移到 Postgres 是我最后的选择。我想知道是否有任何方法可以使位于不同数据库中的模型之间的关联无缝工作?

谢谢

4

1 回答 1

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 作为临时“桥梁”来快速启动和运行,并在有机会或需要时移动表以优化性能。

于 2012-05-07T14:05:31.810 回答