Чи можливо створити резервну копію та відновити матеріалізований вигляд за допомогою своїх даних?


10

У мене є важкі для обчислення матеріалізовані представлення, які я хочу мати можливість резервного копіювання та відновлення за допомогою фактично збережених даних, а не шляхом перерахунку.

Чи можливо це в PostgreSQL 9.4?

(альтернатива - створення фактичних таблиць, але їх важче "оновити")


3
Ви можете використовувати copyдля створення простого текстового дампа даних (або будь-якої іншої утиліти експорту). Не знаю, як відновити його.
a_horse_with_no_name

Ви можете "передавати" CSV з COPY на / з віддаленого сервера, використовуючи psql -c "\ COPY ...." -h базу даних some_IP, хоча очевидно, ви повинні створити структуру таблиці на місці, в яке ви відновите.
Джон Пауелл

Відповіді:


8

Не зовсім. Ви повинні пам’ятати, що команда pg_dump створює прості CREATE TABLE та INSERT заяви тощо. Тому ефективно під час запуску pg_restore ви просто запускаєте CREATE та INSERT оператори на сервері, а для вставки даних знадобиться команда "ВСТАВИТЬ У МАТЕРІАЛІЗОВАНИЙ ВИДИ". Це не має сенсу, оскільки отримання даних за допомогою ярлика також загрожує "цілісності" представлення даних - ви можете вставити недійсні дані в процесі відновлення вручну, щоб перегляд не повертався інакше. Тому я сумніваюся, що PostgreSQL коли-небудь підтримуватиме ручне відновлення даних, що матеріалізуються, прямо в базу даних.

Якщо вам потрібно створити резервну копію фактичних даних, я б рекомендував використовувати таблицю замість матеріалізованого перегляду та запускати до таблиці заплановані операції DELETE FROM / INSERT INTO.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.