本文介紹結構設計的基礎配置項、檢測點、因子和動作和模板庫,以及如何修改預設審批模板和新增規則。
背景資訊
結構設計工單一般會涉及到多個執行個體,例如測試環境中進行結構設計,生產環境中發布這樣的經典流程。因此結構設計安全規則中的基礎配置項、設計規則、風險識別規則會使用變更基準庫(測試環境中的庫)關聯的安全規則。
-
設計規則包含儲存編輯,校正表頭、儲存編輯,校正欄位、儲存編輯,校正索引。這三個檢測點在安全規則編輯頁面的檢測點欄中以頁簽形式展示。
-
風險識別規則包含控制建立表風險、控制修改欄位風險、控制修改索引風險、控制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變更免批 |
|
|
設定生產環境按風險層級審批 |
修改預設審批模板
單擊控制台左上方的
表徵圖,選擇。說明若您使用的是非極簡模式的控制台,在頂部功能表列中,選擇。
-
在安全規則頁面中,單擊目標規則集右側操作列中的編輯。
-
在詳情頁面左側的導覽列中,單擊結構設計。
-
在結構設計頁簽中,單擊基礎配置項。
-
單擊結構設計預設審批模板右側操作列的編輯。
-
在彈出的編輯配置項對話方塊中,單擊切換審批模板。
-
選擇目標模板名稱右側操作列的選擇。
說明您也可以單擊重設為免審批,使工單跳過審批步驟。
-
單擊提交。
新增規則
單擊控制台左上方的
表徵圖,選擇。說明若您使用的是非極簡模式的控制台,在頂部功能表列中,選擇。
-
在安全規則頁面中,單擊目標規則集右側操作列中的編輯。
-
在詳情頁面左側的導覽列中,單擊結構設計。
-
在結構設計頁簽中,單擊操作右側的新增規則。
-
在新增規則 - 結構設計對話方塊中,設定如下參數:
-
單擊提交。
-
新增的規則預設處於已禁用狀態,單擊規則右側操作列中的啟用。
-
在彈出的對話方塊中單擊確認。