mongoDB(4)——mongoDB數據庫的結構及GridFS存儲機制

mongodb安裝文件:https://pan.baidu.com/s/1i50wR4p正則表達式

一)mongodb結構:mongodb

Collections:在mongoDB中叫作集合,是文檔的集合。它是無模式的,能夠存儲各類各樣的文檔。數據庫

       和關係型數據庫中的表相比,關係數據庫的每一張表就是一個關係模型的映射,每張表的字段就是對應實體的屬性和主外鍵的集合,每一個字段須要提早定義。數組

       而集合中能夠保存毫無關係的數據,並且具體要保存什麼不須要提早定義。服務器

  Document:文檔是mongoDB保存數據的基本單元。數據的存儲結構爲BSON格式,也就是TextView中顯示的文本。.net

       保存的數據類型能夠爲:null、boolean、String、object、32位整數、64位整數、64位浮點數、日期、正則表達式、js代碼、二進制數據、數組、內嵌文檔、最大值、最小值、未定義類型。視頻

 GridFS:因爲BSON對象有大小限制,不適合存儲大型文件,GridFS文件系統爲大型文件提供了存儲方案(其存儲原理稍後再講)。fs中保存的是圖片、視頻等大文件。對象

二)GridFS存儲機制:  blog

 MongoDB的文檔以BSON格式存儲,支持二進制數據類型,因此,能夠把文件的二進制格式的數據直接保存到MongoDB的文檔中,可是每一個文檔的長度是有限制的,而咱們通常上傳的圖片、視頻等文件又比較大。針對這種狀況,mongoDB提供了一種處理大文件的規範——GridFS。排序

    1、實現原理:

     將要存儲的文件分紅若干塊兒,每一塊做爲一個單獨的文檔來存儲,每塊默認大小爲256k。用兩個集合來存儲一個文件:fs.files與fs.chunks。

      fs.files存放文件信息

      

     _id:惟一標識   length:文件總長度    chunksize:每塊兒的大小,默認爲256k      uploadDate:時間戳    md5:文件內容的md5校驗和,值由服務器端生成,用於計算上傳塊的md5校驗和,用戶能夠校驗md5的值確保文件正確上傳。 contentType:文件類型    還能夠添加其餘鍵來標識這個文件,例如,能夠是上傳者的信息。

      fs.chunks:存放文件的數據

      

       _id:惟一標識    files_id:文件集合中的_id    n:文件的第幾個塊兒   data:文件的二進制數據

 

      2、保存文件的流程

            若是文件大於chunksize,則把文件分割成多個chunk,再把這些chunk保存到fs.chunks中,最後再把文件信息存入到fs.files中。

     3、讀取文件的流程

           先據查詢的條件,在fs.files中找到對應的文檔,獲得「_id」的值,再據這個值到fs.chunks中查找全部「files_id」爲「_id」的chunk,並按「n」排序,最後依次讀取chunk中「data」對象的內容,還原成原來的文件。

     4、注意:

           GridFS在上傳文件過程當中是先把文件數據保存到fs.chunks,最後再把文件信息保存到fs.files中,因此若是在上傳文件過程當中失敗,有可能在fs.chunks中出現垃圾數據。這些垃圾數據能夠按期清理掉。

相關文章
相關標籤/搜索