AWS SCT のソースとしての Netezza の使用 - AWS Schema Conversion Tool

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

AWS SCT のソースとしての Netezza の使用

AWS SCT を使用して、Netezza からのスキーマ、コードオブジェクトおよびアプリケーションコードを Amazon Redshift に変換できます。

ソースとしての Netezza の権限

ソースとして Netezza に必要な特権を以下に示します。

  • SELECT ON SYSTEM.DEFINITION_SCHEMA.SYSTEM VIEW

  • SELECT ON SYSTEM.DEFINITION_SCHEMA.SYSTEM TABLE

  • SELECT ON SYSTEM.DEFINITION_SCHEMA.MANAGEMENT TABLE

  • LIST ON <database_name>

  • LIST ON <schema_name>

  • LIST ON <database_name>.ALL.TABLE

  • LIST ON <database_name>.ALL.EXTERNAL TABLE

  • LIST ON <database_name>.ALL.VIEW

  • LIST ON <database_name>.ALL.MATERIALIZED VIEW

  • LIST ON <database_name>.ALL.PROCEDURE

  • LIST ON <database_name>.ALL.SEQUENCE

  • LIST ON <database_name>.ALL.FUNCTION

  • LIST ON <database_name>.ALL.AGGREGATE

上記の例で、次のプレースホルダを置き換えます。

  • database_name をソースデータベースの名前に置き換えます。

  • schema_name をソーススキーマの名前に置き換えます。

AWS SCTでは、次のシステムテーブルとビューへのアクセスが必要です。前述のリストにある system.definition_schema.system view および system.definition_schema.system tables へのアクセス権を付与する代わりに、これらのオブジェクトへのアクセス権を付与できます。

  • select on system.definition_schema._t_aggregate

  • select on system.definition_schema._t_class

  • select on system.definition_schema._t_constraint

  • select on system.definition_schema._t_const_relattr

  • select on system.definition_schema._t_database

  • select on system.definition_schema._t_grpobj_priv

  • select on system.definition_schema._t_grpusr

  • select on system.definition_schema._t_hist_config

  • select on system.definition_schema._t_object

  • select on system.definition_schema._t_object_classes

  • select on system.definition_schema._t_proc

  • select on system.definition_schema._t_type

  • select on system.definition_schema._t_user

  • select on system.definition_schema._t_usrobj_priv

  • select on system.definition_schema._vt_sequence

  • select on system.definition_schema._v_aggregate

  • select on system.definition_schema._v_constraint_depends

  • select on system.definition_schema._v_database

  • select on system.definition_schema._v_datatype

  • select on system.definition_schema._v_dslice

  • select on system.definition_schema._v_function

  • select on system.definition_schema._v_group

  • select on system.definition_schema._v_obj_relation

  • select on system.definition_schema._v_obj_relation_xdb

  • select on system.definition_schema._v_procedure

  • select on system.definition_schema._v_relation_column

  • select on system.definition_schema._v_relation_keydata

  • select on system.definition_schema._v_relobjclasses

  • select on system.definition_schema._v_schema_xdb

  • select on system.definition_schema._v_sequence

  • select on system.definition_schema._v_synonym

  • select on system.definition_schema._v_system_info

  • select on system.definition_schema._v_sys_constraint

  • select on system.definition_schema._v_sys_object_dslice_info

  • select on system.definition_schema._v_sys_user

  • select on system.definition_schema._v_table

  • select on system.definition_schema._v_table_constraint

  • select on system.definition_schema._v_table_dist_map

  • select on system.definition_schema._v_table_organize_column

  • select on system.definition_schema._v_table_storage_stat

  • select on system.definition_schema._v_user

  • select on system.definition_schema._v_view

  • select on system.information_schema._v_relation_column

  • select on system.information_schema._v_table

  • select on $hist_column_access_*

ソースとしての Netezza への接続

以下の手順を使用して、Netezza ソースデータベースを AWS Schema Conversion Tool に接続します。

Netezza ソースデータベースに接続するには
  1. AWS Schema Conversion Tool で、[Add source] (ソースの追加) を選択します。

  2. [Netezza] [Next] (次へ) の順に選択します。

    [Add source] (ソースの追加) ダイアログボックスが表示されます。

  3. [接続名] にデータベースの名前を入力します。この名前が AWS SCT の左側のパネルのツリーに表示されます。

  4. AWS Secrets Manager からのデータベース認証情報を使用するか、手動で入力してください。

    • Secrets Manager のデータベース認証情報を使用するには、以下の手順に従ってください。

      1. [AWS シークレット] で、シークレットの名前を選択します。

      2. [入力] を選択すると、Secrets Manager のデータベース接続ダイアログボックスにすべての値が自動的に入力されます。

      Secrets Manager のデータベース認証情報を使用する方法については、「AWS Secrets Manager を使用する」を参照してください。

    • Netezza ソースデータベースの接続情報を手動で入力するには、以下の手順に従ってください。

      パラメータ アクション
      [Server name] (サーバー名)

      ソースデータベースサーバーのドメインネームシステム (DNS) 名または IP アドレスを入力します。

      Server port

      ソースデータベースサーバーへの接続に使用するポートを入力します。

      User name (ユーザー名) と [Password] (パスワード)

      データベース認証情報を入力して、ソースデータベースサーバーに接続します。

      AWS SCT でパスワードを使用して、プロジェクト内のデータベースに接続することを選択する場合にのみソースデータベースに接続します。ソースデータベースのパスワードの漏洩を防ぐため、デフォルトで AWS SCT にパスワードは保存されません。AWS SCT プロジェクトを閉じて再び開いた場合は、必要に応じて、ソースデータベースへの接続に使用するパスワードの入力を求められます。

      Store Password

      AWS SCT は、安全なボールトを作成して、SSL 証明書とデータベースパスワードを保存します。このオプションをオンにすると、データベースのパスワードが保存されるため、パスワードを入力しなくてもデータベースにすばやく接続できます。

      [Netezza のドライバーパス]

      ソースデータベースへの接続に使用するドライバのパスを入力します。詳細については、「必要なデータベースドライバーのダウンロード」を参照してください。

      ドライバパスをグローバルプロジェクト設定に保存する場合、ドライバパスは接続ダイアログボックスに表示されません。詳細については、「グローバル設定でのドライバパスの保存」を参照してください。

  5. [Test Connection] (接続のテスト) を選択して、AWS SCT がソースデータベースに正常に接続できることを確認します。

  6. [Connect] (接続) を選択して、ソースデータベースに接続します。

継続的なデータ複製の設定

Netezza データベーススキーマを変換して Amazon Redshift データベースに適用したら、データ抽出エージェントを使用して AWS SCT データを移行できます。エージェントはデータを抽出し、Amazon S3 バケットにアップロードします。その後、AWS SCT を使用して Amazon S3 から Amazon Redshift にデータをコピーできます。

移行プロセス中にソースデータベースのデータが変更された場合は、AWS SCT データ抽出エージェントで進行中の変更をキャプチャできます。その後、最初のデータ移行を完了した後に、これらの継続的な変更をターゲットデータベースに複製できます。このプロセスは継続的レプリケーションまたは変更データキャプチャ (CDC) と呼ばれます。

Netezza から Amazon Redshift への移行のための継続的なデータレプリケーションを設定するには
  1. ソースデータベースに、履歴データベースを作成します。Netezza コマンドラインインターフェイス (CLI) で次のコード例を使用できます。

    nzhistcreatedb -d history_database_name -t query -v 1 -u load_user -o histdb_owner -p your_password

    前述の例では、history_database_name を設定データベースの名前に置き換えます。次に、load_user を、履歴データをデータベースにロードするように定義したユーザーの名前に置き換えます。次に、histdb_owner を、履歴データベースの所有者として定義したユーザーの名前に置き換えます。このユーザーをすでに作成し、CREATE DATABASE 権限を付与していることを確認してください。最後に、[your_password] を安全なパスワードに置き換えます。

  2. 履歴ログを設定します。これを行うには、以下のコード例を使用します。

    CREATE HISTORY CONFIGURATION history_configuration_name HISTTYPE QUERY DATABASE history_database_name USER load_user PASSWORD your_password COLLECT PLAN, COLUMN LOADINTERVAL 1 LOADMINTHRESHOLD 0 LOADMAXTHRESHOLD 0 STORAGELIMIT 25 LOADRETRY 2 VERSION 1;

    前の例では、history_configuration_namehistory_database_name を、自分の履歴設定と履歴データベースの名前に置き換えます。次に、load_user を、履歴データをデータベースにロードするように定義したユーザーの名前に置き換えます。次に、your_password を安全なパスワードに置き換えます。

  3. 履歴データベース内のすべてのテーブルに読み取り権限を付与します。次のコード例を使用して SELECT 権限を付与できます。

    GRANT SELECT ON history_database_name.ALL.TABLE TO your_user;

    前述の例では、history_database_name を設定データベースの名前に置き換えます。次に、your_user を Netezza データベースを操作するための最小限の権限しか持たないユーザーの名前に置き換えます。AWS SCT では、このデータベースユーザーの認証情報を使用します。

  4. ソーススキーマ内の各テーブルの統計情報を収集して、列のカーディナリティに関する情報を取得します。以下のコマンドを使用して、履歴データベースの統計を生成できます。

    GENERATE STATISTICS on "schema_name"."table_name";

    前の例では、schema_nametable_name をデータベーススキーマとテーブルの名前に置き換えてください。

  5. 次のクエリを実行して、前提条件を完了していることを確認します。

    SELECT COUNT(*) FROM history_database_name.history_schema_name."$hist_column_access_N";

    前の例では、history_database_namehistory_schema_name を自分の履歴データベースとスキーマの名前に置き換えます。次に、N を履歴データベースのバージョン番号に置き換えます。履歴データベースのバージョンの詳細については、「IBM Netezza のドキュメント」を参照してください。

  6. データ抽出エージェントをインストールします。詳細については、「抽出エージェントをインストールする」を参照してください。

    すべてのエクストラクターインスタンスの settings.properties ファイル内の {working.folder} パラメーターが同じフォルダを指していることを確認してください。この場合、エクストラクターは CDC セッションを調整し、すべてのサブタスクに 1 つのトランザクションポイントを使用できます。

  7. データ抽出エージェントを登録します。詳細については、「抽出エージェントをに登録する AWS Schema Conversion Tool」を参照してください。

  8. CDC タスクを作成します。詳細については、「 AWS SCT タスクの作成、実行、監視」を参照してください。

    1. AWS SCT でプロジェクトを開きます。左のペインで、ソーステーブルを選択します。オブジェクトのコンテキスト (右クリック) メニューを開き、[ローカルタスクの作成] を選択します。

    2. [タスク名] に、データ移行タスクのわかりやすい名前を入力します。

    3. [移行モード] には、[抽出、アップロード、コピー] を選択します。

    4. [同期の有効化] を選択します。

    5. [CDC 設定] タブを選択し、CDC セッションの範囲とスケジュールを定義します。

    6. [タスクのテスト] を選択して、作業フォルダ、Amazon S3 バケット、および Amazon Redshift データウェアハウスに接続できることを確認します。

    7. [作成] を選択して、タスクを作成します。

    8. [タスク] タブを選択し、一覧からタスクを選択して [開始] を選択します。

  9. AWS SCT タスクはターゲットデータベース上のトランザクションの一貫性を維持します。データ抽出エージェントは、ソースからのトランザクションをトランザクション ID 順に複製します。

    移行セッションのいずれかを停止したり、失敗したりすると、CDC 処理も停止します。

Netezza から Amazon Redshift への変換設定

Netezza から Amazon Redshift への変換設定を編集するには、AWS SCT で [設定] を選択し、[変換設定] を選択します。上のリストから [Netezza] を選択し、次に [Netezza – Amazon Redshift] を選択します。AWS SCT に、Netezza から Amazon Redshift への変換に使用可能なすべての設定が表示されます。

AWS SCT での Netezza から Amazon Redshift への変換設定には、以下のオプションが含まれています。

  • 変換されたコード内のアクション項目に関するコメントの数を制限する。

    [変換後のコードにコメントを追加] で、選択した重要度以上のアクションアイテムについて、アクションアイテムの重要度を選択します。AWS SCT は、選択した重要度以上のアクションアイテムについて、変換後のコードにコメントを追加します。

    例えば、変換済みのコード内のコメント数を最小限に抑えるには、[エラーのみ] を選択します。変換済みのコードにすべてのアクション項目のコメントを含めるには、[すべてのメッセージ] を選択します。

  • AWS SCT でターゲット Amazon Redshift クラスターに適用できるテーブルの最大数を設定します。

    [ターゲット Amazon Redshift クラスターの最大テーブル数] では、AWS SCT が Amazon Redshift クラスターに適用できるテーブルの数を選択します。

    Amazon Redshift には、クラスターノードタイプの使用を制限するクォータがあります。[自動] を選択した場合、AWS SCT はノードタイプに応じてターゲット Amazon Redshift クラスターに適用するテーブルの数を決定します。オプションで、値を手動で選択します。詳細については、「Amazon Redshift 管理ガイド」の「Amazon Redshift のクォータと制限」を参照してください。

    Amazon Redshift クラスターが保存できる量を超える場合でも、AWS SCT はすべてのソーステーブルを変換します。AWS SCT では、変換されたコードはプロジェクトに保存され、ターゲットデータベースには適用されません。変換したコードを適用したときにテーブルの Amazon Redshift クラスターのクォータに達すると、AWS SCT に警告メッセージが表示されます。また、テーブルの数が制限に達するまで、AWS SCT はターゲット Amazon Redshift クラスターにテーブルを適用します。

  • Amazon Redshift テーブルの列に圧縮を適用します。そのためには、[圧縮エンコードを使用] を選択します。

    AWS SCT は、デフォルトの Amazon Redshift アルゴリズムを使用して、圧縮エンコーディングを列に自動的に割り当てます。詳細については、『Amazon Redshift データベースデベロッパーガイド』の「圧縮エンコード」を参照してください。

    デフォルトでは、Amazon Redshift はソートキーと分散キーとして定義されている列に圧縮を適用しません。この動作を変更したり、これらの列に圧縮を適用したりできます。そのためには、[KEY 列には圧縮エンコードを使用] を選択します。このオプションは、[圧縮エンコードを使用] オプションを選択した場合にのみ選択できます。

Netezza から Amazon Redshift への変換最適化設定

Netezza から Amazon Redshift への変換最適化設定を編集するには、AWS SCT で [設定] を選択し、[変換設定] を選択します。上のリストから [Netezza] を選択し、次に [Netezza – Amazon Redshift] を選択します。左側のペインで、[最適化戦略] を選択します。AWS SCT に Netezzaから Amazon Redshift への変換の変換最適化設定が表示されます。

AWS SCT での Netezza から Amazon Redshift への変換最適化設定には、以下のオプションが含まれています。

  • 自動テーブル最適化を使用するには。そのためには、[Amazon Redshift の自動テーブルチューニングを使用する] を選択します。

    自動テーブル最適化は、テーブルの設計を自動的に最適化する Amazon Redshift の自己調整プロセスです。詳細については、『Amazon Redshift データベース開発者ガイド』の「自動テーブル最適化の操作」を参照してください。

    自動テーブル最適化のみを利用するには、[初期キー選択戦略] で [なし] を選択します。

  • 戦略を使用してソートキーと分散キーを選択するには。

    Amazon Redshift メタデータ、統計情報、またはこれらのオプションの両方を使用して、ソートキーと配布キーを選択できます。[最適化戦略] タブの [初期キー選択戦略] では、以下のいずれかのオプションを選択します。

    • メタデータを使用し、統計情報は無視する

    • メタデータを無視し、統計情報を使用する

    • メタデータと統計情報を使用する

    選択したオプションに応じて、最適化戦略を選択できます。次に、各戦略について、値 (0~100) を入力します。これらの値は各戦略の重みを定義します。これらの重み値を使用して、AWS SCTは各ルールがディストリビューションキーとソートキーの選択にどのように影響するかを定義します。デフォルト値は、AWS 移行のベストプラクティスに基づいています。

    [小さいテーブルを検索] 戦略の小さいテーブルのサイズを定義できます。[最小テーブル行数] と [最大テーブル行数] には、テーブル内の最小行数と最大行数を入力して小さいテーブルとして定義します。AWS SCT は ALL 分散スタイルを小さなテーブルに適用します。この場合は、テーブル全体のコピーがすべてのノードに分散されます。

  • 戦略の詳細を設定するには。

    各最適化戦略の重みを定義することに加えて、最適化設定を構成できます。そのためには、[変換の最適化] を選択します。

    • [ソートキー列の制限] には、ソートキーの列の最大数を入力します。

    • [歪んだしきい値] には、列の歪んだ値のパーセンテージ (0 ~ 100) を入力します。AWS SCT は、歪み値がしきい値より大きい列を分散キーの候補リストから除外します。AWS SCT では、列の歪んだ値をレコードの総数に対する最も一般的な値の出現回数の割合として定義します。

    • [クエリ履歴テーブルの上位 N 件のクエリ] には、分析対象として最も頻繁に使用されるクエリの数 (1 ~ 100) を入力します。

    • [統計ユーザーを選択] では、クエリ統計を分析したいデータベースユーザーを選択します。

    また、[最適化戦略」タブでは、[小さいテーブルを検索] 戦略の小さいテーブルのサイズを定義できます。[最小テーブル行数] と [最大テーブル行数] には、テーブル内の最小行数と最大行数を入力すると、小さいテーブルとして考慮されます。AWS SCT は ALL 分散スタイルを小さなテーブルに適用します。この場合は、テーブル全体のコピーがすべてのノードに分散されます。