私は現在、レプリカ セットと GridFS を使用して、mongoDB を使用した「単純な」写真システムに取り組んでいます。
原理は簡単です。GridFS を使用して多くの写真を配置し、クライアントはファイル名を認識し、ファイル名からファイルを取得できます。
GridFS はファイル名をインデックスとして使用していますか? はい、うまくいけば、公式ドキュメントに書き留められていませんでした。
私の統計は次のとおりです。
{
"ns" : "photos.socialphotos.files",
"count" : 758086,
"size" : 168295128,
"avgObjSize" : 222.00004748801587,
"storageSize" : 220647424,
"numExtents" : 15,
"nindexes" : 2,
"lastExtentSize" : 43311104,
"paddingFactor" : 1,
"flags" : 1,
"totalIndexSize" : 125084624,
"indexSizes" : {
"_id_" : 22925504,
"filename_1_uploadDate_1" : 102159120
},
"ok" : 1
}
編集: reIndex() コレクションによって、私は 30 Go を獲得しましたが、それでも高すぎます..
私のインデックスは次のとおりです。
{
"v" : 1,
"key" : {
"_id" : 1
},
"ns" : "photos.socialphotos.files",
"name" : "_id_"
},
{
"v" : 1,
"key" : {
"filename" : 1,
"uploadDate" : 1
},
"ns" : "photos.socialphotos.files",
"name" : "filename_1_uploadDate_1"
}
索引サイズ:
"keysPerIndex" : {
"photos.socialphotos.files.$_id_" : 758086,
"photos.socialphotos.files.$filename_1_uploadDate_1" : 758086
}
保管していないので一度も使っ_id_
ていませんが、外しても大丈夫ですか?インデックス サイズは 125084624 です。これは、ほとんどすべての写真を RAM に保存する必要があることを意味しますが、これは少し奇妙です。
追加の質問:
統計 : mongostats が基本です。監視用の別の優れたツールはありますか、それとも独自のツールを作成する必要がありますか?
障害 : 大量の挿入を行っているときに、LOT (1 秒あたり約 100) が表示されることがあります。コンソールには何もありません...どこを調査すればよいですか?
JAVA/Tomcat を使用した接続プール: 私は MongoDB への単純な Tomcat webapp 接続を使用しています。リクエストごとに mongoDB への新しい接続を開くことをお勧めしますか (私はそうではないと思います)、または参照を Mongo オブジェクトのシングルトンとして保持することをお勧めします (たとえば、ホルダーを使用するか、適切なプールを使用しますが、標準のプールが見つかりませんでしたか?
どうもありがとうございました !