Wir hatten den Vorteil, dass Postgres einen netten
Materialized View eingebaut hat, der gleich beim ersten Versuch problemlos funktionierte, in unserer "gewachsenen" Anwendung.
Hatte damals paar Monate gebraucht, bis unser DataSet-Cache und die Übertragung via DataSnap im Appserver funktionierten, inkl. ein paar nutzerabhängiger Columns und 'nem "Bug" beim Übertragen von TEXT-Feldern.
> mehrere langdauernde SELECTs im Apps, bei Abfrage umkopieren in MemoryDataSet (umkopieren geht schnell und können auch gleich der Feldtyp von TEXT auf VARCHAR und sessionabhänig berechnete Felder angehängt werden) und anschließend die "langsamere" Übertragung via DataSnap. Es kann/darf ja eh nur ein Client gleichzeitig auf das gecachte
Query zugreifen.
Das Selbe bei Streams für unser DMS, denn viele Komponenten (LoadFromStream) mögen es nicht, dass der DataSnap-Stream auf der Zielseite -1 als Stream.Size liefert, wenn mal über 30KB im Stream stecken.
Jetzt sind die Queries als vorberechneter View im Postgres und nicht mehr in dem alten speicherschwachen 32 Bit-DataSnap-Apps (XE).