Amazon S3 から DynamoDB にインポートするためのベストプラクティス
以下は、Amazon S3 から DynamoDB にデータをインポートするためのベストプラクティスです。
S3 オブジェクトの数を 50,000 個までに制限する
インポートジョブごとに最大 50,000 個の S3 オブジェクトがサポートされています。データセットに 50,000 個を超えるオブジェクトが含まれている場合は、それらをより大きなオブジェクトに統合することを検討してください。
過度に大きな S3 オブジェクトは避ける
S3 オブジェクトは並列してインポートされます。中規模の S3 オブジェクトが多数ある場合は、過剰なオーバーヘッドを発生せずに並列実行が可能です。1 KB 未満の項目については、各 S3 オブジェクトに 4,000,000 個の項目を配置することを検討してください。項目の平均サイズが大きい場合は、それに比例して各 S3 オブジェクトに配置する項目数を減らします。
ソート順のデータをランダム化する
S3 オブジェクトがデータをソート順に保持している場合、ローリングホットパーティションを作成する場合があります。これは、あるパーティションがすべてのアクティビティを受け取り、その後に次のパーティションがアクティビティを受け取る、というような状況です。ソート順のデータは、インポート中に同じターゲットパーティションに書き込まれる S3 オブジェクト内の連続した項目として定義されます。データがソート順序になる一般的な状況の 1 つは、項目がパーティションキーでソートされ、繰り返される項目が同じパーティションキーを共有する CSV ファイルです。
ホットパーティションのローリングを回避するため、こうしたケースでは順序をランダム化することをお勧めします。これにより、書き込みオペレーションを分散してパフォーマンスを向上させることができます。詳細については、「DynamoDB でデータアップロード中の書き込みアクティビティを効率的に分散させる」を参照してください。
データを圧縮して、S3 オブジェクトの合計サイズをリージョン内の制限以下に保つ
S3 からのインポートプロセスでは、インポートする S3 オブジェクトデータの合計サイズに制限があります。us-east-1、us-west-2、eu-west-1 リージョンでは 15 TB、その他のすべてのリージョンでは 1 TB までです。制限は raw S3 オブジェクトサイズに基づいています。
圧縮すると、より多くの raw データを制限内に収めることができます。圧縮だけではインポートが制限内に収まらない場合は、AWS Premium Support
項目のサイズがパフォーマンスにどのように影響するか注意する
項目の平均サイズが非常に小さい (200 バイト未満) 場合、インポート処理は項目サイズが大きい場合よりも多少時間を要する場合があります。
グローバルセカンダリインデックスなしでのインポートを検討する
インポート作業の所要時間は、1 つまたは複数のグローバルセカンダリインデックス (GSI) の有無によって異なる場合があります。カーディナリティの低いパーティションキーを使用してインデックスを作成する予定の場合、インポート作業が終了するまでインデックスの作成を延期すると (それらをインポートジョブに含めるよりも) インポート速度が向上する可能性があります。
注記
インポート中に GSI を作成しても書き込み料金は発生しません (インポート後に GSI を作成すると発生します)。