繁体   English   中英

MongoDB gridFS-文件名长度,索引,性能

[英]MongoDB gridFS - filename length, indexing, performance

我正在学习gridFS,但有几个问题。

1)gridFS通过生成的_id自动索引文件。 但是大多数时候我都是通过文件名来获取文件的,所以我应该自己在“文件名”上创建索引吗?

2)gridFS没有文件夹,只有文件名,但是我可以通过使用带斜杠“ /images/avatars/35.jpg”的文件名来模仿文件夹,对吗?

3)如果我在“文件名”上建立索引-从性能上来说,使用短文件名会更好吗? 我的意思是-如果我使用长度为24个符号+后缀的用户_id,例如"/images/avatar_4f1d36b58e42ba3836ed178e_t.jpg" ,那么在如此长的字段上建立索引是否会减慢系统速度? 使用短用户登录名而不是_id会更好(更快)吗?

1)如果文件名没有被索引,我会感到非常惊讶。 它在整个API中都使用过,并且我假设它已被索引。

2)是的,可以,但是没有隐含目录的实际概念。 列出文件/目录有点复杂。 换句话说,它只是一个标签。

3)索引使用哈希或固定长度的字符串,因此长键与长键一样容易索引。

1)规范不需要索引文件名。 您可能想检查驱动程序中的代码,或者自己创建索引。 您应该考虑的一件事是文件名不必唯一。 您可以重新考虑设计,然后在_id上查询。

2)是的。

3)mongodb中的b树索引不使用哈希。 较大的字符串将在索引中占用更多空间,从而占用更多的RAM,但是我认为性能不会受到太大的影响(除非您将使用更多的RAM视为对性能造成了影响)。 mongodb的一个好的经验法则是,索引(和“工作集”)应该适合RAM。 如果您可以重做应用程序以查询_id而不是文件名,则不必担心该索引的空间。

GridFS在_id上有一个默认索引(很明显),在filenameuploadDate上有一个复合索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM