是否有使用GridFS作为MongoDB的默认值?

时间:2016-09-28 03:41:17

标签: node.js express gridfs gridfs-stream

我正在创建一个带有node,express和mongodb的RESTful API,我正在使用的书作为参考建议使用GridFS(即gridfs-stream)来处理需要处理大于MongoDB切割的文件的情况 - 关(16MB)

我不确定我的应用程序是否需要处理那些大小的文件,但我想知道是否有使用它的利弊,以防我以后可能需要该功能。

我应该注意哪些缺点(即重大的不必要的性能惩罚,稳定性问题)来帮助做出这个决定?

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

请参阅https://docs.mongodb.com/manual/core/gridfs/

如果有帮助,请标记正确