2

gridFS について勉強していますが、いくつか質問があります。

1) gridFS は、生成された _id によってファイルを自動的にインデックス化します。しかし、ほとんどの場合、ファイル名でファイルを取得するので、自分で「ファイル名」にインデックスを作成する必要がありますか?

2) gridFS にはフォルダーはなく、ファイル名だけですが、ファイル名にスラッシュ「/images/avatars/35.jpg」を使用してフォルダーを模倣できますよね?

3) 「ファイル名」でインデックスを作成している場合 - 短いファイル名を使用する方がパフォーマンスの面で優れていますか? つまり、たとえば"/images/avatar_4f1d36b58e42ba3836ed178e_t.jpg"、24 シンボルの長さ + サフィックスであるユーザーの _id を使用すると、そのような長いフィールドのインデックス作成によってシステムの速度が低下することはありませんか? _id の代わりに短いユーザーのログインを使用する方が良い (速い) でしょうか?

4

3 に答える 3

2

1)仕様では、ファイル名にインデックスを付ける必要はありません。ドライバーのコードを確認するか、自分でインデックスを作成することをお勧めします。考慮すべきことの1つは、ファイル名が一意である必要はないということです。デザインを再検討し、代わりに_idでクエリを実行することもできます。

2)はい。

3)mongodbのb-treeインデックスはハッシュを使用しません。文字列が大きいほど、インデックス内のスペースが増えるため、RAMが多くなりますが、パフォーマンスに大きな影響はないと思います(RAMの使用量を増やすと、パフォーマンスが低下することを考慮しない限り)。mongodbの経験則として、インデックス(および「ワーキングセット」)はRAMに収まる必要があります。ファイル名の代わりに_idでクエリを実行するようにアプリケーションを作り直すことができれば、このインデックスのスペースについて心配する必要はありません。

于 2012-01-24T17:06:59.730 に答える
2

1) ファイル名がインデックス化されていなかったら、とても驚きました。API全体で使用されており、インデックスが付けられていると思います。

2) はい、できますが、暗示されるディレクトリの実際の概念はありません。ファイル/ディレクトリの一覧表示はもう少し複雑です。つまり、ただのラベルです。

3) インデックスはハッシュまたは固定長の文字列を使用するため、長いキーは長いキーと同じくらい簡単にインデックスを作成できます。

于 2012-01-24T06:45:53.267 に答える
0

GridFSには、_id(明らかに)のデフォルトのインデックスととの複合インデックスがfilenameありuploadDateます。

于 2013-02-23T10:10:41.270 に答える