メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

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