Skip to main content

RisingWave 是什么?

RisingWave 是一个分布式架构的 SQL 流式数据库,能简单、高效、可靠地处理流数据。


RisingWave 架构

为什么选择 RisingWave 进行流处理?

RisingWave 提供增量更新、一致性的物化视图——这是一种持久的数据结构,承载了流处理的结果。RisingWave 让开发人员能够通过级联物化视图来表达复杂的流处理逻辑,从而大大降低了构建流处理应用的难度。此外,它还允许用户直接在系统内持久化数据,而无需将结果传送到外部数据库进行存储和查询。

Stream Processing With And Without RisingWave

Apache FlinkApache Spark StreamingksqlDB 等现有流处理系统相比,RisingWave 在两个主要方面脱颖而出:易用性和成本效益。这得益于它 PostgreSQL 式的交互体验和 Snowflake 式的架构设计(即存储和计算解耦)。

易用性

  • 易于学习

    RisingWave 采用 PostgreSQL 风格的 SQL 作为交互语言,使用户能够以使用 PostgreSQL 数据库的方式深入了解流处理。

  • 易于开发

    RisingWave 是一个关系型数据库,允许用户将流处理逻辑分解为更小型、可管理、堆叠的物化视图,从而无需面对复杂的计算程序。

  • 易于集成

    RisingWave 集成了各种云系统和 PostgreSQL 生态,拥有丰富而广泛的生态系统,可直接集成到您现有数据基础设施中。

成本效益

  • 高效率复杂查询

    RisingWave 将内部状态持久化在 S3 等远程存储中,用户可以在生产环境中放心、高效地执行复杂的流式查询(例如连接数十个数据流),而无需担心状态大小。

  • 透明动态扩展

    RisingWave 的状态管理机制可实现近乎瞬时的动态扩展,而不会中断服务。

  • 即时故障恢复

    RisingWave 的状态管理机制还能在数秒内从故障中恢复,无需等待几分钟甚至几小时。

下图简单概括了 RisingWave 和 Flink 的主要功能差异。有关其差异的更多详细信息,请参阅 RisingWave vs. Apache Flink:如何进行选择?

RisingWave vs Flink

RisingWave 的局限性

RisingWave 并不能解决所有数据工程障碍,它有自己的局限性:

  • 没有可编程接口

    RisingWave 不提供 Java 和 Scala 等语言的底层应用接口,用户也无法手动管理内部状态(除非你想黑进去!)。如需使用 Java、Scala 和其他语言编码,请考虑使用 RisingWave 的用户定义函数(UDF)。

  • 不支持事务处理

    RisingWave 不支持事务型工作负载,因此无法替代专用于事务处理的操作型数据库。不过,它支持只读事务,可确保数据的新鲜度和一致性。它还能理解上游数据库变更数据捕获(CDC)的事务语义。

生产中的使用案例

和其他流处理系统一样,RisingWave 的主要用例包括监控、警报、实时看板报告、流式 ETL(提取、转换、加载)、机器学习特征工程等。已在金融交易、制造、新媒体、物流、游戏等领域得到应用。请参阅 使用案例

查看架构
查看源代码