ファイルストレージ Storage
ストレージは画像・動画・PDF などの大きなファイルを保管し、データベースと役割を分担します。
ひとことで言うと
ストレージは『大きなファイル』(画像・動画・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 →