オブジェクトストレージ(S3系)— 大きいファイルはDBに入れない

📖 このページのゴール:画像・動画・PDF などの大きいファイルは、DBではなく専用の倉庫(オブジェクトストレージ)に置く、という当たり前を体に入れる。代表サービスと、初心者が必ずやる失敗、その正しい直し方まで。 ← 目次・はじめにへもどる


📦 ひとことのたとえ

オブジェクトストレージ(S3系)= 貸し倉庫(トランクルーム) です。

引っ越しのとき、大きな家具やダンボールを財布の中に入れる人はいませんよね。財布(DB)には小さくて大事なもの(お金・カード=数値や名前)だけ。大きい荷物(画像・動画)は貸し倉庫へ預けます。

そして倉庫に預けたら、財布の中のメモ(伝票)には「A-12番の倉庫に預けた」という場所(=URL)だけを書いておく。荷物そのものは財布に入れない。これがこのページでいちばん言いたいことです。

登場人物 正体 役割
🏢 貸し倉庫 オブジェクトストレージ(S3 など) 大きい荷物(ファイル)を預かる
📦 大きい荷物 画像・動画・PDF・バックアップ 倉庫に入れるもの
🧾 伝票のメモ DB(PostgreSQL など)の1行 「倉庫の場所=URL」だけを書く

🟢 覚え方:ファイルは倉庫、DBには「倉庫の場所」だけ。


🧩 何者?(しくみ)

ふつうのDB(RDBやNoSQL)は「検索して・並べて・つなぐ」のが得意でした。オブジェクトストレージは、そういう器用なことはしません。やることはとてもシンプルです。

  • ファイル(ブロブ)に「キー(名前)」を1つ付けて、丸ごと預ける(put)
  • あとでそのキーを指定して丸ごと取り出す(get)

たとえば users/42/avatar.png というキーで画像を put すると、同じキーで get できる。ただそれだけ。「赤い画像だけ探して」みたいなクエリ(中身を条件で検索)はできません。 あくまで「名前で出し入れする巨大なロッカー」です。

🧠 ブロブ(Binary Large OBject=バイナリの大きなかたまり)=中身を細かく見ずに「ひとかたまり」として扱うデータ。画像も動画もPDFも、ストレージから見ればただの大きなかたまりです。

   アプリ                       オブジェクトストレージ(貸し倉庫)
  ┌──────┐   put(キー, ファイル) ┌──────────────────────┐
  │      │ ───────────────────▶ │  users/42/avatar.png │ ← キーで出し入れ
  │      │   get(キー)          │  videos/intro.mp4    │
  │      │ ◀─────────────────── │  reports/2026.pdf    │
  └──────┘                      └──────────────────────┘
       │
       │ ファイルの「URL(場所)」だけを保存
       ▼
  ┌──────────────────────────────┐
  │ DB(PostgreSQL など)         │  avatar_url = "https://.../avatar.png"
  └──────────────────────────────┘   ← 中身ではなく“場所”を持つ

向いているのは 画像・動画・音声・PDF・ファイル添付・バックアップ・静的サイトの素材など。さらに、預けたファイルはURL で配信でき、CDN(しーでぃーえん=世界中に置いた配達拠点。近い拠点から速く届けるしくみ)と組み合わせると、世界中のユーザーに速く届けられます。


🛠 代表サービス(実名)

中身は「キーで put/get する倉庫」で共通。提供元と料金体系が違います。

サービス 提供元 ひとこと
Amazon S3 AWS 元祖・定番。「S3系」という言葉自体がこれ由来。迷ったらまずこれ
Google Cloud Storage Google GCP版のS3。GCPを使うなら自然な選択
Azure Blob Storage Microsoft Azure版。「Blob=ブロブ」が名前に出ている
Cloudflare R2 Cloudflare 取り出し(エグレス)が無料。よく読まれる画像・動画でコスト差が出る
Firebase Storage Google / Firebase アプリから直に使いやすい。Firestore(8章)と相性よし
Supabase Storage Supabase Postgres(02・05章)とセットで使える。姉妹教材もSupabase

🔧 エグレス(egress=外への持ち出し)=倉庫から取り出して配信した通信量にかかる料金。S3 など多くは「預けるのは安いが、たくさん読まれると取り出し代がかさむ」。R2 はこのエグレスが無料なのが大きな売り。よく見られる画像・動画が多いサービスでは効いてきます。


🔑 最重要の鉄則:大きいファイルはDBに入れない

このページの主役。初心者がほぼ必ずやる失敗であり、ガイド全体でいちばん大事なルールです。

❌ やりがちな失敗

「画像も結局データだし、DBに全部入れちゃえ」——画像や動画のファイルをそのままDBの中に保存してしまう。一見うまく動くので、気づきにくいのが厄介です。

これをやると、こうなります。

  • 🐘 DBが肥大する:本来は軽くて速いはずのDBが、巨大ファイルでパンパンに。
  • 🐌 遅くなる:1行が重すぎて、ちょっとした読み書きまで遅くなる。
  • 💸 高くつく:DBの保存料は倉庫よりずっと割高。容量が増えるほど効いてくる。
  • 💾 バックアップが地獄:DBのバックアップが巨大化し、復元も時間がかかる。

✅ 正しいやり方

  何を置く どこに
📦 ファイルそのもの 画像・動画・PDF の中身 S3系のストレージ
🧾 ファイルの場所 URL または キー(例:users/42/avatar.png DBにはこれだけ

つまり、ファイルは倉庫、DBにはURL/キーだけ。DBは「どのファイルが・誰のもので・いつ上がったか」という軽い情報だけを持ち、本体は倉庫に任せる。これでDBは軽く・速く・安いまま保てます。

🟢 迷ったらこの一行:「DBに入れていいのは“場所”。中身(ファイル)は倉庫へ。」


🔒 公開のしかたと、よくある事故

倉庫に預けたファイルを「誰に見せるか」も大切です(姉妹教材のセキュリティと地続き)。

  • 🔓 公開バケット(バケット=倉庫の入れ物の単位):URL を知っていれば誰でも見られる。ロゴや公開画像ならOK。
  • 🔑 署名付きURL(限定公開)🔧:「このURLは10分だけ有効」のような、期限付きの合鍵を発行する方式。請求書PDFや会員限定の動画など、本人だけに一時的に見せたいファイルに使う。期限が切れればURLは無効になります。

⚠️ 超頻出の事故:バケットをうっかり全公開にしてしまい、本来は本人だけのはずのファイル(ユーザーのアップロード画像・個人情報を含むPDFなど)が世界中の誰でも見られる状態に。ニュースになる情報漏えいの定番パターンです。「このバケットは公開でいい?」を必ず確認しましょう。詳しくは姉妹教材のセキュリティ編へ。


👍 向いている / 👎 向かない

  内容
👍 向いている 画像・動画・音声・PDFの保存/ユーザーのファイル添付/静的サイトの配信(HTML・CSS・画像)/DBやログのバックアップ置き場
👎 向かない 「条件で細かく検索」したいデータ(→ DB)/ファイルの一部だけを書き換える用途(基本は丸ごと入れ替え)/関係でつないで集計したいデータ(→ RDB)

ざっくり言うと、「丸ごと預けて・丸ごと出す・大きいもの」はストレージ、「条件で探す・つなぐ・更新する」はDB。役割分担です。


🏢 誰が使う?

ほぼ全員です。アプリに「画像をアップロード」「ファイルを添付」「動画を載せる」が1つでもあれば、ほぼ確実に出番があります。

  • 👤 個人/スタートアップ:S3・R2Supabase Storage・Firebase Storage あたりから手軽に開始。
  • 🏢 中堅〜大企業:S3 + CDN で大量配信、署名付きURLで限定公開、バックアップ置き場としても活用。

立場が変わっても「ファイルは倉庫、DBにはURL」という基本は同じです。


📝 ことばメモ

  • オブジェクトストレージ:ファイル(ブロブ)をキーで put/get する倉庫。検索はしない。
  • ブロブ(blob):画像・動画など「ひとかたまりの大きなデータ」。
  • バケット:ファイルを入れる倉庫の単位(入れ物)。
  • キー:ファイルに付ける名前(例:users/42/avatar.png)。これで出し入れする。
  • エグレス:倉庫から取り出して配信する通信量にかかる料金。R2 は無料
  • CDN:世界中の配達拠点から、近い拠点で速くファイルを届けるしくみ。
  • 署名付きURL:期限付きの合鍵URL。本人だけに一時的に見せたいときに使う。

🟢 ひとことで言うと

オブジェクトストレージ(S3系)は大きいファイルの貸し倉庫。画像・動画・PDFはここに put/getDBにはURL/キーだけを保存します。大きいファイルをDBに入れない——これがガイド最大の鉄則。配信はCDN、限定公開は署名付きURL、全公開の事故にだけ注意。

➡️ 次へ

次のページ:まとめ — 選び方フローチャート&比較早見表 → ← 目次・はじめにへもどる