Take a closer look at the
Cloud Operational Data Store.

CenterfieldVontiveCraneGeneral MillsPluralsightFubo TVSuperscriptNanitVori

The ODS for high-performance SQL on fast-changing data.

Materialize

Continuous computation of updates to materialized views for fresh results, and with strong consistency. Define and query views using Postgres-compatible SQL.

Freshness
Consistency
Responsiveness

Analytical Data Warehouse

Excellent performance for complex, read-heavy queries but fundamentally built for batch updates of historical data. The time between an event happening in the real world to being available in a data warehouse is often measured in minutes to hours.

Freshness
Consistency
Responsiveness

Caches

Enable very fast access to stale data. It is extremely difficult to keep these reliably up to date and consistent. Cache misses can impact database availability.

Freshness
Consistency
Responsiveness

Stream Processors

Lower-level tools that require specialized expertise. Interactive and flexible access to data joined from new sources is difficult to achieve.

Freshness
Consistency
Responsiveness

Operational Databases

Built for high performance transaction processing, but not designed for complex read queries. Materialized views and summary tables can mitigate this, but at the cost of data freshness.

Freshness
Consistency
Responsiveness

How Materialize Works

1. Start with Separated Storage and Compute

Storage-Compute separation delivers workload isolation and unlimited scale.

2. Add Real-Time Data Sources

Materialize has several streaming input sources that continuously pull in data from upstream OLTP Databases, streaming platforms, web hooks, and other systems.

3. Transform incrementally and query the results with SQL

Rather than running one-shot batch transformations, data to support materialized views is transformed continually in the compute layer. Instead of Extract Load and Transform, think Extract Load and Incrementally-Transform, or ELiT. The results can be queried like a standard Postgres view, just using SQL.

4. Add Streaming Output Options

In addition to serving read-intensive SQL queries with high concurrency and low latency, users can subscribe to updates from a query or sink updates out to a data warehouse or streaming platform.

A better way to join, query, and deliver fast-changing data

In Materialize, you can take data from throughout your organization and transform it into live views that can be queried and composed with strong consistency to support your business logic.

Access via standard SQL

Incrementally Maintained Views

Write complex SQL transformations as materialized views that efficiently update themselves as inputs change.

Learn More

Built for JOINs

Chevron Down

Multi-way, complex join support, even across databases - all in standard SQL.

Learn More

Sliding Windows

Chevron Down

Write queries that filter to a window of time anchored to the present, Materialize will update results as time advances.

Learn More

SQL Subscriptions

Chevron Down

Write alerts as SQL queries with filters and subscribe to new rows as they appear.

Learn More
incremental.sql
CREATE MATERIALIZED VIEW my_view AS
	SELECT userid, COUNT(api.id), COUNT(pageviews.id)
	FROM users
	JOIN pageviews on users.id = pageviews.userid
	JOIN api ON users.id = api.userId
	GROUP BY userid;
userID api_calls pageviews
VPLaKV 400 20
MN37Mt 60 9
1fT4KY 72 42
sT4QY 10 342

Incrementally Maintained Views

Write complex SQL transformations as materialized views that efficiently update themselves as inputs change.

Learn More
incremental.sql
CREATE MATERIALIZED VIEW my_view AS
	SELECT userid, COUNT(api.id), COUNT(pageviews.id)
	FROM users
	JOIN pageviews on users.id = pageviews.userid
	JOIN api ON users.id = api.userId
	GROUP BY userid;
userID api_calls pageviews
VPLaKV 400 20
MN37Mt 60 9
1fT4KY 72 42
sT4QY 10 342

Built for JOINs

Multi-way, complex join support, even across databases - all in standard SQL.

Learn More
joins.sql
SELECT DISTINCT ON (auctions.id) 
   bids.amount, 
   auctions.item,
   auctions.seller
 FROM auctions, bids
 WHERE auctions.id = bids.auction_id
 ORDER BY auctions.id,
   bids.amount DESC,
   bids.buyer;
			
amount item seller

Sliding Windows

Write queries that filter to a window of time anchored to the present, Materialize will update results as time advances.

Learn More
sliding.sql
CREATE MATERIALIZED VIEW my_window AS
	SELECT date_trunc('minute', received_at),
	COUNT(*) as order_ct, SUM(amount) as revenue
	FROM orders
	WHERE mz_now() < received_at + interval '5 minutes'
	GROUP BY 1;
minute order_ct revenue

SQL Subscriptions

Write alerts as SQL queries with filters and subscribe to new rows as they appear.

Learn More
alerting.sql
SELECT userID, email, MAX(orders.id) as last_order
  FROM users
  JOIN orders ON orders.userID = users.id
  GROUP BY userId, email
  -- Use a filter to surface users with a high % of fraud
  HAVING SUM(is_fraud) / COUNT(orders.id)::FLOAT > 0.5;
userID email last_order
REOtIb 13/12/2022
Y5KBE8 9/12/2022
Wj7JQ0 13/12/2022
tPCQ0 13/11/2022
Checkmark
Checkmark
Checkmark
Checkmark

Start taking action on up-to-the-second data

Loan eligibility rule calculation time decreased by 98.15%, dropping from 27 seconds to half a second.

Wolf Randall
Wolf Randall Director, Data Products, Vontive

Key Concepts in Materialize

Share this on:

Logo Twitter Logo Reddit

Delivered as a fully-managed service

Cloud-Native

Cloud-Native

Managed Connectors

Managed Connectors

Modern Security

Modern Security

SOC2 Compliant

SOC2 Compliant

Try Materialize Free