In der Produktion ist unsere Datenbank einige hundert Gigabyte groß. Für die Entwicklung und das Testen müssen wir Snapshots dieser Datenbank erstellen, die funktional gleichwertig sind, aber nur 10 oder 20 Gigs groß sind.
Die Herausforderung besteht darin, dass die Daten für unsere Geschäftseinheiten auf viele Tabellen verteilt sind. Wir möchten eine Art gefilterten Snapshot erstellen, damit nur einige der Entitäten im Dump enthalten sind. Auf diese Weise können wir jeden Monat neue Schnappschüsse für Entwickler und Tests erhalten.
Angenommen, wir haben Entitäten mit diesen vielen-zu-vielen-Beziehungen:
- Das Unternehmen hat N Abteilungen
- Abteilung hat N Mitarbeiter
- Mitarbeiter hat N Anwesenheitslisten
Es gibt vielleicht 1000 Unternehmen, 2500 Abteilungen, 175000 Mitarbeiter und zig Millionen Anwesenheitslisten. Wir möchten eine reproduzierbare Methode, um beispielsweise die ersten 100 Unternehmen und alle ihre Unternehmensbereiche, Mitarbeiter und Anwesenheitslisten abzurufen .
Derzeit verwenden wir pg_dump für das Schema und führen dann pg_dump mit --disable-triggers und --data-only aus, um alle Daten aus den kleineren Tabellen abzurufen. Wir möchten keine benutzerdefinierten Skripte schreiben müssen, um einen Teil der Daten abzurufen, da wir einen schnellen Entwicklungszyklus haben und befürchten, dass die benutzerdefinierten Skripte fragil und wahrscheinlich veraltet sind.
Wie können wir das machen? Gibt es Tools von Drittanbietern, mit denen logische Partitionen aus der Datenbank abgerufen werden können? Wie heißen diese Tools?
Jeder allgemeine Rat auch geschätzt!