关于 risingwave-best-practices
risingwave-best-practices 是用于审查 RisingWave 设计和 SQL 的技能,按 Schema、物化视图、流式 SQL、Sink 和性能整理 14 条规则,并说明问题影响与修正方式。
主要功能
- 01覆盖 14 条设计与性能规则
- 02检查 Schema 与数据源选择
- 03审查物化视图及流式 SQL
- 04检查 Sink 配置与输出行为
- 05评估共享数据源、索引和并行度
适用场景
- 01审查 RisingWave Schema 设计
- 02检查物化视图定义与创建方式
- 03评估流式 SQL 和 CDC 模式
- 04排查 Sink 配置与性能问题
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ risingwavelabs/ agent-skills --skill risingwave-best-practices安装后在 Claude Code 中输入/risingwave-best-practices确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdrules/_sections.md_template.mdmv-background-ddl.mdmv-emit-on-window-close.mdmv-no-order-by.mdperf-indexes-on-mv.mdperf-parallelism.mdperf-shared-source.mdschema-append-only.mdschema-source-vs-table.mdschema-watermark.mdsink-force-compaction.mdsink-snapshot-false.mdstream-cdc-pattern.mdstream-temporal-join.mdstream-tumble-windows.md详细介绍
RisingWave 最佳实践
涵盖架构设计、流式 SQL 模式、Sink 配置和性能的 14 条规则。
如何应用
- 根据下方的评审类型,阅读相关规则文件
- 将规则应用于待评审的设计或代码
- 说明违规项及其影响和修复方法
评审流程
架构评审
- schema-source-vs-table.md — SOURCE 与 TABLE 的选择
- schema-append-only.md — 对不可变流使用 APPEND ONLY
- schema-watermark.md — 水印的位置
物化视图评审
- mv-emit-on-window-close.md — 对窗口查询使用 EOWC
- mv-background-ddl.md — 对大型表使用非阻塞 DDL
- mv-no-order-by.md — MV 中的 ORDER BY
流式 SQL 评审
- stream-tumble-windows.md — 时间窗口函数
- stream-cdc-pattern.md — 两步 CDC 设置
- stream-temporal-join.md — 将流与 CDC 表连接
Sink 评审
- sink-snapshot-false.md — 防止回填产生重复数据
- sink-force-compaction.md — 减少输出量
性能评审
- perf-shared-source.md — 共享 Kafka source
- perf-indexes-on-mv.md — 在物化视图上创建索引
- perf-parallelism.md — 调整 MV 并行度
规则类别
| 优先级 | 类别 | 影响 | 前缀 | 规则 |
|---|---|---|---|---|
| 1 | 架构设计 | CRITICAL / HIGH | schema- | 3 |
| 2 | 物化视图 | CRITICAL / HIGH | mv- | 3 |
| 3 | 流式 SQL | CRITICAL / HIGH | stream- | 3 |
| 4 | Sink 配置 | HIGH / MEDIUM | sink- | 2 |
| 5 | 性能 | HIGH / MEDIUM | perf- | 3 |
快速参考
架构:
schema-source-vs-table— CDC 需要 TABLE;SOURCE 用于仅追加流schema-append-only— APPEND ONLY 可启用优化;用于不可变事件数据schema-watermark— 在数据摄取点(source/table)定义水印,而不是在 MV 中定义
物化视图:
mv-emit-on-window-close— 使用 EOWC 获取最终窗口结果;默认会发出部分更新mv-background-ddl— 在大型表上创建 MV 之前设置 SET BACKGROUND_DDL=truemv-no-order-by— MV 中的 ORDER BY 仅在创建时生效,不影响后续结果
流式 SQL:
stream-tumble-windows— 流式窗口使用 TUMBLE/HOP/SESSION,而不是 date_truncstream-cdc-pattern— 两步流程:CREATE SOURCE(共享)→ CREATE TABLE ... FROM sourcestream-temporal-join— 使用 FOR SYSTEM_TIME AS OF 将流式 source 与 CDC 表连接
Sink:
sink-snapshot-false— 向现有 MV 添加 Sink 时,始终使用snapshot = falsesink-force-compaction— 对高基数 upsert Sink 使用force_compaction = true
性能:
perf-shared-source— 从一个 Kafka topic 创建多个 MV 时应使用共享 sourceperf-indexes-on-mv— 在 WHERE/JOIN 谓词中使用的 MV 列上创建索引perf-parallelism— 提高高吞吐量 MV 的并行度
评论
支持 Markdown