#author("2019-02-07T11:49:35+00:00","","")
[[AWSメモ]] >
* DynamoDBのキャパシティユニットについて [#h11472d3]
#setlinebreak(on);

#contents
-- 関連
--- [[DynamoDBで取得する列を指定した場合のキャパシティユニット]]

** DynamoDBにかかる料金 [#j1b271ce]
#html(<div style="padding-left:10px;">)

だいたいここらへんに書いてある。
- [[Amazon DynamoDB 料金>https://aws.amazon.com/jp/dynamodb/pricing/]]
- [[Amazon DynamoDB: 仕組み - 読み取りと書き込みのスループットキャパシティー>https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/HowItWorks.ProvisionedThroughput.html]]
- [[DynamoDB での制限 - キャパシティーユニットとプロビジョニングされるスループット>https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Limits.html#default-limits-capacity-units-provisioned-throughput]]
- [[DynamoDB項目のサイズ>https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/CapacityUnitCalculations.html]]
- [[読み込みでのキャパシティーユニットの消費>https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/ProvisionedThroughput.html#ItemSizeCalculations.Reads]]
- [[書き込みでのキャパシティーユニットの消費>https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/ProvisionedThroughput.html#ItemSizeCalculations.Writes]]
- [[リクエストのスロットリングとバーストキャパシティー>https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/ProvisionedThroughput.html#ProvisionedThroughput.Throttling]]
- [[グローバルセカンダリインデックス におけるプロビジョニングされたスループットに関する考慮事項>https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/GSI.html#GSI.ThroughputConsiderations]]
- [[ローカルセカンダリインデックス におけるプロビジョニングされたスループットに関する考慮事項>https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/LSI.html#LSI.ThroughputConsiderations]]
- [[DynamoDB Auto Scaling によるスループットキャパシティの自動管理>https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/AutoScaling.html]]
- [[DynamoDB および AWS SDK を使用したプログラミング &#187; エラー処理>https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Programming.Errors.html]]
#html(</div>)

** キャパシティユニット/保管料の概要 [#o86f584e]
#html(<div style="padding-left:10px;">)

上記のリンク先の内容を簡単に纏めると、以下の通り。

*** 項目サイズ [#ad3c8ab1]
#html(<div style="padding-left:10px;">)
- 読み書き 及び 保管料にかかる項目(レコード)のサイズは、属性名と属性値の長さの合計となる(属性名の長さもサイズ計算に含まれる)
#html(</div>)

*** データ保管にかかる料金 [#t4030332]
#html(<div style="padding-left:10px;">)
- 毎月最初の 25 GB の保管は無料 ※それ以降は月額 0.285USD/GB(東京リージョン)
#html(</div>)

*** 読み書きにかかる料金 [#d35cbde5]
#html(<div style="padding-left:10px;">)
- 読み書きの度に料金がかかる
- 読み込み/書き込みキャパシティーモードとして「プロビジョニング済み」と「オンデマンド」から選択できる
- プロビジョニング済みモードの場合
-- 読み込み/書き込み &color(red){''キャパシティユニット単位''}; で料金がかかる
-- テーブルや索引(GSI/LSI)に事前にキャパシティユニットを割り当てる必要がある
-- 事前に割り当てたキャパシティユニットを超えるスループットは出せない&br;(一定量まではスロットリングされるが、スロットリング不可な場合は ProvisionedThroughputExceededException が発生する)
-- 割り当てたキャパシティユニットは使用しなくても消費する為、適切な値を割り当てる必要がある
-- Auto Scaling は可能。※ゼロになった場合にはスケールダウンしない。等の制限がある為、個別にポリシー設定が必要。
-- GSI/LSI に対しての読み書きはテーブルへの読み書きとは別にキャパシティユニットを消費する
-- 読み込みは 4KB単位で 1 キャパシティユニットを消費する ※4KB未満のレコードはレコード毎に4KBに切り上げられて計算される
-- 書き込みは 1KB単位で 1キャパシティユニットを消費する ※1KB未満のレコードはレコード毎に1KBに切り上げられて計算される
-- queryで複数レコードを一括で取得する場合は、合計サイズが 4KB単位で切り上げて計算される(レコード毎には切り上げられない)
-- 0.0001484USD/RCU、0.000742USD/WCU(東京リージョン)
-- 前払いのリザーブドキャパシティーを利用すると通常よりも割安(WCU/RCU 100 個単位で購入)
- オンデマンドの場合
-- 読み込み/書き込み &color(red){''リクエスト単位''}; で料金がかかる
-- 読み込みは 4KB単位で 1リクエストとして計算される
-- 書き込みは 1KB単位で 1リクエストとして計算される
-- 0.2854USD/100万読み込みリクエスト、1.4269USD/100万書き込みリクエスト (東京リージョン)
#html(</div>)

#html(</div>)

** 補足 [#n828ed4d]
#html(<div style="padding-left:10px;">)

*** オンデマンドモードについて [#r72bacd3]
#html(<div style="padding-left:10px;">)

デフォルトでは、テーブルやGSI/LSI に事前に設定したキャパシティユニット分のパフォーマンスを確保する事ができるが、
[[AWS re:Invent 2018>https://aws.amazon.com/jp/new/reinvent/]] で発表された [[DynamoDB On-demand>https://aws.amazon.com/jp/about-aws/whats-new/2018/11/announcing-amazon-dynamodb-on-demand/]] を使用すると、事前設定なしに使用した分だけ料金を支払う事もできる。
#html(<span style="color:red; font-weight: bold;">※ただし無料利用枠の範囲外になる為、要注意!</span>)

#html(</div>)

*** 消費したキャパシティユニットの調べ方 [#x8e5d4be]
#html(<div style="padding-left:10px;">)
プロビジョニング済みモードの場合、各APIのデータ操作時に ReturnConsumedCapacity を指定する事により、消費したキャパシティユニットを調べる事ができる。

boto3
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb.html
#html(</div>)

#html(</div>)

トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS