Help us understand the problem. What is going on with this article?

DynamoDBの基礎まとめ ― 料金体系とプロビジョニング

More than 1 year has passed since last update.

DynamoDBはAWSのフルマネージト型NoSQL データベースサービスで、高い拡張性、信頼性を持つそうです。ただ料金体系がややこしく、WCU、RCU等初期どうプロビジョニングするかも私のような初心者にはハードルが高いようです。実際使ってみて、考察をしてみました。

DynamoDBの料金体系

DynamoDBはプロビジョニングしたリソース分に対する課金する仕組みとなり、詳細は
料金 - Amazon DynamoDB(NoSQLデータベース)|AWSにあります。
以下は東京リージョンの料金をベースにまとめました。

課金リソース 料金 課金単位
書込キャパシティーユニット(WCU) 0.000742USD/WCU 1時間料金(1WCUは1秒間に1回の書き込み)
読取キャパシティーユニット(RCU) 0.0001484USD/RCU 1時間料金(1WCUは1秒間に1回の読み取り)
ストレージ容量 0.285USD/GB 月額(毎月最初の 25 GB の保管は無料)
データ転送量 0.14USD/GB データ転送受信(イン)は無料、アウト時のみ課金、1 GB/月まで無料

プロビジョニングするスループットの課金特徴

書込キャパシティーユニット(WCU)と読取キャパシティーユニット(RCU)はプロビジョニングしたリソース分に対して課金します。実際の書き込みと読み取りが発生しなくても利用金は発生しますので要注意です。つまり、トランザクションのピーク値に対してプロビジョニングしますと、高くつきますので、SQSの活用による平準化を検討する必要があります。

WCU=5, RCU=5のテーブルを作った時の課金は以下となり、合計は大体3.2USD(1ヶ月あたりのキャパシティーユニット料金)

課金リソース 料金 課金単位 1キャパシティーユニット制限※1
書込キャパシティーユニット(WCU) 0.000742USD × 5キャパシティーユニット × 24時間 × 30日 = 2.67USD 1時間料金(1WCUは1秒間に1回の書き込み) 1書込は1KBまで
読取キャパシティーユニット(RCU) 0.0001484USD × 5キャパシティーユニット × 24時間 × 30日 = 0.53USD 1時間料金(1RCUは1秒間に1回の読み取り※2) 1読取は4KBまで
  • ※1 2KBの書き込みは2WCUとカウント、8KBの読み取りは2RCUとカウント、かつ1項目(行)サイズが1KBより小さい場合も1KBとカウントします。
  • ※2 強い整合性(Strongly consistent)に対して1RCUは1秒間に1回ですが、結果整合性(Eventually consistent)の場合、1RCUは1秒間に2回の読み取りができます。半額ということですね。

DynamoDBの料金とプロビジョニングは読み書きする項目のサイズと直に相関するので、サイズの見極めが重要です。

DynamoDB項目サイズの算出方法

DynamaDBはKey:Value形式のNoSQLデータベースなので、項目サイズも単にValue(属性値)だけではなく、Key(属性名)のサイズも含める必要があります。
項目サイズおよびキャパシティーユニットの消費 を参考

実例で計算してみます。
itemid=1(数値)の1項目ストレージサイズと
itemid=1(数値)、cn=测试(文字)、en=test(アルファベット)、jp=テスト(文字)の1項目スト―レージサイズを見てみます。
image0.png

項目 属性名 属性バイト数 属性値 属性値バイト数 合計バイト数 説明
itemid=1 itemid 6 bytes 1 2 bytes 8 bytes 数字属性値のバイト数計算は、(有効桁数 2 あたり 1 バイト)+(1 バイト)
cn=测试 cn 2 bytes 测试 6 bytes 8 bytes 1中国語漢字3バイト(UTF8エンコード)
en=test en 2 bytes test 4 bytes 6 bytes 1英文字1バイト(UTF8エンコード)
jp=テスト jp 2 bytes テスト 9 bytes 11 bytes 1日本語漢字3バイト(UTF8エンコード)

読み取りの計算はすべての項目サイズを合計し、4KB境界に切り上げます。

考察まとめ

DynamoDB Black Belt Online Seminar 2017 にはDynamoDBのほぼすべてがまとまっています。147ページと非常に長いですが、一通り読めばDynamoDBを制覇できます。

次回はCloudWatchを使って、読取(RCU)や書込(WCU)の実消費を実機検証行います。

tanj
AWS/Python/Tableau/Qlik たまにjava/c#
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away