本文介绍结构设计的基础配置项、检测点、因子和动作和模板库,以及如何修改默认审批模板和新增规则。
背景信息
结构设计工单一般会涉及到多个实例,例如测试环境中进行结构设计,生产环境中发布这样的经典流程。因此结构设计安全规则中的基础配置项、设计规则、风险识别规则会使用变更基准库(测试环境中的库)关联的安全规则。
设计规则包含保存编辑,校验表头、保存编辑,校验字段、保存编辑,校验索引。如下图所示:
风险识别规则包含控制新建表风险、控制修改字段风险、控制修改索引风险、控制SQL执行风险。如下图所示:
而审批流程则使用生产环境中数据库的安全规则。例如:某个结构设计工单发布到B数据库,则使用B实例的安全规则。
基础配置项
结构设计有多个基础配置项:
开启非对等发布:结构设计一直以来都只能对等发布,即A表的变更内容只能发布到另一个库的A表中。开启非对等发布后,允许用户打破表名的限制,任意指定发布目标表。
警告风险较大,仅限特殊场景使用,请谨慎开启。
研发流程:结构设计安全规则中最重要的配置,它决定了一个结构设计工单整个流程的所有环节。配置内容说明如下:
配置内容
说明
步骤
分为设计和发布两种节点。
设计节点:默认节点,无法移除。决定结构变更任务在哪一种环境下设计。
发布节点:在设计阶段完成变更后,将流程推进到发布阶段发布变更。您可添加多个发布节点。
节点名称
自定义节点的名称,最大支持10个字符。
库环境
决定当前节点在哪个环境下执行。
执行策略
立即:任务在审批通过之后会立即执行。
定时:可指定任务的发布时间。(在发布时间之前通过审批,任务会在指定的时间执行,否则发布任务被中断,不会执行。)
可回退
决定发布任务是否支持回退到设计节点。
可跳过
决定是否可跳过当前步骤。
锚点
标识了工单编辑的冻结点,即锚点所在步骤成功发布之后,无法再对表结构进行编辑,工单变成已发布状态。
操作
可以根据需求移除发布节点。
字段类型配置:配置新增字段中允许使用的数据类型。
索引类型配置:配置新增索引中允许使用的数据类型。
建表模板:配置建表模板,新建表将默认加载配置好的模板。(建表模板不是强制性规范,用户建表时可根据实际情况进行修改。)
禁止修改原有字段数据类型:决定在变更原表时,是否禁止修改原有字段的数据类型。
禁止删除原有字段:决定在变更原表时,是否禁止删除原有字段。(删除原有字段风险较大,建议开启。)
禁止原有字段重命名:决定在变更原表时,是否禁止重命名原有字段。(重命名原有字段风险较大,建议开启。)
表字符集许可配置:配置新建表时允许使用的字符集范围。(如:utf8、utf8mb4。)
结构设计默认审批模板:当审批规则校验检测点未配置审批规则时,结构设计工单默认采用该审批模板。您可以通过切换审批模板来更改默认审批模板的审批流程。具体操作,请参见修改默认审批模板。
已发布时工单自动推进到结束状态:开启后,研发流程中锚点所在节点成功执行变更后,系统会自动将工单推进到结束状态。(要求锚点必须在研发流程中最后一个发布节点上。)
检测点
结构设计有两个流程:
保存编辑流程:对应如下三个检测点,依次对表头、字段、索引进行相关规范的检测。
保存编辑,校验表头
保存编辑,校验字段
保存编辑,校验索引
变更执行流程:对应如下五个检测点,前四个检测点用来识别DDL变更的风险,最后一个检测点用来指定每一个风险对应的审批流程。
控制新建表风险
控制修改字段风险
控制修改索引风险
控制SQL执行风险
审批规则校验
以上流程中均内置了大量的安全规则模板,您可以直接使用这些模板,也可以自定义新增规则。具体操作,请参见新增规则。
因子和动作
因子:因子是系统内置变量,可用来获取安全规则校验的上下文信息,如获取SQL类型、影响行数等。因子全部以
@fac.
开头,后接因子名称。每个模块的不同检测点均提供不同因子,结构变更中提供因子的说明请参见下表:因子名
说明
@fac.table_kind
工单中编辑的表的种类。值:
new:新建表
old:原有表
@fac.column_kind
表结构里面字段的种类。
new:新增字段
old:原有字段
@fac.xxxx_old
从原有字段和索引中获取值进行对比。
@fac.column_is_primary
判断字段是不是主键列。
true:主键中的列
false:非主键中的列
@fac.column_type_support_default
判断当前字段的数据类型是不是支持设置默认值。
true:支持
false:不支持
例如:
CHAR
类型支持设置默认值,TEXT
类型不支持。@fac.index_kind
表结构中索引的种类。
new:新增索引
old:原有索引
@fac.index_column_count
索引包含的字段个数。
@fac.change_type
DDL执行的数据库识别出的字段、索引变更类型。
add:新增
modify:修改
delete:删除
@fac.altered_table_size
被修改表的大小。(单位:MB)
@fac.online_execute
识别变更是否能ONLINE执行。
true:ONLINE
false:非ONLINE
@fac.change_risk_level
变更风险级别。
high:高风险
middle:中风险
low:低风险
@fac.env_type
环境类型,值是环境标识。如:
DEV
、PRODUCT
。更多环境类型,请参见更改实例环境类型。动作:动作是满足
if
条件之后系统执行的行为,比如:禁止提交工单、选择工作流、允许执行、拒绝执行等,这些动作表达了安全规则的主要目的。动作全部以@act.
开头,后接动作名称。每个模块的不同检测点均提供不同动作,结构设计中提供动作的说明请参见下表:动作名
说明
@act.block_submit
在保存表阶段使用,阻断提交并显示错误信息。用法:
@act.block_submit '阻断的理由'
。@act.show_warning
在保存表阶段使用,显示警告信息(不阻断提交)。用法:
@act.show_warning '警告的内容'
。@act.mark_middle_risk
在风险识别阶段使用,标记为中风险。用法:
@act.mark_middle_risk '理由'
。@act.mark_high_risk
在风险识别阶段使用,标记为高风险。用法:
@act.mark_high_risk '理由'
。@act.forbid_submit_publish
在设置审批流程阶段使用,阻断变更执行。用法:
@act.forbid_submit_publish '理由'
。@act.do_not_approve
指定审批模板ID。详情请参见设置审批流程。
@act.choose_approve_template
@act.choose_approve_template_with_reason
模板库
安全规则提供了大量的规则模板可直接选择启用,也可以在模板基础上按照实际需求自行调整启用。结构变更中的模板如下所示:
检测点 | 模板 |
保存编辑,校验表头 | 新建表,禁止表名为关键字 |
新建表,限制表名长度 | |
新建表,表必须填写备注 | |
新建表,限制表名全部小写 | |
新建表,必须要有主键(PK) | |
新建表,必须要有唯一键(PK/UK) | |
索引数量合理性约束(过多时警告用户) | |
新建表,校验某些字段是否存在 | |
保存编辑,校验字段 | 新增字段,禁止字段名为关键字 |
新增字段,字段必须填写备注 | |
新增字段,限制字段名大小写 | |
原有表新增非空字段必须明确指定默认值 | |
原有字段,可空改为非空必须明确指定默认值 | |
限制新增主键字段必须是整数类型 | |
新建表要求所有字段不能为可空 | |
新增字段,限制char类型长度 | |
新增字段,限制varchar类型长度 | |
保存编辑,校验索引 | 新增索引,禁止索引名为关键字 |
新增索引,限制索引名大小写 | |
新增索引,限制Unique索引名格式 | |
新增索引,限制Normal索引名格式 | |
新增索引,限制FullText索引名格式 | |
新增索引,限制Spatial索引名格式 | |
限制新增主键字段个数 | |
限制新增索引字段个数 | |
控制新建表风险 | 控制逻辑表分表数量 |
控制表主键 | |
控制表索引总数量 | |
控制修改字段风险 | 控制删除字段 |
控制新增字段数据类型 | |
控制重命名字段 | |
控制修改字段数据类型 | |
控制修改索引风险 | 控制删除主键 |
控制删除索引 | |
控制主键更改为索引 | |
控制修改主键包含列 | |
控制修改普通索引 | |
控制新增索引类型 | |
控制SQL执行风险 | 控制核心实例风险 |
控制表存储引擎 | |
控制锁表/大表变更风险 | |
审批规则校验 | 禁止执行任何DDL变更到数据库 |
禁止执行任何DDL变更到生产库 | |
设置测试库执行DDL变更免批 | |
设置生产环境按风险级别审批 |
修改默认审批模板
- 登录数据管理DMS 5.0。
单击控制台左上角的图标,选择
。说明若您使用的是非极简模式的控制台,在顶部菜单栏中,选择
。在安全规则页面中,单击目标规则集右侧操作列中的编辑。
在详情页面左侧的导航栏中,单击结构设计。
在结构设计页签中,单击基础配置项。
单击结构设计默认审批模板右侧操作列的编辑。
在弹出的编辑配置项对话框中,单击切换审批模板。
选择目标模板名称右侧操作列的选择。
说明您也可以单击重置为免审批,使工单跳过审批步骤。
单击提交。
新增规则
- 登录数据管理DMS 5.0。
单击控制台左上角的图标,选择
。说明若您使用的是非极简模式的控制台,在顶部菜单栏中,选择
。在安全规则页面中,单击目标规则集右侧操作列中的编辑。
在详情页面左侧的导航栏中,单击结构设计。
在结构设计页签中,单击操作右侧的新增规则。
在新增规则 - 结构设计对话框中,设置如下参数:
单击提交。
新增的规则默认处于已禁用状态,单击规则右侧操作列中的启用。
在弹出的对话框中单击确认。