我知道这一主题在过去被广泛讨论过,我彻底分析了许多关于这一问题的有见地的答案——证实了我的观点,即一般来说,在数据库中存储blob是一种不好的做法。
现在让我们看看以下场景:
users,它与images有一对多的关系;
除了fk和一些元数据(日期、标题…)之外,images行还将包含以下二进制文件(或指向以下二进制文件的文件路径):
缩略图(一个可笑的小二进制);
全尺寸(实际将进行预处理,大约为400x600和35-45kb;
如果没有图像,我就永远不需要users表中的任何数据(而且,我知道在哪里不使用images);
我想使用fs和内存缓存;
在最常见的场景中,我只需要拇指(仅在某些事件上动态获取完整大小的图像,在这些情况下,通过id获取它们)。澄清:不是很多非常小的照片,就是每次通话都有一张非常小的照片;
用户会想改变他们的图片的数据,删除他们,改变他们很多。
一切似乎都让我认为数据库解决方案是最优的。
有没有我看不到的缺点(除了在没有缓存的情况下明显的开放数据库连接)?

最佳答案

这个场景中的一个问题是备份,或者将“开发”或“测试”环境与生产环境同步(移动数据库转储会很痛苦)。如果所有图像都在fs上(比如:mass为图像创建一个新的大小),那么对它们进行总体编辑也要简单得多。
无论如何,我并没有完全了解这种方法相对于“数据库中的指针,fs上的文件”的真正优势。也许是内存缓存?这些天,当我想到blobs时,我想到了s3:)

10-08 08:01
查看更多