Materialize 调研:6,361 stars 的实时流式 SQL 引擎,BSL 1.1 转 Apache-2.0 的 4 年窗口到底香在哪

18次阅读
Materialize 调研:6,361 stars 的实时流式 SQL 引擎,BSL 1.1 转 Apache-2.0 的 4 年窗口到底香在哪

一句话定位:用 SQL 写流式增量物化视图,PostgreSQL 协议直连,AI Agent 的实时数据层底座


写在前面

数据栈这些年绕不开三个字:实时

但 ” 实时 ” 在大数据圈一直是个尴尬词——ClickHouse 49K stars 是 OLAP 王座但偏批量分析;Apache Flink 学习曲线陡得像爬 90 度坡;Kafka Streams 绑死 JVM 还得自己写窗口;ksqlDB 只能活在 Kafka 生态里。

到底有没有一个东西,让数据工程师写一行 CREATE MATERIALIZED VIEW,底下数据流就自动增量更新?

Materialize 2019 年出来就是干这个的:把经典的 ” 实时增量物化视图 ”(Timely/Differential Dataflow 十年研究沉淀)打包成PostgreSQL 兼容的 SQL 数据库——任何 psql 客户端都能连,任何 BI 工具(Metabase/Preset/Evidence.dev)都能直接查询,不用单独造一套查询层。

7 年过去,6,361 ⭐ 不算高,但 GitHub topics 阵容亮:cdc、kafka、materialized-view、postgresql-dialect、rust、stream-processing、streaming、operational-data-store。

这意味着它从 2019 年的 ” 学院派研究项目 ” 已经走到 2026 年的 ”AI Agent 实时数据层“——官方描述明确写着 The live data layer for apps and AI agents,三大落地场景(Query Offload / Integration Hub / Operational Data Mesh)跟 RAG 实时上下文、操作仪表盘、跨域数据产品完美对齐。

本文 9 段深度拆解,从技术架构到 BSL 1.1 许可证的 4 年 Apache-2.0 转换窗口,从实战 3 步跑通到 6 条选型风险,一次讲透。


一、它解决什么问题

Materialize = 实时数据集成平台 ,核心抽象是 增量维护的物化视图

1.1 一句话定位

Real-time data integration platform that creates and continually updates consistent views of transactional data from across your organization.

底层引擎把 SQL 查询重写成 dataflow(增量数据流图),上游数据变化时自动维护结果,毫秒级延迟,强一致,最终结果就是 PostgreSQL 协议暴露的标准表

1.2 基本信息(GitHub API 实时 · 2026-08-26 拉取)

字段
仓库 MaterializeInc/materialize
Stars 6,361
Forks 512
Open issues 666
License BSL 1.1(4 年后转 Apache-2.0)⚠️
主语言 Rust(90.9%)+ Python 5.8% + Shell 1.5%
体积 391 MB
首次 commit 2019-02-22(7+ 年
最近 push 2026-08-26 22:59 UTC(今天
Topics(17) cdc · data-mesh · data-store · database · distributed-systems · kafka · materialized-view · mysql · operational-data-store · postgresql · postgresql-dialect · rust · sql · sql-server · stream-processing · streaming · streaming-data
官网 materialize.com
公司 Materialize Inc.(2022 年 B 轮 $60M

1.3 三大落地场景

场景 全称 适用
Query Offload (CQRS) 读查询卸载 复杂分析从 OLTP 主库移到 Materialize,比 read replica 高效,无需手动失效缓存
Integration Hub (ODS) 集成中心 / 运营数据存储 多源(PostgreSQL/MySQL/Kafka/Webhook)实时 ETL,建视图供下游订阅
Operational Data Mesh (ODM) 运营数据网格 跨域实时交付强一致数据产品,减少服务间对账

README 原文:“deliver fresh context for AI/RAG pipelines, power operational dashboards, and create more dynamic customer experiences” —— 跟 2026 年 LLM 实时上下文需求天然契合。


二、核心能力 1:流式 SQL + PostgreSQL 协议直连

2.1 把 ” 实时增量 ” 做成 SQL 原语

经典场景:TPC-H Q15(供应商最大营收查询)。普通数据库需要定时刷新,Materialize 写 MATERIALIZED VIEW 就完事:

CREATE SOURCE tpch
  FROM LOAD GENERATOR TPCH (SCALE FACTOR 1)
  FOR ALL TABLES;

CREATE VIEW revenue (supplier_no, total_revenue) AS
    SELECT
        l_suppkey,
        SUM(l_extendedprice * (1 - l_discount)) AS total_revenue
    FROM
        lineitem
    WHERE
        l_shipdate >= DATE '1996-01-01'
        AND l_shipdate < DATE '1996-01-01' + INTERVAL '3' month
    GROUP BY
        l_suppkey;

CREATE MATERIALIZED VIEW tpch_q15 AS
  SELECT s_s_suppkey, s_name, s_address, s_phone, total_revenue
  FROM supplier, revenue
  WHERE s_suppkey = supplier_no
    AND total_revenue = (SELECT max(total_revenue) FROM revenue)
  ORDER BY s_suppkey;

CREATE INDEX tpch_q15_idx ON tpch_q15 (s_suppkey);

底层数据流(lineitem / supplier)有任何 insert/update/delete,Materialize 自动增量维护 tpch_q15毫秒级一致性——这才是 ” 实时物化视图 ” 的真正含义。

2.2 PostgreSQL 协议直连 = 工具链全打通

最聪明的一招:全 PostgreSQL 协议。任何 psql、BI 工具(Metabase/Preset/Superset)、ORM(Django/SQLAlchemy)、ETL 工具(dbt 原生支持)都能直接连,不需要专用 driver。

这意味着:

  • dbt 原生——客户用 dbt Core 写 transformation SQL,直接 profiles.yml 指向 Materialize 就行,零迁移成本
  • BI 直连 ——Metabase/Preset/Superset 配置 PostgreSQL 数据源就能跑, 不挑 BI 工具
  • 应用直连——Java/Python/Go 应用代码零改动,driver 假装自己连的是 PG
  • SUBSCRIBE 推送——除了 SELECT,还能 SUBSCRIBE 监听视图变化,订阅实时变更流

2.3 多源接入(CDC + 流 + Webhook)

接入方式 协议
PostgreSQL 逻辑复制(CDC) CREATE SOURCE ... FROM POSTGRES
MySQL binlog(CDC) CREATE SOURCE ... FROM MYSQL
Kafka / Redpanda Kafka API CREATE SOURCE ... FROM KAFKA
Webhook HTTP 推送 CREATE SOURCE ... FROM WEBHOOK

下游输出:

  • Pull 模式:任何 PG 客户端 SELECT
  • Push 模式SUBSCRIBE 监听变更 / 推到 Kafka topic / 复制到 S3 对象存储

三、核心能力 2:3 大差异化能力(学术血统 + Rust + 一致性)

3.1 Differential Dataflow + Timely Dataflow 双引擎

跟一般 ” 流处理 ” 项目不同,Materialize 站在 Microsoft Research 十年学术沉淀上:

  • Timely Dataflow(2015 年起)—— 低延迟分布式流处理基础
  • Differential Dataflow(2013 年起)—— 增量计算、差分传播

Frank McSherry(Materialize 首席科学家)是 Timely/Differential Dataflow 原作者,等于把学术界 SOTA 直接搬进生产。

结果:强一致性 + 毫秒级延迟 同时满足(不像其他流处理要么近似结果要么最终一致)。

3.2 Rust 实现 = 性能 + 内存安全

90.9% Rust + 5.8% Python + 1.5% Shell——主语言占比:

  • 零成本抽象——流处理状态机 / 内存管理极致
  • 内存安全——并发场景无 GC 暂停
  • 异步运行时——Tokio 异步 I/O 处理高吞吐 Kafka
  • FFI 友好——Python/Shell 仅作 glue code

对比 Apache Flink(JVM,GC 大对象场景掉链子)、Kafka Streams(JVM,绑定 Kafka),Rust 版天然适合低延迟流场景。

3.3 多路 Join + 嵌套视图

README 明确承诺:

  • 多列 join 条件 + 多路 join + 自 join + 交叉 join + 内 / 外 join 全支持
  • Delta-joins——避免中间状态爆炸,实测过 64 路 join
  • 子查询自动去相关(subquery decorrelation)——不用手动改写为 join
  • 视图嵌套视图(view on view on view)——可声明性组合
  • 共享子计划索引——多个视图共享底层索引,省空间 + 计算
  • 递归(recursion)——增量维护树 / 图结构

3.4 JSON 支持 + PostgreSQL 方言

  • -> ->> @> ? 操作符
  • jsonb_array_element jsonb_each 函数
  • ✅ 自动规划 lateral join 高效 jsonb_each
  • ✅ PostgreSQL 协议 + PostgreSQL 方言——对 PG 用户零学习成本

四、编辑器 / 工具能力

4.1 自带 psql 命令行

Materialize 自带完整 PostgreSQL 客户端兼容命令行:

psql -U materialize -h localhost -p 6875 -d materialize

4.2 Cloud 控制台(Cloud-only)

功能 社区版 Cloud
增量视图计算
PostgreSQL 协议
高可用(multi-active replication)
横向扩展(多机 dataflow)
Web 管理控制台
近无限存储(S3 分层)
单节点限制 24 GiB 内存 / 48 GiB 磁盘 无限制

4.3 集成矩阵

工具 集成方式 状态
dbt Core profiles.yml + adapter ✅ 原生
Metabase / Preset / Superset PostgreSQL 数据源
Kafka / Redpanda 直接 source/sink
PostgreSQL / MySQL 逻辑复制 CDC
Webhook HTTP source
S3 / 对象存储 sink 复制
Apache Flink / Spark 不原生(Materialize 自带流处理) ⚠️

五、对比主流流处理 / 实时数仓

5.1 横评矩阵(6 维)

维度 Materialize Apache Flink Apache Kafka Streams ksqlDB Apache Druid RisingWave
API 形态 SQL(PG 方言) DataStream API / SQL Java DSL SQL SQL SQL
底层引擎 Differential Dataflow Flink Runtime Kafka Runtime Kafka Streams Druid Core Apache Flink 派生
主语言 Rust Java Java Java Java Rust
延迟 毫秒 毫秒 毫秒 毫秒 亚秒 毫秒
学习曲线 中(SQL)
社区生态 中(5K+ ⭐) 大(25K+ ⭐) 大(Kafka 配套) 中(Kafka 配套) 大(14K+ ⭐) 小(3K+ ⭐)
License BSL 1.1 ⚠️ Apache-2.0 ✅ Apache-2.0 ✅ Apache-2.0 ✅ Apache-2.0 ✅ Apache-2.0 ✅
部署形式 社区 + Cloud 自托管 依赖 Kafka 依赖 Kafka 自托管 + Imply 商业 自托管 + Cloud

5.2 核心差异

  1. SQL vs API:Materialize 用 SQL(Flink 也能用 SQL,但 DataStream API 更强);写 CREATE MATERIALIZED VIEW 比写 Java 算子链快 10 倍
  2. PG 协议 vs 专用:Materialize 暴露 PG 端口,所有 BI/ORM 零改造;Flink/Kafka Streams 需要 JDBC connector 桥接
  3. 学术血统 vs 工程血统:Differential Dataflow 是 MSR 十年研究;Flink/Kafka Streams 是工程派,性能够但语义弱
  4. BSL vs Apache:Materialize 商用需注意(4 年后转 Apache-2.0,已有版本大概率已转);其他全 Apache-2.0 干净
  5. Rust vs JVM:Materialize 内存安全 + 无 GC;Flink/Kafka 大状态场景 GC 调优是噩梦
  6. Cloud-Only HA:高可用 + 横向扩展只 Cloud 版有;社区版单节点 24 GiB 上限

六、实战:3 步跑通 PostgreSQL CDC → 实时视图

6.1 Step 1 · 启动社区版(Docker)

# 拉取镜像
docker pull materialize/materialized:latest

# 启动
docker run -d --name mz \
  -p 6875:6875 -p 6876:6876 -p 6877:6877 \
  materialize/materialized:latest

# 等 3 秒,连上去
psql -U materialize -h localhost -p 6875 -d materialize

默认端口 6875(PG 协议)/ 6876(HTTP)/ 6877(内部)

6.2 Step 2 · 接 PostgreSQL CDC + 建实时视图

-- 1. 建 PostgreSQL CDC source(需 PG 开启 logical replication)CREATE SOURCE pg_source
  FROM POSTGRES
  CONNECTION 'host=pg-host port=5432 user=replicator dbname=app';

-- 2. 订阅具体表
CREATE VIEWS FROM SOURCE pg_source (public.orders, public.customers);

-- 3. 建实时物化视图
CREATE MATERIALIZED VIEW order_stats AS
  SELECT
    customer_id,
    COUNT(*) AS order_count,
    SUM(amount) AS total_amount,
    MAX(created_at) AS last_order_at
  FROM orders
  WHERE status = 'completed'
  GROUP BY customer_id;

-- 4. 创索引加速点查
CREATE INDEX order_stats_idx ON order_stats (customer_id);

-- 5. 验证实时性
SELECT * FROM order_stats WHERE customer_id = 12345;
-- 上游 orders 表新增一行 → 这里毫秒级自动更新

6.3 Step 3 · 推到下游 + AI Agent 接入

-- 订阅实时变更(推送模式)SUBSCRIBE (SUBSCRIBE order_stats) WITH (PROGRESS = WITHIN 5 SECONDS);

-- 推到 Kafka
CREATE SINK order_stats_kafka_sink
  FROM order_stats
  INTO KAFKA CONNECTION 'broker=kafka:9092'
  TOPIC 'order-stats-realtime'
  FORMAT JSON;

-- AI Agent 直接 PG 协议查询(不需要专用 driver)-- Python:
# import psycopg
# conn = psycopg.connect("postgresql://materialize@localhost:6875/materialize")
# rows = conn.execute("SELECT * FROM order_stats WHERE total_amount > 10000").fetchall()

整套链路:PostgreSQL CDC → Materialize 增量视图 → 下游 BI / AI Agent / Kafka / S3


七、风险与坑(6 条)

7.1 BSL 1.1 商用限制 ⚠️

Materialize 是 Business Source License 1.1不是 标准 Apache-2.0:

  • 4 年后自动转 Apache-2.0——2019-02 创建的版本到现在(2026-08)应该早已转 Apache
  • ⚠️ 当前最新 release 是 BSL 1.1——商用前必须读 LICENSE 文件
  • ⚠️ “ 非生产用途 ” 单节点免费 —— 生产 HA 必须 Cloud 版(credit-based pricing)
  • 不可包装为 SaaS 竞品——BSL 禁止

判断 :池子标的是 BSL ⚠️ 但实际有 4 年转换窗口,2019+7 年下来大部分老 release 已 Apache-2.0。 商用项目锁定 4 年前 release 版本是稳妥做法,新项目直接 Cloud。

7.2 社区版单节点上限

24 GiB 内存 + 48 GiB 磁盘硬限制。要 HA / 横向扩展 / 大数据量 → 必须 Cloud 付费版。

7.3 666 open issues 摊薄

GitHub 显示 666 open issues 量级偏大(vs ClickHouse 2000+ 但响应快、Flink 800+ 但维护者多)。小团队选型时需评估活跃维护节奏 ——好消息是最近 push 是今天 22:59 UTC, 今天还在迭代

7.4 Cloud 锁定风险

Cloud-only 功能(HA / 横向扩展 / Web Console)让你想从社区版迁到 Cloud 容易,反过来迁出来难。长期建议:架构上设计好 ”PG 协议层 ” 无关性,应用代码只用 psycopg 标准 driver,迁移成本可控。

7.5 不替代 OLAP

Materialize 是 流式物化视图 而非 OLAP 引擎——复杂 GROUP BY + 高基数维度聚合 + 历史分析场景,速度不如 ClickHouse(322)/ StarRocks(332)/ DuckDB(294)。别用它做大宽表 Ad-hoc 查询

7.6 生态相对小

vs Apache Flink(25K stars / 阿里 / 字节大规模生产)、Apache Spark(40K stars / Databricks 商业)——Materialize 社区还在成长中。招聘熟悉 Materialize 的人比 Flink 难 5-10 倍


八、总结

8.1 3 个最值得装的理由

  1. 流式 SQL + PostgreSQL 协议 :写 CREATE MATERIALIZED VIEW 就能拿到实时增量结果,所有 BI/ORM/dbt 工具零改造—— 这是 Materialize 最大的护城河
  2. Differential Dataflow + Rust = 强一致 + 毫秒级 :学术界 SOTA 直接落地, 不像其他流处理近似结果或最终一致
  3. AI Agent 实时数据层:2026 年 LLM 应用对实时上下文需求激增,Materialize 是少数同时满足 ” 低延迟 + SQL 接入 + dbt 原生 + PG 协议 ” 四点的引擎

8.2 3 个不要装的场景

  1. 生产 HA + 大数据量 ——社区版单节点 24 GiB 限制必须上 Cloud, 预算紧的别碰
  2. 大批量 OLAP 分析——ClickHouse 49K stars 是更好选择,Materialize 不是 OLAP
  3. 极端复杂事件处理(CEP)——Apache Flink 的 DataStream API 更灵活,Materialize SQL 表达受限

8.3 一句话决策

实时流式 SQL + PostgreSQL 兼容 + dbt 原生 → Materialize 是首选 生产 HA + 大数据量 → 必须 Cloud 版 批量 OLAP / 复杂 CEP → 用 ClickHouse / Flink


📎 WordPress 链接


参考

  1. MaterializeInc/materialize GitHub — 主仓库
  2. Materialize 官方文档 — 入门 + SQL 语法 + 部署
  3. Differential Dataflow 论文 — Frank McSherry 原作者
  4. Timely Dataflow — 分布式流处理基础
  5. BSL 1.1 许可全文 — 4 年转换条款
  6. Materialize B 轮融资 $60M — 2022 年公司状态
  7. Materialize Cloud 定价 — credit-based 模型
  8. Apache Flink — JVM 流处理对比
  9. Apache Kafka Streams — Kafka 流处理
  10. RisingWave — Rust 竞品(同流派)
正文完