脳内ライブラリ

学んだこと、考えたことをつらつらと書いています。本の感想(ビジネス本、漫画)と生活改善系が多めです。

DynamoDBの課金体系についてのまとめ

AWSのページに記載されているものを整理しただけ。

DynamoDBの課金体系について

課金されるものは以下
スループット容量(ユーザが指定、時間課金)
②データの保存量(月額・GB単位)
③データ転送量(月額・GB単位、転送量により価格変化)

  1. α リザーブ度割引有

スループット容量

DyamoDBデーブルに対しては、読み込みスループットと書き込みスループットが関連付けられており。利用者はテーブル作成・更新時に読み込み・書き込み用に予約するスループット容量を指定する(スループット容量の計算はユーザ自身が実施)

無料枠(下記参照)を超えると、そのスループット容量に対して1時間毎に課金。
テーブルにリクエストを送信するかどうかにかかわらず、テーブルに設定したスループット容量に対して1時間毎に課金されるので注意。

スループット容量の変更は、AWSのコンソールもしくはUpdate Table APIを利用する。時間課金のため、リクエストの増減に応じてコンソールからスループット容量を変更すれば調整が可能。

ユニットについて

DynamoDBには、秒間で処理できるリクエストの単位である「ユニット」というものが設定されている。

①書き込み
1ユニット=1IKBあたりのアイテムについて、1秒あたり1回の書き込みが可能
②読み込み
1ユニット=最大1KBのアイテムに対して、「強い整合性のある読み込み」を1秒あたり1回できる(「結果的に整合性のある読み込み」については1秒あたり2回)

ユニット数の計算

必要な容量のユニット数 = 1秒あたりの項目書き込み/書き込み数 * 項目のサイズ(KB切り上げ)

例1)項目のサイズ:512KB、1秒辺り100個の読み込み
  ユニット数= 100 * 1(1KB以下の場合は1)
例2)項目のサイズ:1.5KB、1秒辺り100個
  ユニット数= 100 * 2(1.5切り上げ) = 200

処理する項目のサイズが大きくなると、より多くの容量が必要になる。
読み込み容量のユニット数は、1秒あたりに読み込まれる項目の数で決まる。

データの保存料金

・保存したデータによって決まる月額料金
・計算はGBあたりの単価が適用

スループット容量の見積もり・価格例

見積もりには、読み込み&書き込みデータのAPI呼び出しを1秒あたり何回行うかを考慮する必要がある。

価格例(米国バージニア北部

前提:
アプリに対して一日あたり100万回書き込み&読み込み。データは3GB。ワークロードは安定で処理される項目は1KB以下とする。

1秒あたりに必要な書き込みと読み込みを計算すると、
書き込み
1,000,000(書き込み回数)/24(時間)/60(分)/60(秒)=11.6回/秒

書き込みの場合は「1秒辺り1回の書き込み」を実行可能。
そのため、アプリに対して1日あたり100万回書き込みをする場合は、11.6回/秒の処理を実施するには12のユニット容量が必要。

同様に、読み込みの場合も12の読み込みユニットが必要。

米国バージニアの場合の料金
書き込み→$0.0065 :10 ユニットの書き込み容量あたり/1 時間
読み込み→$0.0065 : 50 ユニットの読み込み容量あたり/1 時間

スループット容量のコスト
書き込み:$0.0065 * 1.2 (12ユニット分) * 24(時間) = $ 0.1872
読み込み:$0.0065 * 0.24(12ユニット分) * 24 (時間) =$0.03744
合計 
$ 0.2246/日
$ 6.7392/月

ストレージのコスト(月額)
1GB/$0.25なので、 3(GB) * 0,25 * 30(日) = $ 0.025

よってDynamoDBテーブルの合計費用は、$7.4892/月額
(無料枠を利用すると、$0.14くらいになる)

補足

  • 整合性モデル

データの読み込みに対して、利用者は二種類のタイプを指定可能。
①結果的に整合性のある読み込み(デフォルト)
読み込みのスループットが向上するが、最新の書き込み結果が反映されていない場合がある(通常は1秒以内)
②強い整合性のある読み込み
読み込みの前に全ての書き込みが反映されている。

広告を非表示にする