Amazon Redshiftコネクタ > 部 II: Amazon Redshift V2コネクタを使用したデータ統合 > Amazon Redshiftソースとターゲット > Amazon Redshift V2ターゲット
  

Amazon Redshift V2ターゲット

マッピングまたはマッピングタスクのターゲットとしてAmazon Redshift V2オブジェクトを使用できます。入力ソースに基づいてAmazon Redshift V2ターゲットを作成することもできます。
詳細ターゲットプロパティを設定するとき、Amazon Redshift V2固有のプロパティを設定します。データを暗号化したり、クエリ効率向上のためにデータベーステーブルの統計メタデータを更新したり、Amazon S3バケットのフラットファイルからAmazon Redshiftにデータをロードしたり、ディスク領域の回復とテーブル内の行のソートのためにテーブルのクリーンアップを使用したりできます。
注: ターゲットテーブルの配布キーカラムにNULL値が含まれていて、同じターゲットテーブルの更新/挿入操作を使用してタスクを設定すると、タスクにより重複する行が作成される場合があります。重複する行の作成を防ぐには、次のいずれかのタスクを実行する必要があります。

Amazon Redshift V2ターゲットのAmazon Redshiftステージングディレクトリ

Secure Agentは、ターゲットプロパティで指定したディレクトリにステージングファイルを作成します。Secure AgentはデータをAmazon Redshiftに書き込む前に、ステージングディレクトリに書き込みます。
Secure Agentは、データをAmazon S3に書き込んだ後、ステージングされたファイルをステージングディレクトリから削除します。処理するデータのボリュームに最適なディスク領域を使用して、マッピングプロパティのステージングディレクトリを指定します。Secure Agentをホストするマシン上のディレクトリを指定します。
Secure Agentは、ステージングディレクトリにサブディレクトリを作成します。サブディレクトリでは次の命名規則を使用します。<staging directory>/infaRedShiftStaging<MMddHHmmssSSS+xyz>

Amazon Redshift V2ターゲットのデータ暗号化

データを保護するために、サーバーサイド暗号化またはクライアントサイド暗号化を有効にして、Amazon Redshiftに挿入するデータを暗号化できます。
Amazon Redshiftターゲットでサーバーサイドとクライアントサイドの両方の暗号化を有効にすると、クライアントサイト暗号化がデータのロードに使用されます。

Amazon Redshift V2ターゲットのサーバーサイド暗号化

.csvファイルをAmazon S3にアップロードしてステージングするときにAmazon Redshiftでデータを暗号化する場合は、サーバーサイド暗号化を有効にする必要があります。
サーバーサイド暗号化を有効にするには、詳細ターゲットプロパティで[S3サーバー側の暗号化]を選択し、接続プロパティで[顧客マスタキーID]を指定します。
サーバーサイド暗号化用に接続プロパティでAWS Key Management Service(AWS KMS)によって生成された顧客マスタキーIDを設定できます。IAM認証と、顧客マスタキーを使用したサーバーサイド暗号化を使用する場合は、IAM EC2ロールとIAM Redshiftロールを顧客マスタキーに追加する必要があります。
詳細ターゲットプロパティでサーバーサイド暗号化を選択し、接続プロパティで顧客マスタキーIDを指定しない場合、データの暗号化にはAmazon S3が管理する暗号化キーが使用されます。

Amazon Redshift V2ターゲットのクライアントサイド暗号化

クライアントサイド暗号化は、データをAmazon Redshiftサーバーに送信する前にデータを暗号化する方法です。
Amazon Redshift V2ターゲットに対してクライアントサイド暗号化を有効にすると、Secure Agentはソースからデータを取得し、そのデータをステージングディレクトリに書き込み、そのデータを暗号化してからAmazon S3バケットに書き込みます。次に、Amazon S3バケットはAmazon Redshiftにデータを書き込みます。
注: サーバーレスランタイム環境を使用する場合、Amazon Redshift V2ターゲットのクライアント側の暗号化を設定することはできません。
Amazon Redshift V2ターゲットでサーバーサイドおよびクライアントサイドの両方の暗号化を有効にすると、クライアントサイト暗号化がデータのロードに使用されます。
クライアントサイド暗号化を有効にするには、接続プロパティでマスタ対称キーを指定し、詳細ターゲットプロパティで[S3クライアント側の暗号化]を選択する必要があります。
Secure Agentは、マスタ対称キーを使用してデータを暗号化します。マスタ対称キーはBase64形式の256ビットAES暗号化キーです。Amazon Redshift V2コネクタはマスタ対称キーを使用してAmazon S3サーバーにデータをアップロードし、[暗号化]オプションを設定したcopyコマンドと追加のセキュリティ用のプライベート暗号化キーを使用して、Amazon Redshiftにデータをロードします。

Copyコマンド

Copyコマンドを使用すると、テーブルにデータを追加できます。Copyコマンドはセキュアな接続を使用して、Amazon S3バケット内のフラットファイルからAmazon Redshiftにデータをロードします。
[コピーオプション]フィールドでCopyコマンドオプションを直接指定するか、またはすべてのコマンドオプションを含むテキストファイルへのパスを指定できます。
オプションは大文字で入力し、オプションの区切りにはセミコロンを使用します。
例: DELIMITER = \036;ACCEPTINVCHARS = #;QUOTE = \037;COMPUPDATE = ON;AWS_IAM_ROLE=arn;aws;iam;;<account ID>;role/<role-name>
印刷できない文字の8進数の表現をDELIMITERおよびQUOTEとして使用することを推奨します。
注: 詳細モードのマッピングでCopyコマンドオプションを含むテキストファイルへのパスを指定することはできません。

Copyコマンドのオプション

Copyコマンドオプションは、Amazon S3からデータを読み取り、特定の形式でAmazon Redshiftにデータを書き込みます。テーブル内のデータに圧縮を適用したり、特定の文字でデータを区切ることができます。
Copyコマンドにオプションを追加するには、[CopyOptionsプロパティファイル]オプションを使用します。
以下のオプションを設定できます。
DELIMITER
入力ファイル内のフィールドを区切るための単一のASCII文字。パイプ(|)、チルダ(~)、タブ(\t)などの文字を使用できます。区切り文字をデータに含めることはできません。
デフォルト値は\036で、レコードセパレータと呼ばれる印字不可能な文字の8進数の表現を表します。
ACCEPTINVCHARS
データに無効なUTF-8文字が含まれていても、VARCHAR列にデータをロードします。ACCEPTINCHARSを指定すると、Secure Agentは、ACCEPTINVCHARSで指定された文字からなる同じ長さの文字で無効なUTF-8文字を置き換えます。ACCEPTINVCHARSで'|'を指定した場合、Secure Agentは3バイトのUTF-8文字を'|||'に置き換えます。
ACCEPTINVCHARSを指定しない場合、COPYコマンドは、無効なUTF-8文字が検出されるとエラーを返します。VARCHAR列でACCEPTINVCHARSオプションを使用できます。デフォルト疑問符(?)です。
QUOTE
カンマ区切り値で使用する引用符文字を指定します。デフォルトは\037で、印刷できない8進数のユニット区切り文字です。
REGION
Amazon S3ステージングバケットがクラスタ領域と同じ領域にない場合は、REGION属性を使用できます。Amazon Redshiftが米国東部(バージニア北部)にある場合は、アジアパシフィック(ムンバイ)領域にあるAmazon S3バケットを使用してステージングファイルを作成することができます。例: REGION = ap-south-1
COMPUPDATE
現在の圧縮エンコーディングをオーバーライドし、空のテーブルに圧縮を適用します。テーブル内の行が10万を超える場合は挿入操作でCOMPUPDATEオプションを使用します。COMPUPDATEの動作は設定方法に応じて異なります。
デフォルトはOFFです。
TRUNCATECOLUMN
データをターゲットに書き込む前に、VARCHARデータ型およびCHARデータ型のカラムのデータを切り詰めます。ターゲットに書き込むデータのサイズがターゲットカラムのサイズより大きい場合、Secure Agentはデータをターゲットカラムに書き込む前にデータを切り詰めます。
デフォルトでは、このTRUNCATECOLUMNSオプションはOFFになっています。TRUNCATECOLUMNSオプションを有効にするには、TRUNCATECOLUMNSオプションの値としてONを指定します。例えば、TRUNCATECOLUMNS=ONと指定します。
AWS_IAM_ROLE
Amazon EC2システムにインストールされたSecure Agentでタスクを実行するAmazon Redshiftロールリソース名(ARN)を次の形式で指定します。AWS_IAM_ROLE=arn:aws:iam::<account ID>:role/<role-name>
例: arn:aws:iam::123123456789:role/redshift_write
IGNOREBLANKLINES
入力行にNULL値が含まれている場合は、ターゲットにデータを挿入するときに空白行を無視するように、[コピーオプション]IGNOREBLANKLINESプロパティをONに設定します。次の形式でプロパティを指定します: IGNOREBLANKLINES=ON。このプロパティにより、データファイル内の改行のみを含む空白行を無視し、それらの行をロードの試行をしないようにします。

ターゲットテーブルの分析

クエリのパフォーマンスを最適化するには、ターゲットテーブルを分析するためのタスクを設定できます。ターゲットテーブル分析は、データベーステーブルの統計メタデータを更新します。
[ターゲットテーブルの分析]オプションを使用すると、テーブルからサンプル行を抽出し、サンプルを分析して、列の統計情報を保存できます。Amazon Redshiftは、統計メタデータを使用してクエリプランナーを更新します。クエリプランナーは、統計メタデータを使用して、クエリ効率の向上に最適な計画を作成して選択します。
Copyコマンドを使用して既存のテーブルにデータをロードしたら、[ターゲットテーブルの分析]オプションを実行できます。新しいテーブルにデータをロードした場合、Copyコマンドはデフォルトで分析を実行します。

ステージングファイルの保持

Secure Agentがターゲットにデータに書き込むと、Amazon S3でステージングファイルを保持できます。ファイルを保持すると、Amazon S3で組織データのデータレイクを作成できます。保存したファイルはデータのバックアップとしても使用できます。
ターゲット接続を作成する場合、ステージングファイルの保存用にファイルプレフィックスまたはディレクトリプレフィックスを設定できます。プレフィックスを指定すると、Secure Agentは、ターゲットで指定したAmazon S3の場所にあるディレクトリ内にファイルを作成します。[S3でステージングファイルを保持するためのプレフィックス]プロパティのいずれかのオプションを設定します。

テーブルのクリーンアップ

テーブルのクリーンアップを使用してディスク領域を回復し、指定したテーブルまたはデータベース内のすべてのテーブルの行をソートします。
削除やロードなどの一括操作を実行した後、または差分更新を実行した後、データベーステーブルをクリーンアップしてディスク領域を回復し、Amazon Redshiftのクエリパフォーマンスを向上する必要があります。行の削除や更新を実行しても、Amazon Redshiftは空き領域を再利用しません。
データベースまたはテーブルをクリーンアップすると、多くの場合、クエリパフォーマンスの一貫性を維持できます。データベース全体またはデータベース内の個々のテーブルのディスク領域を回復できます。データベースまたは指定されたデータベース管理スケジュールで最小限の操作を求める場合は、クリーンアップを実行する必要があります。クリーンアップを長く実行すると、データベース操作に影響を与える場合があります。大規模な未ソートの領域では、クリーンアップが長くなることが多いため、クリーンアップを実行します。
詳細ターゲットプロパティを設定する場合、テーブルのクリーンアップオプションを有効にできます。
次のリカバリオプションを選択できます。
なし
行のソートまたはディスク領域の回復は行わないでください。
フル
指定したテーブルまたはデータベース内のすべてのテーブルをソートし、前回の更新操作や削除操作で削除のマークが付けられた行によって使用されたディスク領域を回復します。
ソートのみ
削除行から解放された領域を回復せずに、指定したテーブルまたはデータベース内のすべてのテーブルをソートします。
削除のみ
前回の更新操作や削除操作で削除のマークが付けられた行によって使用されたディスク領域を回復し、テーブルを圧縮して使用領域を解放します。
再インデックス
インターリーブソートキーカラムで値の分布を分析し、テーブルのクリーンアップ操作全体を設定してパフォーマンスを改善します。

リカバリおよびリスタート処理

Amazon Redshift V2コネクタでは、CDCソースから変更データをキャプチャしてAmazon Redshiftのターゲットテーブルに書き込むマッピングタスクを実行する際に、リカバリおよびリスタート処理がサポートされます。詳細モードのマッピングを実行する場合、リカバリおよびリスタート処理は使用できません。
マッピングタスクが失敗したり、完了前に停止されたりした場合、Secure Agentは、ターゲットシステムのinfa_recovery_tableテーブルに格納されているリカバリ情報を使用して、変更データの抽出を中断箇所から再開します。これにより、変更データの喪失や、ソースとターゲットの不整合が防止されます。
リカバリおよびリスタート処理を有効にするには、マッピングタスクを作成または編集する際に、[ランタイムオプション]ページで詳細セッションプロパティの[リカバリストラテジ][最終チェックポイントから再開]に設定します。このように設定すると、マッピングタスクで変更データの処理を中断箇所から再開できるようになります。
特別な状況では、マッピングタスクのリスタートポイントを指定することもできます。例えば、マッピングタスクを初めて開始するときには、スキップされる変更レコードが生じないように、ターゲットの作成時に対応するリスタートポイントを指定するのが一般的です。デフォルトのリスタートポイントはログの末尾(EOL)です。これは、ログの現在のCDC処理に相当します。ログで利用可能な最も早いレコードや特定の日時から抽出処理が開始されるようにリスタートポイントを指定することもできます。時間ベースのリスタートポイントを使用すると、最初の作業単位(UOW)の終了時刻がそのリスタート時刻より後になっているログで抽出処理が開始されます。
リスタートポイントを指定する際には次のことに注意してください。
注: リスタート情報はマッピングタスク(特定のソースとターゲットの組み合わせ)に関連付けられます。マッピングのソースオブジェクトを変更した場合は、そのマッピングの新しいマッピングタスクを作成するか、既存のマッピングタスクのリスタートリビジョン番号を増やす必要があります。リスタートリビジョン番号を増やすには、マッピングタスクの[CDCランタイム]ページに移動して、[再起動ポイントの選択]ダイアログボックスを開き、[OK]をクリックします。このいずれかの操作を行わないと、マッピングタスクが次回の実行時に失敗します。

書き込み時にレコードの順序を維持

CDCソースからターゲットテーブルに変更レコードをキャプチャする際に、変更レコードの注文番号を維持することができます。このプロパティを使用すると、CDCソースとターゲットの不整合を防止できます。詳細モードのマッピングを実行する場合、[書き込み時にレコードの順序を保持]プロパティは使用できません。
CDCソースの1つの行で1つのレコードを複数回変更する際に、詳細ターゲットプロパティの[書き込み時にレコードの順序を維持]オプションを有効にすると、変更レコードがターゲットテーブルに書き込まれるときに変更レコードの注文番号が維持されます。
例えば、以下のCDCソーステーブルのレコードで複数の操作を実行したとします。
Emp ID
Emp Name
Emp Description
RowType
RowID
1
John
L1
挿入
1
1
John
L2
更新
2
1
John
L3
更新
3
ここで、RowIDはCDCソーステーブルの変更レコードの順序を示すものとします。
この場合、Secure Agentは、次の変更レコードを注文番号とともにターゲットテーブルに書き込みます。
Emp ID
Emp Name
Emp Description
RowType
RowID
1
John
L3
更新
3

DELIMITERおよびQUOTEとしての8進数値

印刷できるASCII文字に加えて、印刷できるASCII文字と印刷できないASCII文字の8進数値をDELIMITERおよびQUOTEとして使用できます。
印刷できる文字をDELIMITERまたはQUOTEとして使用するには、ASCII文字またはそれぞれの8進数値を指定します。ただし、印刷できない文字をDELIMITERまたはQUOTEとして使用するには、それぞれの8進数値を指定する必要があります。
印刷できる文字の例:
DELIMITER=#またはDELIMITER=\043
印刷できない文字の例、ファイルセパレータ:
QUOTE=\034
8進数値000-037と177は印刷できない文字を表し、040-176は印刷できる文字を表します。次の表に、Amazon Redshiftによりサポートされる、CopyコマンドのQUOTEとDELIMITER、およびUnloadコマンドのDELIMITERの推奨8進数値を示します。
コマンドオプション
推奨8進数値
COPY QUOTE
001-010、016-037、041-054、057、073-100、133、135-140、173-177
COPY DELIMITER
001-011、013、014、016、017、020-046、050-054、057、073-133、135-177
UNLOAD DELIMITER
001-011、013、014、016、017、020-041、043-045、050-054、056-133、135-177

成功ファイルおよびエラーファイル

Secure Agentは、マッピングの実行後に成功ファイルとエラーファイルを生成します。成功ファイルとエラーファイルは、行レベルの詳細を含む.csvファイルです。詳細モードでマッピングを実行する場合、成功ファイルとエラーファイルは使用できません。
Secure Agentは、マッピングの実行後に成功ファイルとエラーファイルを生成します。成功ファイルには、Amazon Redshiftに正常に書き込まれた各レコードのエントリが含まれます。各エントリには、レコードのすべてのフィールドに対して書き込まれた値が含まれます。このファイルを使用すると、Secure AgentがAmazon S3バケットとAmazon Redshiftターゲットに書き込んだデータを把握できます。
エラーファイルには、各データエラーのエントリが含まれます。ファイルの各エントリには、レコードのすべてのフィールドの値とエラーメッセージが含まれます。エラーファイルを使用すると、Secure AgentがAmazon Redshiftターゲットにデータを書き込まない理由を把握できます。
Secure Agentは成功ファイルまたはエラーファイルを上書きしません。エラー行ファイルと成功行ファイルが生成されたディレクトリからこれらのファイルに直接アクセスします。不要になったファイルは手動で削除できます。
成功ファイルのマッピングプロパティを設定する場合は、次のガイドラインを考慮してください。
エラーファイルのマッピングプロパティを設定する場合は、次のガイドラインを考慮してください。