ストレージサーバ — 大きな塊を置く倉庫

概要 — まず全体をつかむ

画像や動画のような大きな塊は、表向きのDBには不向き。それ専用の倉庫がストレージサーバです。

詳細 — 1段階ずつ追う

これは何をする係?

DBが「整理された台帳」なら、ストレージは大きな荷物の倉庫。画像・動画・PDF・音声など、大きなファイル(※1 オブジェクト) をまとめて預かります。

サーバ機器
ストレージサーバの実体もこうしたコンピュータ

コツは、DBにはファイル本体を入れず、「そのファイルがどこにあるか(URL)」だけを持たせること。荷物は倉庫、伝票はDB、という分担です。

アニメーション『オブジェクトストレージ(ID→中身)』を開く
オブジェクトストレージ=「IDを渡すと中身が返る」平らな倉庫ドライブフォルダの階層をたどる📁 2025📁 07月🖼 a.jpg🖼 b.jpg深くなるほど道のりが長いオブジェクトストレージID → 中身のペアが平らに大量id: 9f3a→ 中身id: 71bc→ 中身id: c052→ 中身id: 4e8d→ 中身id: a1f7→ 中身id: 6b20→ 中身id: d934→ 中身id: 2c55→ 中身id: e7a1→ 中身階層なし・IDで一発HTTP APIPUT / GET横に台数を足して、事実上無限に拡張画像・動画など大きな塊の保管に強い

登場人物メモ:

  • ※1 オブジェクト — 1つのファイル(画像1枚・動画1本など)
  • ※2 URL — そのファイルの置き場所を指す住所
この部分をもっと深く(中級

Webでよく使うのはオブジェクトストレージ(S3 のような方式)。ファイルをオブジェクトとして、バケット(入れ物)に入れて管理します。ファイル階層というより「キー=住所でオブジェクトを出し入れする」イメージです。

  • バケット/オブジェクト — 入れ物と、その中の1ファイル
  • 署名付きURL — 期限・権限を埋め込んだ一時URL。直接アップ/ダウンロードに使う
  • 冗長化 — 複数拠点にコピーを持ち、高い耐久性を得る

登場人物メモ:

  • ※1 署名付きURL — バックを経由せず、クライアントが倉庫と直接やり取りする一時許可証
  • ※2 耐久性 — データを失わない度合い(複製で担保)

仕事の流れ

  1. アップロードされたファイルを受け取り、倉庫に保存する
  2. 保存した場所(URL)を発行する
  3. DBには本体ではなく、そのURLだけを記録する
  4. 表示のときは、そのURLからファイルを取り出す(大きいものは、ブラウザが倉庫から直接受け取ることも)
この部分をもっと深く(中級
  1. バックが署名付きURLを発行する(「このファイルを、この期限まで、アップしてよい」)
  2. クライアントはそのURLへ直接アップロード(バックは中継しない)。ブラウザから倉庫へは別オリジンへの通信になるため、倉庫側にCORS設定(許可するオリジン・メソッドの指定)が要る
  3. 保存後、DBにはキー/URLだけを記録する
  4. 配信時は、必要ならCDNと組み合わせて近くから配る

DBと分ける理由

  • DBが重くならない — 巨大ファイルを詰めると検索・更新まで遅くなる。だから分ける
  • 配信と相性がよい — 画像などはCDNと組み合わせ、近くから速く配れる
  • 役割がはっきり — 「探すデータ」はDB、「大きな塊」はストレージ
この部分をもっと深く(中級
  • ブロック/ファイル/オブジェクト — 用途で選ぶ。Webの静的資産はオブジェクトが定番
  • 耐久性 vs 可用性 — 失わなさ(複製)と、いつでも使える度合いは別の指標
  • ライフサイクル — 古いファイルを自動で安価な階層へ移す/削除する
  • アクセス制御 — 誰が何をできるかはバケットポリシーで定め、ブロックパブリックアクセスを効かせて既定は非公開に保つ(公開は明示的に許可したものだけ)
  • 結果整合性 — 分散ストレージ一般では、書いた直後に読むとまだ見えない・反映が遅れることがある(※主要クラウド(現行のS3など)は全操作で強整合になった)

3方式は「何を単位にまとめるか」で選び分けます。巨大な塊はオブジェクト、速いディスクはブロック、みんなで共有はファイルが定番です。

アニメーション『ストレージ3方式(オブジェクト/ブロック/ファイル)』を開く
ストレージ3方式 — 何を単位にまとめるかで選ぶオブジェクトID+メタデータで丸ごとid: 9f3a単位:オブジェクト(1ファイル)アクセス:HTTP API でID指定特徴:巨大・分散、ほぼ無限に拡張得意:画像・動画・バックアップ・ログブロック固定長ブロックに分割単位:固定長ブロック(低レベル)アクセス:OSがFSを載せて使う特徴:高速・低遅延(1台に接続)得意:DB・VMのディスク(起動用)ファイル階層フォルダで共有単位:ファイル(フォルダ階層)アクセス:パス指定(/共有/a.txt)特徴:複数マシンで同時共有(NAS)得意:部署の共有ドライブ・置き場巨大な塊はオブジェクト/速いディスクはブロック/みんなで共有はファイルWebの静的資産(画像・動画)はオブジェクトが定番

⚠️ うまくいかないとき

  • 公開範囲のミス — 誰でも見られる設定にして、非公開のはずのファイルが漏れる
  • 容量・コスト — 動画などは重く、置きっぱなしで膨らむ
  • 消えると困る — 大事なファイルは、複数箇所に複製して失わないようにする
この部分をもっと深く(中級
  • 公開設定ミス — バケットを誤って公開し、機密ファイルが漏洩(重大事故の定番)。バケットポリシーとブロックパブリックアクセスで既定を非公開に保てば防げる
  • 大量の小ファイル — 数が多いと一覧・管理のコストが上がる

理解度チェック

そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。

1. 巨大な動画ファイルをDBの列にそのまま入れると、主に何が問題?

2. ストレージサーバに置くのに向いているのは?

3. ストレージに保存したファイルについて、DBに記録しておくのはどれ?

4. 画像などを世界中の利用者へ速く配るために、ストレージと組み合わせると相性がよいのはどれ?

5. 大事なファイルを失わないために、ストレージで行うのはどれ?

6. ストレージの「うまくいかないとき」として実際に起きるのはどれ?

7. ストレージに預ける「1つのファイル(画像1枚・動画1本など)」を何と呼ぶ?(カタカナで)

8. DBに記録しておく「ファイルの置き場所を指す住所」を英字3文字で答えてください。