DynamoDB から Amazon Redshift へのデータのロード
Amazon Redshift は、高度なビジネスインテリジェンス機能と強力な SQL ベースのインターフェイスを使用して Amazon DynamoDB を補完します。DynamoDB テーブルのデータを Amazon Redshift にコピーすると、Amazon Redshift クラスター内の他のテーブルとの結合など、複雑なデータ分析のクエリを実行できます。
プロビジョニングされたスループットの面から見ると、DynamoDB テーブルからのコピーオペレーションによって、テーブルの読み込みキャパシティーが低下します。データをコピーした後は、Amazon Redshift 内で SQL クエリを実行しても DynamoDB に全く影響はありません。これは、DynamoDB 自体に対してではなく、DynamoDB からのデータのコピーに対してクエリが実行されるためです。
DynamoDB テーブルからデータをロードする前に、まずデータのロード先として Amazon Redshift テーブルを作成する必要があります。注意していただきたいのは、NoSQL 環境から SQL 環境にデータをコピーしていることと、1 つの環境での特定のルールが他の環境には適用されないことです。考慮すべき相違点の例を以下に示します。
-
DynamoDB テーブル名には「.」(ドット) や「-」(ダッシュ) を含む最大 255 文字を使用することができ、大文字と小文字が区別されます。Amazon Redshift テーブル名は 127 文字までに制限されます。ドットやダッシュは使用できず、大文字と小文字は区別されません。さらに、テーブル名は Amazon Redshift の予約語と重複してはいけません。
-
DynamoDB では、SQL の NULL の概念がサポートされていません。Amazon Redshift において、DynamoDB 内の空白またはブランクの属性値をどのように解釈するか、つまり、NULL と空白のフィールドのどちらで処理するかを指定する必要があります。
-
DynamoDB のデータ型は、Amazon Redshift のデータ型と直接対応していません。Amazon Redshift テーブルの各列において、データ型が正しく、DynamoDB からのデータに対応したサイズであることを確認する必要があります。
Amazon Redshift SQL からの COPY コマンドの例を以下に示します。
copy favoritemovies from 'dynamodb://my-favorite-movies-table' credentials 'aws_access_key_id=<Your-Access-Key-ID>;aws_secret_access_key=<Your-Secret-Access-Key>' readratio 50;
この例では、DynamoDB のソーステーブルは、my-favorite-movies-table
です。Amazon Redshift のターゲットテーブルは、favoritemovies
です。readratio 50
節により、プロビジョニングされたスループットの消費される割合が制限されます。この場合、COPY コマンドでは、my-favorite-movies-table
用にプロビジョニングされた読み込みキャパシティーの 50% 以下しか使用されません。この割合については、未使用のプロビジョニングされたスループットの平均よりも小さい値に設定することを強くお勧めします。
DynamoDB から Amazon Redshift にデータをロードする詳細な手順については、Amazon Redshift データベースデベロッパーガイドの次のセクションを参照してください。