1

mysqlとpostgresデータベースを使用するアプリを構築しています。このアプリはロケーションベースであるため、postgisのためにpostgresを使用しています。Postgresにはデータベースが1つしかないPlacesのに対し、mysqlには他のすべてが含まれています。開発中に、モデルを含むさまざまなモデル間にいくつかの関連付けを設定しましたPlace。しかし、私が気付いたように、データベースが異なるため、関連付けの結合クエリは失敗しました。

私の考えは、PostgresDB内のすべてのテーブルのみを移動することです。そのため、MySQLは特に必要ありません。

しかし、MySQLからPostgresへの移行は私の最後の選択肢です。異なるデータベースにあるモデル間の関連付けをシームレスに機能させる方法はないかと思いました。

ありがとう

4

1 に答える 1

2

あなたの質問に対する直接の答えとして、PostgreSQL Foreign Data Wrapper(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

とはいえ、外部テーブルを結合するクエリを最適化するプランナーの機能は大幅に制限されています。1つの外部テーブルに対する単純なクエリはかなりうまく機能するはずですが、複雑な宣言型クエリを使用してSQLの真の力を発揮しようとすると、すべてPostgreSQL上にある場合よりも桁違いに遅くなる可能性があります。

私のアドバイスは、実行可能であれば、それをPostgreSQLに移動することです。それがタイムラインをひどく遅らせる場合は、FDWを一時的な「ブリッジ」として使用して、パフォーマンスを最適化するために、迅速に立ち上げて実行し、機会や必要に応じてテーブルを移動することを検討してください。

于 2012-05-07T14:05:31.810 に答える