暂无图片
暂无图片
6
暂无图片
暂无图片
暂无图片

RisingWave 2.5 发布!

Doc 团队
来源|RisingWave 官网

我们非常高兴地宣布 RisingWave v2.5 正式发布!此次更新增强了 Apache Iceberg 集成、优化了物化视图回填与 Join 处理机制,新增多项 SQL 功能,并带来其他一系列重要改进,全面提升系统性能与易用性。

本文将介绍 v2.5 的一些重点功能。如需了解 v2.5 的完整更新内容,请查看完整版本说明[1]

增强 Apache Iceberg 集成

此次版本进一步增强与 Apache Iceberg 集成,简化了相关配置,并增强数据管理和处理能力。

  • 数据压缩合并(Compaction):

    RisingWave 支持在 Iceberg table engine[2] 和 Iceberg sink[3]  中使用自动压缩功能。只需在表或 Sink 配置中添加 enable_compaction=true 等选项,即可启用定期压缩和快照过期机制。该关键维护操作会将大量小文件合并为更高效的大文件,显著提升读取性能,同时无需依赖 AWS Glue 或 Spark 等外部服务。

  • 自定义数据分区策略:

    建表时,通过 `partition_by`[4] 子句可以定义数据的分区策略,从而实现更合理的数据组织结构,便于高效的分区裁剪和快速查询。

  • 支持加载外部配置文件:

    使用 `enable_config_load`[5] 选项,可以从主机环境中加载 Iceberg 相关参数(如仓库凭证等),适用于 Iceberg 的 Sink, Source, Connection, Table engine, 有助于统一管理敏感信息与复杂配置。

更多详细内容,请参阅:在 RisingWave 中使用 Iceberg[6]


物化视图回填顺序控制

在 CREATE MATERIALIZED VIEW
 的 WITH
 子句中支持使用 backfill_order
 选项,精细控制物化视图的回填顺序。该功能旨在缓解生产环境中因回填顺序不当而产生的性能瓶颈,例如 Join amplification 和多余的更新操作。

通过在 WITH
 子句中指定 backfill_order = FIXED(...)
,并使用 ->
 表示依赖关系,可确保左侧表回填结束后,右侧表再开始回填。

create table fact(k int, d1 int, d2 int, v int);
create table dim(k int);
create table dim2(k int);

-- 先回填 dim 和 dim2,再回填 fact
explain (backfill, format dot) create materialized view m1 with (backfill_order=FIXED(dim->fact, dim2->fact)) as
select fact.v from fact join dim on fact.d1 = dim.k join dim2 on fact.d2 = dim2.k;

此外,还可以通过 DESCRIBE FRAGMENTS
命令查看 fragment 之间的依赖图,并通过 rw_catalog.rw_fragment_backfill_progress
 查看回填进度。

更多详细内容,请参阅:回填行为与控制[7]


隔离处理 High-amplification joins

在流式查询中,High-amplification joins 可能拖慢整个处理链路。为了解决这一问题,RisingWave v2.5 引入了 Unaligned joins,将存在性能瓶颈的 Joins 与下游算子解耦。

SET streaming_enable_unaligned_join = true;

启用后,系统会自动在 Join 算子之后插入一个 Buffer。Join 的输出会先写入该 Buffer,使得 Checkpoint barriers 能立即通过,而不必等待下游慢速算子处理数据,提升整体流畅度。

这种做法的代价是端到端延迟会因缓冲略有增加。虽然 Unaligned join 优化了屏障延迟,但面对高数据量时,仍可能需要扩容集群。同时建议监控缓冲区中的数据滞后情况。

更多详细内容,请参阅:隔离 High-amplification joins[8]


用 SQL 函数生成文本嵌入向量

RisingWave v2.5 支持通过 SQL 函数 openai_embedding
 生成文本向量,从而直接在数据库内实现语义搜索、推荐系统等 AI 场景。

openai_embedding ( api_key constant text, model constant text, input text ) → real[]

结合嵌入向量和 RAG(Retrieval-Augmented Generation)技术,可以在 RisingWave 中存储并检索嵌入向量,并将最相关的上下文内容反馈给大模型,构建智能查询工作流。

更多详细内容,请参阅:openai_embedding 函数[9]在 RisingWave 上构建 RAG 系统[10]


ALTER DEFAULT PRIVILEGES

要在某个 Schema 下创建或删除表/物化视图,用户必须拥有该 Schema 的 usage
 和 create
 权限。

若希望用户可以自动获得新 Schema 的相关权限,或操作其他用户创建的对象,可以使用默认权限(Default privileges)功能:

ALTER DEFAULT PRIVILEGES
    [ FOR USER  target_user [, ...] ]
    [ IN SCHEMA schema_name [, ...] ]
    abbreviated_grant_or_revoke

默认权限相当于一个自动权限模板,只适用于新创建的对象。已存在的 Schema 和表仍需手动授权。

更多详细内容,请参阅:ALTER DEFAULT PRIVILEGES[11]


加强版 WINDOW 子句

WINDOW
子句允许命名一个窗口,并在同一查询中复用多次,从而提升 SQL 可读性和维护性。

例如,在一个窗口中同时计算 sum
 和 row_number

  • 旧写法(每个函数重复定义窗口):
SELECT
    sum(col2) OVER (PARTITION BY col1 ORDER BY col2),
    row_number() OVER (PARTITION BY col1 ORDER BY col2)
FROM t;

  • 新写法(使用 WINDOW
     复用定义):
SELECT
    sum(col2) OVER w,
    row_number() OVER w
FROM t
WINDOW w AS (PARTITION BY col1 ORDER BY col2);

WINDOW
将成为保留关键字,不能再直接用作未加引号的标识符(例如表的别名)。如有需要,请使用双引号 "window"
 进行引用。

更多详细内容,请参阅:命名窗口[12]


总结

以上只是 RisingWave 2.5 版本新增的部分功能,如果您想了解本次更新的完整列表,请查看更详细的发布说明[13]

如果您想提前了解下个月的版本及其新功能,请访问 RisingWave GitHub repository[14]

 参考资料
[1] 

完整版本说明: https://docs.risingwave.com/changelog/release-notes

[2] 

Iceberg table engine: https://docs.risingwave.com/iceberg/managed/iceberg-table-engine#compaction-for-iceberg-table-engine

[3] 

Iceberg sink: https://docs.risingwave.com/iceberg/byoi/write-to-iceberg#compaction-for-iceberg-sink

[4] 

partition_by
https://docs.risingwave.com/iceberg/managed/iceberg-table-engine#partition-strategy

[5] 

enable_config_load
https://docs.risingwave.com/iceberg/byoi/object-storage#s3-compatible-storage

[6] 

在 RisingWave 中使用 Iceberg: https://docs.risingwave.com/iceberg/overview

[7] 

回填行为与控制: https://docs.risingwave.com/sql/commands/sql-create-mv#backfill-behavior-and-controls

[8] 

隔离 High-amplification joins: https://docs.risingwave.com/processing/sql/joins#isolating-high-amplification-joins

[9] 

openai_embedding 函数: https://docs.risingwave.com/sql/functions/ai#openai-embedding

[10] 

在 RisingWave 上构建 RAG 系统: https://docs.risingwave.com/demos/rag-system-on-risingwave

[11] 

ALTER DEFAULT PRIVILEGES: https://docs.risingwave.com/sql/commands/sql-alter-default-privileges

[12] 

命名窗口: https://docs.risingwave.com/sql/functions/window-functions#named-window

[13] 

发布说明: https://docs.risingwave.com/release-notes/

[14] 

RisingWave GitHub repository: https://github.com/risingwavelabs/risingwave

关于 RisingWave 

RisingWave 是一款基于 Apache 2.0 协议开源的分布式流数据库,致力于为用户提供极致简单、高效的流数据处理与管理能力。RisingWave 采用存算分离架构,实现了高效的复杂查询、瞬时动态扩缩容以及快速故障恢复,并助力用户极大地简化流计算架构,轻松搭建稳定且高效的流计算应用。
RisingWave 始终聆听来自社区的声音,并积极回应用户的反馈。目前,RisingWave 已汇聚了近 200 名开源贡献者和 5000+ 名社区成员。全球范围内,单日有近千个 RisingWave 集群在生产环境中部署。

技术内幕

如何上手 RisingWave 👉 新手入门教程

RisingWave 中文用户文档上线,阅读更高效!

深入探索 RisingWave 中的高可用性与容错机制

深入理解 RisingWave 流处理引擎(三):触发机制

深入理解 RisingWave 流处理引擎(二):计算模型

深入理解 RisingWave 流处理引擎(一):总览

用户案例
视源股份(CVTE)IT 流计算应用历程
尘锋 SCRM 如何使用 RisingWave 实时打宽
RisingWave 在超百亿管理规模对冲基金公司中的应用
金融科技公司 Kaito 使用 RisingWave 实现实时智能化
龙腾出行如何通过 RisingWave 实现实时数据分析

RisingWave 助力乾象投资打造实时监控平台



👇 点击阅读原文立即体验 RisingWave

最后修改时间:2025-08-12 11:41:33
文章转载自RisingWave中文开源社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论