- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
MongoDB gridfs 说最大的优势是将大文件拆分成 block ,如果您只想查看文件的一部分,则不必将整个文件加载到内存中。但我的困惑是,即使我从本地磁盘打开一个大文件,我也只能使用 skip() API 来加载我想要的文件的一部分。我根本不需要加载整个文件。那么 MongoDB 怎么会说这是优势呢?
最佳答案
即使 cursor.skip() 方法不返回整个文件,它也必须将其加载到内存中。它要求服务器从集合或索引的开头开始返回结果之前获取偏移或跳过位置(当集合较小时影响不大)。随着偏移量的增加,cursor.skip() 将变得更慢并且占用更多 CPU。对于更大的集合,cursor.skip() 可能会受 IO 限制。
但是,GridFS 不是将文件存储在单个文档中,而是将文件分成多个部分或 block ,并将每个 block 存储为一个单独的文档。因此,允许用户从文件的任意部分访问信息,例如“跳”到文件的中间(使用 id 或文件名)而不需要 CPU 密集型。
更新:
关于什么Peter Brittain建议:
在文件系统和 GridFS 之间进行选择时,需要考虑很多事情(基础设施、假定的使用统计信息、文件大小等)。
例如:如果你有数百万个文件,GridFS 倾向于处理得更好,你还需要考虑文件系统的限制比如文件/目录的最大数量等。
您可能需要考虑阅读这篇文章: Why use GridFS over ordinary Filesystem Storage?
关于mongodb - 对MongoDB gridfs的优势感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39190341/
我正在尝试学习Rust。我正在阅读一本书online,该书实现了unix程序cat。现在,我试图读取作为像cargo run file1.txt file2.txt这样的参数传递的文件的内容,但是程序
我在 GHC 8.0.1 中遇到了一个带有种类索引 (?) GADT 的奇怪情况,其中在类型与种类签名中引入 foralls 会产生不同的类型检查行为。 考虑以下数据类型: {-# LANGUAGE
我正在使用 Perl 5.10 开发应用程序,HTML::Mason和 Apache 2.2。这是我第一次在大型项目中使用 Perl 5.10。我每隔一段时间就会出现奇怪的行为。应用程序因一个非常奇怪
我正在尝试将文件上传到aws中的rust中,因为我使用的是 rusoto_s3 的s3 rust客户端,当这些部分从单个线程发送时,我设法使分段上传代码正常工作不是我想要的,我想上传大文件,并且希望能
我是一名优秀的程序员,十分优秀!