VCA

ファイルストレージ Storage

ストレージは画像・動画・PDF などの大きなファイルを保管し、データベースと役割を分担します。

更新日 約1分で読了編集方針#システム基礎#ファイル#ストレージ
学習ルートSaaSルート

ひとことで言うと

ストレージは『大きなファイル』(画像・動画・PDF)の倉庫。データベースと役割を分担します。

かんたんに言うと

画像・動画・PDF のような大きなファイルは、データベースに入れるべきではありません——肥大化して遅くなってしまいます。これらは専用のオブジェクトストレージ、たとえば Cloudflare R2 や AWS S3 に置くべきです。

よくあるやり方はこうです。ファイル本体はストレージに置き、データベースには「そのファイルの URL や ID」だけを記録します。表示が必要になったら、フロントエンドが URL を使ってストレージから直接取得します——速くて安上がりです。権限には十分注意してください。非公開ファイルは、URL を当て推量した人にダウンロードされてはいけません。

アーキテクチャ

動作の流れ

データベースとファイルストレージ、どちらに置く?

どこに置くべきか迷ったら、「データの形」で仕分けましょう。

  • 構造化されたレコード——利用者・注文・投稿・コメント——はデータベースへ。検索・並べ替え・関連づけができます。
  • 大きなファイル——画像・動画・PDF・添付——はファイル/オブジェクトストレージへ。大きなバイナリの塊のために作られています。

両者は協力して働きます。データベースが保存するのはファイルそのものではなく、ファイルへのリンク(URL や ID)です。

まとめ

  • 大きなファイルはストレージへ。データベースは URL や ID だけを保存する。
  • この分担がデータベースを軽快に保ち、容量はストレージに任せられる。
  • 非公開ファイルには必ずアクセス権限を設定し、URL を当てられてダウンロードされないようにする。

身近なたとえ

データベースは受付の台帳、ストレージは奥にある大きな倉庫。台帳には『品物が何番の棚にあるか』だけを記します。

長所

  • 大きなファイルに最適——低コストで大容量
  • URL から直接ファイルを配信でき、速い
  • データベースと役割を分担し、それぞれの仕事に専念できる

短所

  • 権限を設定しないと、非公開ファイルが誰でもアクセスできてしまう
  • ファイルの命名やライフサイクルを自分で管理する必要がある

向いている場面

  • アバター・写真・動画・添付をアップロードするアプリ
  • 静的サイトの画像やアセットのホスティング

向かない場面

  • 複雑な検索や関連が必要な構造化データ(それはデータベースの仕事)

初心者スコアカード

初心者おすすめ度
4/5
学習コスト(高いほどコスト大)
3/5
市場ニーズ
4/5
AI生成のしやすさ
4/5

よくある質問

画像や動画などのファイルもデータベースに保存する?

保存しません。データベースは「文字と数値」を保管します。画像や動画などの大きなファイルはオブジェクトストレージ(Cloudflare R2やS3)に置き、DBにはそのURLだけを保存します。

オブジェクトストレージと普通のディスクは何が違う?

オブジェクトストレージはネット経由でURLからアクセスし、ほぼ無限に拡張、従量課金です。ユーザーのアップロード向き。ローカルディスクはサーバーレス環境では再起動で消えます。

画像の読み込みを速くするには?

ファイルをオブジェクトストレージに置き、CDNでユーザーに最も近い拠点にキャッシュします。画像は圧縮し、最新形式(WebP/AVIF)を使いましょう。

SaaSルート の次のステップ: PostgreSQL