RisingWave:分布式SQL流数据库


RisingWave是一个分布式SQL流数据库,可以简单高效可靠地处理流数据。

在当今以数据为中心的世界中,流数据已经变得无处不在传统的批处理越来越不能满足业务的实时性要求。

RisingWave流数据库是用Rust编写的,并专门用于高效处理流数据。流数据库:重新定义流处理。兼容 PostgreSQL、高性能、可扩展、弹性且可靠。

为什么使用RisingWave ?
RisingWave 专门提供增量更新、一致的物化视图——一种表示流处理结果的持久数据结构。

  1. RisingWave 允许开发人员通过级联物化视图表达复杂的流处理逻辑,从而显着降低了构建流处理应用程序的复杂性。
  2. 此外,它允许用户直接在系统内保存数据,从而无需将结果传递到外部数据库进行存储和查询服务。

与Apache Flink、Apache Spark Streaming、ksqlDB等现有流处理系统相比,RisingWave凭借PostgreSQL式的交互体验和 Snowflake式的架构设计(即易用性和成本效率)在两个主要维度上脱颖而出。,解耦存储和计算)。


特点:

  • RisingWave是一个用Rust编写的流数据库,专门为高效处理流数据而设计,简化实时数据处理。
  • RisingWave采用共享存储架构,主存储为AWS S3,计算和存储解耦,提供即时故障恢复和动态扩展。
  • RisingWave支持从不同来源获取、动态处理和存储数据,可以与Kafka或IoT设备等集成,并提供与Postgres兼容的SQL层来与数据交互。

它简化了实时数据处理,提供了与 Postgres 兼容的 SQL 层来与数据交互。这消除了设置和管理单独流引擎的复杂性,并使数据处理变得简单、无缝。

与Postgres或MySQL等传统数据库不同:RisingWave在存储数据的同时不断处理流数据。

RisingWave采用“共享存储”架构,其中云原生存储AWS S3作为主存储,但处理在单独的节点上完成。这种计算和存储的解耦提供了即时故障恢复和动态扩展。这种架构避免了“无共享”方法中所需的备用替换系统的必要性。

使用方便

  • 简单易学
    • RisingWave 采用 PostgreSQL 风格的 SQL,使用户能够像操作 PostgreSQL 数据库一样深入进行流处理。
  • 开发简单
    • RisingWave 作为关系数据库运行,允许用户将流处理逻辑分解为更小的、可管理的、堆叠的物化视图,而不是处理大量的计算程序。
  • 易于集成
    • 通过与各种云系统和 PostgreSQL 生态系统的集成,RisingWave 拥有丰富而广泛的生态系统,可以轻松融入现有基础设施。

成本效益

  • 复杂查询效率高
    • RisingWave 将内部状态持久保存在 S3 等远程存储系统中,用户可以在生产环境中自信高效地执行复杂的流式查询(例如,加入数十个数据流),而无需担心状态大小。
  • 透明的动态缩放
    • RisingWave 的状态管理机制可实现近乎瞬时的动态扩展,而不会造成任何服务中断。
  • 即时故障恢复
    • RisingWave 的状态管理机制还允许它在几秒钟内(而不是几分钟或几小时)从故障中恢复。

RisingWave 的局限性
RisingWave 并不是解决所有数据工程障碍的灵丹妙药。它有其自身的一系列限制:

  • 无可编程接口
    • RisingWave 不提供 Java 和 Scala 等语言的低级 API,并且不允许用户手动管理内部状态(除非您想破解!)。对于使用 Java、Scala 和其他语言进行编码,请考虑使用 RisingWave 的用户定义函数 (UDF)。
  • 不支持事务处理
    • RisingWave 不适合事务工作负载,因此它不是专用于事务处理的操作数据库的可行替代品。但它支持只读事务,保证数据的新鲜度和一致性。它还理解上游数据库变更数据捕获 (CDC) 的事务语义。
  • 不适合临时分析查询
    • RisingWave 的行存储设计专为优化流处理性能而不是交互式分析工作负载而定制。因此,它不是 OLAP 数据库的合适替代品。然而,与许多 OLAP 数据库的可靠集成是存在的,并且协作使用 RisingWave 和 OLAP 数据库是许多用户的常见做法。