我目前正在使用 Replica Set 和 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 围棋,但它仍然太高了..
我的索引是:
{
"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 是基础,还有其他好的监控工具,还是我必须创建自己的工具?
故障:当我进行大量插入时,我可以看到很多(大约每秒 100 次),控制台上什么都没有……我应该在哪里调查?
带有 JAVA/Tomcat 的连接池:我正在使用一个简单的 Tomcat webapp 连接到 MongoDB,您是否建议为每个请求打开一个到 mongoDB 的新连接(我猜不是),或者将引用保留为 Mongo 对象上的单例(以持有人为例)或使用一个好的游泳池,但我没有找到一个标准的?
非常感谢你 !