У виробництві наша база даних розміром становить кілька сотень гігабайт. Для розробки та тестування нам потрібно створити знімки цієї бази даних, які є функціонально еквівалентними, але мають розмір лише 10 або 20 гігів.
Завдання полягає в тому, що дані для наших суб’єктів господарювання розкидані по багатьох таблицях. Ми хочемо створити якийсь відфільтрований знімок, щоб лише деякі об’єкти були включені у дамп. Таким чином ми можемо отримувати свіжі знімки щомісяця або близько того для розробників та тестування.
Наприклад, скажімо, у нас є суб'єкти, які мають ці багатозахисні відносини:
- Компанія має N підрозділів
- Відділ має N працівників
- Співробітник має N записів відвідувачів
Існує може бути 1000 компаній, 2500 підрозділів, 175000 співробітників і десятки мільйонів записів про відвідування. Ми хочемо, щоб повторний спосіб витягнути, скажімо, перші 100 компаній та всі його підрозділи, службовців та записи відвідувань .
В даний час ми використовуємо pg_dump для схеми, а потім запускаємо pg_dump за допомогою --disable-triggers та --data-only, щоб отримати всі дані з менших таблиць. Нам не хочеться писати спеціальні сценарії, щоб витягнути частину даних, оскільки у нас швидкий цикл розробки, і ми маємо занепокоєння, що спеціальні сценарії були б крихкими і, ймовірно, застарілими.
Як ми можемо це зробити? Чи є сторонні інструменти, які можуть допомогти витягнути з бази даних логічні розділи? Як називаються ці інструменти?
Будь-яка загальна порада також високо оцінена!