

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

此次版本进一步增强与 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 可能拖慢整个处理链路。为了解决这一问题,RisingWave v2.5 引入了 Unaligned joins,将存在性能瓶颈的 Joins 与下游算子解耦。
SET streaming_enable_unaligned_join = true;
启用后,系统会自动在 Join 算子之后插入一个 Buffer。Join 的输出会先写入该 Buffer,使得 Checkpoint barriers 能立即通过,而不必等待下游慢速算子处理数据,提升整体流畅度。
这种做法的代价是端到端延迟会因缓冲略有增加。虽然 Unaligned join 优化了屏障延迟,但面对高数据量时,仍可能需要扩容集群。同时建议监控缓冲区中的数据滞后情况。
更多详细内容,请参阅:隔离 High-amplification joins[8]。

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]。

要在某个 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]。
完整版本说明: 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
enable_config_load
: https://docs.risingwave.com/iceberg/byoi/object-storage#s3-compatible-storage
在 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!




