結(jié)構(gòu)設(shè)計
本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業(yè)務(wù)造成影響,請務(wù)必仔細閱讀。
本文介紹結(jié)構(gòu)設(shè)計的基礎(chǔ)配置項、檢測點、因子和動作和模板庫,以及如何修改默認審批模板和新增規(guī)則。
背景信息
結(jié)構(gòu)設(shè)計工單一般會涉及到多個實例,例如測試環(huán)境中進行結(jié)構(gòu)設(shè)計,生產(chǎn)環(huán)境中發(fā)布這樣的經(jīng)典流程。因此結(jié)構(gòu)設(shè)計安全規(guī)則中的基礎(chǔ)配置項、設(shè)計規(guī)則、風(fēng)險識別規(guī)則會使用變更基準庫(測試環(huán)境中的庫)關(guān)聯(lián)的安全規(guī)則。
設(shè)計規(guī)則包含保存編輯,校驗表頭、保存編輯,校驗字段、保存編輯,校驗索引。如下圖所示:
風(fēng)險識別規(guī)則包含控制新建表風(fēng)險、控制修改字段風(fēng)險、控制修改索引風(fēng)險、控制SQL執(zhí)行風(fēng)險。如下圖所示:
而審批流程則使用生產(chǎn)環(huán)境中數(shù)據(jù)庫的安全規(guī)則。例如:某個結(jié)構(gòu)設(shè)計工單發(fā)布到B數(shù)據(jù)庫,則使用B實例的安全規(guī)則。
基礎(chǔ)配置項
結(jié)構(gòu)設(shè)計有多個基礎(chǔ)配置項:
開啟非對等發(fā)布:結(jié)構(gòu)設(shè)計一直以來都只能對等發(fā)布,即A表的變更內(nèi)容只能發(fā)布到另一個庫的A表中。開啟非對等發(fā)布后,允許用戶打破表名的限制,任意指定發(fā)布目標表。
警告風(fēng)險較大,僅限特殊場景使用,請謹慎開啟。
研發(fā)流程:結(jié)構(gòu)設(shè)計安全規(guī)則中最重要的配置,它決定了一個結(jié)構(gòu)設(shè)計工單整個流程的所有環(huán)節(jié)。配置內(nèi)容說明如下:
配置內(nèi)容
說明
步驟
分為設(shè)計和發(fā)布兩種節(jié)點。
設(shè)計節(jié)點:默認節(jié)點,無法移除。決定結(jié)構(gòu)變更任務(wù)在哪一種環(huán)境下設(shè)計。
發(fā)布節(jié)點:在設(shè)計階段完成變更后,將流程推進到發(fā)布階段發(fā)布變更。您可添加多個發(fā)布節(jié)點。
節(jié)點名稱
自定義節(jié)點的名稱,最大支持10個字符。
庫環(huán)境
決定當(dāng)前節(jié)點在哪個環(huán)境下執(zhí)行。
執(zhí)行策略
立即:任務(wù)在審批通過之后會立即執(zhí)行。
定時:可指定任務(wù)的發(fā)布時間。(在發(fā)布時間之前通過審批,任務(wù)會在指定的時間執(zhí)行,否則發(fā)布任務(wù)被中斷,不會執(zhí)行。)
可回退
決定發(fā)布任務(wù)是否支持回退到設(shè)計節(jié)點。
可跳過
決定是否可跳過當(dāng)前步驟。
錨點
標識了工單編輯的凍結(jié)點,即錨點所在步驟成功發(fā)布之后,無法再對表結(jié)構(gòu)進行編輯,工單變成已發(fā)布狀態(tài)。
操作
可以根據(jù)需求移除發(fā)布節(jié)點。
字段類型配置:配置新增字段中允許使用的數(shù)據(jù)類型。
索引類型配置:配置新增索引中允許使用的數(shù)據(jù)類型。
建表模板:配置建表模板,新建表將默認加載配置好的模板。(建表模板不是強制性規(guī)范,用戶建表時可根據(jù)實際情況進行修改。)
禁止修改原有字段數(shù)據(jù)類型:決定在變更原表時,是否禁止修改原有字段的數(shù)據(jù)類型。
禁止刪除原有字段:決定在變更原表時,是否禁止刪除原有字段。(刪除原有字段風(fēng)險較大,建議開啟。)
禁止原有字段重命名:決定在變更原表時,是否禁止重命名原有字段。(重命名原有字段風(fēng)險較大,建議開啟。)
表字符集許可配置:配置新建表時允許使用的字符集范圍。(如:utf8、utf8mb4。)
結(jié)構(gòu)設(shè)計默認審批模板:當(dāng)審批規(guī)則校驗檢測點未配置審批規(guī)則時,結(jié)構(gòu)設(shè)計工單默認采用該審批模板。您可以通過切換審批模板來更改默認審批模板的審批流程。具體操作,請參見修改默認審批模板。
已發(fā)布時工單自動推進到結(jié)束狀態(tài):開啟后,研發(fā)流程中錨點所在節(jié)點成功執(zhí)行變更后,系統(tǒng)會自動將工單推進到結(jié)束狀態(tài)。(要求錨點必須在研發(fā)流程中最后一個發(fā)布節(jié)點上。)
檢測點
結(jié)構(gòu)設(shè)計有兩個流程:
保存編輯流程:對應(yīng)如下三個檢測點,依次對表頭、字段、索引進行相關(guān)規(guī)范的檢測。
保存編輯,校驗表頭
保存編輯,校驗字段
保存編輯,校驗索引
變更執(zhí)行流程:對應(yīng)如下五個檢測點,前四個檢測點用來識別DDL變更的風(fēng)險,最后一個檢測點用來指定每一個風(fēng)險對應(yīng)的審批流程。
控制新建表風(fēng)險
控制修改字段風(fēng)險
控制修改索引風(fēng)險
控制SQL執(zhí)行風(fēng)險
審批規(guī)則校驗
以上流程中均內(nèi)置了大量的安全規(guī)則模板,您可以直接使用這些模板,也可以自定義新增規(guī)則。具體操作,請參見新增規(guī)則。
因子和動作
因子:因子是系統(tǒng)內(nèi)置變量,可用來獲取安全規(guī)則校驗的上下文信息,如獲取SQL類型、影響行數(shù)等。因子全部以
@fac.
開頭,后接因子名稱。每個模塊的不同檢測點均提供不同因子,結(jié)構(gòu)變更中提供因子的說明請參見下表:因子名
說明
@fac.table_kind
工單中編輯的表的種類。值:
new:新建表
old:原有表
@fac.column_kind
表結(jié)構(gòu)里面字段的種類。
new:新增字段
old:原有字段
@fac.xxxx_old
從原有字段和索引中獲取值進行對比。
@fac.column_is_primary
判斷字段是不是主鍵列。
true:主鍵中的列
false:非主鍵中的列
@fac.column_type_support_default
判斷當(dāng)前字段的數(shù)據(jù)類型是不是支持設(shè)置默認值。
true:支持
false:不支持
例如:
CHAR
類型支持設(shè)置默認值,TEXT
類型不支持。@fac.index_kind
表結(jié)構(gòu)中索引的種類。
new:新增索引
old:原有索引
@fac.index_column_count
索引包含的字段個數(shù)。
@fac.change_type
DDL執(zhí)行的數(shù)據(jù)庫識別出的字段、索引變更類型。
add:新增
modify:修改
delete:刪除
@fac.altered_table_size
被修改表的大小。(單位:MB)
@fac.online_execute
識別變更是否能ONLINE執(zhí)行。
true:ONLINE
false:非ONLINE
@fac.change_risk_level
變更風(fēng)險級別。
high:高風(fēng)險
middle:中風(fēng)險
low:低風(fēng)險
@fac.env_type
環(huán)境類型,值是環(huán)境標識。如:
DEV
、PRODUCT
。更多環(huán)境類型,請參見更改實例環(huán)境類型。動作:動作是滿足
if
條件之后系統(tǒng)執(zhí)行的行為,比如:禁止提交工單、選擇工作流、允許執(zhí)行、拒絕執(zhí)行等,這些動作表達了安全規(guī)則的主要目的。動作全部以@act.
開頭,后接動作名稱。每個模塊的不同檢測點均提供不同動作,結(jié)構(gòu)設(shè)計中提供動作的說明請參見下表:動作名
說明
@act.block_submit
在保存表階段使用,阻斷提交并顯示錯誤信息。用法:
@act.block_submit '阻斷的理由'
。@act.show_warning
在保存表階段使用,顯示警告信息(不阻斷提交)。用法:
@act.show_warning '警告的內(nèi)容'
。@act.mark_middle_risk
在風(fēng)險識別階段使用,標記為中風(fēng)險。用法:
@act.mark_middle_risk '理由'
。@act.mark_high_risk
在風(fēng)險識別階段使用,標記為高風(fēng)險。用法:
@act.mark_high_risk '理由'
。@act.forbid_submit_publish
在設(shè)置審批流程階段使用,阻斷變更執(zhí)行。用法:
@act.forbid_submit_publish '理由'
。@act.do_not_approve
指定審批模板ID。詳情請參見設(shè)置審批流程。
@act.choose_approve_template
@act.choose_approve_template_with_reason
模板庫
安全規(guī)則提供了大量的規(guī)則模板可直接選擇啟用,也可以在模板基礎(chǔ)上按照實際需求自行調(diào)整啟用。結(jié)構(gòu)變更中的模板如下所示:
檢測點 | 模板 |
保存編輯,校驗表頭 | 新建表,禁止表名為關(guān)鍵字 |
新建表,限制表名長度 | |
新建表,表必須填寫備注 | |
新建表,限制表名全部小寫 | |
新建表,必須要有主鍵(PK) | |
新建表,必須要有唯一鍵(PK/UK) | |
索引數(shù)量合理性約束(過多時警告用戶) | |
新建表,校驗?zāi)承┳侄问欠翊嬖?/p> | |
保存編輯,校驗字段 | 新增字段,禁止字段名為關(guān)鍵字 |
新增字段,字段必須填寫備注 | |
新增字段,限制字段名大小寫 | |
原有表新增非空字段必須明確指定默認值 | |
原有字段,可空改為非空必須明確指定默認值 | |
限制新增主鍵字段必須是整數(shù)類型 | |
新建表要求所有字段不能為可空 | |
新增字段,限制char類型長度 | |
新增字段,限制varchar類型長度 | |
保存編輯,校驗索引 | 新增索引,禁止索引名為關(guān)鍵字 |
新增索引,限制索引名大小寫 | |
新增索引,限制Unique索引名格式 | |
新增索引,限制Normal索引名格式 | |
新增索引,限制FullText索引名格式 | |
新增索引,限制Spatial索引名格式 | |
限制新增主鍵字段個數(shù) | |
限制新增索引字段個數(shù) | |
控制新建表風(fēng)險 | 控制邏輯表分表數(shù)量 |
控制表主鍵 | |
控制表索引總數(shù)量 | |
控制修改字段風(fēng)險 | 控制刪除字段 |
控制新增字段數(shù)據(jù)類型 | |
控制重命名字段 | |
控制修改字段數(shù)據(jù)類型 | |
控制修改索引風(fēng)險 | 控制刪除主鍵 |
控制刪除索引 | |
控制主鍵更改為索引 | |
控制修改主鍵包含列 | |
控制修改普通索引 | |
控制新增索引類型 | |
控制SQL執(zhí)行風(fēng)險 | 控制核心實例風(fēng)險 |
控制表存儲引擎 | |
控制鎖表/大表變更風(fēng)險 | |
審批規(guī)則校驗 | 禁止執(zhí)行任何DDL變更到數(shù)據(jù)庫 |
禁止執(zhí)行任何DDL變更到生產(chǎn)庫 | |
設(shè)置測試庫執(zhí)行DDL變更免批 | |
設(shè)置生產(chǎn)環(huán)境按風(fēng)險級別審批 |
修改默認審批模板
- 登錄數(shù)據(jù)管理DMS 5.0。
單擊控制臺左上角的圖標,選擇
。說明若您使用的是非極簡模式的控制臺,在頂部菜單欄中,選擇
。在安全規(guī)則頁面中,單擊目標規(guī)則集右側(cè)操作列中的編輯。
在詳情頁面左側(cè)的導(dǎo)航欄中,單擊結(jié)構(gòu)設(shè)計。
在結(jié)構(gòu)設(shè)計頁簽中,單擊基礎(chǔ)配置項。
單擊結(jié)構(gòu)設(shè)計默認審批模板右側(cè)操作列的編輯。
在彈出的編輯配置項對話框中,單擊切換審批模板。
選擇目標模板名稱右側(cè)操作列的選擇。
說明您也可以單擊重置為免審批,使工單跳過審批步驟。
單擊提交。
新增規(guī)則
- 登錄數(shù)據(jù)管理DMS 5.0。
單擊控制臺左上角的圖標,選擇
。說明若您使用的是非極簡模式的控制臺,在頂部菜單欄中,選擇
。在安全規(guī)則頁面中,單擊目標規(guī)則集右側(cè)操作列中的編輯。
在詳情頁面左側(cè)的導(dǎo)航欄中,單擊結(jié)構(gòu)設(shè)計。
在結(jié)構(gòu)設(shè)計頁簽中,單擊操作右側(cè)的新增規(guī)則。
在新增規(guī)則 - 結(jié)構(gòu)設(shè)計對話框中,設(shè)置如下參數(shù):
單擊提交。
新增的規(guī)則默認處于已禁用狀態(tài),單擊規(guī)則右側(cè)操作列中的啟用。
在彈出的對話框中單擊確認。