在Mongodb中存储数据URL

时间:2014-02-14 10:17:35

标签: mongodb data-url

我正在考虑将data-url存储在我的mongoDB 而不是存储对文件的引用或使用GridFS。

数据网址:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMcAAAEsCAYAAAB38aczAAAgAElEQV

我存储的所有文件都是JPG或PNG,大小不到1MB。

我想知道这是否被视为不良做法,以及读取和写入操作的性能影响,将data-url s 1)存储在单独的集合中2)作为集合中的元数据。

我对小文件存储的任何其他建议持开放态度。

1 个答案:

答案 0 :(得分:6)

首先,我不会将base64编码数据存储在完全能够存储二进制数据的数据库中。那只是浪费空间。存储图像本身,而不是它的base64表示,即不是data : "VBORw0KGgoAAAANSUhEUgAAA...",而是data : BinData("VBORw0KGgoAAAANSUhEUgAAA...")(前者是MongoDB的字符串,后者是二进制数据)。 Base64将尺寸增加了33%。

除此之外,我认为这很好。权衡是1请求,它抓取所有数据与多个请求。存储大量数据的缺点是所有数据必须在RAM中暂时存在,但是1MB可能不是问题。

但是,您应该确保在不需要图像的情况下不要获取文档。 1MB并不算太多,但对于阅读量很大的收藏来说,这是一场灾难。