我正在考虑将data-url
存储在我的mongoDB 而不是存储对文件的引用或使用GridFS。
数据网址:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMcAAAEsCAYAAAB38aczAAAgAElEQV
我存储的所有文件都是JPG或PNG,大小不到1MB。
我想知道这是否被视为不良做法,以及读取和写入操作的性能影响,将data-url
s 1)存储在单独的集合中2)作为集合中的元数据。
我对小文件存储的任何其他建议持开放态度。
答案 0 :(得分:6)
首先,我不会将base64编码数据存储在完全能够存储二进制数据的数据库中。那只是浪费空间。存储图像本身,而不是它的base64表示,即不是data : "VBORw0KGgoAAAANSUhEUgAAA..."
,而是data : BinData("VBORw0KGgoAAAANSUhEUgAAA...")
(前者是MongoDB的字符串,后者是二进制数据)。 Base64将尺寸增加了33%。
除此之外,我认为这很好。权衡是1请求,它抓取所有数据与多个请求。存储大量数据的缺点是所有数据必须在RAM中暂时存在,但是1MB可能不是问题。
但是,您应该确保在不需要图像的情况下不要获取文档。 1MB并不算太多,但对于阅读量很大的收藏来说,这是一场灾难。