まとめ — 選び方フローチャート&比較早見表
📖 このページのゴール:ここまで出てきた RDB(SQLite/自前/RDS/Aurora)・NoSQL(DynamoDB/MongoDB/Firestore)・キャッシュ(Redis)・オブジェクトストレージ(S3) を、1枚のフローチャートと1枚の早見表にまとめて、「自分の場合はどれ?」をその場で選べるようにします。この文書の総決算です。迷ったら、まずこのページに戻ってきてください。 ← 目次・はじめにへもどる
ここまでお疲れさまでした。製品名がたくさん出てきましたが、選び方の芯は最初から1つでした。
🟢 「そのデータ、形は? 量は? どう使う? → 置き場所が決まる」。
このページでは、その芯を ①フローチャート(質問に答えていくだけ)、②早見表(横一列で比べる)、③ペルソナ別おすすめ(立場で選ぶ) の3つにまとめます。最後に 「とにかく迷ったら」の一手も置いておきます。
🧭 選び方フローチャート(質問に答えるだけ)
製品から選ぶと混乱します。上から順に質問に答えていくと、自然に置き場所が決まります。図のかわりに、ネストした質問分岐で進みます(深いほど枝の先)。
Q1. このデータ、形は?(いちばん大事な分かれ道)
Q1. データの「形」は?
├─ 関係のある「表」にきれいに収まる
│ (ユーザー・投稿・注文・フォロー関係…/きっちり整理したい)
│ → 🗄 RDB(SQL) …… Q2へ
│
└─ ゆるい/中身がバラバラ/超大量・高速・特定の取り方
(プロフィールのまとまり・イベントログ・リアルタイム同期…)
→ 🧺 NoSQL …… Q3へ
🟢 迷ったら、まず左(RDB)。 SQLは普遍的で移行もしやすく、「とりあえず間違いない」最初の一手です。NoSQLは「特定の理由(超スケール・特定のアクセスパターン・リアルタイム)がある」ときに選びます。
Q2. RDBに決めた → どう動かす?(運用をどこまで任せる?)
Q2. RDBを「どう動かす」? ← 自分でやる ↔ 任せる の階段
├─ ローカル/組み込み・1台・読み中心・とにかく手軽に
│ → 📄 SQLite(+エッジ版 Turso / Cloudflare D1)
│
├─ 運用(バックアップ・パッチ・障害対応)を任せたい
│ ├─ 普通に任せたい・コスト素直・PostgreSQL/MySQLそのまま
│ │ → 🛠 RDS(同類:Supabase / Neon / Cloud SQL)
│ │
│ └─ 高負荷・高可用・自動スケールが要る(割高でもOK)
│ → ⚡ Aurora(Serverless v2 なら負荷で自動スケール)
│
└─ 中身を全部いじる自由が要る・特殊要件・オンプレ必須
→ 🔧 自前(オンプレ)DB(MySQL/PostgreSQL を自分で)
🟢 個人・スタートアップは SQLite で素早く試す → 本番は RDS 系(Supabase/Neon)、が王道。Aurora や自前は「理由ができてから」で十分です。
Q3. NoSQLに決めた → どれ?
Q3. NoSQL なら、どれ?
├─ AWS中心・運用ゼロ・莫大なスケール・キー中心の出し入れ
│ → 🟧 DynamoDB(KV/ドキュメント・従量・自動スケール)
│
├─ 文書(JSON)を柔軟に・複雑な検索もそこそこしたい
│ → 🍃 MongoDB(ドキュメント/Atlas でマネージド)
│
└─ モバイル/Web・リアルタイム同期・Firebase で素早く
→ 🔥 Firestore(ドキュメント・リアルタイム)
➕ どの場合も「別腹」で足す2つ
RDB/NoSQL を決めたあとに、横から足すのがこの2つです。質問はシンプル。
速くしたい?(同じ問い合わせが多い・表示を軽く・DB負荷を下げたい)
→ はい:🏃 DBの「手前」にキャッシュ(Redis)を足す
※真実の源はDB。キャッシュは消えてOKな“控え”
大きいファイルを置く?(画像・動画・PDF・添付・バックアップ)
→ はい:📦 S3系(S3 / R2 / GCS …)へ。
DBには「倉庫の場所=URL」だけ書く(ファイル本体はDBに入れない)
🟢 この2つは「あとから足せる」のが大事。最初から完璧に用意しなくても、速さが要るようになってからキャッシュ、ファイルが出てきたらS3、で間に合います。
📊 比較早見表(この1枚で全部見比べる)
ここまでの登場人物を、§6の評価軸で横一列に並べます。この1枚が、このページの心臓部です。記号は 🟢=基礎としてまず押さえる/🔧=応用。
| データの形 | 得意なクエリ(取り出し方) | 整合性 | スケール | 運用の任せ方 | コスト | 代表例 | |
|---|---|---|---|---|---|---|---|
| 📄 SQLite 🟢 | 表(RDB) | SQL(結合・集計OK)。ただし1台・少人数向け | 強い(ACID) | 垂直(基本1台) | 組み込み(サーバー不要) | ほぼ0円 | SQLite/Turso/Cloudflare D1 |
| 🔧 自前(オンプレ)DB | 表(RDB) | SQL(フル機能) | 強い(ACID) | 自分で頑張る(垂直+複製) | 全部自分(自由だが重い) | 固定(サーバー+人手) | MySQL/PostgreSQL を自前VMに |
| 🛠 RDS 🟢 | 表(RDB) | SQL(フル機能) | 強い(ACID) | 主に垂直(読みは複製で拡張) | マネージド(AWSが世話) | 固定寄り(起動分) | RDS/Supabase/Neon/Cloud SQL |
| ⚡ Aurora 🔧 | 表(RDB) | SQL(フル機能・高速) | 強い(ACID) | 高可用・自動拡張(Serverless v2で自動) | クラウドネイティブ(ほぼ任せ) | 高め(割高・ロックイン強) | Aurora(MySQL/PostgreSQL互換) |
| 🟧 DynamoDB 🔧 | カゴ(KV/文書) | キー中心は超高速。複雑な結合は苦手 | 結果整合(強整合も選択可) | 水平(ほぼ無限) | サーバーレス(運用ゼロ) | 従量(使った分) | DynamoDB |
| 🍃 MongoDB 🔧 | カゴ(文書/JSON) | 文書の柔軟検索。結合は限定的 | 既定はやや緩め(設定可) | 水平(シャーディング) | 自前〜マネージド(Atlas) | 固定〜従量 | MongoDB/Atlas |
| 🔥 Firestore 🔧 | カゴ(文書) | キー/簡単な条件+リアルタイム同期 | 結果整合(一部強整合) | 水平(自動) | サーバーレス(運用ゼロ) | 従量(読み書き回数) | Firestore(Firebase) |
| 🏃 Redis(キャッシュ) 🟢 | カゴ(KV・メモリ上) | キーで一瞬。検索DBではない | 控え扱い(消えてOK) | 水平/レプリカ | マネージド多数 | 従量〜固定 | Redis/ElastiCache/Upstash |
| 📦 S3(オブジェクト) 🟢 | ファイル(ブロブ) | キーで put/get。中身検索はしない | 高耐久(事実上消えない) | ほぼ無限 | フルマネージド | 従量(容量+転送) | S3/R2/GCS/Azure Blob |
読み解きのコツを3つだけ。
- 🟢 上4つ(SQLite〜Aurora)は全部「同じRDB」。 違うのは運用の任せ方だけ。形(表)も言葉(SQL)も整合性(強い)もほぼ共通です。
- 🟢 NoSQL3つ(DynamoDB/MongoDB/Firestore)は「特定の強み」で選ぶ。 スケール・柔軟さ・リアルタイム——どれが欲しいかで決まります。
- 🟢 Redis と S3 は別カテゴリ。 Redis は「速さの控え」、S3 は「大きいファイルの倉庫」。DBの代わりではなく、DBに足すものです。
🏢 ペルソナ別おすすめ(自分の立場で選ぶ)
「結局、自分はどれ?」を立場別に。まずこの行のとおりに始めれば外しません。
| 立場 | まずこれ(RDB/NoSQL) | キャッシュ | ファイル | ひとこと |
|---|---|---|---|---|
| 👤 個人・スタートアップ | 🟢 マネージドPostgres(Supabase / Neon)。用途次第で Firestore | 必要になったら Upstash(サーバーレスRedis) | 🟢 S3 / R2 / Supabase Storage | 「まずRDBで素直に」。速さもファイルも後から足す |
| 🏭 中堅ベンチャー | 🟢 RDS / Aurora + 用途別に DynamoDB | 🟢 ElastiCache(Redis) | 🟢 S3 | コスト最適化が効いてくる。用途ごとに使い分け |
| 🏢 大企業 | Aurora / オンプレRDB + 各種NoSQL | Redis(ElastiCache等) | S3(+マルチリージョン) | 監査・コンプラ・データ所在地・マルチリージョンまで設計 |
🟢 共通して言えるのは、スタートはみんな「マネージドPostgres + S3」でOKということ。規模が上がるにつれ、NoSQL・キャッシュ・Aurora・マルチリージョンが必要に応じて足されていく——この順番が安全です。
🆘 とにかく迷ったら(3行で)
考える時間がないとき、これだけ守れば大きく外しません。
| 迷い | こうする |
|---|---|
| 🗄 DB、どれ? | まず PostgreSQL 系のマネージド(Supabase / Neon / RDS)。SQLは普遍で移行もラク |
| 📦 ファイルは? | S3系(S3 / R2 など)へ。DBには URLだけ。ファイル本体をDBに入れない |
| 🏃 遅い気がする | 後からキャッシュ(Redis / Upstash)を手前に足す。真実の源はいつもDB |
🔧 NoSQL に行きたくなったら、いったん深呼吸。「それ、PostgreSQL では本当にダメ?」と一度だけ自問してください。超スケール・特定アクセスパターン・リアルタイム同期——はっきりした理由があるならGO。なんとなく流行りで、ならまずRDBで十分なことがほとんどです。
🟢 ひとことで言うと
選び方の芯は1つ——①形は?(表→RDB/ゆるい・超大量→NoSQL)→ ②RDBならどう動かす?(手軽→SQLite/任せる→RDS/高負荷→Aurora/自由→自前)→ ③速さは後からキャッシュ/大きいファイルはS3(DBにはURLだけ)。立場を問わずスタートは 「マネージドPostgres + S3」。迷ったら PostgreSQL 系マネージド、これで最初の一手はまず間違いません。