【AWS】DynamoDBとRDSについて
最終更新日:2026年8月5日
目次
AWSが提供するデータベースは下記の5つあります。この記事ではこれらのデータベースサービスの中で「Amazon DynamoDB」と「Amazon RDS」の違いについて調べた結果をまとめております。
Amazon RDS
Amazon DynamoDB
Amazon Neptune
Amazon Redshift
Amazon ElastiCache
■DynamoDBの特徴
・フルマネージド型のNoSQLデータベース
・原則API経由で操作する
・読み込み/書き込みが早い
・スループットに応じたスケーリング
・利用時、読み込み/書き込み性能(キャパシティユニット)の変更が可能
・ユーザー認証ではAWSのクレデンシャル情報でアクセスする
・インターネットを経由してアクセスする
NoSQLの「Amazon DynamoDB」ですが、データ構造もRDSのテーブルとは異なった所持の仕方になります。リージョンを選択して使うことができます。アベイラビリティゾーンは特に意識しなくても使用できます。データ容量は無制限で、使用している容量のみが課金対象となります。NoSQLやデータ管理の詳細については、AWS公式ページや解説サイトが多く存在しますので、ご確認ください。
DynamoDBのキャパシティモード(プロビジョンド/オンデマンド)
DynamoDBには「プロビジョンドキャパシティモード」と「オンデマンドキャパシティモード」の2種類のキャパシティモードがあります。プロビジョンドモードは事前に読み込み/書き込みキャパシティユニットを指定して利用する方式で、トラフィックが安定しているワークロードに向いています。一方、オンデマンドモードはリクエストごとの従量課金で、テーブルへのトラフィックが発生しなければスループット分の課金は発生しません。急激なトラフィック変動が予測しにくいワークロードでは、オンデマンドモードを選ぶことで運用の手間とコストの両方を抑えられます。なお、24時間のローリングウィンドウ内であれば、プロビジョンドモードからオンデマンドモードへは最大4回まで切り替え可能です。
■Amazon RDSの特徴
・マネージド型のリレーショナルデーターベース
・SQLにより操作
・テーブル結合など複雑なクエリが利用可能
・VPC内のEC2インスタンスなど、インターネットに繋がらない環境で利用可能
Amazon RDS(Amazon Relational Database Service)は、MySQLやPostgreSQLなどを利用することができます。また、Amazon RDSはRDBMSをAWS上のシステムで動かせるクラウドサービスの一つで、スケールアップやスケールアウトするための仕組みをブラックボックス化できることが特徴です。Linuxなどで骨の折れるような設定をサーバごとに設定しなければならないところ、AWSのコンソールで一つの画面内で設定することができるようになるのが魅力です。
Aurora Serverless v2という選択肢
RDSとDynamoDBの中間的な選択肢として、Amazon Aurora Serverless v2があります。Aurora Serverless v2は、MySQL・PostgreSQL互換のリレーショナルデータベースでありながら、トラフィックの増減に応じて自動的にキャパシティをスケールするサーバーレス型のサービスです。「SQLで複雑なクエリを扱いたいが、DynamoDBのように負荷変動に応じて柔軟にスケールさせたい」という場合の選択肢として検討する価値があります。
■DynamoDBとRDSの比較一覧表
| 項目 | Amazon DynamoDB | Amazon RDS |
|---|---|---|
| データベース種別 | NoSQL(キーバリュー/ドキュメント型) | リレーショナル(RDBMS) |
| 操作方法 | 主にAPI経由 | SQL |
| 複雑なクエリ・結合 | 不得意(原則キー指定検索のみ) | 得意(JOIN・複雑な条件検索が可能) |
| スケーリング | 自動スケーリング(水平方向) | リードレプリカで読み込みは拡張可、書き込みはスケールアップが中心 |
| 課金体系 | オンデマンド(従量課金)またはプロビジョンド | インスタンスタイム課金(オンデマンド/リザーブド) |
| 向いている用途 | アクセスパターンが決まっている大規模・高速アクセス | 複雑な検索条件・トランザクション処理が必要な業務システム |
※上記は一般的な傾向であり、実際の要件(データ量・アクセス頻度・整合性要件等)に応じて選定してください。
■DynamoDBとRDSの違いについて
やはり、大きな違いとしては”RDSはSQLであり、DynamoDBはNoSQLである“っという点だと思います。DynamoDBはNoSQLなので、ある程度の速度が出るというメリットがあるものの、RDBMSほど複雑なクエリを投げることができないというデメリットもあります。ただ、難しいクエリを投げる必要がないのであれば、速度の出るDynamoDBでデータを運用したほうが長所を最大限に活かせるのではないでしょうか。
DynamoDBとRDBとを比較したとき、NoSQLの特徴として挙げられる「柔軟でスキーマレスなデータモデル」「水平スケーラビリティ」「分散アーキテクチャ」「高速な処理」が、RDSが抱えるパフォーマンスとデータモデルの問題に対処することを目的に作られたアーキテクチャとなっていることを如実に表しています。“アクセス量が小~中程度で、時に複雑なクエリを必要とする場合はRDS”を選択し、“アクセス量が大規模となるが、単純で自由度の高いデータモデルを扱う場合はDynamoDB”を選択するのが良いでしょう。
■補足~もう少し掘り下げてデータベースを見てみる~
少し「RDB(Relational Database)」の話をすると、「RDS」はAWSにおいて、「RDB」の代表的なサービスと言えるでしょう。RDBは、テーブルと呼ばれる「行とカラムで構成される二次元のデータ構造」に対して、SQLと呼ばれる強力なクエリ言語で操作を行い、データの一貫性(Consistency : どこから観測しても同じ値が得られること)や操作の原子性(Atomicity: 一連の操作を全て適用[commit]するか、全てキャンセル[rollback]するかの二択として実現できること)を実現するモデルとして広く親しまれてきました。また、RDBはSQLによって、さまざまなカラムをWHERE句の条件に指定でき、自由自在にデータを絞り込んで検索することができますので、検索条件の自由度が非常に高いのも大きな特徴と言えます。
一方で、高い可用性(Availability: データが常に読み書きできること)と拡張性(Scalability: 大量のデータ書き込み/読み出し要求に応えるための規模拡張が容易にできること)が求められるシステムには向かないのが現実です。例えるならば、「システムのダウンはせず、大量のデータアクセスにも耐えられるデータベース」っといった要求などです。一般的に可用性を持たせるために取られる手段としての「冗長化」や「シャーディング」を行うと、複数のノードでの管理となり一貫性の維持が難しくなります。結果として、一貫性と可用性の両立には大きな困難が伴います。
つまり、一貫性のあるシステムに向いたデータベース、AWSで言うところのAmazon RDSは、理解しやすく説明もしやすい(例えばクライアントなど)ため、高可用性・高拡張性を要件としないシステムにおいては有効な選択肢となります。
逆に高可用性・高拡張性を要件とするシステムにおいては、一貫性を一部犠牲にすることで大きな価値を得られるがあるケースがあり、そのようなケースにハマるデータベースとして登場するのがNoSQLです。一貫性が無いとは言え、即座に一貫性が保証されていないというだけで、結果的(Eventually)には一貫性を持つ状態に収束します。
ただし、基本的にNoSQLでは事前にキーとして指定した要素を使うことでしか目的のデータを探せません。キーとして指定した要素以外を使って値を探し出したい場合は、全体をスキャンして条件に一致するものを1つずつ選別していく必要があり、パフォーマンス面で非常に不利(非現実的)となります。なので、ある程度の条件を許容することができるのであれば、高い可用性または拡張性を要求するシステムにおいては、NoSQL、つまりAWSで言えば、Amazon DynamoDBが有効な選択肢のひとつとなるでしょう。
よくある質問(FAQ)
Q. DynamoDBとRDS、どちらを最初に検討すべきですか?
アクセスパターン(どんなキーでデータを取得するか)が明確に決まっており、大規模なアクセス数を想定するならDynamoDBが向いています。逆に、テーブル結合や複雑な検索条件、トランザクション処理が必要な業務システムであればRDSが向いています。迷う場合は、まずSQLでの複雑な検索が必須かどうかを判断基準にするとよいでしょう。
Q. DynamoDBはSQLが使えないのですか?
DynamoDBは基本的にAPI経由でのキー指定によるアクセスが中心で、RDBMSのようなSQLの結合(JOIN)や複雑なWHERE条件の検索には向きません。PartiQLというSQL互換のクエリ言語も提供されていますが、内部的にはキー・インデックスに基づくアクセスが基本になる点は変わりません。
Q. RDSとDynamoDBは併用できますか?
可能です。例えば、トランザクション処理が必要なマスタデータはRDSで管理し、アクセス頻度が高いログやセッション情報はDynamoDBで管理するといった使い分けは、実際のシステム設計でもよく採用されるパターンです。
Q. 料金が安いのはどちらですか?
ワークロードによって異なります。DynamoDBのオンデマンドモードはリクエスト量に応じた従量課金のため、アクセスが少ない・変動が大きいワークロードではコストを抑えやすい傾向があります。一方、RDSはインスタンスを起動している時間に対して課金されるため、常時安定した負荷がかかるシステムでは予測しやすいコスト構造になります。実際のコストは利用量に大きく左右されるため、想定トラフィックをもとに試算することをおすすめします。
まとめ:DynamoDBとRDSの使い分け
この記事のポイント:
- DynamoDBはフルマネージドのNoSQLデータベースで、キー指定によるアクセスと自動スケーリングが特徴
- RDSはSQLベースのマネージド型リレーショナルデータベースで、複雑なクエリ・テーブル結合が得意
- アクセス量が大規模で単純なデータモデルならDynamoDB、複雑なクエリが必要ならRDSが基本方針
- DynamoDBにはプロビジョンド/オンデマンドの2つのキャパシティモードがあり、変動の大きいワークロードにはオンデマンドが有効
- RDSとDynamoDBの中間的な選択肢としてAurora Serverless v2もあり、要件に応じて検討する価値がある
DynamoDBとRDSはどちらも一長一短があり、どちらが優れているというものではなく、扱うデータの性質やシステムの要件によって適切に使い分けることが重要です。
関連記事
- 【AWS】Amazon DynamoDBについて解説します。 — DynamoDBの基本をさらに詳しく解説
- AWSではどのデータベースを利用するべき?DynamoDBやRDSを比較して紹介 — データベース選定の考え方をさらに掘り下げ
- 【AWS】Amazon RDS for PostgreSQLについて解説します。 — RDSの代表的なエンジンであるPostgreSQLについて解説
- Amazon DynamoDBとNoSQLについて — NoSQLの考え方そのものを掘り下げて解説
▼ アクロビジョンについて


