【AWS】Amazon DynamoDBについて解説します。

最終更新日:2026年8月6日

1.はじめに

Amazon DynamoDB は、あらゆる規模で高性能かつ低レイテンシのデータアクセスを必要とするインターネットスケールのアプリケーションに向けた、クラウド内の NoSQL ドキュメントデータベースサービスです。今回はDynamoDBについてまとめていきます。

2.Amazon DynamoDB概要

Amazon DynamoDBは、どのような規模でも信頼性が高いパフォーマンスを維持できる、非リレーショナルデータベース(NoSQL)です。完全マネージド型マルチリージョン、マルチマスターで耐久性があるデータベースで、セキュリティ、バックアップ及び復元と、インターネット規模のアプリケーション用のメモリ内キャッシュが組み込まれています。

スケールに応じたパフォーマンス
DynamoDBは、規模に関係なく一貫した数ミリ秒台の応答時間を実現することで、世界最大規模のアプリケーションの一部をサポートしています。事実上無限のスループットとストレージでアプリケーションを構築できます。

サーバー管理が不要
DynamoDBはサーバーレスであり、プロビジョニング、パッチ適用、管理するサーバーはなく、インストール、保守、運用するソフトウェアもありません。DynamoDBは、テーブルを自動的にスケールアップ/ダウンして容量を調整し、パフォーマンスを維持します。可用性とフォールトトレランス機能が組み込まれているため、こうした機能のためにアプリケーションを構築する必要はありません。

エンタープライズ対応
DynamoDBは、ビジネスクリティカルなアプリケーションを大規模に構築できるようにACIDトランザクションをサポートしています。デフォルトですべてのデータを暗号化しており、すべてのテーブルに対してきめ細かいIDとアクセスコントロールを提供します。

【DynamoDBの特徴】
・フルマネージドサービス
・データの格納と取得に特化されている(高度な最適化)
・表結合など柔軟なクエリを発行するのは不得意
・「値」とそれを取得するための「キー」だけを格納するというシンプルな機能を持った「Key Valueストア」
・半構造化データをドキュメントとして保存する「ドキュメントデータベース」でもある
・1桁ミリ秒単位のレイテンシーを要求するアプリケーションにも対応
・期限切れになった項目を自動的にテーブルから削除することも可能

3.一般的なユースケース

DynamoDBは以下が要件を持つシステムと相性が良いです。

ミリ単位のアクセスレイテンシーが求められる
データの拡張性が求められる

そのため、モバイル、ウェブ、ゲーム、広告技術、IoTのようなサービスのバックエンドとしてよく利用されています。
また、Lambdaとも相性が良く、API Gateway+Lambdaと合わせて利用されることが多いです。

4.キャパシティモード(プロビジョンド/オンデマンド)

【重要】記事執筆時に説明が漏れていた重要な選択肢があります
DynamoDBには「プロビジョンドモード」と「オンデマンドモード」という2つのキャパシティモードがあり、AWS公式ドキュメントではオンデマンドモードが大半のワークロードにおけるデフォルト・推奨の選択肢と明記されています。以下、両モードの違いを解説します。

・オンデマンドモード(推奨・デフォルト)

サーバーレスな従量課金モデルで、リクエスト数に応じて料金が発生します(Pay-per-request)。事前の容量計画やスケーリングポリシーの設定が不要で、テーブル作成時に読み込み/書き込みスループットを見積もる必要がありません。トラフィックが読めない・急増する可能性があるアプリケーションや、小規模から始めて将来的に大きくスケールする可能性があるアプリケーションに向いています。

・プロビジョンドモード(旧来の主要モデル)

アプリケーションに必要な1秒あたりの読み込み/書き込み回数(キャパシティユニット)を事前に指定するモデルです。実際の使用量ではなく、プロビジョニングした容量に対して時間単位で課金されるため、コストの予測がしやすいという特徴があります。安定していて予測可能な成長曲線を持つワークロードに向いています。

5.料金体系

DynamoDBの料金を決める要素は大きく3つあります(プロビジョンドモードを選択した場合)。中でも一番肝心なのはキャパシティユニットですが、容量の見積もりは簡単ではありません。CloudWatchにて見積もりを検討し、余裕を持って設定することが重要になります(オンデマンドモードであればこの見積もり作業自体が不要です)。

【キャパシティユニット(プロビジョンドモードの場合)】
簡単に言うと、読み込み / 書き込み容量です。プロビジョンドモードでは、キャパシティユニットを事前に設定して、読み込み / 書き込み容量の上限を決めることにより料金が決定する仕組みです。1キャパシティユニットは1秒間に決められた回数の読み込み / 書き込み容量を提供し、利用している時間分料金がかかります。実際に読み込み / 書き込みした量に応じて料金がかかるわけではないことに注意が必要です。そのため、利用料を事前に推測してキャパシティユニットを設定しましょう。

【ストレージ容量】
DynamoDBに保存されているデータの容量に応じて課金されます。ストレージについてはS3と比べるとわかりやすいですが、GBあたりの単価はS3より高く設定されており、大きなデータの保存には向かないことがわかります。大きいデータについてはS3に保存し、保存先についての情報のみDynamoDBに入れるなど、データ量を少なくする工夫が必要です。

【データ転送量】
これについては、AWSのどのサービスでも概ね同様なものが多いですが、データのアウトに料金がかかるため、不要なデータの取り出しは少なくするよう工夫が必要です。
Getltemを行う際に、ProjectionExpressionを指定することにより、必要な要素を絞ることができるので、1つのアイテムに大量のデータが紐づいている場合には、これを有効活用するのも選択肢のひとつになります。

※他にもDAXやストリームなどもありますが、利用は必須ではありません。
【注意】具体的な料金は変動します
ストレージ・キャパシティユニット・データ転送の各単価はリージョンや改定によって変動するため、契約前には必ずAmazon DynamoDB料金ページで最新の情報をご確認ください。

6.オンデマンドバックアップ

DynamoDBオンデマンドバックアップ機能を使用し、テーブルの完全なバックアップを作成して、規制やコンプライアンス要件を満たすために長期間の保存とアーカイブを実施することができます。テーブルのデータは、AWSマネジメントコンソールでワンクリックするか、単一のAPIコールを使用するだけで、バックアップ及び復元することができ、またこの作業により、テーブルのパフォーマンスや可用性に影響を及ぼすことはありません。

オンデマンドバックアップおよび復元プロセスは、アプリケーションのパフォーマンスや可用性を低下させずにスケーリングすることができます。さらに、新しい独自の分散型技術を使用しており、テーブルのサイズに関係なく、数秒でバックアップを完了することができます

7.ポイントインタイムリカバリ

DynamoDBは、テーブルのオンデマンドバックアップを作成するか、ポイントインタイムリカバリを使用して連続バックアップを有効にすることができます。ポイントインタイムリカバリを使用することで、オペレーションによってDynamoDBテーブルが誤って上書きされたり削除されたりしないように対策が可能になります。

ポイントインタイムリカバリを有効化すると、オンデマンドバックアップの作成、維持、スケジュールを心配する必要がなくなります。また、ポイントインタイムリカバリオペレーションが、パフォーマンスやAPIレイテンシーに影響を及ぼすことはなく、過去35日間の任意の時点にテーブルを復元することができ、テーブルの増分バックアップが維持されます。

8.まとめ

AWSのデータベースサービスは複数あり、それぞれで最適な用途や、利用する人によっても適した環境は異なってきます。もちろん、特徴や仕様、様々な設定などもあるためDynamoDBはRDSと同じように使うことはできません。データベースについてもしっかり知識を持ち、適材適所で正しく使っていきましょう。

この記事のポイント

  • DynamoDBはフルマネージドのNoSQL(Key Value/ドキュメント)データベースで、数ミリ秒台の低レイテンシと高いスケーラビリティが特徴
  • キャパシティモードには「オンデマンド」と「プロビジョンド」の2種類があり、現在はオンデマンドが大半のワークロードでデフォルト・推奨
  • オンデマンドは事前の容量見積もり不要のPay-per-request、プロビジョンドは事前に容量を指定してコスト予測しやすいモデル
  • 大きなデータの保存にはS3の方が単価が安く向いている(DynamoDBには参照情報のみ格納するなどの使い分けが有効)
  • オンデマンドバックアップとポイントインタイムリカバリ(過去35日間の任意の時点への復元)の両方に対応

よくある質問

Q. オンデマンドモードとプロビジョンドモード、どちらを選べばよいですか?

A. トラフィックの予測が難しい、または開発初期でどれくらいのアクセス量になるか分からない場合はオンデマンドモードが安全な選択です。トラフィックパターンが安定していて予測可能な場合は、プロビジョンドモードの方がコストを最適化しやすいことがあります。迷ったらオンデマンドモードから始め、必要に応じて切り替えることも可能です。

Q. DynamoDBとRDSはどう使い分ければよいですか?

A. 複雑な表結合や柔軟なクエリが必要ならRDS(リレーショナルデータベース)、キーによる高速な読み書きと大規模なスケーラビリティが求められるならDynamoDBが適しています。両者を組み合わせて使うシステムも一般的です。

Q. DynamoDBに大量のデータを保存してもよいですか?

A. 技術的には可能ですが、DynamoDBのストレージ単価はS3より高いため、コスト面では大容量データの保存には向きません。大きなファイルなどはS3に保存し、DynamoDBにはそのメタデータや参照キーのみを持たせる構成が一般的です。

Q. ポイントインタイムリカバリを使えばバックアップは不要になりますか?

A. ポイントインタイムリカバリは過去35日間の任意の時点への復元をカバーしますが、それより古い時点や長期保存・コンプライアンス目的のアーカイブには、別途オンデマンドバックアップを併用することが推奨されます。

▼ アクロビジョンについて

👔

一緒に働きましょう

一人ひとりのキャリアに向き合い、
活躍できる現場をご紹介します。

採用サイトを見る →
💻

システム開発のご依頼・ご相談

コンサルティングから運用保守まで、
ワンストップで対応します。

まずはお気軽にご相談ください →