我正在使用一款将图片大量存储在数据库中的应用程序。你对此有何看法?我更倾向于将其位置存储在文件系统中,而不是直接存储在数据库中。
你认为这样做的利弊是什么?
在之前的项目中,我将图片存储在文件系统中,这导致了备份、复制和文件系统与数据库不同步等很多问题。
在我的最新项目中,我将图片存储在数据库中,并在文件系统上进行缓存,效果非常好。到目前为止,我还没有遇到任何问题。
我曾经参与开发一个图像处理应用程序。我们将上传的图像存储在类似于 /images/[今天的日期]/[id编号] 的目录中。但是,我们还从图像中提取元数据(exif数据),并将其与时间戳等一起存储在数据库中。
其次是关于文件路径的建议。我曾经参与过几个需要管理大型资产收藏的项目,任何想要直接将资产存储在数据库中的尝试都会导致长期的痛苦和挫败。
我唯一真正能想到的存储在数据库中的"优点"是方便单个图像资产的使用。如果没有可以使用的文件路径,所有的图像都直接从数据库中流出,用户就不会发现他们无法访问的文件。
然而,这似乎可以通过一个中介脚本从网络无法访问的文件存储库中获取数据来更好地解决。因此,数据库存储并不是真正必要的。
将图像存储在数据库中仍意味着图像数据最终会出现在文件系统中,但被隐藏起来,因此您无法直接访问它。
优点:
缺点:
这两种方法都很常见且被使用。请看一下它们的优缺点。无论哪种方式,您都必须考虑如何克服缺点。将其存储在数据库中通常意味着调整数据库参数并实现某种缓存。使用文件系统需要您找到一些方法来保持文件系统+数据库同步。