web-dev-qa-db-ja.com

PostgreSQLデータの差分

注:この質問は、データベースの同期に関するものではありません スキーマ /structure

問題

私のWebアプリケーションには、PostgreSQLデータベースサーバー(PGS)と(別個のマシン)ビジネスロジックサーバー(BLS)があり、定期的に(1分または2分ごとに)クエリを実行し、 PGSに対してSELECT ALL '。

問題は、「SELECT ALL」クエリが毎回50〜200 MBを簡単に返すことができることです。それほど多くのデータをWeb経由で頻繁に転送するのは、アーキテクチャ的にはあまり良くないことは明らかです。

可能な解決策

私がやりたいのは、diffPGSツールを実行し、新しいクエリを前のクエリと比較することです(これはすべてPGSで実行する必要があります)。比較が完了したら、PGSからダンプを取得し、BLSに転送します。 diffベースのdumpは、「SELECT ALL」クエリ全体よりもはるかに小さくなります。

質問

2つのテーブルまたは2つのダンプ間でPostgreSQLデータを比較するdiffを実行できるPostgreSQL用のデータ差分ツールはありますか?

注:いくつかのオープンソースソフトウェアツールを使用したいと思います。

3
skanatek

Postgresは、追加のツールを使用せずに、これらすべてを実行できます。サーバーは、データベースで行われたすべての変更を含むWAL(先行書き込みログ)ファイルを生成します。本当に必要なのはストリーミングレプリケーションだと思います。について読む:

データベーススキーマ/構造の同期について実際に話したくない場合は、 この回答で説明されている解決策

2
klin