查看原文
其他

适用于 MySQL 的 Schema 审核策略

Candy Bytebase 2022-12-19

Bytebase 是一款开源数据库工具,它面向整个研发组织设计,旨在帮助 DBA 和应用开发者更安全、更高效地管理应用开发生命周期中的数据库操作 (Database DevOps)

近两年,像管理代码一样管理数据库变更(数据库代码化)的理念被加速地应用到各种数据库工具中。但是,在代码管理领域已经很成熟的代码质量检测工具,在数据库领域却有待发展。
Bytebase 作为数据库代码化理念的开拓者,希望能通过开发工具帮助 DBA 和应用开发者改善编写和使用 SQL 的体验。
本文将介绍 Bytebase v1.1.1 的新功能 -  schema 审核策略,它可以帮助 DBA 和应用程序开发人员编写出高质量的 schema 变更语句。

Schema 审核策略是什么

Schema 审核策略是由一组检查 SQL 语句质量的规则组成。DBA 可以通过 Bytebase 为每一个环境配置不同的 schema 审核策略在 schema 变更被执行之前,Bytebase 会根据配置的schema 审核策略自动检查 SQL 语句如果有不符合 schema 审核规则的 SQL 语句,Bytebase 会以警告或者错误信息的方式提示用户,并暂停正在执行的 schema 变更

目前,Bytebase schema 审核策略支持 MySQL 和 TiDB ,接下来我们会增加对 PostgreSQL 的支持。


包含哪些规则

在 Bytebase v1.1.1 中,schema 审核策略包含了 6 大类 15 条规则下面依次介绍这些规则。

命名约定

  • 表名命名规则

  • 列名命名规则

  • 索引命名规则

  • 外键命名规则

  • Unique 索引命名规则

SQL 语句

  • 禁止使用 「SELECT *」

  • 必须有 「WHERE」查询条件

  • 禁止用「%」作为 Like 的前缀通配符进行匹配

在日常工作中,我们听说过很多由低质量 SQL 语句导致数据库性能低下的故事,有的甚至还导致数据库暂停了服务。我们提供了这 3 条规则来防止这类常见问题的出现。

  • 每个表必须要有主键

在关系数据库中,没有主键的表很难识别某一条特定记录。为此,我们提供了一条规则来避免这种情况的出现。

Schema

  • 向后兼容检测

开发人员经常容易引入和当前代码不兼容的 schema 变更,为此很多工程组织将 schema 变更必须向后兼容作为一条标准。为防止引入这类常见错误,Bytebase 提供了内置的向后兼容检查。

  • 为表指定必须含有的列
  • 禁止任何一个列的值为 NULL

数据库引擎

  • 存储引擎必须是 InnoDB

从 MySQL 5.5 开始,InnoDB 就成为其默认的存储引擎


如何配置

下文以给生产环境配置 schema 审核策略为例,介绍了配置 schema 审核策略的具体步骤。

  1. 在「环境」面板选择环境「Prod」,然后将页面滚动到底部,点击「配置审核策略」

  1. 选择适用于生产环境的策略模板,并点击「下一步」。

Bytebase 根据行业最佳实践总结了适用于生产环境和开发环境的 schema 审核策略模板。用户可以直接将模板应用到对应的环境中,也可以基于模板创建符合自己业务的新策略。
  1. 完成规则调整后点击「下一步」

4. 浏览经过调整的 schema 审核策略,点击「确认并添加」即可完成配置。


完成配置后,可以看到如下所示的页面,通过这个页面可以查看和修改已配置的 schema 审核策略。

如何使用

如果你创建的 schame 变更会应用到配置了 schema 审核策略的环境中, Bytebase 在执行变更前会自动检查相关 SQL 语句。如果检测到与 schema 审核策略不符的 SQL 语句,会以警告或者错误信息的方式提示用户,并暂停对应 issue 的执行,如下图所示。

点击「! SQL 审查」可以查看更详细的 SQL 语句检查结果,如下图所示。


如果大家有希望支持的审核规则,欢迎向 我们 (https://github.com/bytebase/bytebase/issues) 反馈。

Bytebase 1.1.1 - 2022.6.9
Bytebase 支持 --pg 背后的故事
Postgres or PostgreSQL?
BBer | 乘风破浪的 Danny 入选创业邦 U30


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存