我正在建立一个允许用户上传图片的网站。每个用户可以使用的最大空间量也有限制。
我有两个想法。
以上哪项更好?为什么?
答案 0 :(得分:12)
叹息为什么每个人都跳到GridFS?
根据图像的大小和确切的用例,我建议将图像直接存储在数据库中(而不是通过GridFS)。原因如下:
文件系统
af/2c/af2c2ab3852df91.jpg
之类的约定,其中文件夹af
和2c
是从文件名中推断出来的(文件名本身可能是内容的哈希值,用于重复数据删除)。 GridFS的
GridFS用于存储大型文件,以及以与文件系统非常相似的方式存储文件。这有一些缺点:
fs.file
和一个fs.chunk
文档。大文件完全需要分块,但如果你的文件平均低于256k,则没有真正的分块(默认块大小为256k)。因此,当在GridFS中存储小文件时,您将获得没有优势的开销。糟糕的交易。它还需要两个查询而不是一个。如果您为摄影师操作网站,他们可以上传他们的RAW文件或10MB的大JPEG,那么情况可能会有所不同。在这种情况下,GridFS可能是一个不错的选择。为了存储用户图像,缩略图等,我只是将图像放在自己的文档中。