The Streaming Database for Real-time Analytics

Materialize is a reactive database that delivers incremental view updates. We help developers easily build with streaming data using standard SQL.

Sign up for access to Materialize Cloud today.

Demo Request Part One (Email Only)

single-field email form used as step 1 of lead capture in hero section of homepage and product page.
This field is for validation purposes and should be left unchanged.

Whitepaper: How does Materialize work?

This whitepaper introduces Materialize as a source-available platform for processing streaming data. Get a technical overview and learn about the business applications of Materialize.

Download the whitepaper

Case Study: Materialize and Datalot

Learn how SaaS company Datalot uses Materialize in production to build and manage real-time data engineering pipelines for dashboards, alerting services, and machine learning models.

View Case Study
SELECT
  -- standard sql data types and operators
  'user_' || 24::TEXT as user_id,
  -- standard sql json syntax
  '{"key":"value"}'::jsonb->>'key',
  -- standard sql date functions
  date_trunc('hour', now()),
  -- standard sql aggregate functions
  COUNT(t), MAX(t), AVG(t), SUM(t), STDDEV(t)
FROM my_source
GROUP BY 1,2,3;
CREATE MATERIALIZED VIEW user_join AS
  SELECT
    u.id, SUM(p.amount), last_login
  FROM users
  -- Inner join
  JOIN purchases p ON p.user_id=u.id
  -- Left (outer) join + subquery
  LEFT JOIN
    SELECT user_id, MAX(ts) as last_login
    FROM logins GROUP BY 1
  ) lg ON lg.user_id=u.id
  GROUP BY u.id; 

Standard SQL

Complex Joins

Incrementally Maintained

Query

Stream

1

Connect Your Data Sources

Materialize can connect to many different external sources of data without pre-processing. Connect directly to streaming sources like Kafka, Postgres databases, CDC, or historical sources of data like files or S3.

2

Create Real-Time Materialized Views

Materialize allows you to query, join, and transform data sources in standard SQL - and presents the results as incrementally-updated Materialized views. Queries are maintained and continually updated as new data streams in.

SELECT
  -- standard sql data types and operators
  'user_' || 24::TEXT as user_id,
  -- standard sql json syntax
  '{"key":"value"}'::jsonb->>'key',
  -- standard sql date functions
  date_trunc('hour', now()),
  -- standard sql aggregate functions
  COUNT(t), MAX(t), AVG(t), SUM(t), STDDEV(t)
FROM my_source
GROUP BY 1,2,3;
CREATE MATERIALIZED VIEW user_join AS
  SELECT
    u.id, SUM(p.amount), last_login
  FROM users
  -- Inner join
  JOIN purchases p ON p.user_id=u.id
  -- Left (outer) join + subquery
  LEFT JOIN
    SELECT user_id, MAX(ts) as last_login
    FROM logins GROUP BY 1
  ) lg ON lg.user_id=u.id
  GROUP BY u.id; 

Standard SQL

Complex Joins

Incrementally Maintained

3

Build Live Dashboards and Experiences

With incrementally-updated views, developers can easily build data visualizations or real-time applications. Building with streaming data can be as simple as writing a few lines of SQL.

View use cases

Query

Stream

Streaming Joins

Millisecond Latency

Standard SQL

Easy Setup

Full Ecosystem

The Only Platform for Streaming Joins

While other stream processing tools are limited to basic joins, if any, Materialize brings the same powerful join capabilities found in a traditional database to streams of data.

Materialize Join Capabilities:

View Joins Documentation

High performance through incremental computation

Rather than recalculating the answer each time it’s asked, Materialize continually updates the answer and gives you the latest result from memory – even in the presence of complex joins and arbitrary inserts, updates, or deletes in the input streams.

No more choosing between flexibility and speed. Materialize delivers SQL exploration for streaming events and real-time data.

Learn Key Concepts in Docs

Streaming made SQL

All data transformation and aggregation logic in Materialize is written in standard Postgres SQL.

  • No custom code - The same SQL written for data at rest in warehouses and traditional databases can be converted to a real-time view in Materialize.
  • No special skillsets - Anyone with knowledge of SQL can build with real-time data.

View Materialize Docs

Complex queries. Simple setup.

New users can get Materialize Cloud up and running in minutes. Rather than spend weeks building microservices, teams can build applications with Materialize in a matter of hours.

Materialize connects to streaming sources like Kafka, to databases as a read-replica, or to file sources - without the need to pre-process or denormalize data.

Get Started

Connect to the full range of Postgres tools

Materialize is wire compatible with PostgreSQL, presenting to downstream tools like any Postgres database, simplifying the development of custom applications and streamlining the process of connecting existing data analysis tools.

Even non-technical users can unlock the most complex real-time queries just using standard BI tooling.

CREATE MATERIALIZED VIEW user_join AS
  SELECT
    u.id, SUM(p.amount), last_login
  FROM users
  -- Inner join
  JOIN purchases p ON p.user_id=u.id
  -- Left (outer) join + subquery
  LEFT JOIN (
    SELECT user_id, MAX(ts) as last_login
    FROM logins GROUP BY 1
  ) lg ON lg.user_id=u.id
  GROUP BY u.id; 
SELECT
  -- standard sql data types and operators
  'user_' || 24::TEXT as user_id,
  -- standard sql json syntax
  '{"key":"value"}'::jsonb->>'key',
  -- standard sql date functions
  date_trunc('hour', now()),
  -- standard sql aggregate functions
  COUNT(t), MAX(t), AVG(t), SUM(t), STDDEV(t)
  FROM my_source
  GROUP BY 1,2,3;
usr@vm:~$ # Step 1: Install Materialize
usr@vm:~$ apt install materialized
...
usr@vm:~$ # Step 2: Run Materialize
usr@vm:~$ materialized --workers4
...
usr@vm:~$ # Step 3: Connect to Materialize via PSQL CLI
usr@vm:~$ psql -h localhost -p 6875 -U materialize

Make Your Analytics Real-Time. Then Put Your Data to Work.

Materialize empowers anyone within a company to discover insights from real-time data, identify problems immediately, and take action in critical moments. Build operational analytics, real-time visualizations, or connect to off-the-shelf business intelligence tools.

Once your analytics are real-time, easily build more sophisticated applications:

  • Fraud, Risk, and Alerts
  • Logistics, Inventory, and IoT Management
  • Event-Driven Features
  • Personalized Customer Experiences
  • Predictive Machine Learning

Real-time without
re-architecture

Build streaming applications without additional engineering resources. All you need is SQL.

Minimize your
microservices

Replace complex kafka-based microservices with SQL queries and reduce the cost of maintenance.

Correct, not just
consistent

Answers are correct – not eventually consistent – without interference from late-arriving data.

  • Streaming data can really revolutionize this business by taking analytics that are embedded in summary tables and exposing them in a way where they can become signals that can drive other services. The vision is moving from observability of data to automation of business processes. Materialize means this can happen very quickly.

    Author Image

    Josh Arenberg

    Director of Engineering

    View the case study
  • Once we found Materialize we were very happy because it was proper SQL and we actually are big users internally of Postgres already. One of the biggest selling points of Materialize was the fact that it offers JDBC drivers and a regular PostgreSQL facade, if you want. So it directly integrates with our third-party applications, BI tools, you name it.

    Author Image

    Jean-Francois Perreton

    Head of Algo Quant, Kepler Cheuvreux

    View the case study
  • Analytics is a really obvious use-case for Materialize, but all the interesting things you can do when you enable real-time will open up a lot of creative solutions to problems that are low level plumbing problems in the stack currently – and that’s very exciting. The ability to have this stuff in real-time from Materialize will be a very big driver of creativity in the way people are building experience.

    Author Image

    Eric Dodds

    Head of Growth, Rudderstack

  • Working with Materialize has been an incredibly seamless process as we can continue to write real-time SQL, exactly the same way as we already are in Snowflake with batch, so it was a much lower barrier to entry. It was also a huge plus for us that we could continue using dbt within the real-time platform to help us address our online cart conversion challenges where customers can be reminded of a pending purchase in the span of minutes versus hours.

    Author Image

    Emily Hawkins

    Data Infrastructure Lead

    View the case study

Get Started for Free

Materialize Cloud is free to try today. Register for access to start building real-time analytics dashboards and live applications.

Get Started for Free