画像や動画のような大きな塊は、表向きのDBには不向き。それ専用の倉庫がストレージサーバです。
概要 — まず全体をつかむ
詳細 — 1段階ずつ追う
これは何をする係?
DBが「整理された台帳」なら、ストレージは大きな荷物の倉庫。画像・動画・PDF・音声など、大きなファイル(※1 オブジェクト) をまとめて預かります。

コツは、DBにはファイル本体を入れず、「そのファイルがどこにあるか(URL)」だけを持たせること。荷物は倉庫、伝票はDB、という分担です。
アニメーション『オブジェクトストレージ(ID→中身)』を開く
登場人物メモ:
- ※1 オブジェクト — 1つのファイル(画像1枚・動画1本など)
- ※2 URL — そのファイルの置き場所を指す住所
この部分をもっと深く(中級)
Webでよく使うのはオブジェクトストレージ(S3 のような方式)。ファイルをオブジェクトとして、バケット(入れ物)に入れて管理します。ファイル階層というより「キー=住所でオブジェクトを出し入れする」イメージです。
- バケット/オブジェクト — 入れ物と、その中の1ファイル
- 署名付きURL — 期限・権限を埋め込んだ一時URL。直接アップ/ダウンロードに使う
- 冗長化 — 複数拠点にコピーを持ち、高い耐久性を得る
登場人物メモ:
- ※1 署名付きURL — バックを経由せず、クライアントが倉庫と直接やり取りする一時許可証
- ※2 耐久性 — データを失わない度合い(複製で担保)
仕事の流れ
- アップロードされたファイルを受け取り、倉庫に保存する
- 保存した場所(URL)を発行する
- DBには本体ではなく、そのURLだけを記録する
- 表示のときは、そのURLからファイルを取り出す(大きいものは、ブラウザが倉庫から直接受け取ることも)
この部分をもっと深く(中級)
- バックが署名付きURLを発行する(「このファイルを、この期限まで、アップしてよい」)
- クライアントはそのURLへ直接アップロード(バックは中継しない)。ブラウザから倉庫へは別オリジンへの通信になるため、倉庫側にCORS設定(許可するオリジン・メソッドの指定)が要る
- 保存後、DBにはキー/URLだけを記録する
- 配信時は、必要ならCDNと組み合わせて近くから配る
DBと分ける理由
- DBが重くならない — 巨大ファイルを詰めると検索・更新まで遅くなる。だから分ける
- 配信と相性がよい — 画像などはCDNと組み合わせ、近くから速く配れる
- 役割がはっきり — 「探すデータ」はDB、「大きな塊」はストレージ
この部分をもっと深く(中級)
- ブロック/ファイル/オブジェクト — 用途で選ぶ。Webの静的資産はオブジェクトが定番
- 耐久性 vs 可用性 — 失わなさ(複製)と、いつでも使える度合いは別の指標
- ライフサイクル — 古いファイルを自動で安価な階層へ移す/削除する
- アクセス制御 — 誰が何をできるかはバケットポリシーで定め、ブロックパブリックアクセスを効かせて既定は非公開に保つ(公開は明示的に許可したものだけ)
- 結果整合性 — 分散ストレージ一般では、書いた直後に読むとまだ見えない・反映が遅れることがある(※主要クラウド(現行のS3など)は全操作で強整合になった)
3方式は「何を単位にまとめるか」で選び分けます。巨大な塊はオブジェクト、速いディスクはブロック、みんなで共有はファイルが定番です。
アニメーション『ストレージ3方式(オブジェクト/ブロック/ファイル)』を開く
⚠️ うまくいかないとき
- 公開範囲のミス — 誰でも見られる設定にして、非公開のはずのファイルが漏れる
- 容量・コスト — 動画などは重く、置きっぱなしで膨らむ
- 消えると困る — 大事なファイルは、複数箇所に複製して失わないようにする
この部分をもっと深く(中級)
- 公開設定ミス — バケットを誤って公開し、機密ファイルが漏洩(重大事故の定番)。バケットポリシーとブロックパブリックアクセスで既定を非公開に保てば防げる
- 大量の小ファイル — 数が多いと一覧・管理のコストが上がる
理解度チェック
そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。
問1. 巨大な動画ファイルをDBの列にそのまま入れると、主に何が問題?
問2. ストレージサーバに置くのに向いているのは?
問3. ストレージに保存したファイルについて、DBに記録しておくのはどれ?
問4. 画像などを世界中の利用者へ速く配るために、ストレージと組み合わせると相性がよいのはどれ?
問5. 大事なファイルを失わないために、ストレージで行うのはどれ?
問6. ストレージの「うまくいかないとき」として実際に起きるのはどれ?
問7. ストレージに預ける「1つのファイル(画像1枚・動画1本など)」を何と呼ぶ?(カタカナで)
問8. DBに記録しておく「ファイルの置き場所を指す住所」を英字3文字で答えてください。