注:この質問は、データベースの同期に関するものではありません スキーマ /structure
問題
私のWebアプリケーションには、PostgreSQL
データベースサーバー(PGS
)と(別個のマシン)ビジネスロジックサーバー(BLS
)があり、定期的に(1分または2分ごとに)クエリを実行し、 PGS
に対してSELECT ALL '。
問題は、「SELECT ALL」クエリが毎回50〜200 MBを簡単に返すことができることです。それほど多くのデータをWeb経由で頻繁に転送するのは、アーキテクチャ的にはあまり良くないことは明らかです。
可能な解決策
私がやりたいのは、diff
でPGS
ツールを実行し、新しいクエリを前のクエリと比較することです(これはすべてPGS
で実行する必要があります)。比較が完了したら、PGS
からダンプを取得し、BLS
に転送します。 diffベースのdumpは、「SELECT ALL」クエリ全体よりもはるかに小さくなります。
質問
2つのテーブルまたは2つのダンプ間でPostgreSQLデータを比較するdiffを実行できるPostgreSQL用のデータ差分ツールはありますか?
注:いくつかのオープンソースソフトウェアツールを使用したいと思います。
Postgresは、追加のツールを使用せずに、これらすべてを実行できます。サーバーは、データベースで行われたすべての変更を含むWAL(先行書き込みログ)ファイルを生成します。本当に必要なのはストリーミングレプリケーションだと思います。について読む:
データベーススキーマ/構造の同期について実際に話したくない場合は、 この回答で説明されている解決策