Strong Consistency Guarantees for Streaming Data
Materialize guarantees strict serializable consistency that is standard in databases, but unprecendented in distributed stream processors.
Consistency in Streaming →We put a streaming engine in a database, so your team can build with real-time data faster, under budget, in the same SQL workflows as a cloud data warehouse.
View Customer Stories.
Materialized Views are as old as databases. They're supposed to be SQL queries whose results are updated as source data changes. But they've always been broken.
It turns out when they work they're quite useful. So we fixed Materialized Views.
Data Engineers and Developers use Materialize as a better engine for cutting-edge data products.
Use the same ANSI SQL from data warehouses to build real-time views that serve internal and customer-facing dashboards, APIs and apps.
Build user-facing notifications, fraud and risk models, and automated services using event-driven SQL primitives in a streaming database.
Build engaging experiences with customer data aggregations that are always up-to-date: personalization, recommendations, dynamic pricing and more.
Power online feature stores with continually updated data, monitor and react to changes in ML effectiveness - all in standard SQL.
Manage and query Materialize using any Postgres driver or tool.
Multi-way, complex join support across real-time streams - all in standard SQL.
Data is stored cheaply, compute scales independently and without limits.
Instead of re-computing on every query, results are updated as data changes.
Use replication to increase availability, reduce downtime, scale seamlessly.
Results can be maintained in memory, making read latency similar to Redis.
Give your team streaming data capabilities without changing their language or workflow.
Write complex SQL transformations as materialized views that efficiently update themselves as inputs change.
Write queries that filter to a window of time anchored to the present, Materialize will update results as time advances.
Write alerts as SQL queries with filters and subscribe to new rows as they appear.
1CREATE MATERIALIZED VIEW my_view AS
2 SELECT userid, COUNT(api.id), COUNT(pageviews.id)
3 FROM users
4 JOIN pageviews on users.id = pageviews.userid
5 JOIN api ON users.id = api.userId
6 GROUP BY userid;
userID | api_calls | pageviews |
---|---|---|
VPLaKV | 400 | 20 |
MN37Mt | 60 | 9 |
1fT4KY | 72 | 42 |
sT4QY | 10 | 342 |
Write complex SQL transformations as materialized views that efficiently update themselves as inputs change.
Learn More1CREATE MATERIALIZED VIEW my_view AS
2 SELECT userid, COUNT(api.id), COUNT(pageviews.id)
3 FROM users
4 JOIN pageviews on users.id = pageviews.userid
5 JOIN api ON users.id = api.userId
6 GROUP BY userid;
userID | api_calls | pageviews |
---|---|---|
VPLaKV | 400 | 20 |
MN37Mt | 60 | 9 |
1fT4KY | 72 | 42 |
sT4QY | 10 | 342 |
Write queries that filter to a window of time anchored to the present, Materialize will update results as time advances.
Learn More1CREATE MATERIALIZED VIEW my_window AS
2 SELECT date_trunc('minute', received_at),
3 COUNT(*) as order_ct, SUM(amount) as revenue
4 FROM orders
5 WHERE mz_now() < received_at + interval '5 minutes'
6 GROUP BY 1;
minute | order_ct | revenue |
---|
Write alerts as SQL queries with filters and subscribe to new rows as they appear.
Learn More1SELECT userID, email, MAX(orders.id) as last_order
2FROM users
3JOIN orders ON orders.userID = users.id
4GROUP BY userId, email
5-- Use a filter to surface users with a high % of fraud
6HAVING SUM(is_fraud) / COUNT(orders.id)::FLOAT > 0.5;
userID | last_order | |
---|---|---|
REOtIb | a@gmail.com | 13/12/2022 |
Y5KBE8 | b@yahoo.com | 9/12/2022 |
Wj7JQ0 | c@hotmail.com | 13/12/2022 |
tPCQ0 | d@xyz.com | 13/11/2022 |
Built from the ground up to solve the hard problems in data.
Materialize guarantees strict serializable consistency that is standard in databases, but unprecendented in distributed stream processors.
Consistency in Streaming →Write the same kinds of complex, multi-way SQL joins you would use on a traditional data warehouse. Materialize maintains the joins efficiently in memory and serves real-time results.
Joins in Materialize →Push updates out of the database without performance limits using two new primitives:
Materialize expands access to powerful stream processing capabilities of Timely and Differential Dataflow by wrapping them in a familiar and accessible SQL layer that is wire-compatible with Postgres.
Postgres Compatibility Explainer →Streaming infrastructure is not required to use Materialize for real-time computation. Connect directly to any Postgres database via CDC and continually ingest data as it changes.
Run your existing dbt models on top of streaming data in Materialize, and dbt persists a materialized view. No matter how much or how frequently your data arrives, your model will stay up to date.
Connect multiple Kafka topics to Materialize and easily explore, transform, and join streaming datasets - and sink maintained SQL query results downstream to new, enriched Kafka topics.
Emily Hawkins
Data Infrastructure Lead, Drizly
We can write real-time SQL, exactly the same way as we already are in Snowflake with batch.
Ryan Gaus
Staff Engineer and Tech Lead, Density
Materialize has saved us I-don’t-know-how-many untold quarters of trying to build our own thing.
Jean-Francois Perreton
Head of Algo Quant, Kepler Chevreaux
Materialize directly integrates with our third-party applications, BI tools, you name it. It’s really SQL.
Tyler Richie
Cofounder and CTO, Sproutfi
With Materialize we don't have to worry about avoiding complex joins with streaming data; we can just do them very easily.
Johan Stuyts
Data Architect, Maqqie
Materialize is correct, and not just eventually consistent. The alternatives simply don’t support consistency, and you end up wasting a lot of time troubleshooting.
Materialize helps you get access to the power of a stream processing engine, with the simplicity of a PostgreSQL-compatible developer interface.
Millisecond-level latency through incrementally-updated views.
Control it with ANSI-standard SQL. Connect with Postgres drivers.
Support for multi-way joins, subqueries, upserts, deletes, CTEs.
Ready to see if Materialize works for your use case? Register for access today!
Join hundreds of other Materialize users and connect directly with our engineers.
Join the Community© 2023 Materialize, Inc. Terms of Service