Materialized View als Fremdtabelle?
Materialized Views sind eine Maßnahme zur Performanceverbesserung von Abfrage in PostgreSQL. Die Abfrage wird in eine Sonderform eines Views gekapselt, dem Materialized View, der intern eine Tabelle anlegt, welche die Daten hält. Damit kann schneller abgefragt werden. Allerdings müssen die Daten auch aktuell gehalten werden. Sie können per
REFRESH MATERIALIZED VIEW mein_view;aktualisiert werden. Natürlich kann der Wunsch entstehen, so einen Materializd View als Fremdtabelle in eine andere Datenbank einzubinden. Während man dies formulieren kann, funktioniert es allerdings nicht. Eigentlich sollte PostgreSQL dann eine Fehlermeldung ausgeben. Das macht es aber, zumindest in meiner Version 16.6 nicht, sondern akzeptiert die Definition. Bei der Abfrage wird dann gemeldet, dass es ein Berechtigungsproblem gibt. Ja, das ist wohl war, aber es ist anscheinend keines das gelöst werden könnte.
Es gibt aber einen sehr einfachen und sinnvollen Ausweg: Man bindet die zugrundeliegende Tabelle als Fremdtabelle ein und erstellt den Materialized View in der lokalen Datenbank. Das ist ohne Probleme möglich.