Eine andere Option ist etwas, auf das ich erst kürzlich gestoßen bin (zugegeben, ich muss sie noch verwenden, aber ich plane es bald) : rdbms-subsetter
.
Es ist ein bisschen einfacher und leichter als Jailer, mit ein paar netten Funktionen / Vorteilen:
- CLI so einfach an vorhandene Werkzeuge anzuschließen
- Open Source
- Folgt Fremdschlüsseln, um eine zusammenhängende Teilmenge von Daten
abzurufen
- Wenn Sie nicht gut definierte Fremdschlüssel haben, die Beziehungen können über eine JSON - Konfigurationsdatei zur Verfügung gestellt werden. In meinem Fall plane ich, diese Konfiguration aus Schema-Metadaten zu generieren, die an anderer Stelle gespeichert sind (danke, Rails: \).
- Sie können auf eine bestimmte Zeile abzielen und alle zugehörigen Datensätze abrufen (z. B. hat ein bestimmter Kunde Probleme, sodass Sie alles abrufen können, um die Kontodaten lokal verfügbar zu machen).
- Es kann entweder eine konstante Anzahl von Datensätzen pro Tabelle oder ein Logarithmus erforderlich sein, um mehr Daten aus größeren Tabellen zu erhalten, ohne über Bord zu gehen.
Erwähnenswert ist eine weitere Option für Heroku-Datenbanken, die ich häufig verwendet habe (da ich dort früher gearbeitet habe).
Heroku ist tatsächlich ziemlich schnell darin, eine neue Snapshot-Datenbank aufzurufen, da es zuerst die Write-Ahead-Protokolle zur Vorbereitung abruft, dann eine Verbindung zur primären Datenbank herstellt, um sie einzuholen, und dann aufhört, ihr zu folgen. Sie können diese "Gabeln" über Apps hinweg erstellen, um die Produktion nicht zu stark zu beeinträchtigen:
$ heroku addons:create heroku-postgres[:specific-plan] \
--fork your-production-app::DATABASE \
--app some-other-app-to-own-forked-database \
[--as PRODUCTION_SNAPSHOT]
Anschließend können Sie Ihre App lokal starten, die auf diesen Snapshot verweist. Ich verwende dies häufig, um einen Trockenlauf von Daten- oder Schemamigrationen durchzuführen oder Kundenprobleme zu beheben.
Wenn Sie in diesem Befehl oben eine Datenbank haben, auf die mit DATABASE_URL
on your-production-app
zugegriffen werden kann, erhalten Sie eine DB, auf die mit PRODUCTION_SNAPSHOT_URL
(sofern angegeben --as
) in einer anderen App mit dem Namen zugegriffen werden kann some-other-app-to-own-forked-database
.