メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012年12月1日)

Amazon DynamoDB テーブルからデータをロードする

COPY コマンドで、1 つの Amazon DynamoDB テーブルのデータを使用してテーブルをロードすることができます。

重要

REGION オプションを使用して Amazon DynamoDB テーブルがあるリージョンを指定しない限り、データを提供する Amazon DynamoDB テーブルは、クラスターと同じリージョンに作成する必要があります。

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
copy <redshift_tablename> from 'dynamodb://<dynamodb_table_name>' authorization readratio '<integer>';

認証の値は、Amazon DynamoDB テーブルにアクセスするために必要な AWS 認証情報です。これらの認証情報が IAM ユーザーに一致する場合、その IAM ユーザーにはロードされる Amazon DynamoDB テーブルに SCAN と DESCRIBE を実行する権限を与える必要があります。

認証の値は、クラスターが Amazon DynamoDB テーブルにアクセスするために必要な AWS 認証を提供します。アクセス権限には、ロードする Amazon DynamoDB テーブルに対する SCAN および DESCRIBE が含まれている必要があります。必要なアクセス権限の詳細については、「COPY、UNLOAD、CREATE LIBRARY のための IAM のアクセス許可」を参照してください。推奨の認証方法は、IAM_ROLE パラメータを指定して、必要なアクセス権限がある IAM ロールの Amazon リソースネーム (ARN) を提供することです。または、ACCESS_KEY_ID パラメータと SECRET_ACCESS_KEY パラメータを指定して、認証済み IAM ユーザーのアクセスキー ID とシークレットアクセスキーをプレーンテキストで提供することもできます。詳細については、「ロールベースアクセスコントロール」または「キーベースのアクセスコントロール」を参照してください。

IAM_ROLE パラメータを使用して認証するには、次の構文で示すように、<aws-account-id> および <role-name> を置き換えます。

Copy
IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'

次の例で、IAM ロールを使用した認証を示します。

Copy
copy favoritemovies from 'dynamodb://ProductCatalog' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

IAM ユーザー認証情報を使用して認証するには、次に示すように、承認されたユーザーのアクセスキー ID および完全なシークレットアクセスキーで、ACCESS_KEY_ID パラメータおよび SECRET_ACCESS_KEY パラメータの <access-key-id><secret-access-key> を置き換えます。

Copy
ACCESS_KEY_ID '<access-key-id>' SECRET_ACCESS_KEY '<secret-access-key>';

次の例で、IAM ユーザー認証情報を使用した認証を示します。

Copy
copy favoritemovies from 'dynamodb://ProductCatalog' access_key_id '<access-key-id>' secret_access_key '<secret-access-key';

他の認証オプションの詳細については、「認証パラメータ」を参照してください。

テーブルを実際にロードせずにデータを検証する場合、COPY コマンドに NOLOAD オプションを指定します。

次の例では、「my-favorite-movies-table」という名前の DynamoDB テーブルから FAVORITEMOVIES テーブルにデータをロードします。読み取りアクティビティでは、プロビジョニングされたスループットの最大 50% が消費されます。

Copy
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 に関する詳細は、「データ型」を参照してください。