对MongoDB gridfs的优势感到困惑吗

对MongoDB gridfs的优势感到困惑吗,mongodb,Mongodb,MongoDB gridfs说,最大的优点是将大文件分割成块,如果只想查看文件的一部分,就不必将整个文件加载到内存中。但我的困惑是,即使我从本地磁盘打开一个大文件,我也可以使用skip()API加载我想要的部分文件。我根本不需要加载整个文件。那么MongoDB为什么会说这是优势呢?即使cursor.skip()方法不返回整个文件,它也必须将其加载到内存中。它要求服务器在开始返回结果之前,从集合或索引的开头开始遍历,以获取偏移量或跳过位置(当集合较小时,不会产生很大影响)。 随着偏移量的增加,cu

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

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

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

正式文件:1。 二,

更新:

关于建议的内容:

在选择文件系统和GridFS时,有很多事情需要考虑(基础设施、假定的使用统计数据、文件大小等)

例如:如果你有数百万个文件,GridFS倾向于 更好地处理它,也需要考虑文件系统限制。 如文件/目录的最大数量等

你可能想考虑一下这篇文章:

这解释了为什么您可能希望使用GridFS而不是普通的BinData对象。然而,问题是为什么GridFS比本地磁盘更好。特别是,我不认为这是关于游标跳过的,而是更新了为什么或者在什么条件下GridFS比本地磁盘更好的答案。