AWS SCT を使用したデータベーススキーマの変換 - AWS Schema Conversion Tool

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS SCT を使用したデータベーススキーマの変換

AWS Schema Conversion Tool (AWS SCT) を使用すると、データベースエンジン間で既存のデータベーススキーマを変換できます。AWS SCT ユーザーインターフェイスを使用したデータベースの変換は比較的簡単ですが、変換を行う前に、いくつかの点について考慮する必要があります。

例えば、AWS SCT を使用して以下を実行できます。

  • AWS SCT を使用して、同エンジンを実行する Amazon RDS DB インスタンスに既存のオンプレミスのデータベーススキーマをコピーすることもできます。この機能を使用して、クラウドへの移動やライセンスタイプの変更にかかるコスト削減の可能性を分析できます。

  • 場合によって、データベース機能は同等の Amazon RDS 機能に変換できないことがあります。Amazon Elastic Compute Cloud (Amazon EC2) プラットフォームでデータベースをホストして自己管理する場合は、これらの機能を AWS サービスで代用することで、エミュレートできます。

  • AWS SCT はオンライントランザクション処理 (OLTP) データベーススキーマを Amazon Relational Database Service (Amazon RDS) MySQL DB インスタンス、Amazon Aurora DB クラスター、または PostgreSQL DB インスタンスに変換する多くのプロセスを自動化します。ソースおよびターゲットデータベースエンジンは様々な特徴と機能を含んでおり、AWS SCT は Amazon RDS DB インスタンスにおいて可能な限り同等のスキーマを作成するよう試みます。直接変換ができない場合、AWS SCT はユーザーに対して可能なアクションの一覧を提供します。

AWS SCT は、次のオンライントランザクション処理 (OLTP) 変換をサポートします。

ソースデータベース ターゲットデータベース

IBM Db2 for z/OS (バージョン 12)

Amazon Aurora MySQL 互換エディション、Amazon Aurora PostgreSQL 互換エディション、MySQL、PostgreSQL

IBM Db2 LUW (バージョン 9.1、9.5、9.7、10.5、11.1、および 11.5)

Aurora MySQL、Aurora PostgreSQL、MariaDB、MySQL、PostgreSQL

Microsoft Azure SQL データベース

Aurora MySQL、Aurora PostgreSQL、MySQL、PostgreSQL

Microsoft SQL Server (バージョン 2008 R2 以降)

Aurora MySQL、Aurora PostgreSQL、Babelfish for Aurora PostgreSQL、MariaDB、Microsoft SQL Server、MySQL、PostgreSQL

MySQL (バージョン 5.5 以上)

Aurora PostgreSQL、MySQL、PostgreSQL

AWS SCT を使用せずに、MySQL から Aurora MySQL DB クラスターにスキーマとデータを移行できます。詳細については、「Amazon Aurora DB クラスターへのデータの移行」を参照してください。

Oracle (バージョン 10.2 以降)

Aurora MySQL、Aurora PostgreSQL、MariaDB、MySQL、Oracle、PostgreSQL

PostgreSQL (バージョン 9.1 以降)

Aurora MySQL、Aurora PostgreSQL、MySQL、PostgreSQL

SAP ASE (12.5、15.0、15.5、15.7、16.0)

Aurora MySQL、Aurora PostgreSQL、MariaDB、MySQL、PostgreSQL

データウェアハウスの変換の詳細については、「AWS SCT を使用したデータウェアハウススキーマの Amazon Redshift への変換」を参照してください。

データベーススキーマを Amazon RDS に変換するには、次の必要な手順を実行します。

  • AWS SCT での移行ルールの作成 - AWS SCT でスキーマを変換する前に、列のデータ型の変更、あるスキーマから別のスキーマへのオブジェクトの移動、オブジェクトの名前の変更を行うルールを設定できます。

  • AWS SCT を使用してスキーマを変換する - AWS SCT は確認のために変換されたスキーマのローカルバージョンを作成しますが、準備ができるまでターゲット DB インスタンスには適用されません。

  • AWS SCT を使用した移行評価レポートの作成 - AWS SCT 自動的に変換できないスキーマの要素の詳細を記載したデータベース移行評価レポートを作成します。ソースデータベースと互換性のある Amazon RDS DB インスタンスのどこでスキーマを作成する必要があるかを特定するため、このレポートを使用できます。

  • AWS SCT でのマニュアル変換の処理 – 自動的に変換できないスキーマの要素がある場合、2 つの選択肢があります。ソーススキーマを更新したのち再び変換するか、またはターゲット Amazon RDS DB インスタンスにおいて同等のスキーマの要素を作成します。

  • AWS SCT での変換されたスキーマの更新および再読み込み – ソースデータベースからの最新のスキーマを使用して AWS SCT プロジェクトを更新できます。

  • AWS SCT で変換されたスキーマの保存および適用 - 準備ができたら、AWS SCT を使用してローカルプロジェクトにある変換後のスキーマをターゲット Amazon RDS DB インスタンスに適用します。

AWS SCT での移行ルールの作成

AWS SCT でスキーマを変換する前に、移行ルールを設定できます。AWS SCT の移行ルールでは、列のデータ型の変更、あるスキーマから別のスキーマへのオブジェクトの移動、オブジェクト名の変更などの変換を行うことができます。例えば、test_TABLE_NAME という名前のソーススキーマにテーブルがあるとします。ターゲットスキーマ内にある プレフィックス test_ をプレフィックス demo_ に変更するルールを設定できます。

注記

移行ルールは、異なるソースとターゲットのデータベースエンジンに対してのみ作成できます。

移行ルールを作成して実行できるタスクは次のとおりです。

  • プレフィックスの追加、削除、または置換

  • サフィックスの追加、削除、または置換

  • 列照合の変更

  • データタイプの変更

  • charvarcharnvarcharstring およびデータ型の長さを変更

  • オブジェクトの移動

  • オブジェクトの名前変更

移行ルールを作成できるオブジェクトは次のとおりです。

  • データベース

  • スキーマ

  • テーブル

  • Column

移行ルールの作成

移行ルールを作成し、プロジェクトの一部として保存できます。プロジェクトを開いた状態で、以下の手順で移行ルールを作成します。

移行ルールを作成するには
  1. [View] (ビュー) メニューで、[Mapping View] (マッピングビュー) を選択します。

  2. [サーバーマッピング] で、ソースサーバとターゲットサーバのペアを選択します。

  3. [New migration rule] (新しい移行ルール) を選択します。[Transformation rules] (変換ルール) ダイアログボックスが表示されます。

  4. [Add new rule] (新しいルールを追加) を選択します。ルールのリストに新しい行が追加されます。

  5. ルールを設定します。

    1. [Name] (名前) に、ルールの名前を入力します。

    2. [For] で、ルールを適用するオブジェクトのタイプを選択します。

    3. [where] (条件) に、オブジェクトに適用するフィルターを入力後、移行ルールを適用します。where 句は、like 句を使用して評価されます。正確な名前を入力して特定のオブジェクトを選択するか、パターンを入力して複数のオブジェクトを選択できます。

      where 句で利用可能なフィールドは、オブジェクト型によって異なります。例えば、スキーマの名前のオブジェクト型がスキーマの場合、使用可能なフィールドは 1 つだけです。

    4. [Actions] (アクション) で、作成する移行ルールを選択します。

    5. ルールタイプに応じて、追加の値を 1 つまたは 2 つ入力します。例えば、オブジェクトの名前を変更するには、オブジェクトの新しい名前を入力します。プレフィックスを置換するには、現在のプレフィックスおよび置換後のプレフィックスを入力します。

      char、varchar、nvarchar、および文字列データ型の場合、乗算演算子を使用してデータ型の長さを変更できます。たとえば、%*4 値によって varchar(10) データ型が varchar(40) に変換されます。

  6. 移行ルールを設定したら、[Save] (保存) を選択してルールを保存します。変更をキャンセルする場合は、[Cancel] (キャンセル) を選択します。

    変換ルールダイアログボックス
  7. ルールの追加、編集、削除が完了したら、[Save All] (すべてを保存) を選択して変更内容を保存します。

  8. [Close] (閉じる) を選択して、[Transformation rules] (変換ルール) ダイアログボックスを閉じます。

移行ルールを削除せずに無効にするには、切り替えアイコンを使用できます。既存の移行ルールを複製するには、コピーアイコンを使用します。既存の移行ルールを編集するには、鉛筆アイコンを使用します。既存の移行ルールを削除するには、削除アイコンを使用します。移行ルールへの変更を保存するには、[Save All] (すべて保存) を選択します。

移行ルールのエクスポート

AWS DMS を使用してソースデータベースからターゲットデータベースにデータを移行する場合は、移行ルールに関する情報を AWS DMS に入力します。タスクに関する詳細は、「AWS Database Migration Service のレプリケーションタスクの使用」を参照してください。

移行ルールをエクスポートするには
  1. AWS Schema Conversion Toolで、[View] (ビュー) メニューで [Mapping View] (マッピングビュー) を選択します。

  2. [Migration rules] (移行ルール) で、移行ルールを選択してから、[Modify migration rule] (移行ルールの変更) を選択します。

  3. [AWS DMS のスクリプトのエクスポート] を選択します。

  4. スクリプトを保存する場所を指定し、[Save] (保存) を選択します。移行ルールは、AWS DMS で使用できる JSON スクリプトとして保存されます。

AWS SCT を使用してスキーマを変換する

ソースデータベースおよびターゲット Amazon RDS DB インスタンスの両方にプロジェクトを接続したのち、AWS Schema Conversion Tool プロジェクトは左のパネルでソースデータベースからのスキーマを表示します。スキーマはツリービュー形式で表示され、ツリーの各ノードは遅延ロードです。ツリービューでノードを選択すると、その時点で AWS SCT はソースデータベースからスキーマ情報をリクエストします。

ソースデータベースからスキーマ項目を選択し、スキーマをターゲット DB インスタンスの DB エンジン向けに同等のスキーマに変換することができます。ソースデータベースから任意のスキーマ項目を選択して変換できます。選択したスキーマ項目が親項目に依存する場合、AWS SCT はその親項目にもスキーマを生成します。例えば、変換するテーブルを選択するとします。その場合は、AWS SCT ではテーブルのスキーマ、およびテーブルが格納されているデータベースが生成されます。

スキーマの変換

ソースデータベースからスキーマを変換するには、変換するスキーマの名前のチェックボックスを選択します。次に、プロジェクトの左側のパネルからこのスキーマを選択します。AWS SCT はスキーマ名を青で強調表示します。スキーマのコンテキスト(右クリック)メニューを開き、次に示すように [スキーマの変換] を選択します。

スキーマの変換

ソースデータベースからスキーマを変換すると、プロジェクトの左のパネルからスキーマ項目を選択でき、プロジェクトの中央のパネルで変換されたスキーマを表示できます。下中央のパネルに変換されたスキーマを作成する SQL コマンドのプロパティが次のように表示されます。

ソーススキーマ項目の選択

スキーマを変換した後、プロジェクトを保存できます。ソースデータベースからのスキーマ情報は、プロジェクトと共に保存されます。この機能は、ソースデータベースに接続せずにオフラインで作業できることを意味します。ソースデータベースに [Refresh from Database] (データベースから更新) が選択されている場合、AWS SCT は必要に応じて、ソースデータベースに接続してプロジェクトのスキーマを更新します。詳細については、「AWS SCT での変換されたスキーマの更新および再読み込み」を参照してください。

自動的に変換できない項目のデータベース移行評価レポートを作成できます。評価レポートは、自動的に変換できないスキーマ項目の特定と解決に役立ちます。詳細については、「AWS SCT を使用した移行評価レポートの作成」を参照してください。

AWS SCT が変換されたスキーマを生成する場合、そのスキーマはターゲット DB インスタンスにすぐには適用されません。代わりに、変換されたスキーマはターゲット DB インスタンスに適用する準備ができるまでローカルに保存されます。詳細については、「変換されたスキーマの適用」を参照してください。

変換されたスキーマの編集

変換されたスキーマを編集し、プロジェクトの一部として変更を保存できます。

変換されたスキーマを編集するには
  1. ソースデータベースのスキーマを表示する左のパネルで、変換されたスキーマの編集するスキーマ項目を選択します。

  2. 選択した項目の変換されたスキーマを表示している下中央のパネルで [SQL] タブを選択します。

  3. [SQL] タブで表示されたテキストで、必要に応じてスキーマを変更します。更新する際に、スキーマはプロジェクトと共に自動的に保存されます。

    ターゲット DB インスタンスからのスキーマの更新

更新する際に、プロジェクトと共に変換されたスキーマへの変更が格納されます。新しくソースデータベースからスキーマ項目を変換し、項目の以前に変換されたスキーマを更新した場合、既存の更新はソースデータベースに基づいて新しく変換されたスキーマで置き換えられます。

変換されたスキーマのクリア

ターゲット DB インスタンスにスキーマを適用するまで、AWS SCT はプロジェクトで変換したスキーマをローカルでのみ保存します。DB インスタンスのツリービューノードを選択してから [Refresh from Database] (データベースから更新) を選択することにより、プロジェクトから計画されたスキーマをクリアできます。ターゲット DB インスタンスにスキーマが書き込まれていなかったため、データベースから更新することによって、AWS SCT プロジェクトで計画されたスキーマの要素は削除され、ソース DB インスタンスに存在するものと一致するようになります。

AWS SCT でのマニュアル変換の処理

評価レポートには、ターゲット Amazon RDS DB インスタンスのデータベースエンジンに自動的に変換できない項目のリストが含まれます。変換できない各項目に対して、[Action Items] (アクション項目) タブにアクション項目があります。

評価レポートのアクション項目には、以下の方法で対応できます。

  • ソースデータベーススキーマの変更

  • ターゲットデータベーススキーマの変更

ソーススキーマの変更

一部の項目については、ソースデータベースのデータベーススキーマを、自動的に変換できるスキーマに変更する方が容易な場合があります。最初に、新しい変更にアプリケーションアークテクチャと互換性があることを確認し、次にソースデータベースのスキーマを更新します。最後に、更新されたスキーマ情報のあるプロジェクトを更新します。その後、更新されたスキーマを変換し、新しいデータベース移行評価レポートを生成できます。ソーススキーマで変更された項目のアクション項目は表示されなくなります。

このプロセスの利点は、ソースデータベースから更新するときに、更新されたスキーマを常に使用できることです。

ターゲットスキーマの変更

一部の項目については、ターゲットデータベースに変換されたスキーマを適用する方が容易な場合があるため、自動的に変換できなかった項目のターゲットデータベースに同等のスキーマを手動で追加します。スキーマを適用することで、ターゲット DB インスタンスに自動的に変換できるスキーマすべてを記述できます。詳細については、「AWS SCT で変換されたスキーマの保存および適用」を参照してください。

ターゲット DB インスタンスに書き込まれるスキーマには、自動的に変換できない項目は含まれません。ターゲット DB インスタンスにスキーマを適用したら、ターゲット DB インスタンスでソースデータベースと同等のスキーマを手動で作成できます。データベース移行評価レポートのアクション項目には、同等のスキーマを作成する方法の提案が含まれています。

警告

ターゲット DB インスタンスでスキーマを手動で作成する場合、手動作業のコピーを保存します。再度プロジェクトからターゲット DB インスタンスに変換したスキーマを適用する場合、行った手動作業は上書きされます。

場合によっては、ターゲット DB インスタンスで同等のスキーマを作成できないことがあります。ターゲット DB インスタンス向けに DB エンジンから利用できる機能を使用するために、アプリケーションとデータベースの一部を再設計することが必要な場合があります。その他の場合、自動的に変換できないスキーマは無視できます。

AWS SCT での変換されたスキーマの更新および再読み込み

AWS Schema Conversion Tool プロジェクトのソーススキーマおよびターゲットスキーマの両方を更新できます。

  • [Source] (ソース) - ソースデータベースのスキーマを更新した場合、AWS SCT はプロジェクトのスキーマをソースデータベースの最新のスキーマと置き換えます。この機能を使用すると、ソースデータベースのスキーマが変更された場合にプロジェクトを更新できます。

  • [Target] (ターゲット) - ターゲット Amazon RDS DB インスタンスのスキーマを更新した場合、AWS SCT はプロジェクトのスキーマをターゲット DB インスタンスからの最新のスキーマと置き換えます。ターゲット DB インスタンスにスキーマを適用しなかった場合は、AWS SCT はプロジェクトから変換されたスキーマをクリアします。その後、クリーンターゲット DB インスタンスのソースデータベースからスキーマを変換します。

AWS SCT プロジェクトでスキーマを更新するには、[Refresh from Database] (データベースから更新) を選択します。

注記

スキーマを更新すると、AWS SCT は必要に応じてメタデータをロードします。データベースのスキーマをすべてロードするには、スキーマのコンテキスト (右クリック) メニューを開き、[Load schema] (スキーマの読み込み) を選択します。例えば、このオプションを使用して、データベースのメタデータを一度にロードし、オフラインで作業できます。

AWS SCT で変換されたスキーマの保存および適用

AWS Schema Conversion Tool が変換されたスキーマを生成する場合 (AWS SCT を使用してスキーマを変換する で示すように)、変換されたスキーマはターゲット DB インスタンスにはすぐに適用されません。代わりに、変換されたスキーマは、ターゲット DB インスタンスに適用する準備ができるまで、プロジェクトにローカルで保存されます。この機能を使用すると、ターゲット DB エンジンに自動的に変換できないスキーマ項目を使用できます。自動的に変換できない項目の詳細については、AWS SCT を使用した移行評価レポートの作成 を参照してください。

オプションとして、ターゲット DB インスタンスにスキーマを適用する前に、変換されたスキーマをツールで SQL スクリプトとしてファイルに保存することができます。さらにツールで、変換したスキーマをターゲット DB インスタンスに直接適用することもできます。

変換されたスキーマのファイルへの保存

変換されたスキーマを SQL スクリプトとしてテキストファイルに保存できます。これにより、ツールが自動的に変換できない項目に対応するために、AWS SCT から生成された SQL スクリプトを変更できます。ターゲットデータベースに変換されたスキーマを適用するために、ターゲット DB インスタンスで更新されたスクリプトを実行できます。

変換されたスキーマを SQL スクリプトとして保存するには
  1. スキーマを選択して、コンテキスト (右クリック) メニューを開きます。

  2. [Save as SQL] (SQL として保存) を選択します。

  3. ファイルの名前を入力し、[Save] (保存) を選択します。

  4. 変換されたスキーマは、次のいずれかのオプションを使用して保存できます。

    • [単一ファイル]

    • [Single file per stage] (ステージごとに 1 つのファイル)

    • [Single file per statement] (ステートメントごとに 1 つのファイル)

SQL スクリプトの形式を選択するには
  1. [Settings] (設定) メニューから [Project settings] (プロジェクト設定) を選択します。

  2. [Save scripts] (スクリプトを保存) を選択します。

  3. [Vendor] (ベンダー) で、データベースプラットフォームを選択します。

  4. [Save SQL scripts to] (SQL スクリプトの保存先) で、データベーススキーマスクリプトの保存方法を選択します。

  5. [OK] を選択して、設定を適用します。

変換されたスキーマの適用

変換されたスキーマをターゲット Amazon RDS DB インスタンスに適用する準備ができたら、プロジェクトの右側のパネルからスキーマ要素を選択します。スキーマ要素のコンテキスト(右クリック)メニューを開き、次に示すように、[Apply to database] (データベースに適用) を選択します。

[Apply to database] (データベースに適用)

拡張パックスキーマ

変換後のスキーマをターゲット DB インスタンスに適用すると、AWS SCT によって追加ワークスキーマがターゲット DB インスタンスに追加されます。このスキーマは、変換されたスキーマをターゲット DB インスタンスに書き込むときに必要なソースデータベースのシステム関数を実装します。追加されたスキーマは、拡張パックスキーマと呼ばれます。

この拡張パックスキーマは変更しないでください。変更すると、ターゲット DB インスタンスに書き込まれる変換されたスキーマに予期しない結果が発生する可能性があります。スキーマがターゲット DB インスタンスに完全に移行され、AWS SCT が必要なくなった場合は、拡張パックスキーマを削除できます。

拡張パックスキーマの名前は、ソースデータベースに従って次のように記述されます。

  • IBM Db2 LUW: aws_db2_ext

  • Microsoft SQL Server: aws_sqlserver_ext

  • MySQL: aws_mysql_ext

  • Oracle: aws_oracle_ext

  • PostgreSQL: aws_postgresql_ext

  • SAP ASE: aws_sapase_ext

詳細については、「AWS LambdaAWS SCT エクステンションパックの関数を使用する 」を参照してください。