MongoDB的學習筆記(四)--MongoDB中的GridFS

來源:互聯網
上載者:User

GridFS是一種將大型檔案儲存體在MongoDB的檔案規格:
MongoDB資料庫以支援BSON格式儲存二進位對象,但是MongoDB中的BSON對象最大不能超過4MB。
GridFs規範提供了一種透明的機制,可以將一個大檔案分割成多個較小的文檔。為實現這點,該規範指定了一個將檔案分塊的標準。每個檔案都將在檔案集合對象中儲存一個中繼資料對象,一個或多個塊對象可被組合儲存在一個塊集合中。
GridFS檔案儲存體原理:
驅動首先會在當前資料庫建立兩個集合:fs.files和fs.chunks,前者記錄了檔案名稱,檔案建立時間,檔案類型等基本資料;後者分Block Storage了檔案的位元據(並支援加密這些位元據),分塊的意思是把檔案按照指定大小分割,然後存入多個文檔中,“fs.files”怎麼知道它對應的檔案在哪?
在“fs.chunks”中有個”files_id”鍵對應“fs.files”的“_id”,“fs.chunks”還有一個鍵(int型)“n”,它表明這些塊的先後順序,這兩個集合中的“fs”也是可以通過參數自訂的。

一個fs.files集合中的一條記錄內容如下,即一個file的資訊如下:

對應的fs.chunks中的chunk如下:

預設chunk的大小是256K:
寫入:
如果檔案大於chunksize,則把檔案分割成多個chunk,再把這些chunk儲存到fs.chunks中,最後再把檔案資訊存入到fs.files中。
讀取:
先據查詢的條件,在fs.files中找到一個合適的記錄,得到“_id”的值,再據這個值到fs.chunks中尋找所有“files_id”為“_id”的chunk,並按“n”排序,最後依次讀取chunk中“data”對象的內容,還原成原來的檔案。

Mongo內建一個實現mongofiles,基本操作如下:
1. 列出所有檔案:

2. 上傳一個檔案:

3. 下載一個檔案:

4. 尋找檔案:

參數說明:
-d 指定資料庫,預設是fs
-u-p 使用者名稱,密碼
-h 指定主機
-port 指定主機連接埠
-c 指定集合,預設是fs
-t 指定檔案的MIME類型,預設會忽略
-l 指定路徑

MongoDB檔案存取操作:
http://www.cnblogs.com/lipan/archive/2011/03/21/1989409.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.