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項目スト―レージサイズを見てみます。
項目 | 属性名 | 属性バイト数 | 属性値 | 属性値バイト数 | 合計バイト数 | 説明 |
---|---|---|---|---|---|---|
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)の実消費を実機検証行います。