2

postgres をデータベースとして使用する Java ベースのシステムがあります。いくつかの理由で、特定の変更をタイムリーに (たとえば 1 時間) 別の場所に反映させたいと考えています。2 つの大まかなアプローチは次のとおりです。

  • それが発生したときに、ファイルへのすべての変更をログに記録します。ただし、このアプローチでは、コードがいたるところに散らばってしまいます。
  • どういうわけか、いくつかのログ ファイルで 2 つのタイム スタンプ間の postgres の増分変更を見つけて、それを送信します。ただし、このアプローチがどれほど実現可能かはわかりません。

誰でもこれについて何か考え/アイデアがありますか?

4

4 に答える 4

1

多くのパッケージ化されたアプローチがあるため、おそらく独自に開発する必要はありません。オプションの多くは、この Wiki ページで要約および比較されています。

http://wiki.postgresql.org/wiki/Replication,_Clustering,_and_Connection_Pooling

それらの多くは、トリガーを使用してデータをキャプチャすることに基づいており、より使いやすいインターフェイスに基づいてトリガーが自動生成されます。

于 2012-08-24T12:46:57.983 に答える
1

データベースのサイズがそれほど大きくない場合は、次のようにしてすばやく実行できます。

  • postgresql 全体をテキストファイルにダンプします。

  • (ダンプファイルがソートされていない場合 *1) テキストファイルをソートします。

  • 以前のダンプ ファイルとの差分ファイルを作成します。

もちろん、データベースが比較的小さく保たれ、それをいくつかのサーバーに使用するだけの場合にのみ、これをアドバイスします.

*1: どういうわけかソートされているかどうかはわかりません。ドキュメントを確認してください。

于 2012-08-24T12:04:56.620 に答える
1

いくつかの異なるオプションが利用可能です:

  • 書き込まれるデータの量によっては、Bucardoを試すことができます。

  • それ以外の場合は、Londisteと組み合わせてPgQで何かを行うことも可能です

  • または、トリガーを使用して自分で何かを作成し、ある種の監査テーブルを生成できるようにします

于 2012-08-24T11:41:24.730 に答える
0

独自のソリューションを作成する代わりに、他の人が既に行った作業を活用することをお勧めします。そして、あなたが説明した場合、セットアップと使用が簡単な PgQ + Londiste (両方とも Skytools パッケージの一部) を使用します。ストリーミング レプリケーションが必要ない場合でも、PgQ / Londiste を使用して DML を簡単にキャプチャし、必要なときにロードできるファイルに書き込むことができます。これにより、新しい要件が発生したときにセットアップ/処理を拡張できます。

于 2013-11-05T15:49:07.543 に答える