2012-04-30 94 views
4

我目前正在研究使用MongoDB來存儲電子郵件數據。由於電子郵件可能變得相當大(比如10兆)。在MongoDB中配置GridFS塊大小

我相信GridFS很適合這個。令我感到有點難堪的是,這些文檔對於gridFS中的分片大小並不十分清楚。 據我所知,gridFS中的分片大小不等於正常的分片大小,但默認爲256kb。這聽起來像是對空間的大量浪費,因爲許多電子郵件的大小不會超過50kb。

有沒有辦法在GridFS中配置文件的分片大小,使其更適合存儲郵件?

乾杯, 馬蒂亞斯

回答

3

您不必擔心大小。即使大塊大小是256kb,50kb的文檔(包含您的電子郵件)仍然只會使用50kb(+小開銷)。

chunksize在驅動程序中配置。例如與PHP驅動,你會怎麼做:

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

而且在Java驅動程序,你會打電話setChunkSizeGridFSInputFile

但一般來說,你不應該擔心chunkSize。

+1

「即使塊大小爲256kb,50kb的文件(包含您的電子郵件),仍然只會使用50kb(+小開銷)。」 ...這與我的經驗是一致的,但我沒有看到任何官方記錄。它在[郵件列表主題](https://groups.google.com/forum/?fromgroups#!topic/mongodb-user/hrRlhOwGWWk%5B1-25%5D)中提到。另外[Robert Stam](https://groups.google.com/forum/?fromgroups#!topic/mongodb-user/H6gDl69o_o0%5B1-25%5D)寫道:「GridFS文件的最後一塊只有大塊因爲它需要,所以 將不會有太多的開銷 –

+3

有更大的塊大小,比如說,視頻文件是好事嗎?對我來說,文件大小可能高達200mb。這將創造很多每個媒體文件的塊。這會影響性能? – Jayz

+0

@Jayz MongoDB節點手冊有更大塊大小的示例:[高級GridFS或如何不用內存](http://mongodb.github.io/node-mongodb -native/api-articles/nodekoarticle2.html#advanced-gridfs-or-how-to-run-out-of-memory) – pinepain