# What is Materialize?

Learn more about Materialize




> For the complete documentation index, see [llms.txt](https://preview.materialize.com/materialize/40269/llms.txt).


Materialize is the live data layer for apps and AI agents. To keep results
up-to-date as new data arrives, Materialize incrementally updates results as it
ingests data rather than recalculating results from scratch.

## Materialize offerings

Materialize is available as:

| Offering | Description | Get Started 🚀  |
|----------|-------------|-----------------|
| **Materialize Cloud** | Materialize Cloud is a fully-managed service for Materialize. | Sign up for a [free trial account](https://materialize.com/register/?utm_campaign=General&utm_source=documentation) on Materialize Cloud and try out the [Quickstart](https://preview.materialize.com/materialize/40269/get-started/quickstart/). |
| **Materialize Self-Managed** | Deploy and operate Materialize in your Kubernetes environment. Whereas Materialize Cloud gives you a fully managed service, Materialize Self-Managed allows you to deploy Materialize in your own infrastructure.<br><br><p>Self-managed Materialize is available as a paid Enterprise Edition and a free
Community Edition:</p>
<table>
  <thead>
      <tr>
          <th>Feature</th>
          <th>Enterprise Edition</th>
          <th>Community Edition</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><strong>Maximum Usage Limits (Memory)</strong></td>
          <td>None</td>
          <td>24 GiB</td>
      </tr>
      <tr>
          <td><strong>Maximum Usage Limits (Disk)</strong></td>
          <td>None</td>
          <td>48 GiB</td>
      </tr>
      <tr>
          <td><strong><a href="https://materialize.com/support/" >Support</a></strong></td>
          <td><a href="https://materialize.com/self-managed/enterprise-license/" >Per terms of your license</a></td>
          <td><a href="https://materialize.com/support/" >Community slack or support chat</a></td>
      </tr>
      <tr>
          <td><strong>License</strong></td>
          <td><a href="https://materialize.com/self-managed/enterprise-license/" >Enterprise License - Contact Us</a></td>
          <td><a href="https://preview.materialize.com/materialize/40269/markdown-docs/license/index.md" >BSL/Privacy Policy</a></td>
      </tr>
  </tbody>
</table> | [Install self-managed](https://preview.materialize.com/materialize/40269/markdown-docs/self-managed-deployments/installation/install/index.md) and try out the [Quickstart](https://preview.materialize.com/materialize/40269/get-started/quickstart/). |
| **Materialize Emulator** | Materialize Emulator is an all-in-one Docker image that provides the fastest way to get hands-on experience with Materialize for local development. | [Download and run Materialize Emulator](https://preview.materialize.com/materialize/40269/markdown-docs/developer-tools/install-materialize-emulator/index.md) and try out the [Quickstart](https://preview.materialize.com/materialize/40269/get-started/quickstart/). |

## Key features

Materialize combines the accessibility of SQL databases with a streaming engine
that is horizontally scalable, highly available, and strongly consistent.

### Incremental updates

In traditional databases, materialized views help you avoid re-running heavy
queries, typically by caching queries to serve results faster. But you have
to make a compromise between the freshness of the results, the cost of
refreshing the view, and the complexity of the SQL statements you can use.

In Materialize, you don't have to make such compromises. Materialize supports
incrementally updated view results that are **always fresh** (even when using
complex SQL statements, like multi-way joins with aggregations) for *both*:

- [Indexed views](https://preview.materialize.com/materialize/40269/markdown-docs/fundamentals/concepts/views/index.md#indexes-on-views) and

- [Materialized views](https://preview.materialize.com/materialize/40269/markdown-docs/fundamentals/concepts/views/index.md#materialized-views).

How?
Its engine is built on [Timely](https://github.com/TimelyDataflow/timely-dataflow#timely-dataflow)
and [Differential Dataflow](https://github.com/timelydataflow/differential-dataflow#differential-dataflow)
— data processing frameworks backed by many years of research and optimized for
this exact purpose.

### Standard SQL support

With Materialize, you use SQL to transform your fast-changing data into **live
data products**: the business objects (e.g., a customer, an order, a store) that
your applications, services, dashboards, and AI agents read.

You can express complex transformations using **[any type of
join](https://preview.materialize.com/materialize/40269/markdown-docs/sql/select/join/index.md)** (including non-windowed joins and joins on arbitrary
conditions), as well as SQL patterns
enabled by streaming like [**Change Data Capture (CDC)**](https://preview.materialize.com/materialize/40269/markdown-docs/ingest-data/index.md),
[**temporal filters**](https://preview.materialize.com/materialize/40269/sql/patterns/temporal-filters/), and
[**subscriptions**](https://preview.materialize.com/materialize/40269/markdown-docs/sql/subscribe/index.md).

Materialize follows the SQL standard (SQL-92) implementation and aims for
compatibility with the PostgreSQL dialect. It **does not** aim for
compatibility with a specific version of PostgreSQL. This means that
Materialize might support syntax from any released PostgreSQL version, but does
not provide full coverage of the PostgreSQL dialect. The implementation and
performance of specific features (like [window functions](https://preview.materialize.com/materialize/40269/markdown-docs/transform-data/idiomatic-materialize-sql/appendix/window-function-to-materialize/index.md))
might also differ, because Materialize uses an entirely different database
engine based on [Timely and Differential Dataflow](https://preview.materialize.com/materialize/40269/markdown-docs/fundamentals/index.md#incremental-updates).

If you need specific syntax or features that are not currently supported in
Materialize, please submit a [feature request](https://materialize.com/support/).


### Real-time data ingestion

Materialize supports ingesting data from various external systems:

| Type | External system |
|------|-----------------|
| **Databases (CDC): native connectors** | [PostgreSQL](https://preview.materialize.com/materialize/40269/markdown-docs/ingest-data/postgres/index.md) <br> [MySQL](https://preview.materialize.com/materialize/40269/markdown-docs/ingest-data/mysql/index.md) <br> [SQL Server](https://preview.materialize.com/materialize/40269/markdown-docs/ingest-data/sql-server/index.md) |
| **Databases (CDC): via the Kafka connector** | [CockroachDB](https://preview.materialize.com/materialize/40269/markdown-docs/ingest-data/cdc-cockroachdb/index.md) (using changefeeds) <br> [MongoDB](https://preview.materialize.com/materialize/40269/markdown-docs/ingest-data/mongodb/index.md) (using Debezium) |
| **Message brokers** | [Kafka](https://preview.materialize.com/materialize/40269/markdown-docs/ingest-data/kafka/index.md) <br> [Redpanda](https://preview.materialize.com/materialize/40269/markdown-docs/sql/create-source/kafka/index.md) |
| **Webhooks** | [Amazon EventBridge](https://preview.materialize.com/materialize/40269/markdown-docs/ingest-data/webhooks/amazon-eventbridge/index.md) <br> [Segment](https://preview.materialize.com/materialize/40269/markdown-docs/ingest-data/webhooks/segment/index.md) <br> [HubSpot](https://preview.materialize.com/materialize/40269/markdown-docs/ingest-data/webhooks/hubspot/index.md) <br> [RudderStack](https://preview.materialize.com/materialize/40269/markdown-docs/ingest-data/webhooks/rudderstack/index.md) <br> [SnowcatCloud](https://preview.materialize.com/materialize/40269/markdown-docs/ingest-data/webhooks/snowcatcloud/index.md) <br> [Stripe](https://preview.materialize.com/materialize/40269/markdown-docs/ingest-data/webhooks/stripe/index.md)|

For more information, see [Ingest Data](https://preview.materialize.com/materialize/40269/markdown-docs/ingest-data/index.md).

### PostgreSQL wire-compatibility

Every database needs a protocol to standardize communication with the outside
world. Materialize uses the [PostgreSQL wire protocol](https://datastation.multiprocess.io/blog/2022-02-08-the-world-of-postgresql-wire-compatibility.html),
which allows it to integrate out-of-the-box with many SQL clients and other
tools in the data ecosystem that support PostgreSQL — like [dbt](https://preview.materialize.com/materialize/40269/integrations/dbt/).

### Strong consistency guarantees

By default, Materialize provides the highest level of transaction isolation:
**strict serializability**. This means that it presents as if it were a single
process, despite spanning a large number of threads, processes, and machines.
Strict serializability avoids common pitfalls like eventual consistency and dual
writes, which affect the correctness of your results. You can [adjust the
transaction isolation level](https://preview.materialize.com/materialize/40269/overview/isolation-level/) depending on your
consistency and performance requirements.

## Learn more

- [Key concepts](https://preview.materialize.com/materialize/40269/markdown-docs/fundamentals/concepts/index.md)
- [Get started with Materialize](https://preview.materialize.com/materialize/40269/get-started/quickstart)


## Pages in this section

- [Architecture Patterns](https://preview.materialize.com/materialize/40269/markdown-docs/fundamentals/architecture-patterns/index.md): Patterns for building with Materialize.
- [Concepts](https://preview.materialize.com/materialize/40269/markdown-docs/fundamentals/concepts/index.md): Learn about the core concepts in Materialize.
