0

我正在使用 node、express 和 mongodb 创建一个 RESTful API,我用作参考的书建议在需要处理大于 MongoDB 截止值(16MB)的文件的情况下使用 GridFS(即 gridfs-stream) )

我不确定我的应用程序是否需要处理这种大小的文件,但我想知道无论如何使用它是否有缺点,以防我以后可能需要该功能。

是否有任何缺点(即显着的不必要的性能损失、稳定性问题)我应该知道以帮助做出这个决定?

我也愿意接受您可能拥有的替代文件管理解决方案的建议。

谢谢!

4

1 回答 1

1

不要将 Gridfs 用于小型二进制数据 GridFS 需要两种查询:一种用于获取文件的元数据,另一种用于获取其内容。因此,如果您使用 GridFS 来存储小文件,您的应用程序必须执行的查询数量会增加一倍。GridFS 基本上是一种分解大型二进制对象以存储在数据库中的方法。GridFS 用于存储大数据——大于单个文档的容量。作为最佳实践规则,任何太大而无法在客户端上一次全部加载的东西可能不是您想要在服务器上一次全部加载的东西。因此,您要流式传输到客户端的任何内容都是 GridFS 的良好候选者。将在客户端上一次加载的内容,例如图像、声音,甚至是小视频剪辑,通常应该嵌入到您的主文档中

此外,如果您的文件都小于 16 MB BSON 文档大小限制,请考虑将文件手动存储在单个文档中,而不是使用 GridFS。您可以使用 BinData 数据类型来存储二进制数据。有关使用 BinData 的详细信息,请参阅您的驱动程序文档。

https://docs.mongodb.com/manual/core/gridfs/

如果这有帮助,请标记正确

于 2017-02-08T10:04:15.520 回答