gpt4 book ai didi

mongodb - GridFS 使用文件名作为索引

转载 作者:IT老高 更新时间:2023-10-28 13:36:58 25 4
gpt4 key购买 nike

我目前正在使用 mongoDB 开发一个“简单”的照片系统,使用 Replica Set 和 GridFS。

原理很简单,我用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 中,这有点奇怪?

其他问题:

  1. Statistics : mongostats 是基础,有没有其他好的监控工具,还是我必须创建自己的工具?

  2. 错误:当我执行大量插入操作时,我可以看到很多(每秒大约 100 个),控制台上什么也没有……我应该在哪里调查?

  3. 带有 JAVA/Tomcat 的连接池:我正在使用一个简单的 Tomcat webapp 连接到 MongoDB,您是否建议为每个请求打开一个到 mongoDB 的新连接(我猜不是)或保留引用作为Mongo 对象上的单例(例如 Holder)或使用好的池,但我没有找到标准的?

非常感谢!

最佳答案

解决您的问题:

1) 当您使用 Java 驱动程序初始化 GridFS 集合时,该驱动程序将自动在 .files 和 .chunks 集合上创建索引。

2) MongoDB 要求您有一个“_id”字段和一个唯一的“_id”索引。默认的“_id”只有 12 个字节长——它确实没有显着的开销。

引用:http://www.mongodb.org/display/DOCS/Object+IDs

3) “filename_1_uploadDate_1”索引上的统计数据仅表示索引的大小。该索引仅包含文件名和上传数据字段的内容 - 它不包含任何照片数据本身。出于性能原因,您希望索引的事件部分适合 RAM。

引用文献:

4) 如果您想进行高级统计和监控,请将您的系统注册到 10gen 提供的免费彩信监控系统中。欲了解更多信息,请从这里开始:https://mms.10gen.com/help/

5) 加载新数据时出现页面错误是正常的。 MongoDB 使用内存映射文件,因此每次写入数据文件中的新位置时,操作系统都需要在该页面中出错。

有关内存映射文件的更多信息,请查看此处:http://docs.mongodb.org/manual/faq/storage/

6) MongoDB Java 驱动程序提供了自己的连接池。除非您正在做一个真正高性能的应用程序,否则您最好将 Mongo 对象用作单例。

关于mongodb - GridFS 使用文件名作为索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11507070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com