[解決済み] アップロードした画像を保存する場所として、SQLデータベースとディスクファイルシステムのどちらが良いでしょうか?[クローズド]。
質問
私は、ユーザーがサーバーに画像をアップロードするためのアプリケーションを書いています。1日あたり約20枚の画像を期待していますが、すべてJPEGで、おそらく編集やリサイズはしていません。(これは別の質問ですが、画像を保存する前にサーバー側でどのようにリサイズするのでしょうか。多分、誰かがそのための.NETリソースをコメントかそこらで落としてくれるでしょう)。 私は今、アップロードされた画像を格納するための最良の場所は何であるか疑問に思っています。
-
画像をファイルシステム内にファイルとして保存し、その画像への正確なパスを持つレコードをテーブルに作成します。
-
または、データベース・サーバーの "image" または "binary data" データ型を使って、画像自体をテーブルに格納します。
どちらにもメリットとデメリットがあると思うのですが。 a)は、ファイルを簡単に再配置でき、テーブルのエントリを変更するだけでよいので気に入っています。一方、私はウェブサーバーにビジネスデータを保存するのが好きではありませんし、ウェブサーバーをビジネスデータを保持する他のデータソースに接続したくはありません(セキュリティ上の理由による)。 b)は、すべての情報が1つの場所にあり、クエリで簡単にアクセスできるので好きです。一方、データベースはすぐに非常に大きくなってしまいます。そのデータをアウトソーシングするのは、もっと難しくなるかもしれません。
解決方法は?
私は通常、ファイルをファイルシステムに保存します。なぜなら、ファイルシステムはそのために存在するからです。ファイルについては、ファイルシステムが最も柔軟でパフォーマンスの高いソリューションです(通常)。
ファイルは一般的に平均的な行よりもはるかに大きいので、大きなファイルを多く含む結果セットは大量のメモリを消費します。また、書き込みにテーブルロックを使用するストレージエンジン(例えばISAM)を使用している場合、保存するファイルのサイズや速度に応じて、ファイルテーブルが頻繁にロックされる可能性があります。
セキュリティについて - 私は通常、ドキュメントルート外のディレクトリにファイルを保存し(httpリクエストでアクセスできない)、最初に適切な認証をチェックするスクリプトを介してそれらを提供します。
関連
-
2021MySql-8.0.26インストール詳細チュートリアル(ベビーシッターレベル)
-
mybatis バッチアップデートのSQL文は正常だが、SQLの文法が悪い [] エラーが報告される
-
CMakeのエラーを解決する。ソースディレクトリ "*" には、CMakeLists.txt が含まれていないようです。
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] 1つのディレクトリにいくつまでファイルを置くことができますか?
-
[解決済み] Git による大規模なバイナリファイルの管理
-
[解決済み] redis-serverを停止するにはどうすればよいですか?
-
[解決済み] データベース駆動型アプリケーションのユニットテストに最適な戦略とは?
-
[解決済み] NoSQLデータストアを使用して、どのようなスケーラビリティの問題が発生しましたか?[クローズド]
-
[解決済み] PostgreSQLでタイムスタンプを自動更新する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Hibernateでhibernate.propertiesが見つからない問題とデータベース方言の更新の問題
-
ORA-06550 "の解決策。1 行目、7 列目"
-
DB2 SQL エラーの解決法。sqlcode=-420, sqlstate=22018
-
MySQL上級SQLステートメント
-
mysql import error [Err] 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'.
-
PostgreSQLのエラー[ERROR: relation "xxxx" does not exist]を解決する。
-
MySQL cumsum(累積)の実装
-
[解決済み] 全レコードを返すElasticsearchクエリ
-
データファイルのsqlldrフィールドが最大長を超えています。
-
[解決済み】シャーディングとは何ですか、なぜそれが重要なのですか?