RisingWave 是一款开源的云原生流式数据库(Streaming Database),专为简化实时数据管道的开发、部署和运维而设计。它由奇点无限(Singularity Data)公司开发,于2022年开源,旨在解决传统流处理系统(如 Apache Flink)复杂度高、运维难、成本高等痛点。
RisingWave 的核心理念是“让流处理像使用数据库一样简单”。用户可以使用标准的 SQL 语言来定义数据源、进行实时计算和查询结果,而无需编写复杂的代码或管理庞大的分布式系统。
可以用PostgreSQL的客户端psql直接连接RisingWave,用起来像是一个PostgreSQL数据库,但实际他主要在大数据领域使用,用作实时流计算(即与flink一个领域)。
以下是关于 RisingWave 的详细介绍:
1. 核心定位与特点
- 流式数据库 (Streaming Database):与传统数据库存储静态数据不同,RisingWave 持续处理不断流入的数据流。数据一旦进入系统,就会立即被计算并更新结果,支持毫秒级的低延迟查询。
- PostgreSQL 协议兼容:RisingWave 完全兼容 PostgreSQL 的 wire 协议。这意味着你可以使用任何 PostgreSQL 客户端(如 psql, JDBC, DBeaver, Navicat 等)连接 RisingWave,并使用熟悉的 SQL 语法进行操作,学习曲线极低。
- 流批一体 (Stream-Batch Unification):虽然以流处理为核心,但 RisingWave 能够统一处理流数据和批数据。它支持从历史数据(批)和新数据(流)中进行联合分析,消除了维护两套独立系统(一套做离线批处理,一套做实时流处理)的需求。
- 云原生架构 (Cloud-Native):采用存算分离架构。计算节点无状态,可以弹性扩缩容;状态和数据持久化存储在对象存储(如 AWS S3)中。这种设计使得资源利用率更高,成本更低,且具备极强的故障恢复能力。
- Rust 语言编写:整个系统使用 Rust 语言从头构建,保证了高性能、内存安全和系统的稳定性。
2. 核心功能与优势
A. 极简的开发体验 (SQL Everything)
在 RisingWave 中,一切皆表。
- Source (源):将 Kafka、Kinesis、Pulsar 等消息队列中的数据映射为一张“源表”。
- Materialized View (物化视图):通过
CREATE MATERIALIZED VIEW 语句定义实时计算逻辑。RisingWave 会持续维护这个视图的结果,当新数据到来时自动增量更新。 - Sink (输出):将计算结果实时写入下游系统(如 MySQL, PostgreSQL, Elasticsearch, Redis, Kafka 等)。
- Ad-hoc Query (即席查询):用户可以随时对物化视图或源表执行 SQL 查询,获取最新的实时结果或历史快照。
B. 强大的实时计算能力
- 多流 Join:高效支持流与流、流与静态表(维度表)之间的 Join 操作,解决了传统流处理中 Join 状态管理复杂的问题。
- 窗口计算:支持各种时间窗口(滚动、滑动、会话窗口)和计数窗口的聚合计算。
- 乱序处理:内置 Watermark 机制,能够有效处理数据乱序到达的问题,保证计算结果的准确性。
- Exactly-Once 语义:提供端到端的数据一致性保证,确保数据不丢失、不重复。
C. 运维与成本优势
- 动态扩缩容:基于云原生架构,可以根据负载自动调整计算资源,无需停机。
- 即时故障恢复:由于状态存储在远程对象存储中,节点故障后可以快速重建状态,恢复时间通常在秒级。
- 低成本:相比传统的 Flink + Kafka + Serving DB 的 Lambda 架构,RisingWave 将流处理、状态存储和查询服务整合在一个系统中,显著降低了硬件资源和运维成本(官方宣称可比 Flink 方案节省高达 10 倍的成本)。
- 无服务器回填 (Serverless Backfilling):当修改计算逻辑或新增物化视图时,系统会自动利用弹性资源回溯历史数据进行初始化,无需人工干预。
3. 典型应用场景
实时数仓与 BI 报表:
- 替代传统的 T+1 离线数仓,实现秒级更新的实时大屏和报表。
- 例如:实时销售监控、网站流量分析、广告效果归因。
实时监控与告警:
- 对 IoT 设备数据、服务器日志进行实时异常检测和阈值告警。
- 例如:金融反欺诈交易监控、工厂设备故障预警。
实时特征工程 (AI/ML):
- 为在线机器学习模型提供实时的特征数据。RisingWave 可以持续计算用户行为特征,并推送到特征存储或直接供模型调用。
- 例如:推荐系统中的用户实时兴趣画像、风控模型中的实时交易特征。
数据同步与 CDC (Change Data Capture):
- 作为强大的 CDC 工具,将数据库(如 MySQL, PostgreSQL)的变更实时同步到数据湖(Iceberg, Hudi)或其他数据库中,并进行简单的清洗转换。
事件驱动的应用后端:
- 直接作为应用的后端数据库,支撑需要实时状态查询的业务逻辑。
4. 架构原理简述
RisingWave 的架构主要包含以下组件:
- Frontend:负责解析 SQL、生成执行计划、优化查询。兼容 PostgreSQL 协议,接收客户端请求。
- Meta Service:系统的“大脑”,负责集群管理、元数据存储、调度任务和故障协调。
- Compute Nodes (Stateful):实际执行流计算任务的节点。它们是无状态的容器,从对象存储加载状态,处理数据后将新状态写回对象存储。支持水平扩展。
- Storage (Hummock):RisingWave 自研的存算分离存储引擎。它将数据分层存储在内存和本地 SSD(缓存层)以及远程对象存储(持久层)中,实现了高性能读写和低成本的持久化。
5. 与其他技术的对比
| 特性 |
RisingWave |
Apache Flink |
ksqlDB / Spark Streaming |
传统数据库 (MySQL/PG) |
| 主要定位 |
流式数据库 |
流处理引擎 |
流处理/查询层 |
事务型/分析型数据库 |
| 使用方式 |
标准 SQL |
Java/Scala/SQL |
SQL |
SQL |
| 状态管理 |
自动托管 (存算分离) |
需配置 State Backend |
依赖外部或有限 |
本地存储 |
| 查询能力 |
强 (支持任意时刻即席查询) |
弱 (主要输出到 Sink) |
中等 |
强 (但在海量实时写入下性能下降) |
| 运维复杂度 |
低 (云原生,自动扩缩容) |
高 (需调优 Checkpoint, 资源等) |
中/高 |
低 (但难以应对流式场景) |
| 数据时效性 |
毫秒级 |
毫秒级 |
秒级/分钟级 |
取决于写入方式 |
6. 总结
RisingWave 代表了数据处理架构的一种新范式:流式优先 (Streaming First)。它试图证明,在绝大多数实时数据处理场景中,不需要维护复杂的 Lambda 架构(离线 + 实时两套链路),也不需要精通 Flink 这样的重型框架。通过提供一个易用、高性能、低成本且兼容 PostgreSQL的流式数据库,RisingWave 让开发人员能够专注于业务逻辑本身,用简单的 SQL 就能构建出强大的实时数据应用。
如果你正在寻找一种能够替代 “Kafka + Flink + Druid/ClickHouse” 复杂栈的解决方案,或者希望将现有的离线数仓升级为实时数仓,RisingWave 是一个非常值得考虑的选择。