#はじめに
前回は、Lambdaの記事を作成しましたが、
今回は、DynamoDBの設定項目について記載していこうと思います。
最終的には、LambdaからDynamoDBへの読み書きを行えたらなと思っています。
AWS初学者ですので、謝った内容を記載してしまっていたらすみません。
参考程度にお願いします。(業務などで使用する場合は公式を参考にしてください。)
##DynamoDBとは
Amazon DynamoDB は、規模に関係なく数ミリ秒台のパフォーマンスを実現する、key-value およびドキュメントデータベースです。
これはフルマネージド型でマルチリージョン、マルチアクティブで耐久性があるデータベースであり、セキュリティ、バックアップと復元、インターネット規模のアプリケーション用のインメモリキャッシュが組み込まれています。
DynamoDB は、1 日に 10 兆件以上のリクエストを処理することができ、毎秒 2,000 万件を超えるリクエストをサポートします。
1日に10兆件、毎秒2000万件のリクエストをサポート・・・。
これをすぐに利用できる何て化け物ですね(笑)
##設定項目
DynamoDBを利用する上で変更することができる設定項目について記載します。
###テーブル名
DynamoDBには、DBを作る必要がなく、いきなりテーブルを作成します。
テーブル名はそのままの意味でテーブルの名前を設定します。
###パーティションキー
いわゆる、プライマリキーの事ですね。
idとかを設定するのが一般的なのでしょうか。
###ソートキー
ソートキーは、テーブルのプライマリキーの 2 番目の部分として使用できます。
ソートキーにより、同じパーティションキーを共有する全ての項目をソートまたは検索できます。
設定は任意になります。
例えば、以下のようなアーティストのテーブルを作成したとします。
name(プライマリキー) | music | release |
---|---|---|
いきものがかり | ブルーバード | 2007年 |
いきものがかり | じょいふる | 2006年 |
プライマリキーをname
にすると、いきものがかりだけでは複数の曲がヒットします。
この時、ソートキーをmusic
に指定すると、一つのレコードを取得できます。
パーティションキーだけでは絞り込めない時に、ソートキーを利用するっぽいです。
###キャパシティーモード
オンデマンドとプロビジョンドの2つのモードがあります。
・プロビジョンドモード
読み取り/書き込みキャパシティーを事前に割り当てることで、
コストを管理および最適化します。
プロビジョンドモードでは、読み込みキャパシティユニット(RWU)と、
書き込みキャパシティユニット(WCU)を指定します。
WCUを5、RCUを10にしたとすると、
1秒間に5回の書き込み、10回の読み込みが行えます。
料金はキャパシティユニットの個数により変わります。
キャパシティユニットの設定値を超えたリクエストが来た場合にはエラーが発生します。
・オンデマンド
アプリケーションが実行する実際の読み取りと書き込みの料金を支払うことで、
請求を簡素化します。
100万のリクエスト毎に料金が発生するそうで、
事前にキャパシティの設定を行うことなく利用が可能ですが、
料金がプロビジョンドより高いのがデメリットになります。
###Auto Scaling
プロビジョンドモードでのみ指定可能な機能になります。
以下のリクエスト料のサービスがあったとします。
リリース時 | 5年後 | |
---|---|---|
書き込み | 50 回/秒 | 100 回/秒 |
読み込み | 100 回/秒 | 200 回/秒 |
上記のリクエスト料に対してのキャパシティユニットは以下の通りです。
リリース時 | 5年後 | |
---|---|---|
WCU | 50 | 100 |
RCU | 100 | 200 |
リリース時は、50WCUと100RCUで足りますが、
2年後はリクエスト料が増えていることが想定できるので、
毎年、もしくは、毎月キャパシティユニットを変更する必要が出てきます。
最初から100WCUと200RCUにしても良いのですが、
リリース時から数年間は無駄な料金を支払う可能が出てきます。
ここで便利なのが、Auto Scalingで、上限と下限を指定すれば、
その中で自動的にキャパシティユニットの量を調整してくれます。
Auto Scalingを利用すれば、運用の効率が上がるということです。
###ターゲット使用率
Auto Scaling利用時に設定する項目になります。
この設定項目では、どのようにキャパシティユニットを調整してくれるかを指定します。
ターゲット使用率を70%、
WCUとRCUの下限は10、上限は100にした場合で説明します。
2020年1月1日(1ヶ月前)のWCUとRCUが以下の状態だとし、
2020年2月1日(現在)のWCUとRCUの値を決定する場合。
2020年1月1日 | 2020年2月1日 | |
---|---|---|
WCU | 40 | ? |
RCU | 60 | ? |
ターゲット使用率は70%なので、2月1日のキャパシティユニットの70%の値が、
1月1日のキャパシティユニットの数になるように調整します。
つまり、WCUは40 / 0.7 = 57.14
、
RCUは60 / 0.7 = 85.71
となります。
2月1日は、先ほどの値を切り上げして、
58WCUと86RCUあれば良いという結果になります。
以下の通りです。
2020年1月1日 | 2020年2月1日 | |
---|---|---|
WCU | 40 | 58 |
RCU | 60 | 86 |
ターゲット使用率を上手く調整し、
想定よりも少しリクエストが多く来ても耐えれるようにしましょう!
###暗号化
mazon DynamoDB に保存されたすべてのユーザーデータは、
保管時に完全に暗号化されます。デフォルトでは、Amazon DynamoDB が暗号化キーを管理し、
暗号化キーの使用に料金はかかりません。
#さいごに
以上が主な設定項目になります。
重要な設定項目は、パーティションキーやキャパシティモード、暗号化でしょうか。
少しでもこの記事が参考になれば嬉しいです。
次の記事では、LambdaからDynamoDBに書き込みを行なったりする記事を作成しようかな。