GridFS For MongoDB 功能驗證
目錄
- 文件目標
驗證通過GridFS提供的API訪問GridFS,並對GridFS提供的功能進行驗證
- MongoDB:GridFS底層依然是MongoDB儲存,因此需要先安裝好MongoDB資料庫,MongoDB資料庫可以從官網下載,目前最新版本是V3.4.2
下載地址:https://www.mongodb.com/download-center
- Java驅動包:目前最新版本也是3.4.2,可從Maven中央倉庫下載:mongo-java-driver-3.4.2.jar
- MongoDB的windows版本,不支援win32平臺;
- 安裝包選擇了包含SSL的版本:
mongodb-win32-x86_64-2008plus-ssl-3.4.2-signed.msi
- 提供msi格式,雙擊直接安裝即可;
- 這裡安裝目錄為:D:\Program Files\MongoDB。安裝後如下圖所示:
- 建立一個目錄,作為資料儲存目錄:D:\Program Files\MongoDB\Server\dbData
- 開啟命令列,切換到bin目錄下,執行命令,啟動MongoDB;
mongod --dbpath "D:\Program Files\MongoDB\Server\dbData"
- 開啟另外命令列,切換到bin目錄下,輸入“mongo“,啟動shell程式
- 輸入命令“use udetest”切換到udetest資料庫(此時並沒有真正建立)
- 新增一條記錄:db.udetest.insert({"name": "udetest"}),資料庫建立成功:
Mongodb預設啟動是不帶認證,也沒有賬號,只要能連線上服務就可以對資料庫進行各種操作,為了保證資料庫安全,需要新增使用者,並開啟認證
- 執行命令,建立使用者
db.createUser({ user:"udetest",pwd: "udetest", roles: [ "readWrite", "dbAdmin" ] })
上面的命令執行後,在資料庫udetest上,建立一個使用者(使用者名稱udetest,密碼udetest),這個使用者用於讀寫和管理許可權。
- 在MongoDB的命令列視窗,執行Ctrl + C,停止MongoDB;
- 啟動MongoDB,新增auth引數,開啟認證:
mongod --dbpath "D:\Program Files\MongoDB\Server\dbData" --auth
這樣就必須通過使用者名稱和密碼認證,才能連線到資料庫了
- MongoDB的linux版本,不支援win32平臺;
- 由於驗證時的作業系統SSL版本過低,也無法通過聯網方式更新,故選擇了不包含SSL的版本,安裝包是.tgz格式:
mongodb-linux-x86_64-3.4.2.tgz
- 將壓縮包拷貝到心痛目錄,執行命令解壓:
tar –zxvf ./ mongodb-linux-x86_64-3.4.2.tgz
- 執行chmod命令授權
chmod a+x ./mongodb-linux-x86_64-3.4.2/ -R
- 建立一個目錄,作為資料儲存目錄:dbData
- 開啟命令列,切換到bin目錄下,執行命令,啟動MongoDB;
./mongod --dbpath /home/ude/GridFS/dbData/
- 開啟另外命令列,切換到bin目錄下,輸入“mongo“,啟動shell程式
- 輸入命令“use udetest”切換到udetest資料庫(此時並沒有真正建立)
- 新增一條記錄:db.udetest.insert({“name”:“udetest”}),資料庫建立成功:
Mongodb預設啟動是不帶認證,也沒有賬號,只要能連線上服務就可以對資料庫進行各種操作,為了保證資料庫安全,需要新增使用者,並開啟認證
- 執行命令,建立使用者
db.createUser(
{
user: "udetest",
pwd: "udetest",
roles: [ "readWrite", "dbAdmin" ]
}
)
上面的命令執行後,在資料庫udetest上,建立一個使用者(使用者名稱udetest,密碼udetest),這個使用者用於讀寫和管理許可權。
- 在MongoDB的命令列視窗,執行Ctrl + C,停止MongoDB;
- 啟動MongoDB,新增auth引數,開啟認證:
./mongod --dbpath /home/ude/GridFS/dbData/ --auth
這樣就必須通過使用者名稱和密碼認證,才能連線到資料庫了
- GridFS介面功能驗證
由於我們已經開啟了MongoDB的認證,因此在連線GridFS時,必須提供認證資訊,如下圖所示:
-
- 向GridFS新增資料
關鍵程式碼如下圖所示:
- 新增資料時,需要先構造查詢條件查詢;
- 查詢不存在,則建立一個檔案,支援的型別包括byte[],InputStream,以及File物件;
- 呼叫save方法,儲存檔案;
- 支援獲取儲存後文件的MD5,可以與儲存前檔案MD5做對比
- 從GridFS讀取檔案
關鍵程式碼如下圖所示:
- 獲取資料時,需要先構造查詢條件查詢;
- 查詢存在,通過writeTo方法,將資料寫入到檔案;
- writeTo方法,支援將資料寫入到流中
關鍵程式碼如下圖所示:
- 通過檔名稱查詢,然後刪除檔案
1、從公開的GridFS介面看,沒有直接提供斷點續傳功能
2、GridFS底層是MongoDB儲存,也採用了多塊儲存的方式,因此可以通過擴充套件驅動的方式,支援斷點續傳:需要進一步驗證後,才能估計工作量。
由於GridFS底層採用MongoDB儲存,因此GridFS的安全控制是可以通過MongoDB實現的。具體請參考連線GridFS(安全控制)