存储图像:数据库或文件系统 -

mic*_*son 15 database filesystems storage image

我在这方面读了一些帖子,但我仍然不明白在我的情况下什么是最好的解决方案.

我开始编写一个新的webApp,后端将提供大约1-10万个图像.(单张图片的平均尺寸为200-500kB)

我的网站将同时向100-1000个用户提供内容和图像.

我还希望尽可能降低提供商的成本(但这是次要要求).我认为与DB大小的成本相比,文件系统空间更便宜.

就个人而言,我喜欢将所有图像都放在数据库中,但任何建议都会非常感激:)

您认为在我的情况下DB方法是正确的选择吗?

bdo*_*lan 22

将所有这些图像放入数据库将使其变得非常非常大.这意味着,当数据库引擎可以缓存热应用程序数据时,您的数据库引擎将忙于缓存所有这些图像(它不是真正设计的任务).

将文件缓存到操作系统和/或反向代理 - 他们会更好.


ric*_*ent 15

在文件系统上存储图像的其他一些原因:

  • 即使数据库繁忙或关闭,映像服务器也可以运行.
  • 文件系统用于存储文件,并且非常高效.
  • 在数据库中转储数据意味着更慢的备份和其他操作.
  • 服务器映像不需要服务器端编码,只需普通的旧IIS/Apache.
  • 您可以使用廉价的Web服务器或可能的CDN来更快地扩展.
  • 您可以在不涉及数据库的情况下执行相关工作(生成缩略图等).
  • 您的数据库服务器可以将更多"真实"表数据保存在内存中,这样您就可以获得查询的数据库速度.如果它使用其宝贵的内存来保持缓存的图像文件,那么在内存中拥有更多的照片索引时,这几乎不会给你带来任何速度.


Mar*_*ett 11

大多数大型站点都使用文件系统.

请参阅将图片存储为文件或存储在Web应用程序的数据库中?


Sri*_*ddi 5

在处理二进制对象时,遵循以文档为中心的架构方法,而不是将数据库中的pdf和图像等文档存储在数据库中,当您开始发现数据库的各种性能问题时,最终必须重构它.只需将文件存储在文件系统中,并将路径放在数据库的表中.您将用于序列化并将其保存在数据库中的数据类型的大小也存在物理限制.只需将其存储在文件系统上即可访问它.