1

重複の可能性:
画像をデータベース (mySQL) に保存する場合と保存しない場合は? (データベース内の項目への画像のリンク)
ファイルをサーバーに保存する最良の方法 (データベース内または場所のみを保存する方法) はどれですか?

MP3/pdf とデータベースのどちらを保存するのが最善かを検討する必要があります。ファイルを BLOB として DB に保存する方がよいでしょうか? それとも、ファイルシステムを見ることができるフィールドを持っている方が良いですか?

問題のファイルは 15MiB を超える可能性はありませんが、考慮する場合に備えて、すべてが少なくとも 1MiB である可能性があります。

それが違いを生む場合、データはPHP経由でアクセスされます...

編集:私はすでに行っていたことに行きます:)データベース内のファイル名を持つファイルシステム上のリソース。ありがとうまたは入力!

4

3 に答える 3

5

私は過去3年間、大きな添付ファイルがデータベースに保存されているプロジェクトに取り組んできました。

利点

  • データベース内のレコードの管理は、関連するファイルを処理するよりも簡単でコードも少なくて済みます。
  • タスクを自動化するためのCakePHPの動作でも。データベースは簡単です。
  • 一部のプロジェクトには、データベースにデータを保持するためのセキュリティ要件があります(セキュリティが実際に向上しない場合でも)。
  • とにかくデータはすでにデータベースにあるため、自動ビルドプロセスでデータを簡単にバックアップできます。

短所

  • 開発のためにデータベースのスナップショットを撮るのは面倒です。
  • サイズが数GBを超えた後。人々があなたに何を言っても。DBエンジンがそれを処理できるかどうか疑問に思うようになります。
  • データベースのダンプには非常に時間がかかり始めます。
  • 別のスキーマへのデータ移行には、SQL以外のソリューションが必要になります。

DBブロブに関する神話

  • データベースが大きなデータベースファイルサイズを処理できないこと。
  • ハードドライブ上の1つの不良セクタは、すべてのBLOBデータを失う可能性があることを意味します。
  • データベースに保存するにはパフォーマンスコストがかかること。
  • より安全だということ。
  • DBからの読み取りとクライアントへの送信は、ファイルを読み取って送信するよりも遅くなります。

上記のすべて(私の経験から)は誤りです。

大きなブロブについての事実

  • あなたがもはやそれをデータベースに入れたくない時が来るでしょう。
  • GUIDレコード識別子はあなたの友達です。ファイル名にレコード(int)IDを使用しないでください。
  • ファイル名からレコードを逆検索する必要はありませんが、レコードからファイルを検索する必要があります。したがって、ファイル名としてGUIDを使用できます。
  • ファイルシステムと小さなデータベースをバックアップ/コピーしてから、大きなデータベースだけをバックアップ/コピーする方が簡単です。
  • Webルートにファイルを保存しないでください。
于 2013-01-16T22:09:05.197 に答える
4

ほとんどのユースケースでは、ファイルパスを保存するのが最善の方法だと思います。私にとって、このアプローチの利点は次のとおりです。

  • ユーザーがダウンロードできる画像やその他のファイルの場合、クライアントにファイルを直接ダウンロード/キャッシュさせることができます。
  • 将来のある時点で必要に応じて CDN を実装できます (つまり、データベース内のファイル参照を更新するだけです)。
  • アプリケーションとデータベースの間で返されるデータの量を大幅に最小限に抑え、(DB がリモート サーバー上にある場合) 余分な帯域幅の使用を排除し、クエリの応答を大幅に高速化します (したがって、データベースを拘束しません)。
  • これにより、DB バックアップが大幅に高速化されます。
  • これにより、アセットに対して従来のファイル管理手法を使用できます。

BLOB の保存には、いくつかのユース ケースが考えられます。

  • おそらく、資産に対してある種のバイナリ検索を実行したいでしょう (ただし、これには MySQL よりも優れたソリューションがあると簡単に主張できます)。
  • 何らかの理由で、孤立したファイル、または実際のファイルのないエントリがないことを保証する必要があります (つまり、イメージのコミットをトランザクションにします)。
于 2013-01-16T22:04:29.060 に答える
-2

最善の策は、ファイルをアップロード ディレクトリに保存し、その場所を MySQL に渡すことです。

于 2013-01-16T21:56:11.113 に答える