Mam kilka trudnych do obliczenia zmaterializowanych widoków, które chcę mieć możliwość tworzenia kopii zapasowych i przywracania przy użyciu rzeczywistych przechowywanych danych, a nie poprzez ponowne obliczanie.
Czy jest to możliwe w PostgreSQL 9.4?
(alternatywą jest tworzenie rzeczywistych tabel, ale trudniej je „odświeżyć”)
postgresql
materialized-view
pg-dump
Ophir Yoktan
źródło
źródło
copy
do utworzenia zwykłego zrzutu danych (lub dowolnego innego narzędzia do eksportu). Nie jestem jednak pewien, jak go przywrócić.Odpowiedzi:
Nie całkiem. Musisz pamiętać, że polecenie pg_dump tworzy proste instrukcje CREATE TABLE i INSERT itp. Tak więc podczas uruchamiania pg_restore po prostu uruchamiasz instrukcje CREATE i INSERT na serwerze, a wstawianie danych wymagałoby użycia polecenia „INSERT INTO MATERIALIZED VIEW”. Nie miałoby to sensu, ponieważ pobranie danych za pomocą skrótu zagroziłoby również „integralności” widoku - można wstawić nieprawidłowe dane w procesie ręcznego przywracania, których widok w przeciwnym razie nie zwróciłby. Wątpię więc, aby PostgreSQL kiedykolwiek obsługiwał ręczne przywracanie danych zmaterializowanych widoków bezpośrednio do bazy danych.
Jeśli potrzebujesz wykonać kopię zapasową rzeczywistych danych, zaleciłbym użycie tabeli zamiast zmaterializowanego widoku i uruchomienie zaplanowanej instrukcji DELETE FROM / INSERT INTO do tabeli.
źródło