DynamoDBについて色々調べてみたので、調べたことを書いていきます。
以下のことについて、調べました。
- 特徴
- 使うメリット
- 注意点
- 用途
- 設定
- オンデマンド
- プロビジョニング
まずはDynamoDBの特徴について書いていきます!
DynamoDBの特徴
メリットと注意点について記載していきます。
使うメリット
以下の3つのメリットが挙げられます。
高速なNoSQLデータベース
高い可用性
有効期限(TTL)を設定できる
高速なNoSQLデータベース
公式記事に1桁ミリ秒単位の安定したパフォーマンスと記載があります。
Redisの方が高速な気がしますが、RDSと比べるととても高速ですね。
高い可用性
データが自動的に3ヶ所のAZに保存されるため、3ヶ所のうちいづれかのAZに障害が発生した場合でも、他のAZが機能してシステムを継続稼働できます。
Redisとは異なり、データが消えてしまうことは、まずありません。
有効期限(TTL)を設定できる
有効期限(TTL)を設定できます。有効期限(TTL)を設定して登録したデータは、有効期限になると勝手に消えてくれます。
期限切れから 48 時間以内に削除される挙動となり、期限が切れると即時に削除ではない点は要注意ですね。
注意点
2つの注意点をあげさせていただきます!
従量課金であるため、コストコントロールがしづらい
テーブル設計などの学習コストがかかる
従量課金であるため、コストコントロールがしづらい
アクセス量に応じて料金が変動することになり、コストコントロールがしづらい点が注意点です。
テーブル設計などの学習コストがかかる
他のNoSQL(Redisなど)と比べて多少学習かかると点です。
テーブル設計については以下の記事を参考にさせてもらいましょ。
次にDynamoDBとRedisの比較をしていきます。
どちらも高速なNoSQLデータベースですが、速度・可用性の面でどちらが優れているかについて、記載します!
DynamoDBとRedisの比較
- 速度
- Redisの方が早い
- DynamoDB:1桁ミリ秒単位
- Redis:ミリ秒未満
- Redisの方が早い
- 可用性
- DynamoDBの方が高い
- DynamoDBは、データが自動的に3ヶ所のAZに保存される
- DynamoDBの方が高い
次にDynamoDBの用途について記載します!
DynamoDB用途
DynamoDBの使い方について、2つ書いていきます。
セッションストアとして使う
サーバレスアーキテクチャでのデータストア
セッションストアとして使う
特徴で記載した以下のようなことからセッションストアとしての用途が考えられます。
- 高速
- セッションストアは高速の方がサイトレスポンスが良くなるから良い
- 有効期限(TTL)を設定できる
- セッションは有効期限あるからTTL設定できると便利
という感じです。
サーバレスアーキテクチャでのデータストア
API Gateway + Lambdaなどのサーバレスアークテクチャを利用時のデータストアとしての利用。
RDSにはスケールの限界がありますが、
Dynamoでは、データの分散(3つのAZに分散)による可用性と拡張性を確保できるため、
サーバレスアーキテクチャ向きと考えられます。
RDSを使うとRDSがボトルネックになってしまう可能性があるが、
Dynamo DBを使えばその悩みが解決できる感じですね。
次にDynamoDBの設定(オンデマンドとプロビジョニング)について記載します。
Dynamo DBの設定
インフラ観点での設定は
- オンデマンド
プロビジョニング
の2つがあります。
オンデマンド
一定のリクエストが常に来るケースでは、プロビジョニングより高価になります。
そのため、リクエストが予測できないケースやリクエストの波が大きい場合に選択します
プロビジョニング
性能(1秒間に処理する性能)を設定して利用します。
設定した性能を超えるとスロットリングのエラーになるため、アクセスの波が少ない場合に使用します。
まとめ
色々な場面でDynamoDBを使えそうですね。
可用性も高く、安心して使えます。
同じNoSQLのRedisの記事もよろしければ、ご参照くださいー