繁体   English   中英

对MongoDB gridfs的优势感到困惑

[英]Confused about the advantage of MongoDB gridfs

MongoDB gridfs说最大的优点是将大文件拆分为块,然后如果你只想查看部分文件,就不必将整个文件加载到内存中。 但我的困惑是,即使我从本地磁盘打开一个大文件,我也可以使用skip()API来加载我想要的部分文件。 我根本不需要加载整个文件。 那么MongoDB怎么说这是优势呢?

即使cursor.skip()方法没有返回整个文件,它也必须将其加载到内存中。 它要求服务器从集合或索引的开头走,以在开始返回结果之前获取偏移或跳过位置(当集合的大小很小时,不会产生很大影响)。 随着偏移量的增加,cursor.skip()将变得更慢并且CPU密集度更高。 对于较大的集合,cursor.skip()可能会成为IO绑定。

但是,GridFS不是将文件存储在单个文档中,而是将文件分成多个部分或块,并将每个块存储为单独的文档。 因此,允许用户从文件的任意部分访问信息,例如“跳过”到文件的中间(使用id或文件名)而不需要CPU密集。

官方文件:1。 跳过 2. GridFS

更新:

关于Peter Brittain的建议:

有许多事情要考虑(基础设施,假定的使用统计数据,文件大小等),而在文件系统和GridFS之间进行选择。

例如:如果您有数百万个文件,GridFS往往会更好地处理它,您还需要考虑文件系统限制,如最大文件数/目录数等。

您可能需要考虑阅读本文: 为什么使用GridFS而不是普通的文件系统存储?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM