DynamoDB プロビジョンドキャパシティモード
Amazon DynamoDB で新しいプロビジョンドテーブルを作成する場合は、テーブルのプロビジョンドスループットキャパシティを指定する必要があります。これは、テーブルがサポートできる読み込みおよび書き込みスループットの量です。DynamoDB は、この情報を使用して、スループット要件を満たすだけの十分なシステムリソースがあることを確認します。
オプションで、DynamoDB の自動スケーリングでテーブルのスループットキャパシティを管理できます。自動スケーリングを使用するには、テーブルの作成時に読み込みおよび書き込みキャパシティの初期設定を指定する必要があります。DynamoDB の自動スケーリングでは、これらの初期設定を開始点として使用し、アプリケーションの要件に応じて設定を動的に調整します。詳細については、「DynamoDB Auto Scaling によるスループットキャパシティの自動管理」を参照してください。
アプリケーションのデータとアクセス要件が変わると、テーブルのスループット設定の調整が必要になる場合があります。DynamoDB Auto Scaling を使用している場合、スループット設定は実際のワークロードに応じて自動的に調整されます。UpdateTable オペレーションを使用して、テーブルのスループットキャパシティを手動で調整することもできます。既存のデータストアから新しい DynamoDB テーブルにデータをバルクロードする必要がある場合などに便利です。大容量の書き込みスループットを設定したテーブルを作成し、データのバルクロードが完了してからこの設定を削減ですることができます。
テーブルは、オンデマンドモードからプロビジョンドキャパシティモードにいつでも切り替えることができます。キャパシティモード間で複数の切り替えを行う場合は、次の条件が適用されます。
-
オンデマンドモードで新しく作成したテーブルは、いつでもプロビジョンドキャパシティモードに切り替えることができます。ただし、オンデマンドモードに戻すことができるのは、テーブルの作成タイムスタンプから 24 時間後のみです。
-
オンデマンドモードの既存のテーブルは、いつでもプロビジョンドキャパシティモードに切り替えることができます。ただし、オンデマンドモードに戻すことができるのは、オンデマンドへの切り替えを示す最後のタイムスタンプから 24 時間後のみです。
読み込みおよび書き込みキャパシティモードの詳細については、「DynamoDB でキャパシティモードを切り替える際の考慮事項」を参照してください。
トピック
読み取りキャパシティユニットと書き込みキャパシティユニット
プロビジョンドモードテーブルでは、スループット要件をキャパシティユニットの数で指定します。キャパシティユニットは、アプリケーションが 1 秒あたりに読み込みまたは書き込みを行う必要があるデータの量を表します。これらの設定は必要に応じて後から変更できます。また、DynamoDB Auto Scaling を有効化して自動的に変更することもできます。
最大サイズ 4 KB の項目の場合、1 つの読み込みキャパシティユニット (RCU) は、1 秒あたり 1 回の強力な整合性のある読み込み、または 1 秒あたり 2 回の結果整合性のある読み込みを表します。DynamoDB の読み込み整合性モデルの詳細については「DynamoDB の読み取り整合性」を参照してください。
1 つの書き込みキャパシティユニット (WCU) は、最大サイズが 1 KB の項目の場合、1 秒あたり 1 回の書き込みを表します。さまざまな読み込みおよび書き込みオペレーションの詳細については、「DynamoDB の読み込みと書き込みのオペレーション」を参照してください。
初期スループット設定の選択
アプリケーションごとにデータベースの読み込みおよび書き込みの要件は異なります。DynamoDB テーブルの初期スループット設定を決定する際は、以下の点を考慮してください。
-
予想される読み込みおよび書き込みリクエストレート — 1 秒あたりに実行する必要がある読み込みおよび書き込みの数を推定する必要があります。
-
項目のサイズ — 一部の項目は小さいため、読み込みや書き込みには 1 つのキャパシティユニットを使用できます。項目のサイズが大きくなると、複数のキャパシティーユニットが必要になります。テーブルに追加する項目の平均サイズを見積もることで、テーブルのプロビジョニングされたスループットに対する正確な設定を指定できます。
-
読み込みの整合性要件 — 読み込みキャパシティユニットは、強力な整合性のある読み込みオペレーションに基づいており、結果整合性のある読み込みの 2 倍のデータベースリソースを消費します。アプリケーションが強力な整合性のある読み込みを要求するか、またはこの要件を緩和して結果的に整合性のある読み込み行うかどうかを決定する必要があります DynamoDB での読み込みオペレーションは、デフォルトでは結果整合性のある読み込みです。必要に応じて、これらのオペレーションに強力な整合性のある読み込みをリクエストできます。
例えば、テーブルから 1 秒あたり 80 項目を読み込むとします。項目のサイズは 3 KB で、強力な整合性のある読み込みが必要です。このシナリオでは、読み込みごとに 1 つのプロビジョニングされた読み込みキャパシティユニットが必要です。この数を決定するには、オペレーションの項目サイズを 4 KB で割ります。次に、以下の例に示すように、最も近い整数に切り上げます。
-
3 KB / 4 KB = 0.75、または 1 つの読み込みキャパシティユニット
したがって、テーブルから 1 秒あたり 80 項目を読み込むには、次の例に示すように、テーブルのプロビジョニングされた読み込みスループットを 80 個の読み込みキャパシティユニットに設定します。
-
1 読み込み容量単位/項目 x 80 読み込み/秒 = 80 読み込み容量単位
次に、テーブルに 1 秒あたり 100 項目を書き込み、各項目のサイズが 512 バイトであるとします。この場合、書き込みごとに 1 つのプロビジョニングされた書き込みキャパシティユニットが必要です。この数を決定するには、オペレーションの項目サイズを 1 KB で割ります。次の例に示すように、結果を最も近い整数に切り上げます。
-
512 バイト/1 KB = 0.5 または 1 つの書き込みキャパシティユニット
テーブルに 1 秒あたり 100 項目を書き込むには、テーブルのプロビジョニングされた書き込みスループットを 100 個の書き込みキャパシティユニットに設定します。
-
1 書き込み容量単位/項目 x 100 書き込み/秒 = 100 書き込み容量単位
DynamoDB 自動スケーリング
DynamoDB 自動スケーリングでは、テーブルとグローバルセカンダリインデックスのプロビジョニングされたスループットキャパシティを自動的に管理します。読み込みおよび書き込みのキャパシティーユニットの範囲 (上限と下限) と、また、その範囲内で目標使用率を定義します。DynamoDB Auto Scaling では、アプリケーションのワークロードが増減しても、ターゲットの使用率が維持されます。
DynamoDB Auto Scaling では、急激なトラフィック増加をリクエストのスロットリングなしに処理するために、テーブルまたはグローバルセカンダリインデックスのプロビジョンされた読み込み容量と書き込み容量を増やすことができます。ワークロードが減ると、DynamoDB Auto Scaling はスループットを低下させ、未使用のプロビジョンされた容量に料金が発生しないようにします。
注記
AWS Management Console を使用してテーブルまたはグローバルセカンダリインデックスを作成すると、デフォルトで DynamoDB オートスケーリングが有効になります。
Auto Scaling の設定は、コンソール、AWS CLI、またはいずれかの AWS SDK を使用していつでも管理できます。詳細については、「DynamoDB Auto Scaling によるスループットキャパシティの自動管理」を参照してください。
使用率
使用率は、プロビジョニングキャパシティを超過しているかどうかを判断するのに役立ちます。超過している場合は、テーブルのキャパシティを減らしてコストを削減する必要があります。逆に、プロビジョニングキャパシティを下回っているかどうかを判断するのにも役立ちます。この場合、予期しないトラフィック増によりリクエストがスロットリングされる可能性を防ぐため、テーブルのキャパシティを増やす必要があります。詳細については、「Amazon DynamoDB auto scaling: Performance and cost optimization at any scale
DynamoDB 自動スケーリングを使用している場合は、ターゲット使用率も設定する必要があります。自動スケーリングでは、この使用率をターゲットとして使用し、キャパシティを上下に調整します。ターゲット使用率は 70% に設定することをお勧めします。詳細については、「DynamoDB Auto Scaling によるスループットキャパシティの自動管理」を参照してください。