MongoDB 最大文件大小

Mehvish Ashiq 2024年2月16日
MongoDB 最大文件大小

本教程描述了在 MongoDB 中儲存文件的預設最大大小限制。如果資料超過大小限制,它還會教育替代解決方案。

我們還將瞭解如何有效使用 BSON 文件的預設最大大小限制。

MongoDB 最大文件大小

在 MongoDB 中,文件(物件)以 BSON 格式儲存。BSON(Binary JSON)是類 JSON 文件的二進位制序列化。

使用這種格式,我們可以使用不同的擴充套件來使用不屬於 JSON 的資料型別的各種表示。

例如,我們在 BSON 中有一個 DateBinData 型別,這在 JSON 中不可用。根據 MongoDB 文件,單個 BSON 文件的大小限制為 16MB

我們有文件的最大大小限制,以確保一個文件在傳輸過程中不能使用不受限制的 RAM 量或頻寬。請記住,我們可以將 BSON 文件巢狀多達 100 個級別,其中每個陣列/物件新增一個級別。

在當今世界,我們周圍都有資料。因此,我們的資料可能會增加 16 兆位元組的 BSON 文件的大小限制。

在這種情況下,MongoDB 通過提供 GridFS API 來幫助我們儲存大於 16MB 的文件。

什麼是 GridFS API

GridFS 是一個 MongoDB 規範,我們可以使用它來儲存和訪問超過 BSON 文件限制 (16MB) 的大檔案,例如音訊、視訊或影象檔案。它類似於用於儲存檔案的檔案系統,但資料儲存在 MongoDB 集合中。

GridFS API 將檔案分成塊並將每個資料塊儲存在單獨的文件中,其中每個文件的大小為 255KBGridFS 預設包含兩個集合,fs.filesfs.chunks,儲存檔案的後設資料和塊。

每個塊都由唯一的 _idObjectId)欄位識別,而 fs.files 用作父文件。fs.chunks 文件中的 files_id 欄位將塊連結到其父級。

你可以通過 this 文章瞭解使用 GridFS 時的語法。

有效地使用預設 BSON 文件大小限制

BSON 文件大小限制 (16MB) 很大。例如,War of the Worlds 的整個未壓縮文字只有 364k (HTML),但總是有例外。

如果你的資料超過限制,你可以使用我們之前討論過的 GridFS API 或制定有效使用 16MB 的策略。

讓我們有一個場景,我們想要開發一個 XYZ 應用程式。應用程式需要四種資料型別——Booleansnumbersstringsdates(表示為 UNIX ms)。

由於有 16MB 的大小限制,MongoDB 可以輕鬆儲存大約 200 萬個 64 位 數字值(日期布林值 也是如此)。

在這裡,string 型別值需要特別注意,因為每個 UTF-8 字元佔用一個 byte。我們需要優化所有包含 string 型別值的列的大小。

我們可以嘗試以下方法來減小具有 string 型別值的列的大小。

  1. 我們可以使用 stringify()zip() 方法作為 zip(JSON.stringify(column.values));

  2. 我們可以建立一個字典,並將所有唯一的 string 型別值插入到字典中。然後,用索引替換字串值。

    如果我們在一個欄位中有許多重複的字串值,這種方法很有用。如果有人想儲存一列雜湊,這種方法將無濟於事,但他們可以使用 GridFS API。

  3. 我們還可以將列拆分成不同的塊,並將這些塊儲存在連結到主文件的其他一些文件中。

有一篇參考文章展示了所有這些方法。

作者: Mehvish Ashiq
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

相關文章 - MongoDB Document