MongoDB(八)Mongodb——GridFS儲存

來源:互聯網
上載者:User

標籤:mongodb gridfs

GridFS簡介

     mongoDB的文檔以BSON格式儲存,支援二進位的資料類型,當我們把二進位格式的資料直接儲存到mongoDB的文檔中。但是當檔案太大時,例片和視頻等檔案,每個文檔的長度是有限的,於是mongoDb會提供了一種處理大檔案的規範--GridFS。

GridFS實現原理

     在GridFS資料庫中,預設使用fs.chunks 和fs.files來隱藏檔,其中fs.files集合存放檔案的資訊,fs.chunks存放檔案的資料,一個fs.files集合中的一條記錄內容如下,即一個file資訊如下所示:

<pre name="code" class="javascript">{ "_id" : ObjectId("4f4608844f9b855c6c35e298"),   //唯一id,可以是使用者自訂的類型"filename" : "CPU.txt",  //檔案名稱"length" : 778,  //檔案長度"chunkSize" : 262144,  //chunk的大小"uploadDate" : ISODate("2012-02-23T09:36:04.593Z"), //上傳時間"md5" : "e2c789b036cfb3b848ae39a24e795ca6",  //檔案的md5值"contentType" : "text/plain"  //檔案的MIME類型"meta" : null //檔案的其它資訊,預設是沒有”meta”這個key,使用者可以自己定義為任意BSON對象}


     對應fs.chunks中的chunk(中文意思資料區塊),如下所示:

{ "_id" : ObjectId("4f4608844f9b855c6c35e299"),  //chunk的id"files_id" : ObjectId("4f4608844f9b855c6c35e298"), //檔案的id,對應fs.files中的對象,相當於fs.files集合的外鍵"n" : 0,  //檔案的第幾個chunk塊,如果檔案大於chunksize的話,會被分割成多個chunk塊"data" : BinData(0,"QGV...") //檔案的位元據,這裡省略了具體內容}

     預設大小是256k,所以把檔案存入到GridFS過程中,如果檔案大於chunksize,則把檔案分割多個chunk,再把這些chunk儲存在fs.chunks中,最後再把檔案資訊存入fs.files中。

在讀取檔案的時候,先根據查詢的條件,在fs.files中找到一個合適的記錄,得到“_id”的值,再根據這個值到fs.funks中尋找所有files_id 為 _id 的chunk,並按照“n”排序,最後依次讀取chunk中的“data”對象的內容,還原成原來的檔案。


註:

     1、GridFS不自動處理md5相同的檔案,對於md5相同的檔案,如果想在GridFS中只有一個儲存,要使用者處理,md5值的計算由用戶端完成。

     2、因為GridFS在上傳檔案過程中是先把檔案資料儲存到fs.chunks,最後再把檔案的資訊儲存到fs.files中,所以如果上傳檔案過程中失敗,有可能在fs.chunks中出現垃圾資料,這些垃圾資料,可以定期清理掉。




MongoDB(八)Mongodb——GridFS儲存

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.