MongoDB(四)——GridFS
GridFS
MongoDB的一個重要子模塊,可基于MongoDB來持久存儲文件,并且支持分布式存儲和讀取。
持久存儲:對應瞬時數據如內存,指保存到數據庫中,能持久保存。
分布式存儲:將數據分散地存儲于多個位置。
存在的意義
MongoDB采用BSON格式存儲數據,對數據的大小限制為16M,但是在實際的系統開發中,上傳的圖片或文件可能尺寸會很大,此時可以使用MongoDB中的GridFS解決,通常用來處理大文件的存儲。
存儲原理
GridFS使用兩個集合來存儲文件:
- fs.chunks:存儲文件的二進制數據(一個文件有一到多條數據)
- fs.files:存儲文件的元數據(一個文件只有一條數據)
元數據:用來描述數據的數據,如數據大小、創建時間、文件名、格式類型等。
存儲數據
當一個文件存儲到GridFS時,如果文件大于chunksize(一個chunk的大小,256KB),會將文件按照chunk的大小分割成多個chunk塊,最終將chunk塊的信息存儲在fs.chunks集合的多個文檔中,然后將文件信息存儲在fs.files集合的唯一一份文檔中。
讀取文件
先根據查詢條件在fs.files集合中找到對應的文檔,得到_id字段,在查詢對應fs.chunks集合中所有files_id和_id相同的文檔,最后根據n字段的順序讀取chunk的data字段二進制數據,還原文件。
使用GridFS
mongofiles是GridFS的實用工具,用于管理GridFS文件,在MongoDB安裝目錄下的bin目錄中,可在命令行直接使用。
上傳文件mongogiles put 文件名
生成的fs.files:
生成的fs.chunks:(我上傳的file.mov共750KB,分成了3個chunk)
列出文件mongofiles list
下載文件mongofiles get 文件名
刪除文件mongofiles delete 文件名
- GridFS詳述
- Node.js中使用GridFS
總結
以上是生活随笔為你收集整理的MongoDB(四)——GridFS的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编程热情的维系
- 下一篇: ubuntu 18.04取消自动锁屏以及