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