linux删除grid数据文件,MongoDB进阶系列(13)——GridFS大文件的添加、获取、查看、删除...
GridFS是一種在MongoDB中存儲大二進制文件的機制,使用GridFS的原因有以下幾種:
存儲巨大的文件,比如視頻、高清圖片等。
利用GridFS可以簡化需求。
GridFS會直接利用已經(jīng)建立的復(fù)制或分片機制,故障恢復(fù)和擴展都很容易
GridFS可以避免用戶上傳內(nèi)容的文件系統(tǒng)出現(xiàn)問題。
GridFS不產(chǎn)生磁盤碎片。
GridFS使用兩個表來存儲數(shù)據(jù):
fiiles包含元數(shù)據(jù)對象(如文件的名稱、上傳的時間)
chunks包含其他一些相關(guān)信息的二進制塊
為了使度個GridF命名為一個單一的數(shù)據(jù)庫,文件和塊都有一個前綴,默認情況下,前綴是fs。
所以任何默認的GridFS存儲將包括命名空間fs.files和fs.chunks。(圖片可以命名為ps.files和ps.chunks,視頻可以命名為vs.files和vs.chunks)。
各種第三方語言可以更改其前綴。
本文是oschina的happyBKs的文章,請自己標(biāo)明出處:http://my.oschina.net/u/1156339/blog/388156
使用GridFS mongofiles
mingofiles是從命令行操作GridFS的一種工具
三個命令:put(存儲) get(取得) list(列表)
例如:我們將“testfile”這個文件存儲到庫中,具體做法是 ./mongofiles put testfile
首先,我們嘗試壓縮歸檔一個文件。
[neil@neilhost?~]$?sudo?/usr/local/mongodb/bin/mongofiles?list
[sudo]?password?for?neil:
connected?to:?127.0.0.1
[neil@neilhost?~]$?tar?zcf?mongodbBook.tar.gz?Downloads/MongoDB權(quán)威指南.pdf
[neil@neilhost?~]$?ll?mongodbBook.tar.gz
-rw-rw-r--.?1?neil?neil?203?3月??16?19:10?mongodbBook.tar.gz
下面我們將這個歸檔文件存儲到mongoDB中。默認存放到test數(shù)據(jù)庫中。
[neil@neilhost?~]$?sudo?/usr/local/mongodb/bin/mongofiles?put?./mongodbBook.tar.gz
connected?to:?127.0.0.1
added?file:?{?_id:?ObjectId('5506bc01581b37b38b49fecd'),?filename:?"./mongodbBook.tar.gz",?chunkSize:?261120,?uploadDate:?new?Date(1426504705885),?md5:?"85c0c93f51ebe9c609ffe4f9da71c63e",?length:?203?}
done!
[neil@neilhost?~]$?sudo?/usr/local/mongodb/bin/mongofiles?list
connected?to:?127.0.0.1
./mongodbBook.tar.gz203
[neil@neilhost?~]$
之后,我們進入mongodb客戶端查看test數(shù)據(jù)庫,發(fā)現(xiàn)里面多了兩個集合,一個是fs.files,查看之后發(fā)現(xiàn)里面記錄著上傳文件的以下像信息:文件名稱、上傳時間、md5碼、文件長度、大小等。
fs.chunks查看顯示二進制信息。
[neil@neilhost?~]$?sudo?/usr/local/mongodb/bin/mongo
[sudo]?password?for?neil:
MongoDB?shell?version:?2.6.8
connecting?to:?test
>?show?tables
fs.chunks
fs.files
system.indexes
>
>
>?db.fs.files.find()
{?"_id"?:?ObjectId("5506bc01581b37b38b49fecd"),?"filename"?:?"./mongodbBook.tar.gz",?"chunkSize"?:?261120,?"uploadDate"?:?ISODate("2015-03-16T11:18:25.885Z"),?"md5"?:?"85c0c93f51ebe9c609ffe4f9da71c63e",?"length"?:?203?}
>?db.fs.chunks.find()
{?"_id"?:?ObjectId("5506bc011b359e376ad0011e"),?"files_id"?:?ObjectId("5506bc01581b37b38b49fecd"),?"n"?:?0,?"data"?:?BinData(0,"H4sIADm6BlUAA+3OvwsBcRjH8a+uZOE/kNuYuOO+btetMvkD1CHFnfzISgYDZqWU0d9g4w+x3W1mq7uUkmKgpN6v4Xnq+Tz1PJY7ctpuze7nyq7TdK2Sv5l6u4m/mHnLVbZrN8TntEDR0MKum/Kh30gp9LzUdFkIiwhSwzCFqn3h9lvD/qDWU1Xh1FvtV3vv8j+VmsdEfB+tCuV8iMSDwXF7qXQS5va+MTaV9SmZFpmf/QgAAAAAAAAAAAAAAAAAeHYFpzavuwAoAAA=")?}
>
這個文件不大,所以二進制信息很短。
[neil@neilhost?~]$?du?mongodbBook.tar.gz
4mongodbBook.tar.gz
接下來,我嘗試將mongodbBook.tar.gz的原文件刪除,然后從mongodb中獲取恢復(fù)。
這里用到的是mongofiles get命令。這里注意的是
[neil@neilhost?~]$?sudo?/usr/local/mongodb/bin/mongofiles?list
connected?to:?127.0.0.1
./mongodbBook.tar.gz203
[neil@neilhost?~]$?sudo?/usr/local/mongodb/bin/mongofiles?get?mongodbBook.tar.gz
connected?to:?127.0.0.1
ERROR:?file?not?found
[neil@neilhost?~]$?sudo?/usr/local/mongodb/bin/mongofiles?get?./mongodbBook.tar.gz
connected?to:?127.0.0.1
done?write?to:?./mongodbBook.tar.gz
[neil@neilhost?~]$?ll
總用量?44
drwxr-xr-x.?2?neil?neil?4096?2月??13?18:36?Desktop
drwxr-xr-x.?3?neil?neil?4096?2月??13?21:35?Documents
drwxr-xr-x.?5?neil?neil?4096?3月??15?21:56?Downloads
-rw-r--r--.?1?root?root??203?3月??17?18:27?mongodbBook.tar.gz
drwxr-xr-x.?2?neil?neil?4096?2月??13?18:36?Music
drwxr-xr-x.?3?neil?neil?4096?3月??15?22:50?Pictures
這里需要注意的是,后面get的文件名稱需要指定路徑,這里要加上./,否則會顯示文件不存在。
注意,這個./指的不是linux當(dāng)前的路徑,而是在Mongodb的文件存儲中的路徑。
之后,有put有g(shù)et必有delete。
接下來看看如何刪除MongoDB中的大文件.
[neil@neilhost?~]$?sudo?/usr/local/mongodb/bin/mongofiles?list
[sudo]?password?for?neil:
connected?to:?127.0.0.1
./mongodbBook.tar.gz203
[neil@neilhost?~]$?sudo?/usr/local/mongodb/bin/mongofiles?delete?./mongodbBook.tar.gz
connected?to:?127.0.0.1
done!
[neil@neilhost?~]$?sudo?/usr/local/mongodb/bin/mongofiles?list
connected?to:?127.0.0.1
[neil@neilhost?~]$?sudo?/usr/local/mongodb/bin/mongo
MongoDB?shell?version:?2.6.8
connecting?to:?test
>?db
test
>?show?collections
fs.chunks
fs.files
system.indexes
>?db.fs.files.find()
>
>?db.fs.chunks.find()
>
刪除之后可以看到fs.files中的元數(shù)據(jù)和fs.chunk中的二進制數(shù)據(jù)都沒有了。
總結(jié)
以上是生活随笔為你收集整理的linux删除grid数据文件,MongoDB进阶系列(13)——GridFS大文件的添加、获取、查看、删除...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米电视棒4K版发布:U盘大小的盒子、支
- 下一篇: 平淡无奇的《神秘海域》电影海报