欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MongoDB系列教程(八):GridFS存儲(chǔ)詳解

 更新時(shí)間:2015年05月07日 11:38:13   投稿:junjie  
這篇文章主要介紹了MongoDB系列教程(八):GridFS存儲(chǔ)詳解,本文講解了什么是GridFS、GridFS的實(shí)現(xiàn)原理等內(nèi)容,需要的朋友可以參考下

GridFS簡(jiǎn)介

mongoDB的文檔以BSON格式存儲(chǔ),支持二進(jìn)制的數(shù)據(jù)類型,當(dāng)我們把二進(jìn)制格式的數(shù)據(jù)直接保存到mongoDB的文檔中。但是當(dāng)文件太大時(shí),例如圖片和視頻等文件,每個(gè)文檔的長(zhǎng)度是有限的,于是mongoDb會(huì)提供了一種處理大文件的規(guī)范--GridFS。

GridFS實(shí)現(xiàn)原理

在GridFS數(shù)據(jù)庫(kù)中,默認(rèn)使用fs.chunks 和fs.files來(lái)存儲(chǔ)文件,其中fs.files集合存放文件的信息,fs.chunks存放文件的數(shù)據(jù),一個(gè)fs.files集合中的一條記錄內(nèi)容如下,即一個(gè)file信息如下所示:

復(fù)制代碼 代碼如下:

{  
"_id" : ObjectId("4f4608844f9b855c6c35e298"),       //唯一id,可以是用戶自定義的類型 
"filename" : "CPU.txt",      //文件名 
"length" : 778,      //文件長(zhǎng)度 
"chunkSize" : 262144,    //chunk的大小 
"uploadDate" : ISODate("2012-02-23T09:36:04.593Z"), //上傳時(shí)間 
"md5" : "e2c789b036cfb3b848ae39a24e795ca6",      //文件的md5值 
"contentType" : "text/plain"     //文件的MIME類型 
"meta" : null    //文件的其它信息,默認(rèn)是沒(méi)有”meta”這個(gè)key,用戶可以自己定義為任意BSON對(duì)象 

對(duì)應(yīng)fs.chunks中的chunk(中文意思數(shù)據(jù)塊),如下所示:

復(fù)制代碼 代碼如下:

{  
"_id" : ObjectId("4f4608844f9b855c6c35e299"),    //chunk的id 
"files_id" : ObjectId("4f4608844f9b855c6c35e298"),  //文件的id,對(duì)應(yīng)fs.files中的對(duì)象,相當(dāng)于fs.files集合的外鍵 
"n" : 0,     //文件的第幾個(gè)chunk塊,如果文件大于chunksize的話,會(huì)被分割成多個(gè)chunk塊 
"data" : BinData(0,"QGV...")     //文件的二進(jìn)制數(shù)據(jù),這里省略了具體內(nèi)容 

默認(rèn)大小是256k,所以把文件存入到GridFS過(guò)程中,如果文件大于chunksize,則把文件分割多個(gè)chunk,再把這些chunk保存在fs.chunks中,最后再把文件信息存入fs.files中。

在讀取文件的時(shí)候,先根據(jù)查詢的條件,在fs.files中找到一個(gè)合適的記錄,得到“_id”的值,再根據(jù)這個(gè)值到fs.funks中查找所有files_id 為 _id 的chunk,并按照“n”排序,最后依次讀取chunk中的“data”對(duì)象的內(nèi)容,還原成原來(lái)的文件。

注:
     1、GridFS不自動(dòng)處理md5相同的文件,對(duì)于md5相同的文件,如果想在GridFS中只有一個(gè)存儲(chǔ),要用戶處理,md5值的計(jì)算由客戶端完成。
     2、因?yàn)镚ridFS在上傳文件過(guò)程中是先把文件數(shù)據(jù)保存到fs.chunks,最后再把文件的信息保存到fs.files中,所以如果上傳文件過(guò)程中失敗,有可能在fs.chunks中出現(xiàn)垃圾數(shù)據(jù),這些垃圾數(shù)據(jù),可以定期清理掉。

相關(guān)文章

  • MongoDB4.2.5安裝方法操作步驟

    MongoDB4.2.5安裝方法操作步驟

    這篇文章主要介紹了MongoDB4.2.5安裝方法操作步驟,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • MongoDB性能篇之創(chuàng)建索引,組合索引,唯一索引,刪除索引和explain執(zhí)行計(jì)劃

    MongoDB性能篇之創(chuàng)建索引,組合索引,唯一索引,刪除索引和explain執(zhí)行計(jì)劃

    這篇文章主要介紹了MongoDB性能篇之創(chuàng)建索引,組合索引,唯一索引,刪除索引和explain執(zhí)行計(jì)劃的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • MongoDB日志文件過(guò)大的解決方法

    MongoDB日志文件過(guò)大的解決方法

    這篇文章主要介紹了MongoDB日志文件過(guò)大的解決方法,本文給出了一種不需要重啟MongoDB服務(wù)的方法重新開(kāi)啟一個(gè)新日志文件,需要的朋友可以參考下
    2014-10-10
  • MongoDB的PHP驅(qū)動(dòng)方法與技巧

    MongoDB的PHP驅(qū)動(dòng)方法與技巧

    這篇文章主要介紹了MongoDB的PHP驅(qū)動(dòng)方法與技巧,需要的朋友可以參考下
    2014-07-07
  • MongoDB 使用Skip和limit分頁(yè)

    MongoDB 使用Skip和limit分頁(yè)

    本文章先來(lái)給大家簡(jiǎn)單介紹關(guān)于MongoDB 數(shù)據(jù)分頁(yè)和排序 limit,skip用戶的一些基礎(chǔ)語(yǔ)句,然后用一個(gè)實(shí)例詳細(xì)介紹MongoDB 數(shù)據(jù)分頁(yè)和排序?qū)嵗椒ā?/div> 2014-08-08
  • MongoDB的常用命令匯總(Mongo4.2.8)

    MongoDB的常用命令匯總(Mongo4.2.8)

    這篇文章主要介紹了MongoDB的常用命令匯總(Mongo4.2.8),給大家介紹了集合collection相關(guān)、用戶相關(guān)、數(shù)據(jù)庫(kù)相關(guān)內(nèi)容,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • win7平臺(tái)快速安裝、啟動(dòng)mongodb的方法

    win7平臺(tái)快速安裝、啟動(dòng)mongodb的方法

    這篇文章主要介紹了win7平臺(tái)快速安裝、啟動(dòng)mongodb的方法,結(jié)合圖文形式分析了win7平臺(tái)下載、安裝、啟動(dòng)、配置MongoDB數(shù)據(jù)庫(kù)的方法與注意事項(xiàng),需要的朋友可以參考下
    2020-05-05
  • MongoDB db.serverStatus()輸出內(nèi)容中文注釋

    MongoDB db.serverStatus()輸出內(nèi)容中文注釋

    這篇文章主要介紹了MongoDB db.serverStatus()輸出內(nèi)容中文注釋,本文收集了2個(gè)版本的中文注釋來(lái)講解,需要的朋友可以參考下
    2014-08-08
  • 一次線上mongo慢查詢問(wèn)題排查處理記錄

    一次線上mongo慢查詢問(wèn)題排查處理記錄

    這篇文章主要給大家介紹了一次線上mongo慢查詢問(wèn)題排查處理的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • MongoDB 學(xué)習(xí)筆記(一)-MongoDB配置

    MongoDB 學(xué)習(xí)筆記(一)-MongoDB配置

    MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。接下來(lái)通過(guò)本文給大家介紹MongoDB 學(xué)習(xí)筆記(一)MongoDB配置的相關(guān)資料,需要的朋友可以參考下
    2016-05-05

最新評(píng)論