2017-04-12 4 views
0

ユーザーがWebサイトにアップロードする画像をホストしたいと考えています。ファイルとデータベースの設計

しかし、これをウェブサイトのデータベースに保存する方法はわかりません。 私はSQLの使い方を知っていますが、SQLサーバに1MB以上の画像を保存するのは難しいようです。

私の質問は次のとおりです。イメージをアップロードするアカウントを持つシステムがあれば、Webサーバーにファイルシステムを作成し、それをSQLデータベースと一緒に使用しますか?

たとえば、Webサーバーでは、画像ファイルを含む数千のフォルダを持つ/ accountsフォルダを作成します。その後、SQLクエリなどを使用してユーザー名と関連付けられたフォルダを検索します。

申し訳ありませんこれはばかげた質問であれば、この種のトピックについて詳しく調べるにはどうすればよいかわかりません。

+0

データベースは大量のデータを格納するのに非常に優れています。なぜ1MB以上のイメージを格納するのが問題になるのですか? – John3136

+0

私はちょうどSQLを使ってJPEGファイルを保存することは効率の点で悪い考えです。これは本当ですか? – user3695992

+1

いずれのアプローチにも理由があります。たとえば、バックアップ/リストア - DBにイメージを保存すると、イメージのバックアップがバックアップに含まれますが、作成/復元するにはバックアップがかなり長くなります。それらをファイルシステムに格納すると、DBからいくつかのインタフェースにそれらを抽出せずにアクセスすることができます - 必要なコードは少なくなりますが、孤立したレコード(ディスク上に存在しないDB内のファイル)維持するのが難しいかもしれません。 –

答えて

0

データベースに画像を保存することは、しばしば悪い考えです。あなたがしようとしているものの規模に応じて、いくつかの方法があります。

管理が最も簡単な方法は、各ユーザーごとに一意のディレクトリを作成することです。大規模になると、多数のストレージデバイス、仮想サーバー、その他のものに分割することができます。次に、データベース内の画像情報をユーザーごとに追跡します。

+0

要するに、SQLサーバーとサーバーのローカルディレクトリの両方を使用するのでしょうか? – user3695992

+0

はい、おそらく、各ユーザーが所有するイメージを追跡したいと思っているからです。イメージIDに外部キーを持つテーブルインデックスをイメージ名に付け、必要に応じてタイトル、アップロードされた日付など、追跡している残りのイメージデータを作成することで、オーバーヘッドを減らすことができます。 – Difster

+0

お返事ありがとうございます! – user3695992