1. ホーム
  2. database

[解決済み] アップロードした画像を保存する場所として、SQLデータベースとディスクファイルシステムのどちらが良いでしょうか?[クローズド]。

2022-04-26 17:49:13

質問

<余談
クローズド . この質問は 意見型 . 現在、回答は受け付けておりません。

<パス

この質問を改善したいですか? 事実と引用で答えられるように、質問を更新する。 本論文の編集 .

閉店 1年前 .

私は、ユーザーがサーバーに画像をアップロードするためのアプリケーションを書いています。1日あたり約20枚の画像を期待していますが、すべてJPEGで、おそらく編集やリサイズはしていません。(これは別の質問ですが、画像を保存する前にサーバー側でどのようにリサイズするのでしょうか。多分、誰かがそのための.NETリソースをコメントかそこらで落としてくれるでしょう)。 私は今、アップロードされた画像を格納するための最良の場所は何であるか疑問に思っています。

  • 画像をファイルシステム内にファイルとして保存し、その画像への正確なパスを持つレコードをテーブルに作成します。

  • または、データベース・サーバーの "image" または "binary data" データ型を使って、画像自体をテーブルに格納します。

どちらにもメリットとデメリットがあると思うのですが。 a)は、ファイルを簡単に再配置でき、テーブルのエントリを変更するだけでよいので気に入っています。一方、私はウェブサーバーにビジネスデータを保存するのが好きではありませんし、ウェブサーバーをビジネスデータを保持する他のデータソースに接続したくはありません(セキュリティ上の理由による)。 b)は、すべての情報が1つの場所にあり、クエリで簡単にアクセスできるので好きです。一方、データベースはすぐに非常に大きくなってしまいます。そのデータをアウトソーシングするのは、もっと難しくなるかもしれません。

解決方法は?

私は通常、ファイルをファイルシステムに保存します。なぜなら、ファイルシステムはそのために存在するからです。ファイルについては、ファイルシステムが最も柔軟でパフォーマンスの高いソリューションです(通常)。

ファイルは一般的に平均的な行よりもはるかに大きいので、大きなファイルを多く含む結果セットは大量のメモリを消費します。また、書き込みにテーブルロックを使用するストレージエンジン(例えばISAM)を使用している場合、保存するファイルのサイズや速度に応じて、ファイルテーブルが頻繁にロックされる可能性があります。

セキュリティについて - 私は通常、ドキュメントルート外のディレクトリにファイルを保存し(httpリクエストでアクセスできない)、最初に適切な認証をチェックするスクリプトを介してそれらを提供します。