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.
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