У меня есть некоторые сложные вычисления материализованных представлений, которые я хочу иметь возможность создавать резервные копии и восстанавливать, используя фактические сохраненные данные, а не путем повторного вычисления.
Возможно ли это в PostgreSQL 9.4?
(альтернатива заключается в создании реальных таблиц, но их сложнее «обновить»)
postgresql
materialized-view
pg-dump
Офир Йоктан
источник
источник
copy
для создания простого текстового дампа данных (или любую другую утилиту экспорта). Не уверен, как восстановить его, хотя.Ответы:
На самом деле, нет. Вы должны помнить, что команда pg_dump создает простые операторы CREATE TABLE, INSERT и т. Д. Таким образом, эффективно при запуске pg_restore вы просто запускаете операторы CREATE и INSERT на сервере, и для вставки данных требуется команда «INSERT INTO MATERIALIZED VIEW». Это не имеет смысла, поскольку получение данных с помощью ярлыка также может поставить под угрозу «целостность» представления - вы можете вставить недопустимые данные в процесс ручного восстановления, который представление не вернет в противном случае. Поэтому я сомневаюсь, что PostgreSQL когда-либо будет поддерживать ручное восстановление данных материализованных представлений прямо в базу данных.
Если вам нужно сделать резервную копию фактических данных, я бы порекомендовал использовать таблицу вместо материализованного представления и запустить запланированные операторы DELETE FROM / INSERT INTO для таблицы.
источник