На производстве наша база данных составляет несколько сотен гигабайт. Для разработки и тестирования нам необходимо создать снимки этой базы данных, которые функционально эквивалентны, но имеют размер всего 10 или 20 гигабайт.
Проблема в том, что данные для наших бизнес-структур разбросаны по многим таблицам. Мы хотим создать своего рода отфильтрованный снимок, чтобы в дамп были включены только некоторые сущностей. Таким образом, мы можем получать свежие снимки каждый месяц или около того для разработки и тестирования.
Например, скажем, у нас есть сущности, которые имеют эти отношения «многие ко многим»:
- Компания имеет N подразделений
- Отдел имеет N сотрудников
- Сотрудник имеет N записей посещаемости
Может быть, есть 1000 компаний, 2500 отделений, 175000 сотрудников и десятки миллионов записей посещаемости. Мы хотим получить воспроизводимый способ, скажем, первых 100 компаний и всех входящих в него отделов, сотрудников и записей посещаемости .
В настоящее время мы используем pg_dump для схемы, а затем запускаем pg_dump с --disable-triggers и --data-only, чтобы получить все данные из небольших таблиц. Мы не хотим писать собственные сценарии для извлечения части данных, потому что у нас быстрый цикл разработки и мы обеспокоены тем, что пользовательские сценарии могут быть хрупкими и, вероятно, устаревшими.
Как мы можем это сделать? Существуют ли сторонние инструменты, которые могут помочь извлечь логические разделы из базы данных? Как называются эти инструменты?
Любой общий совет также приветствуется!