我最近接受了一次采访。在我的迷你项目解释的背景下,采访者问我"你在哪里存储用户上传的图像文件?"。
我回答说我使用的是文件系统而不是数据库。我还补充说,这样做不会降低性能。
(任何人都可以查看这些图像,因此许多用户可能会访问图像)。
令我惊讶的是,他说当你的文件被许多人访问时,你应该使用数据库。
我和他争辩说,当数据不关心原子性,一致性,隔离性,持久性时,为什么要使用数据库......
但他一直说当多个用户访问同一个文件时,就会使用一个数据库。他还说许多组织也是这样做的 - 如果在数据库中没有存储文件,为什么数据库中会出现blob类型。
我向他点点头;我不想再进一步辩论了。所以,现在我很困惑。他说的是真的吗?当有多个访问时,是否应该使用数据库来存储文件?很多组织都这样做吗? 如果是,请解释我为什么会这样。
答案 0 :(得分:0)
据我了解,你应该在DB中存储文件路径以提高性能,但是在DB中存储图像数据绝对不同意见,这是完全错误的。通常数据库应该保持高效率,可靠性,所以不要让数据库文件太大,我相信我的概念绝对是真的。所以你的理解是正确的,为了在许多用户同时访问一个文件时提高性能,你必须使用其他缓存解决方案。
答案 1 :(得分:0)
对我来说问题是双重的
A)备份 - 如果db中的图像然后db会变得更大,如果filestore中的图像需要有两个备份方案--DB和filestore
B)检索 - 获取进出DB的blob /二进制数据类型并不像普通数据类型那样简单,而且有些ORM工具无法处理。
额外考虑因素是存储成本,数据库服务器上的磁盘速度非常快,文件服务器上速度较慢但速度要大得多 - 获得投资回报。
我个人将图像存储在文件服务器中并链接到数据库中