亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

MongoDB的分布式文件存儲系統

2024-07-21 02:53:10
字體:
來源:轉載
供稿:網友

概述

對于MongoDB的存儲基本單元BSON文檔對象,字段值可以是二進制類型,基于此特點,我們可以直接在MongoDB中存儲文件,但是有一個限制,由于MongoDB中單個BSON對象不能大于16MB,故而如果需要存儲更大的文件,就需要GridFS了。

小文件存儲系統與GridFS文件存儲

我們先看下MongoDB存儲小文件系統的例子:

先采用MongoDB的mongofiles執行文件上傳:

D:/MongoDB/Server/3.2/bin>mongofiles.exe list2017-03-06T13:41:03.283+0800 connected to: localhostD:/MongoDB/Server/3.2/bin>mongofiles.exe put E:/deliveryTask.doc2017-03-06T13:41:23.535+0800 connected to: localhostadded file: E:/deliveryTask.docD:/MongoDB/Server/3.2/bin>mongofiles.exe list2017-03-06T13:41:30.114+0800 connected to: localhostE:/deliveryTask.doc 2971

通過mongos命令查看文件存儲情況:

> use testswitched to db test> show collectionsfs.chunksfs.filesrestaurantsuser> db.fs.files.find(){ "_id" : ObjectId("58bcf683afa0fa20bc854a2b"), "chunkSize" : 261120, "uploadDate" : ISODate("2017-03-06T05:41:23.604Z"), "length" : 2971, "md5" : "5434b803306299fff57c8a54d3adf78b", "filename" : "E://deliveryTask.doc" }

可以看到文件上傳成功了

由于本章節主要涉及到的是部分理論以及運維實踐,暫不涉及具體代碼的開發實現(具體代碼將以java為例在后面章節中介紹)。

上傳一個大于16MB的文件試一試:

D:/MongoDB/Server/3.2/bin>mongofiles.exe put E:/synch.rar2017-03-06T14:33:11.028+0800 connected to: localhostadded file: E:/synch.rarD:/MongoDB/Server/3.2/bin>mongofiles.exe list2017-03-06T14:33:15.265+0800 connected to: localhostE:/deliveryTask.doc 2971E:/synch.rar 24183487

通過mongos命令查看文件存儲情況:

> db.fs.files.find(){ "_id" : ObjectId("58bcf683afa0fa20bc854a2b"), "chunkSize" : 261120, "uploadDate" : ISODate("2017-03-06T05:41:23.604Z"), "length" : 2971, "md5" : "5434b803306299fff57c8a54d3adf78b", "filename" : "E://deliveryTask.doc" }{ "_id" : ObjectId("58bd02a7afa0fa21d4a14b2c"), "chunkSize" : 261120, "uploadDate" : ISODate("2017-03-06T06:33:12.013Z"), "length" : 24183487, "md5" : "bbfe4d8579372aa0729726185997e908", "filename" : "E://synch.rar" }

也成功了,

查看chunks:

> db.fs.chunks.find({},{data:0}){ "_id" : ObjectId("58bcf683afa0fa20bc854a2c"), "files_id" : ObjectId("58bcf683afa0fa20bc854a2b"), "n" : 0 }{ "_id" : ObjectId("58bd02a7afa0fa21d4a14b2d"), "files_id" : ObjectId("58bd02a7afa0fa21d4a14b2c"), "n" : 0 }{ "_id" : ObjectId("58bd02a7afa0fa21d4a14b2e"), "files_id" : ObjectId("58bd02a7afa0fa21d4a14b2c"), "n" : 1 }{ "_id" : ObjectId("58bd02a7afa0fa21d4a14b2f"), "files_id" : ObjectId("58bd02a7afa0fa21d4a14b2c"), "n" : 2 }{ "_id" : ObjectId("58bd02a7afa0fa21d4a14b30"), "files_id" : ObjectId("58bd02a7afa0fa21d4a14b2c"), "n" : 3 }{ "_id" : ObjectId("58bd02a7afa0fa21d4a14b31"), "files_id" : ObjectId("58bd02a7afa0fa21d4a14b2c"), "n" : 4 }{ "_id" : ObjectId("58bd02a7afa0fa21d4a14b32"), "files_id" : ObjectId("58bd02a7afa0fa21d4a14b2c"), "n" : 5 }{ "_id" : ObjectId("58bd02a7afa0fa21d4a14b33"), "files_id" : ObjectId("58bd02a7afa0fa21d4a14b2c"), "n" : 6 }{ "_id" : ObjectId("58bd02a7afa0fa21d4a14b34"), "files_id" : ObjectId("58bd02a7afa0fa21d4a14b2c"), "n" : 7 }{ "_id" : ObjectId("58bd02a7afa0fa21d4a14b35"), "files_id" : ObjectId("58bd02a7afa0fa21d4a14b2c"), "n" : 8 }{ "_id" : ObjectId("58bd02a7afa0fa21d4a14b36"), "files_id" : ObjectId("58bd02a7afa0fa21d4a14b2c"), "n" : 9 }{ "_id" : ObjectId("58bd02a7afa0fa21d4a14b37"), "files_id" : ObjectId("58bd02a7afa0fa21d4a14b2c"), "n" : 10 }{ "_id" : ObjectId("58bd02a7afa0fa21d4a14b38"), "files_id" : ObjectId("58bd02a7afa0fa21d4a14b2c"), "n" : 11 }{ "_id" : ObjectId("58bd02a7afa0fa21d4a14b39"), "files_id" : ObjectId("58bd02a7afa0fa21d4a14b2c"), "n" : 12 }{ "_id" : ObjectId("58bd02a7afa0fa21d4a14b3a"), "files_id" : ObjectId("58bd02a7afa0fa21d4a14b2c"), "n" : 13 }{ "_id" : ObjectId("58bd02a7afa0fa21d4a14b3c"), "files_id" : ObjectId("58bd02a7afa0fa21d4a14b2c"), "n" : 15 }{ "_id" : ObjectId("58bd02a7afa0fa21d4a14b3b"), "files_id" : ObjectId("58bd02a7afa0fa21d4a14b2c"), "n" : 14 }{ "_id" : ObjectId("58bd02a7afa0fa21d4a14b3e"), "files_id" : ObjectId("58bd02a7afa0fa21d4a14b2c"), "n" : 17 }{ "_id" : ObjectId("58bd02a7afa0fa21d4a14b3d"), "files_id" : ObjectId("58bd02a7afa0fa21d4a14b2c"), "n" : 16 }{ "_id" : ObjectId("58bd02a7afa0fa21d4a14b3f"), "files_id" : ObjectId("58bd02a7afa0fa21d4a14b2c"), "n" : 18 }Type "it" for more

可以看到大文件被分成了好多個chunk,那么為什么上傳16MB以上的文件也會成功呢,因為我們采用的就是GridFS系統存儲的文件,因為我們采用的是mongfiles方式上傳的文件。

下面分別是查詢、下載、刪除操作:

D:/MongoDB/Server/3.2/bin>mongofiles.exe search rar2017-03-06T14:45:31.974+0800 connected to: localhostE:/synch.rar 24183487D:/MongoDB/Server/3.2/bin>mongofiles.exe --local D:/mongodb_download.rar get E:/synch.rar2017-03-06T14:47:17.841+0800 connected to: localhostfinished writing to D:/mongodb_download.rarD:/MongoDB/Server/3.2/bin>mongofiles.exe delete E:/synch.rar2017-03-06T14:47:56.649+0800 connected to: localhostsuccessfully deleted all instances of 'E:/synch.rar' from GridFSD:/MongoDB/Server/3.2/bin>mongofiles.exe list2017-03-06T14:48:03.886+0800 connected to: localhostE:/deliveryTask.doc 2971

實際上,我們還可以自定義集合的前綴,默認是fs,或者設置chunk的大小,默認是256KB。

總結

那么在實際場景的分布式文件存儲系統中如何確定改用哪種存儲方案呢,可以采用如下方式: 1. 對于用戶上傳的任何文件,在客戶端進行大小判斷; 2. 當文件大小小于16MB時,則直接存儲到MOngoDB普通集合中 3. 當文件大小大于16MB時,上傳到GridFS中,利用集合fs.files以及fs.chunks來保存文件 4. 當用戶下載文件時,再根據不同文件的大小屬性不同到不同的集合中查找

另外,對于fs.chunks文件我們可以分片存儲,片鍵可以選擇索引字段{“files_id”},該字段盡量保證了此文件在所有被分割的chunk都在同一個片上,fs.files不需要分片,此集合只保存文件的元數據信息,數據量不大,同時還可以設置默認塊大?。?56KB)

需要注意的是:GridFS并不適合小文件存儲,因為從GridFS中讀取文件涉及到兩次查詢操作,先查詢fs.files集合,再查詢fs.chunks集合,chunks合并后獲取整個文件。

需要注意的另一點是:文件分塊大小為256KB,而分片的塊大小默認64MB,不要搞混了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久这里只有精品| 国产精品免费一区| 成人444kkkk在线观看| 成人av.网址在线网站| 欧美日韩日本国产| 欧美乱大交做爰xxxⅹ性3| 亚洲国产高清高潮精品美女| 成人黄色片网站| 久久人人爽人人爽爽久久| 亚洲欧美激情四射在线日| 综合网日日天干夜夜久久| 国产亚洲精品久久久久动| 亚洲国产精品大全| 亚洲日韩中文字幕在线播放| 亚洲第一视频网站| 国内精品久久久久久影视8| 在线日韩日本国产亚洲| 黑人极品videos精品欧美裸| 欧美一级大片在线免费观看| 最近2019中文字幕大全第二页| 国产欧美精品一区二区| 国产v综合v亚洲欧美久久| 日韩中文字幕欧美| 国外视频精品毛片| 国产91对白在线播放| 欧美猛少妇色xxxxx| 永久免费精品影视网站| 自拍偷拍亚洲区| 在线观看91久久久久久| 日韩高清免费在线| 欧美激情精品久久久久久免费印度| 中文字幕亚洲自拍| 欧美xxxx做受欧美| 日韩暖暖在线视频| 亚洲欧美日韩一区在线| 成人羞羞国产免费| 精品国产精品自拍| 日韩av在线天堂网| 国产精品久久激情| 日韩美女av在线免费观看| 亚洲精品丝袜日韩| 亚洲一区亚洲二区亚洲三区| 欧美性xxxxx极品娇小| 国产日韩中文字幕| 欧美午夜影院在线视频| 俺去亚洲欧洲欧美日韩| 最近2019中文字幕第三页视频| 91欧美日韩一区| 久久综合电影一区| 亚洲精品不卡在线| 欧美日韩免费在线观看| 亚洲成年人在线播放| 国产精品第七十二页| 精品露脸国产偷人在视频| 亚洲精品日韩欧美| 午夜精品在线观看| 亚洲激情久久久| 日韩欧美在线中文字幕| 岛国av一区二区| 国产精品久久久久久久美男| 欧美国产一区二区三区| 精品亚洲一区二区三区在线观看| 国产精品网址在线| 精品色蜜蜜精品视频在线观看| 日韩av在线网址| 国产精品久久久久福利| 国产69精品99久久久久久宅男| 久久久综合免费视频| 欧美亚洲日本网站| 亚洲第一区在线| 国产成人在线亚洲欧美| 成人在线国产精品| 日韩欧美高清视频| 日韩专区中文字幕| 欧美自拍视频在线观看| 亚洲女人天堂色在线7777| 在线视频日本亚洲性| 国产一区二区三区四区福利| 久久久久在线观看| 黑人巨大精品欧美一区二区免费| 亚洲香蕉成视频在线观看| 亚洲欧美激情在线视频| www.日韩.com| 亚洲精品99久久久久中文字幕| 亚洲自拍小视频免费观看| 国产精品美女免费| 78m国产成人精品视频| 成人在线精品视频| 日韩欧美一区二区三区久久| 亚洲福利视频网| 在线观看欧美www| 日韩av电影手机在线观看| 久久久久这里只有精品| 国产精品久久久| 亚洲精品一区二区三区不| 精品福利在线视频| 欧美黑人一级爽快片淫片高清| 97国产一区二区精品久久呦| 亚洲免费中文字幕| 中文字幕欧美在线| 日韩电影中文 亚洲精品乱码| 懂色av中文一区二区三区天美| 日本精品久久久久久久| 欧美人与性动交a欧美精品| 亚洲欧洲高清在线| 日本午夜精品理论片a级appf发布| 欧美日韩一区免费| 色青青草原桃花久久综合| 亚洲视频电影图片偷拍一区| 91精品国产高清自在线| 色偷偷偷亚洲综合网另类| 成人免费观看a| 欧美一级淫片播放口| 欧美日韩国产成人在线观看| 日韩电影第一页| 久久99久国产精品黄毛片入口| 国产精品www色诱视频| 欧美午夜久久久| 国产精品久久久久久久久久久新郎| 神马国产精品影院av| 2019中文字幕在线| 在线电影欧美日韩一区二区私密| 精品国内自产拍在线观看| 日韩免费在线免费观看| 91在线播放国产| 久久视频在线看| 揄拍成人国产精品视频| 精品久久久久久久久国产字幕| 精品视频偷偷看在线观看| 九九热精品视频国产| 欧洲亚洲女同hd| 亚洲自拍偷拍色图| 国产精品盗摄久久久| 亚洲国产福利在线| 亚洲视频视频在线| 九色精品免费永久在线| 国产精品狼人色视频一区| 亚洲最新av网址| 亚洲天堂男人的天堂| 日韩av在线免播放器| 日韩精品视频观看| 亚洲男人天堂手机在线| 日韩av综合中文字幕| 亚洲日本欧美日韩高观看| 国产一区二区三区高清在线观看| 欧美性色视频在线| 成人国产精品一区| 欧美亚洲视频一区二区| 欧美日韩精品在线视频| 欧美在线视频免费观看| 精品久久久久久久久久国产| 日韩精品极品视频免费观看| 国产精品视频男人的天堂| 国产亚洲综合久久| 亚洲a级在线播放观看| 日韩精品在线视频观看| 国产精品一区二区三区免费视频| 欧美国产第二页| 日韩免费高清在线观看| 国产日韩av高清| 91九色单男在线观看| 亚洲www视频| 亚洲成人精品久久久| 国产欧美精品在线播放|