SQL 审核工具深度体验(一): CloudDM vs Archery vs Yearning vs Bytebase
· 阅读需 17 分钟
数据库变更是日常开发和运维里绕不开的活。为了降低线上环境出故障的风险,通常会配合工单系统来发布变更,这样流程可控,也能减少低级错误。市面上能选的工具不少,有开源的,也有商业化的。这次我挑了四款比较常见的:Yearning、Archery、Bytebase,还有 CloudDM,从工单场景出发做了一轮体验和横向对比,给大家一些参考。
测评方法
不同工具的功能侧重点不一样,如果各方面都测,反而看不出差别。所以我主要关注最常见的两个场景:业务上线和数据订正。测试用的版本主要是社区版/免费版。
业务上线
功能上线通常包括两部分:程序包和数据库脚本。程序包这块一般由 CI/CD 流程接管,这里不展开。数据库变更脚本经常包括一条或多条需要执行的 SQL 语句,以 DDL 为主。在这个场景下,我准备了两个测试点:
- DDL 需要符合一定 的规则;
- 工单里可以处理 DDL/DML 混合语句。
-- 添加表
create table biz_model (
id bigint NOT NULL AUTO_INCREMENT,
created_time datetime COMMENT 'Creation timestamp',
updated_time datetime COMMENT 'Last update timestamp',
content varchar(50) NOT NULL COMMENT 'biz body',
PRIMARY KEY (id)
);
-- 初始化数据
insert into biz_model (id, created_time, updated_time, content)
values (1, '2025-05-30 14:02:39', '2025-05-30 14:02:39', '... content1 ...' );
insert into biz_model (id, created_time, updated_time, content)
values (2, '2025-05-30 14:02:39', '2025-05-30 14:02:39', '... content2 ...' );
insert into biz_model (id, created_time, updated_time, content)
values (5275, '2025-05-30 14:02:39', '2025-05-30 14:02:39', '... content3 ...' );
-- 修改老表
alter table admin_user
add biz_id varchar(50) NOT NULL COMMENT 'biz id';
数据订正
数据订正也比较常见,有时候是有 bug,有时候是运维需要。重点是生产库不能停,在持续写入的情况下修改数据有一定概率会失败。因此在这个场景中,我准备了三个测试点:
- 订正需要修复的数据
- 出于某些原因,数据订正语句可能会报错
- 批量化更新大 量数据
-- 修复一条数据
update biz_model set content = 'abc' where id = 1;
-- 修复一条数据(模拟 SQL 报错)
update biz_model set content = null where id = 5275;
-- 批量更新数据
update admin_user set biz_id = 0 where created_time > '2025-01-01';
对比一览
先上对比表,直接看测试体验的结果:
| 分类 | 功能 | CloudDM | Archery | Yearning | Bytebase |
|---|---|---|---|---|---|
| 数据源 | 可管理的数据源 | 18 种 | 14 种 | 1 种 | 24 种 |
| 支持审核的数据源 | 18 种 | 3 种 | 1 种 | 7 种 | |
| 查询控制台 | ✔️ | ✔️ | ✔️ | ✔️ | |
| 工单递交 | DDL/DML 混合语句 | ✔️ | ✔️ | ✖️ | ✔️ |
| 分析查询计划 | ✖️ | ✔️ | ✔️ | ✔️ | |
| SQL 审核 | SQL 规则 | 60+ | 10+ | 40+ | 100+ |
| 自定义规则 | ✔️ | ✖️ | ✖️ | ✖️ | |
| 规则参数配置 | ✔️ | ✖️ | ✔️ | ✔️ | |
| 审核分级 | ✔️ | ✔️ | ✖️ | ✔️ | |
| 禁止递交问题工单 | ✔️ | ✔️ | ✔️ | ✔️ | |
| 提示所在行 | ✔️ | ✖️ | ✖️ | ✔️ | |
| SQL 审核结果回溯 | ✔️ | ✔️ | ✖️ | ✔️ | |
| 审批流程 | 内置审批 | ✔️ | ✔️ | ✔️ | 收费 |
| 自定义审批流 | ✖️ | ✔️ | ✔️ | 收费 | |
| 流程引擎 | 内置 钉钉 飞书 企业微信 | 内置 | 内置 | 内置 | |
| 工单执行 | 执行方式 | 立即/定时/手动 | 立即/定时/手动 | 立即/定时 | 立即/定时 |
| 事务模式 | 可选 | 不支持 | 不支持 |
