【发布时间】:2011-05-31 19:33:33
【问题描述】:
将图像存储在文件系统中是更快更可靠,还是应该将它们存储在数据库中?
假设图像不超过 200 MB。目标是快速、可靠的访问。
一般来说,人们如何决定将文件(例如图像、PDF)存储在文件系统还是数据库中?
【问题讨论】:
-
我喜欢它,一个绰号为“Crashalot”的程序员。 :-)
标签: database image database-design file filesystems
将图像存储在文件系统中是更快更可靠,还是应该将它们存储在数据库中?
假设图像不超过 200 MB。目标是快速、可靠的访问。
一般来说,人们如何决定将文件(例如图像、PDF)存储在文件系统还是数据库中?
【问题讨论】:
标签: database image database-design file filesystems
个人意见:我总是将图像存储在文件系统中,并且只在数据库中存储文件路径。在许多情况下,数据库存储在快速(读取:昂贵的存储、15k RPM 或 SSD 驱动器)存储上。图像或其他文件,通常可以存储在较慢(阅读:更便宜、更大的驱动器、7.2k RPM 驱动器)的存储设备上。
我发现这是最好的,因为它允许数据库保持较小的大小。通常,数据库很好地存储“数据”。他们可以快速搜索和检索少量数据。文件系统可以很好地存储“文件”,它们经过优化可以快速查找和检索更大的数据位。
显然,这两种方法都需要权衡取舍,而且不会一刀切;但是,可能有一些用例将图像存储在数据库中是一件好事,如果它们都非常小,并且您预计它们不会很多,并且您的数据库与文件共享位于同一存储介质上,那么将图像直接放入数据库可能是有意义的。
附带说明一下,SQL Server 2008R2 有一个 FileStream 字段类型,它可以提供两全其美的效果,我还没有使用过它,所以我不能说它的效果如何。
【讨论】:
如果您需要以下内容,请将文件/图像存储在数据库中:
这就是 SharePoint 等主要 CMS 的设计。
但是,如果您的内容更加静态且不会随时间变化,您可以使用文件系统并在 Web 服务器上启用优化/缓存。
【讨论】:
使用数据库方法,您只需连接一件事。如果您的用户是分布式的,那可能会更简单。请注意,如果图像访问不频繁,则效率问题可能无关紧要。
【讨论】:
首先你必须知道,在数据库中,你不能存储大于我认为 8 mb 的文件,所以我认为最好将文件存储在系统中,而将小图像存储在数据库中
【讨论】: