En production, notre base de données fait quelques centaines de gigaoctets. Pour le développement et les tests, nous devons créer des instantanés de cette base de données qui sont fonctionnellement équivalents, mais qui ne font que 10 ou 20 Go.
Le défi est que les données de nos entités commerciales sont dispersées dans de nombreux tableaux. Nous voulons créer une sorte d'instantané filtré afin que seuls certains des entités soient incluses dans le vidage. De cette façon, nous pouvons obtenir de nouveaux instantanés tous les mois environ pour le développement et les tests.
Par exemple, disons que nous avons des entités qui ont ces relations plusieurs-à-plusieurs:
- L'entreprise compte N divisions
- La division compte N employés
- L'employé a N enregistrements de présence
Il y a peut-être 1 000 entreprises, 2 500 divisions, 175 000 employés et des dizaines de millions de fiches de présence. Nous voulons un moyen reproductible d'extraire, par exemple, les 100 premières entreprises et toutes ses divisions, employés et registres de présence. .
Nous utilisons actuellement pg_dump pour le schéma, puis exécutons pg_dump avec --disable-triggers et --data-only pour extraire toutes les données des petites tables. Nous ne voulons pas avoir à écrire des scripts personnalisés pour extraire une partie des données car nous avons un cycle de développement rapide et craignons que les scripts personnalisés soient fragiles et susceptibles d'être obsolètes.
Comment peut-on le faire? Existe-t-il des outils tiers qui peuvent aider à extraire des partitions logiques de la base de données? Comment s'appellent ces outils?
Tout conseil général également apprécié!