讀古今文學網 > MongoDB實戰 > 附錄C 二進制數據與GridFS >

附錄C 二進制數據與GridFS

在存儲圖片、縮略圖、音頻和其他二進制文件時,很多應用程序都只依賴文件系統。雖然文件系統提供了對文件的快速訪問能力,但也會帶來組織混亂問題。考慮到大多數文件都限制了每個目錄的文件數,如果要保存數以百萬的文件,需要設計一套策略,將文件放入多個目錄裡。另一個難點涉及元數據,因為文件元數據仍然存儲在數據庫裡,所以想對文件及其元數據進行精確備份會極其複雜。

針對某些使用場景,直接將文件保存在數據庫裡更加合理,因為這能簡化文件的組織與備份。在MongoDB中,可以使用BSON二進制類型來保存各種二進制數據。這種數據類型與RDBMS BLOB(binary large object)類型相對應,是MongoDB提供的兩種二進制對像存儲方式的基礎。

第一種方式,每個文件一個文檔,適用於較小的二進制對象。如果要對大量縮略圖或MD5進行分類保存,那麼單一文檔二進制存儲會更簡單一些。另一方面,你可能希望保存大圖片和音頻文件。這時GridFS會是更好的選擇,它是MongoDB用於存儲任意大小二進制對象的API。下文中你會看到這兩種存儲技術的複雜示例。