gridfs是mongodb資料庫之上的乙個簡單檔案系統抽象。如果你熟悉amazon s3的話,那麼gridfs與之相似。為什麼像mongodb這樣的nosql資料庫會提供這樣的乙個檔案層抽象呢?
一、使用gridfs的理由
理由如下:
1)儲存使用者產生的檔案內容
2)訪問檔案內容的分割槽
3)在mongodb中儲存16mb以上的檔案
4)克服檔案系統的限制
二、深入gridfs
gridfs使用了兩種集合collection來儲存資料
> show collections;
fs.chunks
fs.files
system.indexes
>fs.files集合包含了檔案的元資料,而fs.chunks集合則儲存實際的以256kb尺寸進行分割的檔案塊。如果你有分片的集合,那麼檔案塊會分布到多台伺服器上,或許能獲得比檔案系統更好的效能。
> db.fs.files.findone(); >mongodb還在files_id和檔案塊數中建立了復合索引,以幫助快速訪問這些檔案塊
> db.fs.chunks.getindexes(); [ , "ns" : "files.fs.chunks", "name" : "_id_" }, , "ns" : "files.fs.chunks", "name" : "files_id_1_n_1" } ] >
三、gridfs例項mongodb有乙個內建的工具mongofiles,可以幫助練習實際使用gridfs的場景。請參閱相關的driver文件,檢視如何使用gridfs。
put#mongofiles -h -u -p --db files put /conn.log
connected to: 127.0.0.1
added file:
done!
get#mongofiles -h -u -p --db files get /conn.log
connected to: 127.0.0.1
done write to: ./conn.log
list
# mongofiles -h -u -p list
connected to: 127.0.0.1
/conn.log 1644981
delete
[root@ip-10-198-25-43 tmp]# mongofiles -h -u -p --db files delete /conn.log
connected to: 127.0.0.1
done!
四、gridfs的模組
如果你想把儲存在mongodb的gridfs的檔案直接服務於web伺服器或檔案系統,那麼你可以使用下面的gridfs外掛程式:
五、gridfs的侷限性
gridfs也並非十全十美的,它也有一些侷限性:
PHP操作MongoDB GridFS 儲存檔案
初始化gridfs conn new mongo 連線mongodb db conn photos 選擇資料庫 grid db getgridfs 取得gridfs物件 gridfs有三種方式儲存檔案 第一種直接儲存檔案 id grid storefile logo.png 第二種儲存檔案二進位製流...
最佳實踐 Flutter 最佳實踐
最佳實踐是乙個領域可以接受的專業標準,對於任何程式語言來說,提高 質量 可讀性 可維護性和健壯性都非常重要。讓我們探索一些設計和開發flutter應用程式的最佳實踐。class enum typedef和extension應採用駝峰命名uppercamelcase規則。class mainscree...
XCode最佳實踐之最佳資料型別
與其它orm框架相比,xcode擁有最強的多資料庫正向反向工程,暫時還沒有發現能在這點上超於xcode的,哈哈!但是,xcode的多資料庫反向工程,也是有代價的,不同資料庫的資料型別相差十萬八千里,我們不可能完全支援。所以,我們只做了常見的一些資料型別支援,但是這些已經足以滿足99 的要求。最佳資料...