GridFS是一個雖然不是MongoDB的特性,但是卻是MongoDB獨有的一個功能,用于存儲一些過大的文件。在常規單元格數據庫中,一個檔案是存儲在數據庫中單個實體,在MongoDB中,一個文檔只可能占用 BSON 文件頭和有限的大小。當你需要存儲一個過大的單元格文件時,例如一些音頻或視頻文件,使用GridFS是一個首選方式。
一些準備工具
由于我們將會使用PHP和MongoDB驅動程序來處理文件上傳和下載,所以在開展這里之前,您需要確切配置適當的環境,接著你需要做的是下面的幾種基礎流程:
1. 開啟MongoDB服務及其mongo客戶端
2. 確認MongoDB這個PHP驅動程序已經安裝
3. 確認PHP的APC擴展模塊已經安裝
基本運行流程
我們用上傳文件來舉例說明一下,首先你需要有上傳檔案的FORM,在HTML文件中,我們可以動手寫下面的內容:在PHP文件中,我們可以使用來處理當前的上傳請求:uploadFromStream($documentName,STDIN,$maxSize,['contentType' =>'text/xml']);
if ( !$id ) {
die('Upload Failed');
}
die('Document Uploaded Successfully with ID:' . $id);
?>代碼解釋
代碼中的第二個構造 functions 的第一行是用于驗證MAX_FILE_SIZE的此法是否真實的存在。上傳檔案后,我們使用MongoDB的GridFS驅動程序,從而保存這個文檔。GridFS要求您給這個文檔提供一個名稱,它會使用該名稱來生產 BSON 格式本身的文件名。我們提供了 $documentName 變量來提供這個文檔名稱。接下來,我們從該變量中提取 "MAX_FILE_SIZE" 數值,這對于告訴GridFS system 檔案的大小非常重要。
其中,我們使用的是uploadFromStream函數,將接受我們上傳的檔案,存儲在文本流中,并且完成對其的上傳。同時,我們在這個代碼段的最后,輸出上傳文檔的ID來證明該文檔已經成功上傳。
代碼中可以看到,并沒有人工操作MongoDB文檔數據庫的過程。這個過程已經被MongoDB的GridFS獨立組件和MongoDB的PHP驅動程序完全隔離開來。上傳和下載實際操作的是文件里面的 BSON 等二進制數據,而不是我們傳遞給組件的文檔格局。
總結
上述的數據上傳方式僅僅是MongoDB GridFS的一個功能之一。它作為可橫向擴展的數據存儲器,由于處理數據體積較大的應用場景而備受推崇。不過我們要記得,雖然在某些場景下,GridFS非常優秀,但并不是萬能的方案,選擇是否使用GridFS要根據具體的應用場景進行判斷,而不是盲目的認為它僅僅是用于解決單元格數據體積過大的問題。
網站導航
- zblogPHP模板zbpkf
- zblog免費模板zblogfree
- zblog模板學習zblogxuexi
- zblogPHP仿站zbpfang