Data Management Service (DMS) の「スキーマ設計」モジュールは、設計から公開に至るまでのスキーマ変更を管理します。このモジュールを使用して、検証ルールを定義し、リスクしきい値を設定し、承認プロセスを構成することで、すべてのスキーマ変更が本番環境への適用前にチームの基準を満たすようにしてください。
仕組み
スキーマ設計チケットは、以下の 2 つのステージを経て処理されます。
変更の保存 — DMS は、変更を保存する前に、テーブルヘッダー、フィールド、インデックスを設計ルールに対して検証します。
変更の適用 — DMS は、リスク識別ルールに基づいてリスクレベルを算出し、該当する承認プロセスにチケットをルーティングします。
チケットが複数のインスタンスにまたがる場合(例:テスト環境で設計し、本番環境に公開する)には、基本設定項目、設計ルール、およびリスク識別ルールは、ベースデータベース(テスト環境)に適用されます。一方、承認プロセスは、本番環境用に構成されたセキュリティルールを使用します。
基本概念
R&D プロセス
R&D プロセスは、スキーマ設計チケットの全ライフサイクルを定義するものであり、「スキーマ設計」モジュールにおいて最も重要な設定項目です。
プロセスには、以下の 2 種類のノードがあります。
| ノードタイプ | 説明 |
|---|---|
| 設計 | スキーマ変更の設計を行う環境を決定します。デフォルトで生成され、削除できません。 |
| 公開 | 設計後にスキーマ変更を公開します。複数の「公開」ノードを追加できます。 |
各ノードには、以下のパラメーターがあります。
| パラメーター | 説明 |
|---|---|
| ノード名 | 最大 10 文字の名称。 |
| データベース環境 | ノードが実行される環境。 |
| 実行戦略 | 即時実行:ノードが承認されるとすぐに実行されます。定期実行:スケジュール時刻に実行されます。ノードがスケジュール時刻より前に承認された場合は、スケジュール通りに実行されます。スケジュール時刻以降に承認された場合は、ノードは中断され、実行されません。 |
| 戻り可能 | 「公開」ノードが「設計」ノードへロールバックできるかどうか。 |
| スキップ可能 | 現在のノードをスキップできるかどうか。 |
| アンカー | ノードを停止ポイントとしてマークします。「アンカー」ノードが公開されると、その後のノードはブロックされ、チケットは 公開済み 状態になります。 |
| 操作 | 「公開」ノードで利用可能な操作(ノードの削除を含む)。 |
チケットを公開後に自動的に終了状態に進めるには、R&D プロセスの最後のノードをアンカーとして設定し、[公開時にチケットを終了状態に進める]を有効化します。
チェックポイント
DMS は、スキーマ変更を以下の 2 ステージで評価し、それぞれに一連のチェックポイントを設定しています。
変更の保存 — 保存前の構造を検証:
変更の保存とヘッダーの検証
変更の保存とフィールドの検証
変更の保存とインデックスの検証
変更の適用 — リスクを識別し、承認を割り当て:
テーブル作成リスク管理
フィールド変更リスク管理
インデックス変更リスク管理
SQL 実行リスク管理
承認ルール検証
最初の 4 つのチェックポイントでは、データ定義言語(DDL)変更に対するリスクレベルが算出されます。承認ルール検証 チェックポイントでは、これらのリスクレベルに基づき、チケットを適切な承認プロセスにルーティングします。
承認ルール検証 が構成されていない場合、DMS は基本設定項目で設定された「スキーマ設計のデフォルト承認テンプレート」にフォールバックします。
ファクターとアクション
セキュリティルールは、ファクターとアクションを用いたドメイン固有言語(DSL)文として記述されます。
ファクター は、変更に関するコンテキスト(例:テーブル種別、テーブルサイズ、環境など)を提供する組み込み変数です。ファクター名は、プレフィックス @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(例:CHAR)、false(例:TEXT)。 |
@fac.index_kind | 変更対象のインデックスの種別。値: new、old。 |
@fac.index_column_count | インデックス内のフィールド数。 |
@fac.change_type | DDL 操作の種別。値: new(追加)、modify(変更)、delete(削除)。 |
@fac.altered_table_size | 変更対象のテーブルサイズ(MB 単位)。 |
@fac.online_execute | 変更がオンライン環境で実行可能かどうか。値: true、false。 |
@fac.change_risk_level | 算出されたリスクレベル。値: high(高)、middle(中)、low(低)。 |
@fac.env_type | 環境タイプの表示名(例:DEV、PRODUCT)。詳細については、「インスタンスの環境タイプの変更」をご参照ください。 |
アクション は、ルール条件が満たされたときに DMS が実行する操作です。アクション名は、プレフィックス @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 | — |
セキュリティルールテンプレート
DMS には、各チェックポイント向けに事前定義されたセキュリティルールテンプレートが含まれています。これらのテンプレートを直接有効化するか、要件に合わせてカスタマイズしてください。
テンプレートは、対象とする内容ごとに分類されています。
命名および構造に関するルール(ヘッダーおよびフィールド検証チェックポイントで適用)
テーブル名に特定のキーワードを含めない
テーブル名の長さを制限する
新規テーブルには説明を必須とする
新規テーブルの名前を小文字に必須とする
新規テーブルにはプライマリキーを必須とする
新規テーブルには一意キーを必須とする
新規テーブルには指定されたフィールドを必須とする
フィールド名に特定のキーワードを含めない
新規フィールドには説明を必須とする
フィールド名には、大文字または小文字が必要です。
フィールド制約(フィールド検証チェックポイントで適用)
既存テーブルに非 NULL フィールドを追加する場合、デフォルト値を必須とする
既存フィールドを NULL 許容から非 NULL に変更する場合、デフォルト値を必須とする
プライマリキーのフィールドは
INTEGER型であることを必須とする新規テーブルのすべてのフィールドに値を割り当てる
CHARフィールドの長さは制限されていますVARCHARフィールド長は制限されています
インデックスに関するルール(インデックス検証チェックポイントで適用)
インデックス名に特定のキーワードを含めない
インデックス名は大文字または小文字のみを許可する
新規インデックスは一意なインデックスであることを必須とする
新規インデックスは通常のインデックスであることを必須とする
新規インデックスは
FULLTEXT型であることを必須とする新規インデックスは
SPATIAL型であることを必須とするプライマリキーのフィールド数を制限する
インデックスフィールドの数は制限されています。
テーブルあたりのインデックス数を制限する。しきい値に達するとアラートが送信される
リスク識別ルール(リスク管理チェックポイントで適用)
論理テーブルにおけるテーブルシャード数を制限する
テーブルあたりのプライマリキー数を制限する
テーブルあたりのインデックス数を制限する
指定されたフィールドを削除できない
新規フィールドのフィールドデータ型を制限する
フィールドを指定された名前に変更できない
フィールドを指定されたデータ型に変更できない
プライマリキーを削除できない
インデックスを削除できない
プライマリキーを通常のインデックスに変更できない
プライマリキーのカラムに指定されたフィールドを含めない
通常のインデックスを変更できない
新規インデックスの種別を制限する
コアインスタンスを指定できない
テーブルが指定されたストレージエンジンを使用できない
テーブルサイズが指定された上限を超えると、テーブルがロックされる
承認ルーティングルール(「承認ルール検証」チェックポイントで適用)
データベーススキーマに対する DDL 変更をブロックする
本番データベーススキーマに対する DDL 変更をブロックする
テスト環境での DDL 変更は承認不要とする
本番環境では、リスクレベルに応じて異なる承認プロセスを適用する
その他の設定項目
| 設定項目 | 説明 |
|---|---|
| フィールド型設定 | 新規追加フィールドでサポートされるデータ型。 |
| インデックス型設定 | 新規追加インデックスでサポートされるデータ型。 |
| テーブル作成テンプレート | テーブル作成時に、あらかじめ構成されたフィールドおよびインデックスをプリロードするテンプレートです。任意設定項目であり、チームで標準テーブル構造が必要な場合にのみ使用します。 |
| テーブル文字セット | テーブル作成時に利用可能な文字セット(例:utf8、utf8mb4)。 |
| 元のフィールドデータ型の変更を禁止 | テーブル変更時に、既存フィールドのデータ型を変更することを防止します。 |
| 元のフィールドの削除を禁止 | テーブル変更時に、既存フィールドを削除することを防止します。フィールドの削除は高リスク操作であるため、特別な理由がない限り、この設定を有効化してください。 |
| 元のフィールドの名前変更を禁止 | テーブル変更時に、既存フィールドの名前を変更することを防止します。フィールドの名前変更は高リスク操作であるため、特別な理由がない限り、この設定を有効化してください。 |
| ピア以外の公開を有効化 | デフォルトでは、テーブルの変更は、別のデータベース内にある同名のテーブルにのみ公開できます。このオプションを有効化すると、変更を任意のテーブルに公開できます。 |
ピア以外の公開は高リスク操作です。特別な要件がある場合にのみ有効化してください。
デフォルト承認テンプレートの変更
DMS コンソール V5.0 にログインします。
左上隅の
アイコンにポインターを移動し、「[すべての機能]」 > 「[セキュリティと仕様 (DBS)]」 > 「[セキュリティルール]」を選択します。通常モードでは、上部ナビゲーションバーで [セキュリティと仕様 (DBS)] > [セキュリティルール] を選択します。
-
左上隅の
アイコンにポインターを合わせ、 を選択します。説明DMS コンソールを通常モードで使用している場合、上部ナビゲーションバーから を選択します。
-
左上隅の
アイコンにポインターを合わせ、 を選択します。説明DMS コンソールを通常モードで使用している場合、上部ナビゲーションバーから を選択します。
変更するセキュリティルールセットを見つけ、編集 をクリックします(操作 列)。
詳細 ページの左側ナビゲーションウィンドウで、スキーマ設計 タブをクリックします。
基本設定項目 をクリックします。
スキーマ設計のデフォルト承認テンプレート を見つけ、編集 をクリックします(操作 列)。
設定項目の変更 ダイアログボックスで、承認テンプレートの切り替え をクリックします。
適用するテンプレートを見つけ、選択 をクリックします(操作 列)。
チケットの承認をスキップするには、承認不要にリセット をクリックします。
送信 をクリックします。
セキュリティルールの作成
DMS コンソール V5.0 にログインします。
左上隅の
アイコンにポインターを合わせ、すべての機能 > セキュリティおよびディザスタリカバリ(DBS) > セキュリティルール を選択します。通常モードでは、上部ナビゲーションバーで セキュリティと仕様 (DBS) > セキュリティルール を選択します。
変更するセキュリティルールセットを見つけ、編集 をクリックします(操作 列)。
詳細 ページの左側ナビゲーションウィンドウで、スキーマ設計 タブをクリックします。
操作 の横にある ルールの作成 をクリックします。
ルールの作成 - スキーマ設計 ダイアログボックスで、以下のパラメーターを設定します。
パラメーター 必須 説明 チェックポイント はい このルールのチェックポイント。詳細については、「チェックポイント」をご参照ください。 テンプレートデータベース いいえ ルールのベースとなる組み込みテンプレート。チェックポイントを選択した後、テンプレートデータベースから読み込む をクリックして、利用可能なテンプレートを参照します。詳細については、「セキュリティルールテンプレート」をご参照ください。 ルール名 はい ルールのカスタム名。テンプレートから読み込んだ場合、自動入力されます。 ルール DSL はい ルールのロジックを定義する DSL 文。テンプレートから読み込んだ場合、自動入力されます。 送信 をクリックします。
新しく作成されたルール(デフォルトで 無効 状態)を見つけ、有効化 をクリックします(操作 列)。
確認メッセージで OK をクリックします。