Ich stecke gerade in einem kleinen Projekt fest und frage mich, wie ihr das handhabt. Wir haben eine Anwendung, bei der Nutzer sehr oft das gleiche komplexe JSON-Objekt abfragen, das aus mehreren Tabellen zusammengesetzt wird. Jedes Mal die Joins neu zu berechnen, fühlt sich ineffizient an. Ich habe über Materialized Views nachgedacht, aber die Daten müssen nicht immer absolut aktuell sein, eine Verzögerung von ein paar Minuten wäre akzeptabel. Irgendwie fehlt mir die Erfahrung, wann dieser Ansatz wirklich sinnvoll ist und wo die Fallstricke liegen.
Materialized Views lohnen sich wenn dieselben Joins und Aggregationen immer wieder auftreten und die Aktualisierung der Daten eine akzeptable Verzögerung hat Durch gezielte Refresh Strategien lässt sich der Abfrageaufwand spürbar senken
Ich bleibe skeptisch Denn oft verschiebt sich das Problem von der reinen Abfrage zur Pflege der MV und zur Synchronisation wenn sich das Schema ändert
Beginne mit einer einfachen Denormalisierung in eine vorsortierte Struktur die die häufigsten Pfade der JSON Abfrage abdeckt So reduzierst du Laufzeitkosten ohne komplexe MV Logik
Vielleicht ist die Fragestellung zu eng Materialized Views klingen verführerisch doch vielleicht reicht auch caching auf API Ebene oder eine einfache Spaltenverdopplung Die API könnte on demand liefern und die MV umgehen
Ich stelle mir vor dass man den Datenfluss neu denkt statt sofort zu merken dass eine MV nötig ist Vielleicht ließe sich eine Streaming Pipeline bauen die die Zusammenführung schrittweise erledigt und die Abfrage nach dem ersten Blick akzeptabel macht
Kosten messen bevor man entscheidet Die MV kann helfen wenn die Ladezeiten deutlich sinken und der stale read tolerierbar ist