我的Node.js
应用程序当前将上传的图像存储到文件系统,并将路径保存到MongoDB
数据库中。每个文档,未来可能最多2000个,每个文档有4到10个图像。我不相信我需要将图像直接存储在数据库中供我使用(我不需要跟踪版本等),我只关心性能。
目前,我将所有图像存储在一个文件夹中,并将相关路径存储在数据库中。但是,由于文件数量增加,因此图像数量会增加,这会导致单个文件夹中包含如此多文件的性能下降吗?
或者我可以为每个文档都有一个文件夹。这种额外级别的文件夹复杂性会影响性能吗?同样使用MongoDB,明显的文件夹命名模式是使用ObjectID,但长度(24)的文件夹名称会影响性能吗?我应该使用自定义ObjectID吗?
有更有效的方法吗?提前致谢。
答案 0 :(得分:3)
对于简单访问文件,目录中的项目数不会真正影响性能。但是,为此分割目录是很常见的,因为当你有数千个文件时,目录索引肯定会很慢。此外,文件系统对每个目录的文件数量有限制。 (该限制取决于您的文件系统。)
如果我是你,我会为每个文档都有一个单独的目录,并在那里加载图像。如果您将拥有超过10,000个文档,则可能会将这些文档分开。假设您的哈希是7813258ef8c6b632dde8cc80f6bda62f
。拥有像/7/8/1/3/2/5/7813258ef8c6b632dde8cc80f6bda62f
这样的目录结构非常普遍。