まずは、RDBと比べてDynamoDBが良さそうなところ
1、アマゾンが全部やってくれるので、サーバが落ちない。容量無制限。気にすること少ない。(スループット以外は ※後述)
2、スキーマレスだからテーブル設計が楽。テーブル変更が楽。
3、RDBより早い。
DynamoDBに向かない時
1、リレーションが必要な時。
2、トランザクションが必要な時。
3、多くのインデックスが必要な時。
4、多くのデータを一度に取り出す必要がある時。(スループットを多く用意しなければならず、高くなっちゃう)
5、明確なデータ構造が欲しい時
まとめると、データ構造が単純で、速さが欲しくて、多くの行数があり、一度に多くのデータを取り出さないという要件であれば、DynamoDBはすごくいい!
じゃあ、いくらかかるのという話(2015/6/2 時点)
1、読み込みスループット
2、書き込みスループット
3、保存容量
4、データ転送量
※4はあんまり気にならないくらい安いから、記述なし
1、読み込みスループット
2種類の読み込みがある。
(1)強い整合性 1KB / 1ユニット
(2)弱い整合性 1KB / 0.5ユニット
※ユニットとは、1秒間に利用する課金単位のこと
- 米国バージニアの場合の料金
5ユニット単価:$0.00065/1 時間
50ユニット単価:$0.0065/1 時間
500ユニット単価:$0.065/1 時間
50ユニット単価:$0.156/1 日
500ユニット単価:$1.56/1 日
50ユニット単価:$3.74/月
500ユニット単価:$37.4/月
5000ユニット単価:$374/月
2、書き込みスループット
- 米国バージニアの場合の料金
書き込み→$0.0065 :10 ユニットの書き込み容量あたり/1 時間
10ユニット単価:$0.00065/1 時間
100ユニット単価:$0.0065/1 時間
1000ユニット単価:$0.065/1 時間
10ユニット単価:$0.156/1 日
100ユニット単価:$1.56/1 日
10ユニット単価:$3.74/月
100ユニット単価:$37.4/月
1000ユニット単価:$374/月
3、保存容量
1GBあたり$0.25 / 月額
※25GBまでの無料ストレージあり
例(月額)、
1(GB) * $0.25 = $0.25
10(GB) * $0.25 = $2.5
100(GB) * $0.25 = $25
1000(GB) * $0.25 = $250
利用計算例
1、1レコードあたりの平均アイテム容量を計算
2、書き込み、読み込みに必要なスループットを計算
※今回の私の事例
キュレーションメディアを作るにあたって、取得した記事の保存先をDynamoDBにした。
平均1アイテム容量;1.5KB -> 2ユニット
読み込み/秒間:50行 * 2ユニット * 20アクセス = 2000ユニット
書き込み/秒間:1行 * 2ユニット * 100アクセス = 200ユニット
読み込み/月額:$149.6 (15,000円ぐらい)
書き込み/月額:$74.8 (7,500円ぐらい)
合計/月額:$224.4 (22,000円ぐらい)