AWS DynamoDBの特徴と用途と設定(オンデマンド VS プロビジョニング)

DynamoDBについて色々調べてみたので、調べたことを書いていきます。

以下のことについて、調べました。

  •  特徴
    • 使うメリット
    • 注意点
  • 用途
  • 設定
    • オンデマンド
    • プロビジョニング

まずはDynamoDBの特徴について書いていきます!

スポンサーリンク

DynamoDBの特徴

メリットと注意点について記載していきます。

使うメリット

以下の3つのメリットが挙げられます。

3つのメリット

高速なNoSQLデータベース
高い可用性
有効期限(TTL)を設定できる

 

高速なNoSQLデータベース

公式記事に1桁ミリ秒単位の安定したパフォーマンスと記載があります。

Redisの方が高速な気がしますが、RDSと比べるととても高速ですね。

Amazon DynamoDB(マネージド NoSQL データベース)| AWS
Amazon DynamoDB は、フルマネージド、サーバーレスの key-value NoSQL データベースで、内蔵されたセキュリティ、継続的なバックアップ、自動化されたマルチリージョンレプリケーションにより、あらゆる規模でハイパフォーマンスなアプリケーションを実行します。

高い可用性

データが自動的に3ヶ所のAZに保存されるため、3ヶ所のうちいづれかのAZに障害が発生した場合でも、他のAZが機能してシステムを継続稼働できます。

Redisとは異なり、データが消えてしまうことは、まずありません。

有効期限(TTL)を設定できる

有効期限(TTL)を設定できます。有効期限(TTL)を設定して登録したデータは、有効期限になると勝手に消えてくれます。

期限切れから 48 時間以内に削除される挙動となり、期限が切れると即時に削除ではない点は要注意ですね。

注意点

2つの注意点をあげさせていただきます!

2つの注意点

従量課金であるため、コストコントロールがしづらい
テーブル設計などの学習コストがかかる

従量課金であるため、コストコントロールがしづらい

アクセス量に応じて料金が変動することになり、コストコントロールがしづらい点が注意点です。

テーブル設計などの学習コストがかかる

他のNoSQL(Redisなど)と比べて多少学習かかると点です。

テーブル設計については以下の記事を参考にさせてもらいましょ。

AWS DynamoDBのテーブル設計における注意点 - Qiita
この記事は何か AWS DynamoDBをメインのDBとして利用した開発の中でぶち当たったDynamoDBの制約についてまとめた記事 DynamoDBの特徴をまとめてくれている記事はたくさんあるが、実際にDynamoDBが...

次にDynamoDBとRedisの比較をしていきます。

どちらも高速なNoSQLデータベースですが、速度・可用性の面でどちらが優れているかについて、記載します!

DynamoDBとRedisの比較

  • 速度
    • Redisの方が早い
      • DynamoDB:1桁ミリ秒単位
      • Redis:ミリ秒未満
  • 可用性
    • DynamoDBの方が高い
      • DynamoDBは、データが自動的に3ヶ所のAZに保存される

次にDynamoDBの用途について記載します!

DynamoDB用途

DynamoDBの使い方について、2つ書いていきます。

2つの使い方

セッションストアとして使う
サーバレスアーキテクチャでのデータストア

セッションストアとして使う

特徴で記載した以下のようなことからセッションストアとしての用途が考えられます。

  • 高速
    • セッションストアは高速の方がサイトレスポンスが良くなるから良い
  • 有効期限(TTL)を設定できる
    • セッションは有効期限あるからTTL設定できると便利

という感じです。

サーバレスアーキテクチャでのデータストア

API Gateway + Lambdaなどのサーバレスアークテクチャを利用時のデータストアとしての利用。

RDSにはスケールの限界がありますが、

Dynamoでは、データの分散(3つのAZに分散)による可用性と拡張性を確保できるため、

サーバレスアーキテクチャ向きと考えられます。

RDSを使うとRDSがボトルネックになってしまう可能性があるが、

Dynamo DBを使えばその悩みが解決できる感じですね。

次にDynamoDBの設定(オンデマンドとプロビジョニング)について記載します。

Dynamo DBの設定

インフラ観点での設定は

  • オンデマンド
  • プロビジョニング

の2つがあります。

オンデマンド

一定のリクエストが常に来るケースでは、プロビジョニングより高価になります。

そのため、リクエストが予測できないケースやリクエストの波が大きい場合に選択します

プロビジョニング

性能(1秒間に処理する性能)を設定して利用します。

設定した性能を超えるとスロットリングのエラーになるため、アクセスの波が少ない場合に使用します。

まとめ

色々な場面でDynamoDBを使えそうですね。

可用性も高く、安心して使えます。

同じNoSQLのRedisの記事もよろしければ、ご参照くださいー

AWS ElastiCache Redisの特徴と用途と設定
ElastiCache Redisについての記事です。 特徴について、「使うメリット」「注意点」「memcachedとの比較」を記載。用途について、具体的にどんな場面で使うかを記載しています。最後にユースケースに応じたRedisノードの設定について記載しています。