前文
先前我对CloudQuery做了调研,后面我发现SQLE也有异曲同工之效,有心要对它们做一个对比。CloudQuery市 场定位成一体化数据库管控平台,而SQLE 则定义为支持多元数据库的 SQL 质量管理平台,两者产品相似度有重合交叠,孰利孰弊?
本文从业务场景、安装、使用、产品功能体验比较SQLE与CloudQuery。
业务场景
假设一个公司有多套数据库产品,mysql系列有mysql5.1 、mysql5.6、mysql5.7、mysql8.0,PG系统有PG9,PG12、PG14、PG16等等,还有Oracle系列Oracle11G、Oracle12C、Oracle19C等等。
企业管理希望对这个数据库基础设施资源通过 企业化管理的方式管理起来,技术人员要获取资源,必须得到业务管理人员审批,技术人员做了什么事情,业务管理人员查看日志可以知道。另外对多元数据库的管理,传统的解决方案是每个数据库招一个DBA,多套数据库需要多个DBA,消耗大,成本高。生产管理上,缺乏一个清晰、统一的流程去遵过,很容易出大错。
现在需要一个产品可以提升企业管理能力,并且解放DBA双手。本质上这个质量管理平台产品属于SQL审计工具,应该具备以下的审计功能。通过 “建立规范、事前控制、事后监督、标准发布” 的方式,为企业提供 SQL 全生命周期质量管控能力,规避业务 SQL 不规范引起的生产事故,提高业务稳定性,也可推动企业内部开发规范快速落地。
过程审计:分析实施规程和实际做法,确保数据操作目标、策略、标准和指导方针和预期结果一样
规范审计:评估现有标准和规程是否适当,是否与业务要求和公司标准一致。
合规审计: 检索和审阅机构相关提交要示,验证机构是否符合企业管理和IT部门的管理要求

SQlE安装
安装sqle需要rpm的安装介质与MySQL的用户权限,在MySQL上面先创建两个数据库dms和sqle。
CREATE DATABASE dms CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE sqle CHARACTER SET utf8 COLLATE utf8_general_ci;
执行RPM介质进行安装,并修改配置启动服务
[root@server128 ~]# mkdir /opt/sqle
[root@server128 ~]# rpm -ivh sqle-ce-3.2310.0.qa.el7.x86_64.rpm --prefix=/opt/sqle
Preparing... ################################# [100%]
Updating / installing...
1:sqle-2ab6c3fa2eea57721343b2f9cec2################################# [100%]
Created symlink from /etc/systemd/system/multi-user.target.wants/sqled.service
to /usr/lib/systemd/system/sqled.service.
Created symlink from /etc/systemd/system/
multi-user.target.wants/dms.service to
/usr/lib/systemd/system/dms.service.
-------------------------------------------------------
---------------------------------------------------------------------------
| To start the service, please build /opt/sqle/etc/config.yaml, then run script
./scripts/init_start.sh in
the /opt/sqle directory |
| Example: 1: vi /opt/sqle/etc/config.yaml 2: sh /opt/sqle/scripts/init_start.sh
----------------------------------------------------------
------------------------------------------------------------------------
我的配置如下 ,主要是dms和sqle的配置
dms:
id: 1
api:
addr: 0.0.0.0
port: 7601
service:
database:
username: root
password: xxxxxxx
host: 127.0.0.1
port: 3306
database: dms
debug: true
cloudbeaver:
enable_https: false
host: 172.41.134.5
port: 8978
admin_user: administrator
admin_password: 123456
sqle:
id: 1
dms_server_address: http://127.0.0.1:7601
api:
addr: 127.0.0.1
port: 10000
enable_https: false
cert_file_path: './etc/cert.pem'
key_file_path: './etc/key.pem'
secret_key:
service:
auto_migrate_table: true
debug_log: false
log_path: './logs'
log_max_size_mb: 1024
log_max_backup_number: 2
plugin_path: './plugins'
enable_cluster_mode:
database:
mysql_host: '127.0.0.1'
mysql_port: '3306'
mysql_user: 'root'
mysql_password: 'xxxxxx'
mysql_schema: 'sqle'
7601的端口进行访问

总结对比
- 安装方面,cloudquery显得比较丝滑一点,原因cloudquery使用docker,能够自动化马上自动化,下载介质后,一步
./deploy.sh install即可。而sqle安装方面显得不能马上到位,最后还要步行1公里。sqle已经支持rpm的安装,rpm之后还在修改配置文件,配置文件再执行脚本进行库的安装。后面发现SQLE也支持docker的安装,这里当两者可以打平手。 - 作为中间管理平台而言,sqle是轻量级解决方案,cloudquery是重量级解决方案。笔者反复校验对比,个人认为sqle偏重业务流程管理,cloudquery亦重业务流程管理,但是cloudquery考虑到 数据源的状态数据收集,它有clickhouse、PG、redis、zookeeper这些组件。笔者的试验,至少16G才能够运行cloudquery起来,而sqle只需要8G就可以正常运行。
- 支持的数据源,目前来看sqle支持的数据源不如cloudquery的多,sqle的社区版只支持一个MySQL。作为体验者,会感受体验的功能不够。
- 社区版需要额外安装cloudbeaver,cloudbeaver是一个Web版本的数据库管理工具,非常费解sqle默认没有安装这个,个人认为它是必备功能,安装后就有。
- sqle对比cloudquery有它的亮点,因为小巧铃珑,它更注重工单和流程交互方面。对工作流标准化更苛刻,化解了在沟通和进度追踪上的难题,从而提升了上线效率。并且可以通过与飞书、钉钉等多种消息通道的对接,及时了解更新进度,减少了沟通交流的成本。
- 另外质量反馈方面,假如客户端 提交一个质量差的SQL,sqle会反馈出问题所在及相应的解决方案。据悉SQLE质量规则库目前已经拥有规则700条左右。
- RBAC用户角色权限管理上,SQLE定义的模板角色不如CQ丰富,但是感觉上简洁易明,毕竟主要用途是来用SQL审核,提示语工单之类指示性强。
- 不止明面上的SQL,SQLE也支持Mybatis的XML文件提交,这意味着SQLE也可以对应用框架的数据访问层进行质量监控。
总的来说,SQLE综合来看是不可多的SQL质量审核产品,可以值得一试。感觉cloudquery以后会走数据库智能运维的方向,以后大概率会加强流量、延迟、错误、饱和度方面的监控,而SQLE会垂直往SQL审计的方面深一点!




