私のアプリケーション(クラシックasp yay!)には25 GBで約210万の画像があり、これは90日間のデータを表しているだけなので、少なくとも365にしたいと思います。これらを管理する必要があり、すべてのオプションを検討しています。次のプラクティスの長所と短所についてはどう思いますか?
他の誰かが数百万の画像の課題に対処していますか、どのように対処しましたか?
数百万のイメージはありませんが、数十万のイメージがあり、メタデータにはmysql、バックアップ用にローカルディスクに保存されたイメージ、ユーザーに提供されるAmazon s3にプッシュされるハイブリッドアプローチを使用します。 Amazonと可用性に問題はありませんでした。クラウドフロントへの移行は私たちの計画の中にあり、時間を見つける必要があります。
この議論はあなたの決定においてあなたに役立つかもしれません:
http://ask.metafilter.com/59635/Millions-of-images
SQLサーバーのメタデータとファイルシステム(またはs3またはcloudfront)のファイルを使用します。しかし、最良の答えは他の使用パターンに依存します。
img src="..."
)、またはアクセス制御する必要がありますか。後者の場合、データベースソリューションが最適です何百万もの画像のバックアップは、どのように配置しても複雑になります-それはただの大量のデータです。このソリューションに取り組む前に、SQLサーバーのBLOBのバックアップに関する優れたケーススタディを見つけたいと思います。 (役に立つかもしれない記事があります: http://www.databasejournal.com/features/mssql/article.php/3738276/Storing-Images-and-BLOB-files-in-SQL-Server-Part -4.htm )
「データベースに画像/バイナリデータを保存しないでください」と言う人は無視してください。 VarBinaryタイプの列にデータを保存する)。 SQL Serverを使用して画像を保存するパフォーマンスの問題は、SQL Server 2008で FILESTREAM データ型を使用することで軽減できるようになりました。本質的に、FILESTREAMデータ型を使用すると、 NTFSファイルストアからファイルを提供することで得られるパフォーマンスを備えたデータベース。
SQL Mag を引用するには:
「SQL Server 2008の新しいFILESTREAMサポートは、NTFSファイルシステムから直接LOBにアクセスする利点と、SQL Serverリレーショナルデータベースエンジンによって提供される参照整合性とアクセスの容易さを兼ね備えています。」
詳細については、 MSDNのRavi S.Maniamによるこのブログ を参照してください。
それらをファイルシステムに保存することにした場合は、このServerFaultの質問でいくつかのことを行ってください: ファイルシステムに100万個の画像を保存する 。
私は数百万の画像の課題に対処していませんが、Amazon CloudFrontを使用します。すべてのファイルはS3バケットに格納されますが、Amazonのコンテンツ配信システムを介したサーバーです。 S3を単独で使用することはありません。
2番目の選択肢はファイルシステムです。シンプルで簡単なのは、これらのファイルがすべて1つのディレクトリに配置された場合、すべてが激しくクラッシュするという唯一の問題です。
私にとってSQLは、このようなシステムのオプションではありません。帯域幅の転送に対して課金されるだけでなく、クエリの処理に対しても課金されます-これはホスティングに大きく依存しますが、専用のサーバーまたは少なくとも課金されるvpsを使用していると仮定しますサイクル用。その後、イメージサーバーと同じデータベースを使用すると、サイト全体が遅くなります。そうでない場合は、2つのデータベース接続を管理する必要があるというこの複雑さをすべて追加します。
データベースは、トランザクションデータ/一貫性およびセキュリティ用に設計されています。
メディアファイル(画像、音声、ビデオ)は作成されたり削除されたりする傾向がありますが、更新されることはほとんどありません。したがって、一般に、それらを他のデータとトランザクション的に整合させる必要はなく、データベースはそこに実際の利益を与えません。テキストコンテンツは別の問題かもしれません。
ファイルのURLを知っていれば、誰かがファイルを直接プルするという概念に問題がない限り、ファイルシステムは問題ありません。人々がファイルをダウンロードする前に充電すると予想される写真ライブラリのようなものを実行している場合、それはおそらく別の問題です。つまり、ユーザーが支払いを済ませると、そのユーザーに固有のURLまたは短時間だけ有効なURLを取得でき、アプリケーションは同じ画像を指す複数のURLまたは一時的なURLを処理します。それでもアプリとファイルシステムで処理できますが、最終的にはファイルを直接ダウンロードするのではなく、アプリケーションを介してメディアを提供することになり(S3の利点はほとんどありません)、DBとファイルシステムの違いはほとんどありません。 。