5

私は、大量の画像を保存する必要があるプロジェクトに取り組んでいます。たとえば、約1,000万枚と言うので、これが画像を保存する最良の方法です。速度と効率の点で最良の方法です。これは Web ベースのプロジェクトであるため、画像の取得は高速である必要があります。

  1. データベース

    画像を base64 としてデータベースに保存します。
    私たちはnosqlデータベースに取り組んでいます。

  2. ファイルシステム

    一意の ID を作成し、フォルダーに格納します。

4

2 に答える 2

3

1)データベース

  • ストリームを使用するため、画像を処理するための多くのコードが必要になります
  • データベース サーバーの負荷が高くなる
  • 通常、データベース ストレージはファイル システム ストレージよりも高価です
  • イメージとメタデータ間のトランザクションの整合性が重要な場合は、データベースが勝ちます。
  • データベース メタデータとファイル システム データの間の整合性を管理するのはより複雑です。
  • データがファイルシステム上のディスクにフラッシュされたことを保証することは (Web アプリケーションのコンテキスト内では) 困難です。

2) ファイルシステム

  • 画像を一意の ID で保存し、それをハードディスクに保存する方が適切です。
  • Web サーバーなどは、ファイル システム内の画像にアクセスするための特別なコーディングや処理を必要としません。

http://perspectives.mvdirona.com/2008/06/30/FacebookNeedleInAHaystackEfficientStorageOfBillionsOfPhotos.aspxを参照してください。

画像を DB に保存するも参照してください。

于 2012-06-28T07:24:26.060 に答える
1

トレードオフがあります-それはあなたの正確な状況とニーズに依存します. それぞれの利点は次のとおりです。

ファイルシステム

  • パフォーマンス、特にキャッシングと I/O

  • ファイルパスをデータベースに保存するのが最善です。

いくつかの問題があります。

  • 通常、データベース ストレージはファイル システム ストレージよりも高価です
  • 標準の市販製品を使用して、ファイル システムへのアクセスを大幅に高速化できます。
    • たとえば、多くの Web サーバーは、オペレーティング システムの sendfile() システム コールを使用して、ファイル システムから直接ネットワーク インターフェイスに非同期でファイルを送信します。データベースに保存された画像は、この最適化の恩恵を受けません。
  • Web サーバーなどは、ファイル システム内の画像にアクセスするための特別なコーディングや処理を必要としません。
  • イメージとメタデータ間のトランザクションの整合性が重要な場合は、データベースが勝ちます。
    • データベース メタデータとファイル システム データの間の整合性を管理するのはより複雑です。
    • データがファイルシステム上のディスクにフラッシュされたことを保証することは (Web アプリケーションのコンテキスト内では) 困難です。

データベース

  • 複数の Web サーバーへのスケールアウトが容易
  • 管理が容易 (バックアップ、セキュリティなど)

SQL 2008 DB をお持ちの場合は、この SO記事のFileStreamをご覧ください。これにより、両方の利点が得られます。

DB に画像を保存する を参照してください。

編集

Nosql を参照してください。

  1. 何億もの小さな画像をキー/値ストアまたはその他の nosql データベースに保存することは良い考えですか?
  2. NoSQL ストアへのイメージの保存
于 2012-06-28T07:23:30.707 に答える