14

私はどちらが良い/速いのか疑問に思っていました:

  1. バイナリデータとして保存された画像と、場合によってはいくつかのメタデータを含むドキュメントの個別のコレクションがあります。
  2. または、GridFSを使用して画像を保存します。
4

3 に答える 3

23

画像が小さい場合は、コレクション内のドキュメントにバイナリデータとして保存できます。ドキュメントをクエリするたびにそれらを取得することを考慮してください(クエリから「画像」フィールドを除外しない限り)。

ただし、画像が大きい場合は、GridFSを使用します。GridFSには、考慮すべき画像の処理に非常に優れた機能がいくつかあります。

  • 大きな画像の場合、GridFに保存すると、チャンクに分割され、非常に大きなファイルを保存できます。ドキュメントに画像を保存しようとすると、ドキュメントの最大サイズが16Mbに制限され、実際のドキュメントに使用する必要のあるスペースを消費します。
  • コレクション内の通常のドキュメントから行う場合と同様に、画像自体にメタデータを追加し、これらの属性に対してクエリを実行できます。したがって、GridFSは、画像に関するメタデータのドキュメントと同じくらい優れています。
  • 画像でMD5ハッシュを計算できるのが本当に気に入っています。(私の場合のいくつかには非常に便利です)。
  • GridFSに画像を保存することで、画像の前処理をバイナリ形式に保存できます(大したことではありませんが、GridFSの便利さ)

パフォーマンスの点では、通常のドキュメントに対する読み取り/書き込みは、GridFSに対して行うのと同じです。どちらかを選択する際に、パフォーマンスが差別化要因になるとは思いません。

私の個人的な推奨事項はGridFSを使用することですが、特定のユースケースを分析する必要があります。

お役に立てれば。

于 2011-10-19T03:32:21.627 に答える
3

私はGridFSを使用して写真やドキュメントを保存しています。とても簡単で、コレクションから取得してローカルに表示または保存するのも簡単です。同じコレクション内にバイナリデータとともにメタデータを保存できます。このように、それらを保存するために追加のコレクションを作成する必要はありません。

たとえば、私のプロジェクトの1つに、ユーザー名、ファイルタイプ、アップロード日とともにユーザープロフィール写真を保存しています。

于 2011-10-18T12:50:05.167 に答える
1

GridFSは、効率的な方法でファイルを処理するために開発されました。 http://www.mongodb.org/display/DOCS/When+to+use+GridFS

データをファイルに変換して戻す必要があるかもしれないことを忘れないでください。

ただし、確かに、使用パターンを考慮したパフォーマンステストを実行してください。

于 2011-10-18T12:46:06.977 に答える