2013-08-19 29 views
0

在GridFS FAQ中,有人说应该存储前面提到的大小大于16MB的GridFS文件。我有很多文件〜500KB。使用MongoDB来存储大小为est的文件500KB

问题是:哪种方法更高效 - 将文件的内容存储在文档中或将文件存储在GridFS中?我应该考虑其他方法吗?

+0

什么是文件的最大大小?根据GridFS文档,它将文件分割成块,然后将这些块存储在一个集合中,并将元数据存储在另一个集合中。如果你的文件都在16MB的限制范围内,那么我预计存储/检索将更快,更节省空间。 –

+0

我在上面提到的文档可以在以下网址找到:http://docs.mongodb.org/manual/core/gridfs/ –

+0

正如我在OP中所提到的,大部分是〜500KB。估计*最大*大小不超过1MB。 “存储/检索”是什么意思?将文件内容读入文件并形成新文件比?我怀疑文件被检索〜每小时10000次。它是否有效 - 每次创建一个新文件? – tkroman

回答

5

至于效率,两种方法都是一样的。通过在多个文档中分页> 16MB数据,GridFS在驱动程序级别实现。 MongoDB并不知道你正在存储一个“文件”,它只知道如何存储文件,而不会提出问题。因此,根据您的驱动程序(PHP/NodeJS/Ruby),您可能会发现一些元数据功能很好,因此可以选择使用GridFS。否则,如果您确定文档不会超过16MB,那么将原始内容存储在文档中应该相当简单,并且速度更快(或更快)。

通常,我建议不要在数据库中存储文件。它可能会对您的工作集和整体速度产生负面影响。