web-dev-qa-db-fra.com

PostgreSQL data diff

Remarque: cette question ne concerne pas la synchronisation de la base de données schéma /structure

Problème

Dans mon application Web, j'ai un serveur de base de données PostgreSQL (PGS) et un serveur de logique métier (machine distincte) (BLS) qui interrogent régulièrement (toutes les minutes ou tous les deux) la commande 'SELECT ALL' contre PGS.

Le problème est que la requête 'SELECT ALL' peut facilement renvoyer 50 à 200 Mo à chaque fois. Il est évident que, du point de vue de l’architecture, il ne serait pas bon de transférer autant de données aussi fréquemment sur le Web.

Solution possible

Ce que je voudrais faire est de lancer un outil diff sur PGS et de comparer la nouvelle requête à la requête précédente (tout cela devrait être fait sur PGS). Une fois la comparaison terminée, je voudrais obtenir un dump de PGS et le transférer vers BLS. Je m'attends à ce qu'un dump à base de diff soit beaucoup, beaucoup plus petit que l'ensemble de la requête 'SELECT ALL'.

Question

Existe-t-il un outil de comparaison de données pour PostgreSQL pouvant faire des différences comparant les données PostgreSQL entre 2 tables ou 2 sauvegardes?

Note: Je préférerais un outil logiciel open-source.

3
skanatek

Postgres peut faire tout cela pour vous sans aucun outil supplémentaire. Le serveur génère des fichiers WAL (Write-Ahead Log) contenant toutes les modifications apportées aux bases de données. Je pense que ce dont vous avez vraiment besoin est la réplication en streaming. Lire à propos de:

Si vous ne voulez vraiment pas parler de la synchronisation du schéma/de la structure de la base de données, la solution décrite dans cette réponse peut vous intéresser

2
klin