2012-02-02 13 views
1

このサイトはasp.netにあり、重要なファイルをサーバーにアップロードして保存することができます。ユーザーの要求に応じて(ユーザーがログインしてファイルを表示すると、彼のファイルの1つのクリック)はクライアントコンピュータにダウンロードすることができる。
また、保存できるファイルのサイズは25Mbより少なくなります(少なくとも今のところ!)。ファイルは、.txt、.rtf、.pdf、.doc、.docx 、.jpg、.pngなど。
質問には、最高のパフォーマンスを考慮してファイルを保存する必要があります。SQL Serverにファイルを格納する必要があります(SQL Server 2008を使用して、Visual Studio 2008 sp1)。 (おそらくBLOBフォーマットで?)、またはそれらをサーバーのHDDに格納する必要があります。
また、たとえ10人のユーザーが20Mbのファイルをアップロードしたとしても、最大サイズを考慮すると、これは200Mbの記憶域を占有します!誰かが知ることができれば、これらのファイルがデータベースに格納されていれば、データベースのサイズがどれだけ増えるのでしょうか?
ファイルシステムのストレージに比べて、データベースの容量がどれくらい増えるのか、つまりパフォーマンスはどれくらい向上するのでしょうか?ファイルをSQLに保存するvs WebサーバーのHDDに保存する

+0

個人的に私はファイルシステムにファイルを保存するのが好きです。 –

答えて

2

このマイクロソフトの論文を参照してください:To Blob or not

私見を - 利点と欠点の多くは両方の方法である - DB内のファイルを保存するために、それらを格納するFS

しかしでSQL Server 2008のためにそこに別のオプションです - FileSYstemにファイルをDBの一部として保存するにはFILESTREAM overview

0

私はいつもこのようなファイルデータにディスクストレージを使用します。データベースは、最終的にはコストと抽象化の追加レイヤーだけでディスクにファイルデータを格納しています。抽象化はスケーリングとパフォーマンスの障壁を必然的に追加します。たとえば、ローカルHDDのファイルからCDNのファイルへの移行がデータベースより簡単で、必要なときにデータベースのサイズを拡張することなく、より多くのディスクスペースを簡単に追加できます。

私は過去に説明したものと似たシステムを構築しました。経験から、ストアファイルの抽象化を考えて、スワップアウトや更新ができるようになりました。

+0

合意。ただし、追加のレイヤーを使用すると、一貫したバックアップポリシーやレプリケーションのような特別な機能を追加することができます – mikus

+1

ディスクベースのバックアップはコスト効率に優れていますが、真です。 –

+0

しかし別々に設定する必要があります;-)人々はこのようなことを忘れる可能性があります:D – mikus

0

Oleg氏が提供しているMSDNのドキュメントやdbを使用した小規模なファイル(〜0.25MB以下)で使用可能なベンチマークや意見によれば、かなり高速になる可能性があります。ほとんどの場合、私はHDDにファイルを格納する方がより適切で柔軟性があり、自然であると言います。

ただし、分析のみをパフォーマンスに限定するべきではありません。

  • セキュリティ
  • バックアップ
  • スケーラビリティ

追加のデータソースを使用した場合、通常は特別な注意が必要です(例:複製。):のようなアカウント異なる側面に取ります。

関連する問題