Diff between Materialize and Convex
https://stack.convex.dev/infra-roundtable I was watching this video, quite amazing. Just curious, how do you guys compare convex to products that are branded as streaming databases such as materialize, or risingwave. I am more curious from the technical perspective because I know the use cases differ a lot.
Convex and the future of streaming infrastructure
Hosted by Ian & Alex, with Alana (Readyset), Hojjat (Deltastream), Jamie (Convex).
5 Replies
There are other folks around here that understand Materialize better, but on quick look: Materialize is incrementally updating views vs. Convex recalculates queries when the underlying data changes.
Incremental means the CDC stuff?
Yeah that plus their differential SQL; Convex's approach of deterministic JavaScript + query language emphasizes tracking read sets of arbitrary queries vs analyzing SQL queries and implementing differential SQL
materialize is primarily for analytics use cases: data streams in from another source (e.g. postgres or kafka), and they then let you efficiently run large OLAP style queries over that data.
on the technical side, one implication here is that since materialize supports more expensive queries (e.g. big nested subqueries and aggregates), it's more important for them to reuse intermediate results. convex, on the other hand, currently always reruns queries from scratch. they achieve this with their differential dataflow framework (https://github.com/TimelyDataflow/differential-dataflow).
if you'd like to dig in more, here's a cool blog post that breaks down different types of streaming systems: https://www.scattered-thoughts.net/writing/an-opinionated-map-of-incremental-and-streaming-systems/
so to compare, convex's queries are more of an "OLTP" streaming system that's designed for building user-facing apps, not for doing analytical workloads.