Amazon DynamoDB テーブルからのデータのロード
COPY コマンドで、1 つの Amazon DynamoDB テーブルのデータを使用してテーブルをロードすることができます。
重要
REGION オプションを使用して Amazon DynamoDB テーブルがある AWS リージョンを指定しない限り、データを提供する Amazon DynamoDB テーブルは、クラスターと同じ AWS リージョンに作成される必要があります。
COPY コマンドは Amazon Redshift の超並列処理 (MPP) アーキテクチャを使用して、Amazon DynamoDB テーブルからデータを並列でロードします。Amazon Redshift テーブルに分散方式を設定すれば、並列処理を最大限に活用できます。詳細については、「クエリ最適化のためのデータのディストリビューション」を参照してください。
重要
COPY コマンドで Amazon DynamoDB テーブルからデータを読み込むとき、結果として起こるデータ転送はそのテーブルにプロビジョンドスループットの一部になります。
プロビジョニングされた読み込みスループットの過度の消費を避けるために、本稼働環境にある Amazon DynamoDB テーブルからはデータをロードしないことをお勧めします。本稼働テーブルからデータをロードする場合、プロビジョニングされ、使用されていないスループットの平均パーセントよりかなり低く READRATIO オプションを設定することをお勧めします。READRATIO を低く設定すると、スロットルの問題が最小限に抑えられます。Amazon DynamoDB テーブルにプロビジョンドスループット全体を使用するには、READRATIO を 100 に設定します。
COPY コマンドは以下のルールを使用し、DynamoDB テーブルから取得された項目の属性名と既存の Amazon Redshift テーブルの列名を照合します。
-
Amazon Redshift テーブルの列と Amazon DynamoDB 項目の属性が大文字と小文字を区別せずに照合されます。DynamoDB テーブルの項目に、Price と PRICE のように、大文字/小文字だけが異なる複数の属性が含まれる場合、COPY コマンドは失敗します。
-
Amazon Redshift テーブルの属性と一致しない Amazon DynamoDB テーブル列は、COPY コマンドの EMPTYASNULL オプションで指定された値に基づき、NULL または空としてロードされます。
-
Amazon Redshift テーブルの列に一致しない Amazon DynamoDB 属性は破棄されます。属性は照合の前に読み込まれます。そのため、破棄された属性もそのテーブルにプロビジョニングされたスループットの一部を消費します。
-
データ型がスカラー STRING と NUMBER の Amazon DynamoDB 属性のみがサポートされます。Amazon DynamoDB BINARY および SET データ型はサポートされません。COPY コマンドがサポートされないデータ型を持つ属性をロードしようとすると失敗します。属性が Amazon Redshift テーブル列に一致しない場合、COPY はロードを試行せず、エラーを発行しません。
COPY コマンドは次の構文を使用し、Amazon DynamoDB テーブルからデータをロードします。
COPY <redshift_tablename> FROM 'dynamodb://<dynamodb_table_name>' authorization readratio '<integer>';
authorization の値は、Amazon DynamoDB テーブルにアクセスするために必要な AWS の認証情報です。これらの認証情報がユーザーと対応する場合、このユーザーは、ロードする Amazon DynamoDB テーブルに SCAN と DESCRIBE を実行するアクセス許可が必要です。
authorization の値は、クラスターが Amazon DynamoDB テーブルにアクセスする際に必要な AWS 認証を提供します。許可には、ロードする Amazon DynamoDB テーブルに対する SCAN および DESCRIBE が含まれている必要があります。必要なアクセス許可の詳細については、「COPY、UNLOAD、CREATE LIBRARY のための IAM のアクセス許可」を参照してください。推奨の認証方法は、IAM_ROLE パラメータを指定して、必要なアクセス権限がある IAM ロールの Amazon リソースネーム (ARN) を提供することです。詳細については、「ロールベースアクセスコントロール」を参照してください。
IAM_ROLE パラメータを使用して認証するには、次の構文で示すように、<aws-account-id>
および <role-name>
を置き換えます。
IAM_ROLE 'arn:aws:iam::
<aws-account-id>
:role/<role-name>
'
次の例で、IAM ロールを使用した認証を示します。
COPY favoritemovies FROM 'dynamodb://ProductCatalog' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
他の認証オプションの詳細については、「認可パラメータ」を参照してください。
テーブルを実際にロードせずにデータを検証する場合、COPY コマンドに NOLOAD オプションを指定します。
次の例では、「my-favorite-movies-table」という名前の DynamoDB テーブルから FAVORITEMOVIES テーブルにデータをロードします。読み取りアクティビティでは、プロビジョニングされたスループットの最大 50% が消費されます。
COPY favoritemovies FROM 'dynamodb://my-favorite-movies-table' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' READRATIO 50;
スループットを最大化するために、COPY コマンドはクラスターのコンピューティングノード全体で並列で Amazon DynamoDB テーブルからデータをロードします。
自動圧縮のあるプロビジョニングされたスループット
デフォルトでは、圧縮エンコーディングなしで空のターゲットテーブルを指定したとき、COPY コマンドは自動圧縮を適用します。自動圧縮分析は、最初に Amazon DynamoDB テーブルから大量の行をサンプリングします。サンプルサイズは、COMPROWS パラメータの値に基づきます。デフォルトはスライスごとに 100,000 行です。
サンプリングの後、サンプル行は破棄され、テーブル全体がロードされます。結果として、多くの行が 2 回読み取られます。自動圧縮の仕組みについては、「自動圧縮ありでテーブルをロードする」を参照してください。
重要
COPY コマンドで Amazon DynamoDB テーブルからサンプリングで使われる行を含むデータを読み込むと、結果として起こるデータ転送はそのテーブルにプロビジョンドスループットの一部になります。
Amazon DynamoDB からのマルチバイトデータのロード
データに ASCII 以外のマルチバイト文字 (漢字やキリル文字) が含まれる場合、データを VARCHAR 列にロードする必要があります。VARCHAR データ型は 4 バイトの UTF-8 文字をサポートしますが、CHAR データ型はシングルバイトの ASCII 文字のみを受け取ります。5 バイト以上の文字を Amazon Redshift テーブルにロードすることはできません。CHAR と VARCHAR に関する詳細は、「データ型」を参照してください。