SchemaUpdate¶
セットアップの仕様説明の前提として、セットアップが内部で利用する SchemaUpdate 機能について説明します。
SchemaUpdate とは¶
SchemaUpdate は、モジュールが定義したセットアップの適用状況を管理します。
SchemaUpdate で管理する情報を利用することで、セットアップの実行時に、既に適用されているセットアップが再実行されてしまわないよう制御することができます。
スキーマバージョン とは¶
スキーマバージョンは、各モジュールが定める動作前提のバージョニング番号です。
番号の定義ルールは 1 から始まる連番です。中抜けを禁止し、必ず 1 ずつインクリメントして定義します。
モジュールのメジャーバージョン、マイナーバージョン、およびマイクロバージョンとは必ずしも合致しません。
スキーマバージョンの実際の定義方法は、後述の システムデータベースセットアップ 、および テナント環境セットアップ の章を参照してください。
SchemaUpdate の適用対象¶
セットアップのうち、システムデータベースセットアップとテナント環境セットアップが適用対象となります。
コラム
サンプルデータセットアップは適用対象外です。
理由は次のとおりです。
サンプルデータの投入は試用環境を構築する際に実施するものと想定しています。試用環境は、モジュールの追加やバージョンアップを適宜行いつつ継続利用されるものではない想定のため、サンプルデータについての差分セットアップは実現していません。サンプルデータを含めた最新状態の環境を構築する場合は、新規環境構築を適宜行ってください。
動作仕様¶
データベースにセットアップ適用状況の管理用テーブル [im_schema_update] を作成し、このテーブルで管理します。
- システムデータベースセットアップによるセットアップ適用状況はシステムデータベースで管理します。
- テナント環境セットアップによるセットアップ適用状況はテナントデータベースで管理します。
- [im_schema_update] テーブルは、セットアップ(サンプルデータセットアップを除く)の実行時に自動作成されます。
システムデータソース、テナントデータソースが同一の場合は、共用のテーブルをひとつだけ作成します。
- セットアップ適用状況は、モジュール・スキーマバージョン単位、かつ次のインポート種別単位で管理します。
- 前処理プログラム
- DDL
- DML(処理としては、DML発行とテナントマスタ情報インポートを包含します。)
- 拡張インポート
コラム
[im_schema_update] では、レコード単位で次の情報を管理します。
カラム名 カラムの説明 登録値の例 module_id セットアップしたモジュールのショートモジュールID “im_tenant” / “im_master” import_type セットアップしたインポート種別 “SYSTEM_DDL” / “TENANT_DDL” / “TENANT_DML” / “TENANT_EXTENSION” schema_version セットアップしたスキーマバージョン 1 / 2 / 3 / ・・・ <カラム「import_type」の登録値の説明>
“SYSTEM_DDL”
システムデータベースセットアップのインポート種別「DDL」がセットアップ済みであることを表します。
“”TENANT_PREPROCESSING”“
テナント環境セットアップのインポート種別「前処理」が実行済みであることを表します。
“TENANT_DDL”
テナント環境セットアップのインポート種別「DDL」がセットアップ済みであることを表します。
“TENANT_DML”
テナント環境セットアップのインポート種別「DML」がセットアップ済みであることを表します。
“TENANT_EXTENSION”
テナント環境セットアップのインポート種別「拡張インポート」がセットアップ済みであることを表します。
差分セットアップ¶
運用開始後、war を構成するモジュールの追加やバージョンアップが発生した際、 システムデータベースセットアップとテナント環境セットアップでは、SchemaUpdate が管理する情報を利用し、各モジュールのセットアップのうち、未セットアップのもののみ適用します。
これにより、既に実施済みのセットアップを再度実行してしまったり、差分適用すべきセットアップ内容を利用者自らが意識して適用しなければならない状況を回避します。
セットアップの際は、[im_schema_update] テーブルで保持されているスキーマバージョンよりも大きいスキーマバージョンのセットアップ用ファイルが存在する場合、それらを差分セットアップ対象とみなします。