0

PostgreSQLからInformix(両方の最新バージョン)への接続をセットアップするのを手伝ってください。PostgreSQLからInformixでクエリを実行できるようにしたいと思います。すべてのクエリに対して(Informixからの)データのエクスポートと(PostgreSQLへの)インポートを必要としないソリューションを探しています。

私はPostgreSQLを初めて使用するので、詳細な手順が必要です。

4

2 に答える 2

2

Chris Travers が言ったように、やりたいことは簡単ではありません。

理論的には、Informix を使用していて PostgreSQL にアクセスする必要がある場合は、Enterprise Gateway Manager (EGM) を (購入して) 使用し、PostgreSQL 用の ODBC ドライバーを使用して、Informix が PostgreSQL に接続できるようにすることができます。EGM は、実際に PostgreSQL にアクセスしている間、別の Informix データベースに見えるように最大限の努力をします。(PostgreSQL がサポートされていることは確認していませんが、EGM が動作するには基本的に ODBC ドライバーが必要なので、問題はないはずです。おそらく「有名な最後の言葉」です。) これには、2PC のエミュレーション (2 フェーズ専念); 完全ではありませんが、適度に近いです。

逆の接続 (PostgreSQL との連携と Informix への接続) については、PostgreSQL ツール スイートまたはその他のソースを参照する必要があります。

于 2012-09-02T14:31:36.943 に答える
2

使用しているバージョンについては言及していません。注意すべきいくつかの制限がありますが、幅広い選択肢があります。

これはインポート/エクスポートだとおっしゃっているので、読み取り専用オプションでは不十分だと思います。これは、PostgreSQL 9.1 の外部データ ラッパー システムを除外します。

バージョンによっては、David Fetter の DBI-Link がニーズに合う場合があります。これは、リモート テーブルでクエリを実行できるためです ( https://github.com/davidfetter/DBI-Linkを参照)。しばらく更新されていませんが、実装は非常に安定しており、バージョン間で使用できるはずです。それが失敗した場合は、信頼できない言語 (PL/PythonU、PL/PerlU など) でストアド プロシージャを記述して、Informix に接続し、そこでクエリを実行できます。この場合に実行されるトランザクション処理には制限があるため、遅延制約トリガーを使用して他のテーブルでクエリを実行し、すべてがコミット時に実行されるようにすることをお勧めします。

編集:よりクリーンな方法が思い浮かびました:インポートには外部データラッパーを使用し、エクスポートには別のクライアントアプリを使用します。

このアプローチでは、4 つの基本的なコンポーネントが必要になりますが、これらは疎結合であり、適切なトランザクション制御の対象となります。必要に応じて、2 フェーズ コミットを使用することもできます。4 つのコンポーネントは次のとおりです (ここでは完全に機能する例を提供していませんが、少なくとも 1 つのロードマップを提供しています)。

  1. データ インポート用の外部データ ラッパー。Informix からのデータを表示できます。
  2. エクスポートするデータのビュー。
  3. 選択した言語で記述された、エクスポートの側面を管理する外部アプリケーション。これは次のようなチャンネルでリッスンしますLISTEN export_informix;
  4. エクスポートされるデータのビューを作成する基礎となるテーブルのトリガー。NOTIFY export_informix

通知はコミット時にリアスされるため、基本的に次のようにトランザクションに 2 つの段階があります。

  1. PostgreSQL にデータを書き込み、エクスポートするデータにフラグを付けます。専念。
  2. PostgreSQL からデータを読み取り、Informix にエクスポートします。両側でコミットする (TPC?)。
于 2012-09-02T09:04:08.990 に答える