在MongoDB中配置GridFS块大小

4
我正在研究使用MongoDB存储电子邮件数据。由于邮件可能会变得相当大(比如10兆),我认为GridFS是一个很好的选择。但让我有些担心的是,文档中没有明确说明GridFS中的分片大小。据我所知,在GridFS中,分片大小不等同于普通的分片大小,而是默认为256kb。这对我来说听起来像是一种浪费空间的做法,因为很多邮件的大小都不超过50kb。
有没有一种配置GridFS文件分片大小的方法,使其更适合存储邮件呢?
谢谢,马蒂亚斯
1个回答

4

您不必担心文件大小的问题。即使块大小为256kb,一个包含50kb电子邮件的文档仍然只使用50kb(+少量开销)。

块大小是在驱动程序中配置的。例如,在PHP驱动程序中,您可以执行以下操作:

$gridFs->storeFile( 'filename.txt', array( 'chunkSize' => 50 * 1024 ) );

在Java驱动程序中,您需要调用GridFSInputFile上的setChunkSize。但是通常情况下,您不必担心chunkSize。

1
即使块大小为256kb,一个包含50kb电子邮件的文档仍将只使用50kb(+少量开销)。这与我的经验一致,但我没有在任何官方文件中看到过这个记录。它在邮件列表线程中提到。此外,Robert Stam写道,“GridFS文件的最后一个块只有必要时才会尽可能大,因此不会有太多开销。” - David J.
4
对于视频文件来说,增加块大小是否有好处?对我而言,文件大小可能高达200MB。这将为每个媒体文件创建很多块。这会影响性能吗? - Jayz
1
@Jayz MongoDB Node.js手册中有更大块大小的示例:高级GridFS或如何避免内存耗尽 - pinepain
我正在存储大小为4-5kb或1-2kb的图像。那么我应该减小块的大小吗?这样会提高性能吗? - jeevs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接