Na produkcji nasza baza danych ma kilkaset gigabajtów. Na potrzeby programowania i testowania musimy tworzyć migawki tej bazy danych, które są funkcjonalnie równoważne, ale mają tylko 10 lub 20 gigabajtów.
Wyzwanie polega na tym, że dane naszych podmiotów gospodarczych są rozproszone w wielu tabelach. Chcemy stworzyć jakąś przefiltrowaną migawkę, tak aby tylko niektóre encje były uwzględnione w zrzucie. W ten sposób możemy co miesiąc otrzymywać nowe migawki do tworzenia i testowania.
Na przykład załóżmy, że mamy byty, które mają te relacje wiele do wielu:
- Firma ma N dywizji
- Oddział ma N pracowników
- Pracownik ma N rekordów obecności
Istnieje może 1000 firm, 2500 oddziałów, 175000 pracowników i dziesiątki milionów rekordów obecności. Chcemy powtarzalnego sposobu pobierania, powiedzmy, pierwszych 100 firm i wszystkich ich oddziałów, pracowników i rejestrów obecności .
Obecnie używamy pg_dump jako schematu, a następnie uruchamiamy pg_dump z opcjami --disable-triggers i --data-only, aby uzyskać wszystkie dane z mniejszych tabel. Nie chcemy pisać niestandardowych skryptów, aby wyciągnąć część danych, ponieważ mamy szybki cykl rozwoju i obawiamy się, że niestandardowe skrypty byłyby kruche i prawdopodobnie byłyby nieaktualne.
Jak możemy to zrobić? Czy istnieją narzędzia innych firm, które mogą pomóc w wyciągnięciu partycji logicznych z bazy danych? Jak nazywają się te narzędzia?
Wszelkie ogólne rady również mile widziane!