Incremental Materialized Views
The cluster discusses incremental view maintenance and continuous materialized views in PostgreSQL, including alternatives like PipelineDB, Materialize, RisingWave, and ReadySet for real-time updates on writes rather than full recomputation. Users express desire for native Postgres support and share workarounds using triggers or streaming databases.
Activity Over Time
Top Contributors
Keywords
Sample Comments
This seems very good. Always wondering what are the usecases for this apart for observability/real-time analytics? Do people use this for incremental view maintenance in Postgres?
Isn't this wat streaming databases like Materialize and RisingWave do?
Founder @ PipelineDB here (hi Slava!)Currently continuous views must read from a stream. However, in the very near future it will possible to write to streams from triggers, which would probably give you enough flexibility to model the behavior you want if you could conceptualize a table as a stream of changes.
Not to my knowledge. I believe TimescaleDB has their own incremental view maintenance engine.
PipelineDB (based on Postgres) seems to get the best of both worlds by allowing you to specify a query, like materialized views, but refreshing those results based on inserts/updates, like triggers: https://www.pipelinedb.com/Not affiliated, not even a user, just found it interesting when it was posted here.
This is a really interesting area, would love it if Postgres provided a strong option here. In the meantime, Materialize has very good Postgres integration if it might work for you:https://materialize.com/
Is this similar to pipelinedb’s continuous aggregates?
Precisely, whats stopping them from using simple Incremental Materialised view?
I think this is what you're looking for:https://wiki.postgresql.org/wiki/Incremental_View_Maintenanc...https://yugonagata-pgsql.blogspot.com/2022/05/pgivm-v10-rele...
Materialized views that are updated efficiently when new rows are added or rows updated would be a really great feature to have in core Postgres. This certainly would be useful outside of timeseries data.