Read/Write Capacity Mode - Amazon DynamoDB

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

Read/Write Capacity Mode

Amazon DynamoDB には、テーブルで読み込みおよび書き込みを処理するための読み込み/書き込みキャパシティーモードが 2 つあります。

  • On-demand

  • Provisioned (default, free-tier eligible)

読み取り/書き込みキャパシティーモードは、読み取りおよび書き込みスループットの課金方法と容量の管理方法を制御します。読み取り/書き込みキャパティーモードは、テーブルを作成するときに設定できます。後で変更することもできます。

ローカル セカンダリ インデックスは、ベース テーブルから読み取り/書き込み容量モードを継承します。詳細については、「読み取り/書き込みキャパシティーモードの変更時の考慮事項」を参照してください。

On-Demand Mode

Amazon DynamoDB オンデマンドは、容量計画なしで 1 秒あたりに数千ものリクエストを処理できる柔軟な請求オプションです。DynamoDB オンデマンドには、読み取りおよび書き込みリクエストのリクエストごとの支払い料金が用意されているため、使用した分だけ課金されます。

オンデマンドモードを選択すると、DynamoDB は、前に到達したトラフィックレベルまで拡張または縮小して、ワークロードを即座に受け入れることができるようにします。ワークロードのトラフィックレベルが新しいピークに達すると、DynamoDB はワークロードに対応するように迅速に対応します。オンデマンドモードを使用するテーブルは、同じ 1 桁ミリ秒のレイテンシー、サービスレベルアグリーメント (SLA) のコミットメント、DynamoDB が既に実現しているセキュリティを提供します。オンデマンドは、新しいテーブルと既存のテーブルの両方に選択できるだけでなく、コードを変更せずに既存の DynamoDB API を引き続き使用することができます。

以下の条件のいずれかに該当する場合、オンデマンドモードは適切なオプションです。

  • You create new tables with unknown workloads.

  • You have unpredictable application traffic.

  • You prefer the ease of paying for only what you use.

リクエストレートは、DynamoDB スループットのデフォルトテーブルクォータによってのみ制限されますが、リクエストに応じて上げることができます。詳細については、「スループットのデフォルトクォータ」を参照してください。

オンデマンドの使用を開始するには、テーブルを作成または更新してオンデマンドモードを使用できます。詳細については、「DynamoDB テーブルの基本オペレーション」を参照してください。

24 時間ごとに 1 回、読み込み/書き込みキャパシティーモードを切り替えることができます。読み込み/書き込みキャパシティーモードを切り替えるときに考慮すべき問題については、「読み取り/書き込みキャパシティーモードの変更時の考慮事項」を参照してください。

注記

オンデマンドは現在、DynamoDB インポート/エクスポートツールではサポートされていません。

Read Request Units and Write Request Units

オンデマンドモードテーブルでは、アプリケーションに期待する読み取りおよび書き込みスループットの量を指定する必要がありません。DynamoDB では、読み取りリクエストユニットと書き込みリクエストユニットの観点でアプリケーションがテーブルで実行した読み取りと書き込みに対して課金されます。

  • One read request unit represents one strongly consistent read request, or two eventually consistent read requests, for an item up to 4 KB in size. Two read request units represent one transactional read for items up to 4 KB. If you need to read an item that is larger than 4 KB, DynamoDB needs additional read request units. The total number of read request units required depends on the item size, and whether you want an eventually consistent or strongly consistent read. For example, if your item size is 8 KB, you require 2 read request units to sustain one strongly consistent read, 1 read request unit if you choose eventually consistent reads, or 4 read request units for a transactional read request.

    注記

    To learn more about DynamoDB read consistency models, see Read Consistency.

  • One write request unit represents one write for an item up to 1 KB in size. If you need to write an item that is larger than 1 KB, DynamoDB needs to consume additional write request units. Transactional write requests require 2 write request units to perform one write for items up to 1 KB. The total number of write request units required depends on the item size. For example, if your item size is 2 KB, you require 2 write request units to sustain one write request or 4 write request units for a transactional write request.

DynamoDB オンデマンドが使用可能な AWS リージョンのリストについては、「Amazon DynamoDB の料金表」を参照してください。

Peak Traffic and Scaling Properties

オンデマンドキャパシティーモードを使用する DynamoDB テーブルは、アプリケーションのトラフィックボリュームに自動的に対応します。オンデマンドキャパシティーモードは、テーブルにおける前のピークトラフィックの最大 2 倍まで瞬時に対応します。たとえば、アプリケーションのトラフィックパターンにおいて、強力な整合性のある読み込みが 1 秒あたり 25,000 ~ 50,000 回の間で変化し、前のトラフィックピークの読み込みが 1 秒あたり 50,000 回の場合、オンデマンドキャパシティーモードは維持されているトラフィックである 1 秒あたり最大 100,000 回の読み取りに瞬時に対応します。アプリケーションが 1 秒あたり 100,000 回の読み込みのトラフィックを維持する場合、そのピークは新しい前のピークになり、その後のトラフィックは 1 秒あたり最大 200,000 回の読み込みに到達することができます。

テーブルにおける前のピークの 2 倍以上が必要な場合、DynamoDB はトラフィックボリュームが増加する自動的に多くの容量を割り当て、ワークロードがスロットリングされないようにします。ただし、30 分以内に前のピークの 2 倍を超えた場合、スロットリングが発生する可能性があります。たとえば、アプリケーションのトラフィックパターンにおいて、強力な整合性のある読み込みが 1 秒あたり 25,000 ~ 50,000 回の間で変化し、前に到達したトラフィックピークの読み込みが 1 秒あたり 50,000 回の場合、1 秒あたり 100,000 回を超える読み込みまで上げる前に 30 分以上トラフィック増加の間隔をあけることが DynamoDB により推奨されます。

Initial Throughput for On-Demand Capacity Mode

既存のテーブルを最近初めてオンデマンドキャパシティーモードに切り替えた場合や、オンデマンドキャパシティーモードが有効な新しいテーブルを作成した場合、テーブルがオンデマンドキャパシティーモードを使用して以前にトラフィックを処理していなくても、テーブルの前のピーク設定は以下のようになります。

  • Newly created table with on-demand capacity mode: The previous peak is 2,000 write request units or 6,000 read request units. You can drive up to double the previous peak immediately, which enables newly created on-demand tables to serve up to 4,000 write request units or 12,000 read request units, or any linear combination of the two.

  • Existing table switched to on-demand capacity mode: The previous peak is half the maximum write capacity units and read capacity units provisioned since the table was created, or the settings for a newly created table with on-demand capacity mode, whichever is higher. In other words, your table will deliver at least as much throughput as it did prior to switching to on-demand capacity mode.

Table Behavior while Switching Read/Write Capacity Mode

テーブルをプロビジョンドキャパシティーモードからオンデマンドキャパシティーモードに切り替えると、DynamoDB はテーブルおよびパーティションの構造にいくつかの変更を加えます。この処理には数分かかることもあります。切り替え期間中、テーブルは以前にプロビジョニングされた書き込みキャパシティーユニットおよび読み込みキャパシティーユニットの両方と整合性のあるスループットを提供します。オンデマンドキャパシティーモードからプロビジョンドキャパシティーモードに戻すと、テーブルは、テーブルがオンデマンドキャパシティーモードに設定されたときに到達した前のピークと整合性のあるスループットを提供します。

Provisioned Mode

プロビジョニングモードを選択した場合、アプリケーションに必要な 1 秒あたりの読み込みと書き込みの回数を指定します。Auto Scaling を使用すると、トラフィックの変更に応じて、テーブルのプロビジョンドキャパシティーを自動的に調整できます。これにより、コストの予測可能性を得るため、定義されたリクエストレート以下に維持されるように DynamoDB を制御することができます。

以下の条件のいずれかに該当する場合、プロビジョニングモードは適切なオプションです。

  • You have predictable application traffic.

  • You run applications whose traffic is consistent or ramps gradually.

  • You can forecast capacity requirements to control costs.

Read Capacity Units and Write Capacity Units

プロビジョニングモードのテーブルでは、読み込みキャパシティーユニット (RCU) と書き込みキャパシティーユニット (WCU) の観点でスループットキャパシティーを指定できます。

  • One read capacity unit represents one strongly consistent read per second, or two eventually consistent reads per second, for an item up to 4 KB in size. Transactional read requests require two read capacity units to perform one read per second for items up to 4 KB. If you need to read an item that is larger than 4 KB, DynamoDB must consume additional read capacity units. The total number of read capacity units required depends on the item size, and whether you want an eventually consistent or strongly consistent read. For example, if your item size is 8 KB, you require 2 read capacity units to sustain one strongly consistent read per second, 1 read capacity unit if you choose eventually consistent reads, or 4 read capacity units for a transactional read request. For more information, see 読み込みでのキャパシティーユニットの消費.

    注記

    To learn more about DynamoDB read consistency models, see Read Consistency.

  • One write capacity unit represents one write per second for an item up to 1 KB in size. If you need to write an item that is larger than 1 KB, DynamoDB must consume additional write capacity units. Transactional write requests require 2 write capacity units to perform one write per second for items up to 1 KB. The total number of write capacity units required depends on the item size. For example, if your item size is 2 KB, you require 2 write capacity units to sustain one write request per second or 4 write capacity units for a transactional write request. For more information, see 書き込みでのキャパシティーユニットの消費.

重要

オンデマンドテーブルで DescribeTable を呼び出すと、読み込みキャパシティーユニットと書き込みキャパシティーユニットが 0 に設定されます。

アプリケーションでこれより大きな項目の読み込みまたは書き込みが行われると (上限は DynamoDB の最大項目サイズである 400 KB)、消費されるキャパシティーユニットがさらに増えます。

たとえば、6 個の読み込みキャパシティーユニットと 6 個の書き込みキャパシティーユニットを使用してプロビジョニング済みテーブルを作成したとします。これらの設定により、アプリケーションで次のことが可能になります。

  • Perform strongly consistent reads of up to 24 KB per second (4 KB × 6 read capacity units).

  • Perform eventually consistent reads of up to 48 KB per second (twice as much read throughput).

  • Perform transactional read requests of up to 12 KB per second.

  • Write up to 6 KB per second (1 KB × 6 write capacity units).

  • Perform transactional write requests of up to 3 KB per second.

詳細については、「DynamoDB のプロビジョニングされたキャパシティーテーブルの設定の管理」を参照してください。

Provisioned throughput は、アプリケーションがテーブルまたはインデックスから消費できる最大容量です。テーブルまたはインデックスでプロビジョニングされたスループットキャパシティーを超過したアプリケーションは、リクエストスロットリングの対象になります。

スロットリングは、アプリケーションで大量のキャパシティーユニットが消費されるのを防ぎます。要求がスロットルされると、HTTP 400コード(Bad Request)および ProvisionedThroughputExceededException。 AWS SDKには、スロットルされた要求の再試行のサポートが組み込まれています( エラーの再試行とエクスポネンシャルバックオフ)。このロジックを自分で書く必要はありません。

AWS マネジメントコンソールを使用すると、プロビジョニングされたスループットと実際のスループットをモニタリングしたり、必要に応じてスループットの設定を変更したりできます。

DynamoDB Auto Scaling

DynamoDB Auto Scaling では、テーブルと グローバルセカンダリインデックス のスループットキャパシティーが自動的に管理されます。読み込みおよび書き込みのキャパシティーユニットの範囲 (上限と下限) と、その範囲内のターゲット使用率を定義します。アプリケーションのワークロードが増減しても DynamoDB Auto Scaling により、ターゲット使用率が維持されます。

DynamoDB Auto Scaling では、急激なトラフィック増加をリクエストのスロットリングなしに処理するために、テーブルまたは グローバルセカンダリインデックス のプロビジョニングされた読み込みキャパシティーと書き込みキャパシティーを増やすことができます。ワークロードが減ると、DynamoDB Auto Scaling はスループットを低下させ、未使用のプロビジョニングされたキャパシティーに料金が発生しないようにします。

注記

AWS マネジメントコンソール を使用してテーブルや グローバルセカンダリインデックスを作成する場合、DynamoDB Auto Scaling はデフォルトで有効になります。

Auto Scaling の設定は、コンソール、AWS CLI、またはいずれかの AWS SDK を使用していつでも管理できます。

詳細については、「DynamoDB Auto Scaling によるスループットキャパシティーの自動管理」を参照してください。

Reserved Capacity

として DynamoDB 顧客は、 reserved capacity で説明するように、事前に Amazon DynamoDB 価格設定. リザーブドキャパシティーでは、1 回限りの前払い料金を支払い、期間中、プロビジョニングされた最小使用レベルを支払う契約を結びます。リザーブドキャパシティーは、時間ごとのリザーブドキャパシティー料金で請求されます。読み込みキャパシティーユニットおよび書き込みキャパシティーユニットを事前に予約することで、オンデマンドのプロビジョニングされたスループット設定と比べて大幅なコスト削減を実現できます。リザーブドキャパシティーを超えてプロビジョニングしたキャパシティーにつきましては、標準のプロビジョンされたキャパシティーの料金を請求させていただきます。

注記

リザーブドキャパシティーは、オンデマンドモードでは使用できません。

リザーブドキャパシティーを管理するには、DynamoDB コンソールに移動し、[リザーブドキャパシティー] を選択します。

注記

ユーザーがリザーブドキャパシティーを表示または購入できないようにしながら、コンソールの他の部分にはアクセスを許可することができます。詳細については、「Amazon DynamoDB の Identity and Access Management」の「リザーブドキャパシティの提供タイプを購入するためのアクセス許可」を参照してください。