Navicat 博客

2018 年 11 月 13 日,由 Robert Gravelle 撰写

MongoDB 采用一个名为“BSON”的序列化格式来存储文档。它结合了“Binary”和“JSON”(JavaScript Object Notation)这两个词,你可以将 BSON 视为 JSON 文档的二进制表示。可惜的是,BSON 序列化格式的大小限制为 16 MB。虽然这为大多数数据类型留下了足够的空间,但对于某些大型二进制格式,MongoDB 采用了一个名为 GridFS 的单独规范来存储和检索文件。

在今天的文章中,我们将看看 Navicat for MongoDB 如何使用 GridFS 规范来存储大文件。

关于 GridFS

为了不受 16 MB 的大小限制,GridFS 将文件分成多个部分或数据块,并将每个数据块存储为单独的文档。默认情况下,GridFS 使用的默认数据块大小仅为 255 KB。文件会被分成 255 KB 的数据块,除了最后一个数据块,这是剩下的任何字节。同样,小于数据块大小的文件只有最后一个数据块,只使用所需的空间和一个字节的额外的元数据。

在幕后,GridFS 实际上使用两个集合来存储文件:一个集合用于存储文件数据块,另一个用于存储文件元数据。

GridFS 不仅可用于存储大小超过 16 MB 的文件,还可用于存储你希望访问的任何文件,而无需将整个文件加载到内存中。

在 Navicat for MongoDB 存储大文件

Navicat 支持 GridFS 存储桶,并为此提供了一个实用的工具。点击主工具栏上的大 GridFS 按钮将显示一个新选项卡,其中包含用于处理文件的多个命令。如果你之前并未添加任何文件,则仅启用“新建存储桶”按钮:

假设你有一个大型视频文件,并希望将其包含在电影数据库中。你就需要一个用于添加文件的存储桶,为此点击工具栏上的“新建存储桶”按钮,然后在“GridFS 存储桶名”对话框中输入存储桶的名。

你可以点击“上传文件”添加文件:

它将打开“文件浏览”对话框,以便你可以导航到您的文件。点击“文件浏览”对话框中的“上载”按钮开始上载。进度将显示在屏幕底部的进度条中:

完成后,你将能够查看文件的详细信息:

以下是文件详细信息对应于 GridFS 文件集合字段:

{
  "_id" : <ObjectId>,
  "length" : <num>,
  "chunkSize" : <num>,
  "uploadDate" : <timestamp>,
  "md5" : <hash>,
  "filename" : <string>,
  "contentType" : <string>,
  "aliases" : <string array>,
  "metadata" : <any>,
}

Navicat 也可以处理更小的文件。它特别擅长处理图像,甚至还具有预览功能,因此你无需在其他工具中打开图像即可查看图像:

检索文件

将文件上载到数据库后,你无需在文件系统上保留副本。当您需要它时,只需单击“下载”按钮并选择保存文件的文件夹即可:

这就结束了我们在 Navicat for MongoDB 中对 GridFS 存储桶的探索!

Navicat 文章
频道条目
分享
文章归档