我读过一些这方面的帖子,但我仍然不明白对我来说最好的解决方案是什么。

我开始编写一个新的 web 应用程序,后端将提供有关 1-1000万张图像. 。(普通大小 200-500kB 对于单个图像)

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

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

就我个人而言,我喜欢将所有图像都存储在数据库中的想法,但任何建议将不胜感激:)

您认为就我而言,数据库方法是正确的选择吗?

有帮助吗?

解决方案

把所有这些图片在你的数据库将使它非常,非常大的。这意味着你的数据库引擎将忙于缓存所有这些图像(任务它不是真正的设计)时,它可以被缓存热点应用数据,而不是。

保留文件缓存到OS和/或反向代理 - 他们将它更好

其他提示

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

  • 即使数据库繁忙或关闭,图像服务器也可以运行。
  • 文件系统是为了 存储文件 并且在这方面非常有效率。
  • 在数据库中转储数据意味着备份和其他操作会变慢。
  • 无需服务器端编码即可提供图像,只需普通的旧 IIS/Apache。
  • 您可以使用非常便宜的 Web 服务器或潜在的 CDN 更快地进行扩展。
  • 您可以在不涉及数据库的情况下执行相关工作(生成缩略图等)。
  • 您的数据库服务器可以在内存中保留更多“真实”表数据,这是您获得数据库查询速度的地方。如果它使用宝贵的内存来缓存图像文件,那么与内存中更多的照片索引相比,这并不能提高速度。

大多数大型网站使用的文件系统。

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

当用二进制对象处理,按照架构文档为中心的方法,而不是存储像PDF文件和图像数据库中的文档,你最终将有当你开始看到各种性能问题与数据库重构出来。只是存储在文件系统上的文件和你的DATABSE的表内的路径。也有上您将使用序列化,并将其保存在数据库中的数据类型的大小的物理限制。只要将其存储在文件系统和访问它。

您第一句话说,你读过一些关于这个问题的帖子,所以我不会打扰投入链接到覆盖此文章。根据我的经验,以及基于什么你就张贴图片和图像的尺寸的数量,你会如果你把它们存储在DB付出高昂的代价在DB的性能。我把它们存储在文件系统上。

什么数据库您使用的? MS SQL Server 2008提供FILESTREAM存储

  

允许的存储,并使用SQL Server 2008的组合以及NTFS文件系统BLOB数据的高效访问。它涵盖了BLOB的存储选择,配置Windows和SQL Server使用FILESTREAM数据,注意事项FILESTREAM与其他功能相结合,与实施细节,如分区和性能。

详细信息

我们使用凡纳,用于成像优化的服务器。这个很贵。更便宜的解决方案是使用的文件服务器。

请不要考虑存储在数据库服务器上的大文件。

正如其他人提及的,引用存储在数据库中的大文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top