Take a closer look at the
Cloud Operational Data Store.
Deliver up-to-the-second results across data sources.
Trusted by teams that deliver fresh, correct results. .
The ODS for high-performance SQL on fast-changing data.
Transforming and delivering up-to-the-second data is a challenge. Operational databases are optimized for handling transactions and struggle to manage complex queries cost-effectively. Sending operational data through a pipeline into a warehouse can introduce unacceptable end-to-end latency and substantial costs, as those systems were built to handle historical data in batches. Materialize sits alongside your operational systems and incrementally maintains strongly consistent views of your most expensive queries, allowing you to act quickly and confidently on fast-changing data.
Freshness
Sub-second updates on results as data arrives.
Consistency
Strong consistency, not eventual.
Responsiveness
Results can be consumed quickly and interactively via SQL
Materialize
Continuous computation of updates to materialized views for fresh results, and with strong consistency. Define and query views using Postgres-compatible SQL.
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.
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.
Stream Processors
Lower-level tools that require specialized expertise. Interactive and flexible access to data joined from new sources is difficult to achieve.
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.
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 MoreBuilt for JOINs
Multi-way, complex join support, even across databases - all in standard SQL.
Learn MoreSliding Windows
Write queries that filter to a window of time anchored to the present, Materialize will update results as time advances.
Learn MoreSQL Subscriptions
Write alerts as SQL queries with filters and subscribe to new rows as they appear.
Learn MoreCREATE 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 MoreCREATE 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 MoreSELECT 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 MoreCREATE 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 MoreSELECT 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 | 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 |
Start taking action on up-to-the-second data
Delivered as a fully-managed service
Cloud-Native
Bring your team, data, and SQL; we'll handle the infrastructure and operations.
Managed Connectors
Materialize hides the complexity of consuming data in real-time via Postgres, MySQL, Kafka, and Webhook sources.
Modern Security
From AWS PrivateLink compatibility, to RBAC, Materialize is built with security in the foundation.
SOC2 Compliant
Materialize is SOC 2 Type 2 Compliant.