SQLE、SQM和PawSQL:企业级SQL审核平台的深度评测
前言
在上文PawSQL: 企业级SQL审核工具的新玩家中说到,市场上主流的SQL审核工具,Yearning、Archery、Bytebase的审核模块、爱可生的SQLE、云和恩墨的SQM等,在规则覆盖度、或是正确率等方面存在明显不足,导致企业在引入产品后难以进行落地;PawSQL通过设计理念和核心技术的突破性创新,推出了自己的企业级SQL审核平台。
规则覆盖度评测
为了提供直观的比较基础,我们简单地从规则数进行评价。我们从各个产品的最新文档或是DEMO环境获取了审核规则数最多的TOP5数据库类型。如下图所示,
由于Yearning、Archery和Bytebase的规则主要集中在DDL审核上,还难以称之为企业级的SQL审核平台,因此本文将重点放在SQLE、SQM和PawSQL三个企业级SQL审核产品的对比评测上。
SQLE:MySQL的审核专家
SQLE提供了154条针对MySQL的审核规则,以及对TDSQL for MySQL和OceanBase for MySQL的专门优化,显示出其在MySQL领域的专业性和深度。
SQM:Oracle的坚强后盾
SQM在Oracle数据库的审核上展现出了其强大的实力,提供了高达188条的审核规则。这一数字不仅体现了SQM对Oracle平台的深度支持,也反映了其在帮助企业应对复杂Oracle环境方面的能力;SQM为MySQL也提供了153条规则,说明它对MySQL也有非常好的规则覆盖度。
PawSQL:多种数据库审核的全能选手
与SQLE和SQM专注于特定数据库不同,PawSQL注重数据库类型支持的全面性和均衡性。PawSQL为MySQL、PostgreSQL、openGauss、Oracle和GoldenDB等多种数据库提供了大量的审核规则,规则数在各个数据库上都异常均衡,显示出其在多数据库环境中的优秀能力。PawSQL的优势在于能够为企业提供一致的审核体验,无论他们的数据库环境如何多样化。
审核正确性评测
由于SQLE、SQM和PawSQL三个产品在MySQL数据库上的规则数比较接近,我们都采用MySQL数据库的审核集进行评测。对于审核的对象,我们采用了TPC-H基准测试的8个建表语句和22个测试查询语句;我们采用离线审核的方式,以减少对环境的依赖。
DDL(建表语句)审核
下面是TPC-H基准测试的8个建表语句在三个平台上的审核结果。
SQM
SQLE
PawSQL
审核对比分析
可以看到,虽然SQLE和PawSQL的规则丰富度比SQM更好一些,但是三者在正确性方面都表现不错,SQLE和PawSQL出现的一个共同的误报问题,这是由于DDL外键/索引解析的错误导致的,案例如下:
CREATE TABLE ORDERS (
O_ORDERKEY INT NOT NULL,
...
KEY ORDERS_FK1 (O_CUSTKEY),
CONSTRAINT ORDERS_IBFK_1 FOREIGN KEY (O_CUSTKEY) REFERENCES CUSTOMER (C_CUSTKEY)
) ENGINE=INNODB
误告警率:在给出的12类SQL警告中,有4类为误告警,误告警率达到了33.3%,这对于SQL审核任务的准确性和效率构成了严重影响。
误告警率:SQLE给出的12类SQL警告中,有1类为误告警,误告警率接近10%,虽然比SQM低,但仍然对审核任务有一定的负面影响。
警告准确性:PawSQL给出20种SQL警告或提示,远超SQLE和SQM,PawSQL不仅关注SQL语句的规范性和正确性,还提供了性能优化的规则,并且对潜在的正确性问题(NPE重写,IN可空子查询可能导致结果集不符合预期)进行了提示,显示了其规则的精确性和深入分析SQL结构的能力。