はじめに
これまで、AIエージェントやFastAPIについて調べた記事を書いてきました。
技術記事や案件情報を見ていると、以下のような構成をよく見かけます。
- FE:Next.js
- BE:FastAPI
- DB:PostgreSQL
- LLM:OpenAI API
- クラウド:AWS
一方で、私はこれまでAWSを利用した開発の中で、DynamoDBを利用する機会がありました。
そのため、
「PostgreSQLとDynamoDBって何が違うんだろう?」
「AI案件ではなぜPostgreSQLが採用されることが多いんだろう?」
という疑問を持ちました。
そこで今回は、PostgreSQLとDynamoDBの違いについて、自分なりに調べてみたことをまとめてみます。
この記事はこんな人向け
この記事は、以下のような方を対象としています。
- PostgreSQLとDynamoDBの違いがよく分からない方
- RDBとNoSQLの違いを知りたい方
- AWSを利用した開発に携わっている方
- AI案件でなぜPostgreSQLが利用されるのか気になっている方
- データベース選定の考え方を知りたい方
PostgreSQLとは?
PostgreSQLは、リレーショナルデータベース(RDB)の1つです。
簡単に言うと、
「表(テーブル)同士を関連付けてデータを管理するデータベース」
です。
例えば、以下のような構成です。
usersテーブル
| id | name |
|---|---|
| 1 | 山田 |
| 2 | 佐藤 |
ordersテーブル
| id | user_id | product |
|---|---|---|
| 1 | 1 | PC |
| 2 | 2 | マウス |
user_idによって、ユーザーと注文情報を紐づけることができます。
users
↓
user_id
↓
orders
また、SQLを利用して柔軟な検索を行えることも特徴です。
SELECT
u.name,
o.product
FROM users u
JOIN orders o
ON u.id = o.user_id;
DynamoDBとは?
一方、DynamoDBはAWSが提供するNoSQLデータベースです。
簡単に言うと、
「高速でスケーラブルなキー・バリュー型のデータベース」
です。
例えば、
{
"user_id": "1",
"name": "山田",
"orders": [
{
"product": "PC"
}
]
}
のように、1つのデータにまとめて保存します。
DynamoDBではJOINの概念がないため、必要なデータをまとめて持つ設計が基本になります。
PostgreSQLとDynamoDBの違い
調べてみると、大きな違いは以下のようでした。
| 項目 | PostgreSQL | DynamoDB |
|---|---|---|
| 種類 | RDB | NoSQL |
| 検索 | SQL | PK/SK |
| JOIN | 可能 | 不可 |
| スケール | 垂直・水平 | 水平 |
| 運用 | 必要 | AWS管理 |
| 得意分野 | 複雑な検索 | 高速アクセス |
| トランザクション | ○ | ○(制限あり) |
個人的には、
PostgreSQL = 柔軟性重視
DynamoDB = パフォーマンス重視
というイメージを持ちました。
AI案件でPostgreSQLが多い理由
調べてみて、「なるほど」と思ったのがここでした。
例えば、法務エージェントの場合、
- ユーザー
- 契約書
- レビュー履歴
- コメント
- 権限
など、多くのデータが関連しています。
User
↓
Contract
↓
Review
↓
Comment
このようなケースでは、JOINが利用できるPostgreSQLの方が扱いやすそうです。
また、
SELECT *
FROM review
WHERE user_id = 1
AND created_at >= '2026-07-01'
ORDER BY created_at DESC;
のような検索も簡単に実現できます。
AI案件では、
- ユーザー管理
- 履歴管理
- 権限制御
- ログ管理
などが必要になるため、RDBとの相性が良いのだと思いました。
DynamoDBが活躍するケース
逆に、DynamoDBは以下のようなケースで強みを発揮します。
- 高トラフィックなシステム
- セッション管理
- キャッシュ
- IoT
- ゲーム
- リアルタイム処理
例えば、
user_id
↓
プロフィール取得
↓
10ms以下で返却
のように、単純なキー検索を大量に行うケースでは非常に強力です。
以前、DynamoDBについて調べた際にも、
- TTL
- PITR
- Auto Scaling
- On-Demand
など、運用面で便利な機能が多いことが印象的でした。
どちらを選ぶべき?
調べてみて感じたのは、
「どちらが優れているか」ではなく、「どちらが適しているか」が重要
ということです。
PostgreSQLが向いている
- AIシステム
- 業務システム
- ECサイト
- 履歴管理
- 複雑な検索
DynamoDBが向いている
- 高速アクセス
- IoT
- セッション管理
- リアルタイムシステム
- 大量アクセス
案件によっては、
Aurora PostgreSQL
↓
メインDB
DynamoDB
↓
キャッシュ・高速アクセス
のように、両方を利用するケースもあるようです。
調べてみた感想
正直、調べる前は、
「DynamoDBの方が新しいし、全部置き換えられるのでは?」
と思っていました。
しかし、実際には用途がかなり異なることが分かりました。
特にAI案件では、
- FastAPI
- PostgreSQL
- OpenAI API
- AWS
という組み合わせをよく見かけるため、今後はPostgreSQLについても理解を深めていきたいと思っています。
一方で、AWSを利用したシステムではDynamoDBが採用されるケースも多く、両方を理解しておくことが重要だと感じました。
まとめ
PostgreSQLとDynamoDBについて調べてみて、以下のことが分かりました。
- PostgreSQLはRDBで、複雑な検索やJOINが得意
- DynamoDBはNoSQLで、高速アクセスが得意
- AI案件ではPostgreSQLが採用されることが多い
- DynamoDBはリアルタイム処理との相性が良い
- 重要なのは「どちらが優れているか」ではなく、「どちらが適しているか」
AIエージェントやFastAPIについて調べていく中で、バックエンドの技術スタックについても少しずつ理解が深まってきました。
次は、Aurora PostgreSQLについて調べて、Auroraと通常のPostgreSQLの違いについても学んでみたいと思います。