Іншим варіантом є те , що я тільки недавно натрапив ( як належне, я ще використовувати його, але план найближчим часом ): 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
на your-production-app
, ви в кінцевому підсумку з БД доступною з PRODUCTION_SNAPSHOT_URL
(якщо зазначено --as
) на інший додаток по імені some-other-app-to-own-forked-database
.