Другим вариантом является то , что я только недавно наткнулся ( как должное, я еще использовать его, но план в ближайшее время ): rdbms-subsetter
.
Это немного проще и легче, чем Jailer, с несколькими приятными особенностями / преимуществами:
- CLI так легко подключить к существующим инструментам
- Открытый исходный код
- Будет следовать внешним ключам для получения согласованного набора данных
- Если у вас нет четко определенных внешних ключей, отношения могут быть предоставлены через файл конфигурации JSON. В моем случае я планирую создать этот конфиг из метаданных схемы, хранящихся в другом месте (спасибо, Rails: \)
- Вы можете настроить таргетинг на конкретную строку и получить все связанные записи (например, у конкретного клиента есть проблемы, поэтому вы можете сделать все, чтобы данные его учетной записи были доступны локально)
- Может потребоваться постоянное количество записей в таблице или логарифм, чтобы получить больше данных из больших таблиц без лишних затрат.
Стоит упомянуть еще один вариант для баз данных Heroku, который я часто использовал (как я там работал).
На самом деле Heroku довольно быстро выводит на экран новую БД с моментальными снимками, поскольку сначала она готовит журналы упреждающей записи, затем подключается к основной БД, чтобы наверстать упущенное, а затем перестает следовать за ней. Вы можете создавать эти «вилки» в разных приложениях, чтобы не слишком сильно влиять на работу:
$ heroku addons:create heroku-postgres[:specific-plan] \
--fork your-production-app::DATABASE \
--app some-other-app-to-own-forked-database \
[--as PRODUCTION_SNAPSHOT]
Затем вы можете загрузить приложение, локально указывающее на этот снимок. Я часто использую это, чтобы выполнить пробную миграцию данных или схем или отладить проблемы клиентов.
В приведенной выше команде, если у вас есть БД, доступная с помощью DATABASE_URL
on your-production-app
, вы получите БД, доступную с PRODUCTION_SNAPSHOT_URL
(если вы указали --as
) в другом приложении с именем some-other-app-to-own-forked-database
.