MongoDB 使用一個名為「BSON」的序列化格式來儲存文件。它結合了「Binary」和「JSON」(JavaScript Object Notation)這兩個詞語,你可以將 BSON 視為 JSON 文件的二進位表示。可惜的是,BSON 序列化格式的大小限制為 16 MB。雖然這空間限制對大多數資料類型都足夠的,但對於一些大型的二進位格式,MongoDB 使用另一個名為 GridFS 的單獨規格來儲存和擷取檔案。
在今天的文章中,我們將看看 Navicat for MongoDB 是如何使用 GridFS 規格來儲存大型檔案。
關於 GridFS
為了不受 16 MB 的大小限制,GridFS 將檔案分成多個部分或區塊,並將每個區塊儲存為單獨的文件。預設情況下,GridFS 使用的預設區塊大小只有 255 KB。檔案會被分成 255 KB 的區塊,除了最後一個區塊,這是剩下的任何位元組。同樣,小於區塊大小的檔案只有一個最後的區塊,只使用所需的空間和一個位元的額外的中繼資料。
在背後,GridFS 實際上使用兩個集合來儲存檔案:一個集合用於儲存檔案區塊,另一個用於儲存檔案中繼資料。
GridFS 不僅可用於儲存大小超過 16 MB 的檔案,還可用於儲存你想存取的任何檔案,而無需將整個檔案載入記憶體中。
在 Navicat for MongoDB 儲存大型檔案
Navicat 支援 GridFS 儲存桶,並為此提供了一個實用的工具。按一下主工具列上的大 GridFS 按鈕將顯示一個新索引標籤,其中包含用於處理檔案的多個命令。如果你之前未曾加入任何檔案就只會啟用「新增儲存桶」按鈕:
假設你有一個大型的影片檔案,並希望將它放入電影資料庫中。你就需要一個儲存桶來加入檔案,為此按一下工具列上的「新增儲存桶」按鈕,然後在「GridFS 儲存桶名稱」對話方塊中輸入儲存桶的名稱。
你可以按一下「上載檔案」來加入檔案:
「檔案瀏覽」對話方塊將會開啟,讓你可以巡覽至你的檔案。按一下「檔案瀏覽」對話方塊中的「上載」按鈕開始上載。進度將顯示在螢幕底部的進度列中:
完成上載後,你將能夠檢視檔案的詳細資料:
以下是檔案的詳細資料對應於 GridFS 檔案集合欄位:
{"_id" : <ObjectId>,
"length" : <num>,
"chunkSize" : <num>,
"uploadDate" : <timestamp>,
"md5" : <hash>,
"filename" : <string>,
"contentType" : <string>,
"aliases" : <string array>,
"metadata" : <any>,
}
Navicat 也可以處理更小的檔案。它特別擅長處理圖像,並具有預覽功能,因此你可以檢視圖像而無需使用其他工具開啟圖像:
擷取檔案
將檔案上載到資料庫後,你無需在檔案系統上保留複本。在任何時候,只需按一下「下載」按鈕並選取要儲存檔案的資料夾就能下載它:
這樣在 Navicat for MongoDB 中探索 GridFS 儲存桶就結束了!