#プロビジョニングされたキャパシティー
Dynamo DBはテーブルにスループットキャパシティーを割り当てることで性能を指定することができます。「キャパシティーユニット」という単位で指定します。アプリからDBへの読み取り回数と書き込み回数が予め想定できる場合は、プロビジョンモデルでDynamo DBを作成するとコスト管理がしやすくなるメリットがあります。
キャパシティの算出シナリオ1
シナリオ:5,000,000回/日の書き込み、5,000,000回/日の結果整合性の読み取り、1項目のサイズは1KBの場合
-
書き込みキャパシティ(WCU):
まずは日の書き込み回数を秒に換算します。5000000回/日 = 5000000/(246060) = 58回/秒
書き込みは1キャパシティーユニットで、最大1KBに対して、書き込みの実行が1秒当たり1回ですので、最終的にWCUは58必要になります。 -
結果整合性の読み取りキャパシティ(RCU):
同様に、読み取りも58回/秒になります
結果整合性の読み込み1キャパシティーユニットで、読み込みの実行が1秒当たり2回ですので、RCUは29必要になります。
更に、RCUは1回で最大4KBの読み取りであることから、シナリオ1のの項目(1KB)は1回で読み取れるので、最終的にRCUは29必要になります。
キャパシティの算出シナリオ2
シナリオ:5,000,000回/日の書き込み、5,000,000回/日の強い結果整合性の読み取り、1項目のサイズは5.5KBの場合
-
書き込みキャパシティ(WCU):
秒に換算:5000000回/日 = 5000000/(246060) = 58回/秒
書き込みは1キャパシティーユニットで、最大1KBが可能なので、1項目の書き込みに必要なWCUは6。最終的にWCUは6*58 = 348必要になります -
強い結果整合性の読み取りキャパシティ(RCU):
上と同様に、読み取りも58回/秒になります
強い結果整合性の読み込み1キャパシティーユニットで、読み込みの実行が1秒当たり1回ですので、RCUは58必要になります。
更に、RCUは1回で最大4KBの読み取りであることから、シナリオ2の5.5KBを読み取るのに2が必要となるため、最終的にRCUは58*2=116必要になります。
キャパシティの算出シナリオ3
シナリオ: 1回/日の書き込み、1回/日の結果整合性の読み取り、1項目のサイズは1KBの場合
-
書き込みキャパシティ(WCU):
秒間の回数に換算して、1回/秒。
書き込みは1キャパシティーユニットで、最大1KBが可能なので、1項目の書き込みに必要なWCUは1。最終的にWCUは1必要になります -
結果整合性の読み取りキャパシティ(RCU):
秒間の回数書き込みと同様に読み取りも1回/秒になります
結果整合性の読み込み1キャパシティーユニットで、読み込みの実行が1秒当たり2回ですので、RCUは0.5必要になります。
更に、RCUは1回で最大4KBの読み取りであることから、シナリオ3の項目は1回で読み取りことができるので、RCUは0.5が必要になります。
ただし、WCUとRCUの設定は1 以上の正数にする必要があるので、この場合の最終的にRCUは1必要になります
メモ
AWSの無料枠は月間25RCU/秒と25WCU/秒が提供されています。シナリオ1の場合(58WCU と29RCUに設定した場合)33WCUと4RCU分が課金される(はず)。また半月しかDynamoDBを利用しない場合は実質50WCUと50RCUになるので、シナリオ1における課金は8WCUと0RCUに対して発生されます。