全部產品
Search
文件中心

:結構設計

更新時間:Nov 16, 2024

本文介紹結構設計的基礎配置項、檢測點、因子和動作和模板庫,以及如何修改預設審批模板和新增規則。

背景資訊

結構設計工單一般會涉及到多個執行個體,例如測試環境中進行結構設計,生產環境中發布這樣的經典流程。因此結構設計安全規則中的基礎配置項設計規則風險識別規則會使用變更基準庫(測試環境中的庫)關聯的安全規則。

  • 設計規則包含儲存編輯,校正表頭儲存編輯,校正欄位儲存編輯,校正索引。如下圖所示:

  • 風險識別規則包含控制建立表風險控制修改欄位風險控制修改索引風險控制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

    環境類型,值是環境標識。如:DEVPRODUCT。更多環境類型,請參見更改執行個體環境類型

  • 動作:動作是滿足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變更免批

設定生產環境按風險層級審批

修改預設審批模板

  1. 登入Data Management 5.0
  2. 單擊控制台左上方的2023-01-28_15-57-17.png表徵圖,選擇全部功能 > 安全與規範 > 安全規則

    說明

    若您使用的是非極簡模式的控制台,在頂部功能表列中,選擇安全與規範 > 安全規則

  3. 安全規則頁面中,單擊目標規則集右側操作列中的編輯

  4. 詳情頁面左側的導覽列中,單擊結構設計

  5. 結構設計頁簽中,單擊基礎配置項

  6. 單擊結構設計預設審批模板右側操作列的編輯

  7. 在彈出的編輯配置項對話方塊中,單擊切換審批模板

  8. 選擇目標模板名稱右側操作列的選擇

    說明

    您也可以單擊重設為免審批,使工單跳過審批步驟。

  9. 單擊提交

新增規則

  1. 登入Data Management 5.0
  2. 單擊控制台左上方的2023-01-28_15-57-17.png表徵圖,選擇全部功能 > 安全與規範 > 安全規則

    說明

    若您使用的是非極簡模式的控制台,在頂部功能表列中,選擇安全與規範 > 安全規則

  3. 安全規則頁面中,單擊目標規則集右側操作列中的編輯

  4. 詳情頁面左側的導覽列中,單擊結構設計

  5. 結構設計頁簽中,單擊操作右側的新增規則

  6. 新增規則 - 結構設計對話方塊中,設定如下參數:

    參數

    說明

    檢測點(必選)

    選擇需要增加規則的檢測點。結構設計中提供了多個檢測點,詳情請參見檢測點

    模板庫(可選)

    安全規則模板庫中提供了大量規則模板,選擇了檢測點以後,您可以從模板庫中按需載入規則模板。可選的模板庫列表請參見模板庫

    規則名稱(必填)

    自訂規則名稱。(如您在模板庫中選擇了規則模板,此處會自動填滿。)

    規則DSL必填

    填寫規則DSL,DSL文法請參見(如您在模板庫中選擇了規則模板,此處會自動填滿。)

  7. 單擊提交

  8. 新增的規則預設處於已禁用狀態,單擊規則右側操作列中的啟用

  9. 在彈出的對話方塊中單擊確認