當前位置:
首頁 > 最新 > MongodbGFS存儲大文件

MongodbGFS存儲大文件

Mongodb 是一個開源的no-sql分散式資料庫,Mongodb也為我們提供了基於文件的GFS分散式存儲系統。因此利用Mongodb我們完全可以實現一個分散式的文件存儲以及管理。

下面的內容主要為大家介紹,如何利用java,將大文件存入Mongodb資料庫中。我們這裡所說的大文件,是指大小在16M以上的文件,這也符合MongodbGFS的說明。

首先我們創建一個java工程,這裡我們使用gradle初始化一個java工程,工程結構如下圖。

當然這裡你也可以使用maven來構建一個java工程,對我們後續工作並不會有影響。

接下來我們去mongodb的官網下載其基於java的驅動包。Mongodbjava驅動程序。

這裡我們只需要將這一行,複製到我們工程的build.gradle 文件。

然後刷新gradle,我們可以看到jar包已經添加到我們的程序里。

接下來我們編寫調用的示例,我們新建一個類叫做MongdbGFS.java。然後獲取一個Mongodb的連接,代碼如下:

[java]view plaincopy

接下來,我們先不著急寫下面的代碼,我們先找到一個文件放到我們工程裡面,為了我們之後的測試。我在src下面新建了一個文件夾file,裡面存放了一個大約21M的pdf文件。

接下里我們開始進行mongodbGFS文件的存儲。

首先我們講一下mongodbGFS存儲的一個原理。這裡我們引用mongodb官方文檔里的一句話(文檔地址):

GridFS is a specification for storing and retrieving files that exceed the BSON document size limit of 16MB. Instead of storing a file in a single document, GridFS divides a file into parts, or chunks, and stores each of those chunks as a separate document.

When you query a GridFS store for a file, the Java driver will reassemble the chunks as needed.

從上面這段話可以簡單的了解到,mongodb是將文件進行分塊,存儲,當查詢時,mongodb會幫你把你所需要的塊進行組合然後展示給你,因此結合mongodb分散式的特性,我們可以輕易的構建一個分散式的文件存儲。

在利用java驅動存儲時,當我們獲得需要存儲的資料庫連接之後,我們需要先創建一個bucket,官方的說明如下:

Create a GridFS Bucket

GridFS stores files in two collections: a collection stores the file chunks, and a collection stores file metadata. The two collections are in a common bucket and the collection names are prefixed with the bucket name.

通過上面的這段話,我們可以知道,mongodb是將文件分為兩部分存儲,一個是chunks,另一個是files。並且在collection 的名字將會有你bucket的前綴。mongodb支持自定義的bucket的名字,當然也有默認,默認是files。

[java]view plaincopy

接下來就是對應的具體操作,代碼如下:

[java]view plaincopy

對應的單元測試類,大家可以下載運行:

[java]view plaincopy

我們可以在管理工具中看到,我們存儲的文件結構如下:

其每個塊的存儲如下:


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 林志強 的精彩文章:

利用vue-cli一鍵搭建Vue集成環境

TAG:林志強 |