15

私はこの点に関していくつかの投稿を読みましたが、私の場合の最善の解決策がまだわかりません。

私は新しいwebAppを書き始めており、バックエンドは約100万から1000万の画像を提供する予定です。(単一画像の平均サイズ200-500kB )

私のサイトは、コンテンツと画像を100〜1000人のユーザーに同時に提供します。

また、プロバイダーのコストを可能な限り低く抑えたいと思います(ただし、これは二次的な要件です)。DBサイズのコストと比較すると、ファイルシステムのスペースは安価だと思います。

個人的には、すべての画像をDBに入れるというアイデアが好きですが、どんな提案でも本当にありがたいです:)

私の場合、DBアプローチが正しい選択だと思いますか?

4

7 に答える 7

22

これらの画像をすべてデータベースに入れると、非常に大きくなります。これは、DBエンジンが、代わりにホットなアプリケーションデータをキャッシュする可能性がある場合に、これらすべてのイメージ(実際には設計されていないタスク)のキャッシュでビジー状態になることを意味します。

ファイルのキャッシュはOSやリバースプロキシに任せてください。

于 2009-08-05T16:07:34.243 に答える
15

ファイルシステムに画像を保存するその他の理由:

  • イメージサーバーは、データベースがビジーまたはダウンしている場合でも実行できます。
  • ファイルシステムはファイルを保存するように作られ、非常に効率的です。
  • データベースにデータをダンプすると、バックアップやその他の操作が遅くなります。
  • イメージを提供するためにサーバー側でコード化する必要はなく、単なる古いIIS/Apacheだけです。
  • ダートチープなWebサーバーを使用すると、または潜在的にCDNにスケールアップできます。
  • データベースを使わずに、関連する作業(サムネイルの生成など)を実行できます。
  • データベースサーバーは、より多くの「実際の」テーブルデータをメモリに保持できます。これにより、クエリのデータベース速度を取得できます。貴重なメモリを使用して画像ファイルをキャッシュに保持する場合、メモリ内の写真インデックスを増やすよりも、速度的にはほとんど何も購入しません。
于 2009-08-05T17:47:02.657 に答える
11

ほとんどの大規模なサイトはファイルシステムを使用しています。

写真をファイルとして保存するか、Webアプリのデータベースに保存するかを参照してください。

于 2009-08-05T16:07:16.553 に答える
5

バイナリオブジェクトを処理するときは、アーキテクチャのドキュメント中心のアプローチに従い、PDFや画像などのドキュメントをデータベースに保存しないでください。データベースであらゆる種類のパフォーマンスの問題が発生し始めたら、最終的にはリファクタリングする必要があります。ファイルをファイルシステムに保存し、データベースのテーブル内にパスを設定するだけです。シリアル化してデータベースに保存するために使用するデータ型のサイズにも物理的な制限があります。ファイルシステムに保存してアクセスするだけです。

于 2009-08-05T16:08:00.890 に答える
4

あなたの最初の文はあなたが主題に関するいくつかの投稿を読んだと言っているので、私はこれをカバーする記事へのリンクをわざわざ入れません。私の経験では、画像の数と画像のサイズに関する投稿内容に基づいて、それらをDBに保存すると、DBのパフォーマンスにかなりの費用がかかります。それらをファイルシステムに保存します。

于 2009-08-05T16:09:32.993 に答える
3

どのデータベースを使用していますか?MS SQL Server 2008は、FILESTREAMストレージを提供します

SQL Server 2008とNTFSファイルシステムの組み合わせを使用して、BLOBデータの保存と効率的なアクセスを可能にします。BLOBストレージの選択、FILESTREAMデータを使用するためのWindowsおよびSQL Serverの構成、FILESTREAMを他の機能と組み合わせる際の考慮事項、およびパーティション分割やパフォーマンスなどの実装の詳細について説明します。

詳細

于 2009-08-05T18:00:40.350 に答える
0

イメージング用に最適化されたサーバーであるFileNetを使用します。それは非常に高価です。より安価な解決策は、ファイルサーバーを使用することです。

データベースサーバーに大きなファイルを保存することを検討しないでください。

他の人が述べているように、大きなファイルへの参照をデータベースに保存します。

于 2009-08-05T17:35:16.300 に答える