Rigor
Delta rules come from each operator's algebra (Z-sets, as in DBSP), not pattern matching: a view is maintained exactly, or classified up front for full refresh.
Z-sets · delta rulesIncremental view maintenance, democratized
OpenIVM compiles SQL materialized views into incremental SQL. Inserts, updates and deletes propagate as deltas, so a refresh costs what changed, not what exists.
Built at CWI Amsterdam · SIGMOD 2024 paper
LLMs and tools like dbt generate more queries than ever, and most of them recompute from scratch on every run, while Spark, the ETL engine behind most lakehouses, has no open incremental alternative.
OpenIVM is an open-source IVM compiler that makes those queries refresh only what changed, inside the engines you already run.
Delta rules come from each operator's algebra (Z-sets, as in DBSP), not pattern matching: a view is maintained exactly, or classified up front for full refresh.
Z-sets · delta rulesView and auxiliary state live in ordinary tables, so it works on batch tables, not only streams, and survives restarts.
aux state · delta tablesEvery change is a signed tuple (+1 or −1), so inserts, updates and deletes share one algebra instead of special cases.
+1 / −1 multiplicitiesThe Z-set model, the architecture, and the exact SQL OpenIVM generates for a refresh.
Read the internals →Build the DuckDB extension, create a materialized view, and watch a refresh touch only the change.
Get started →How OpenIVM differs from pg_ivm, streaming databases, and warehouse materialized views.
See the comparison →The reference implementation. Materialized views, automatic refresh, cascading pipelines, adaptive cost model and DuckLake integration. Community extension planned for end of 2026.
github.com/ila/openivm →Incremental refresh for Spark ETL and dbt models, including Spark-dialect view bodies such as VERSION AS OF.
OpenIVM emits SQL, not engine internals. If your engine speaks SQL and can store a table, it can host an incremental view.
Propose an integration →A live benchmark fed by ivm-bench: incremental refresh versus full recompute across engines, workloads and delta sizes. Results are published as a static Parquet file and rendered right in your browser.
SIGMOD Companion 2024 · doi:10.1145/3626246.3654743