Otra opción es algo que he encontrado recientemente (de acuerdo, sin embargo, yo estoy a usarlo, pero el plan de pronto): rdbms-subsetter
.
Es un poco más simple y ligero que Jailer, con algunas características / ventajas agradables:
- CLI tan fácil de conectar a herramientas existentes
- Fuente abierta
- Seguirá claves foráneas para obtener un subconjunto de datos
coherente
- Si no tiene claves externas bien definidas, las relaciones se pueden proporcionar a través de un archivo de configuración JSON. En mi caso, planeo generar esta configuración a partir de metadatos de esquema almacenados en otro lugar (gracias, Rails: \)
- Puede apuntar a una fila específica y obtener todos los registros relacionados (por ejemplo, un cliente específico tiene problemas, por lo que puede desplegar todo para que los datos de trabajo de su cuenta sean accesibles localmente)
- Puede tomar un número constante de registros por tabla o tomar un logaritmo para obtener más datos de tablas más grandes sin exagerar.
Vale la pena mencionar otra opción para las bases de datos de Heroku específicamente, que he usado mucho (como solía trabajar allí).
Heroku en realidad es bastante rápido en traer una nueva base de datos instantánea, ya que primero extrae los registros de escritura anticipada para prepararse, luego se conecta a la base de datos primaria para ponerse al día y luego deja de seguirla. Puede crear estos "tenedores" en todas las aplicaciones para evitar afectar demasiado la producción:
$ heroku addons:create heroku-postgres[:specific-plan] \
--fork your-production-app::DATABASE \
--app some-other-app-to-own-forked-database \
[--as PRODUCTION_SNAPSHOT]
Luego, puede iniciar su aplicación localmente apuntando a esa instantánea. Utilizo esto con frecuencia para hacer una ejecución en seco de migraciones de datos o esquemas o depurar problemas de clientes.
En ese comando anterior, si tiene un DB accesible con DATABASE_URL
activado your-production-app
, terminará con un DB accesible con PRODUCTION_SNAPSHOT_URL
(si lo especificó --as
) en una aplicación diferente llamada some-other-app-to-own-forked-database
.