【问题标题】:Storing pictures into a database [duplicate]将图片存储到数据库中[重复]
【发布时间】:2014-12-19 12:36:11
【问题描述】:

我想知道将图像存储到具有最佳性能的 MySQL 数据库中的最佳方法是什么。 (假设一个大数据库)

方案A:使用LONGBLOB类型并放入二进制内容

解决方案 B:将文件存储在主机上并将 URL 保存为 VARCHAR 类型

提前致谢

【问题讨论】:

    标签: mysql database database-design phpmyadmin


    【解决方案1】:

    我想说,与其存储 url,不如存储图像名称(如“image1.png”)并将图像托管在您的服务器上。这应该有助于减少数据库大小和调用时间。然后以编程方式为 url 路径添加前缀并引用它。

    如果图像位置发生变化,最好只保存文件名。这样你就不必担心更新整个表,你可以用 url 路径修复一行代码

    【讨论】:

      【解决方案2】:

      我倾向于将它们放入数据库中。这样,当您对数据库进行备份时,它们就会打包在一起。如果您曾经移动服务器,那么您不必担心从文件系统中移动文件。

      除非您谈论的是大文件 (GB),否则我怀疑您会发现文件系统与.db 性能有很大差异。

      无论哪种方式都适合您,只是偏好问题以及最适合您的特定情况的方式。

      SO 和互联网上已经有很多答案。
      Storing Images in DB - Yea or Nay?

      【讨论】:

        【解决方案3】:

        如果您正在构建一个需要扩展以提供许多图像的系统:将图像内容放在 DBMS 中存在巨大的缺点。

        Web 服务器可以围绕大型通用文件存储系统进行集群,并且可以非常有效地提供图像。这种文件服务架构已经被 Apache、nginx 和 IIS 等各种 Web 服务器产品高度优化。

        但是,如果您将图像放在数据库 BLOB 中,从数据库中获取它们就会成为瓶颈。另外,您需要运行一个脚本(php、.net 等)来为每个图像提供服务。

        几乎所有生产网站都直接从文件中提供图像。您可以在您的 DBMS 中存储文件存储中的位置,然后将它们转换为您发送的 HTML 页面中的 URL。

        例如,如果imgloc 列包含u/10234/abcde.img,并且表格也有宽度和高度列,您的网络应用程序可以发出类似

        <img src="/content/u/10234/abcde.img" width="300" height="200">
        

        然后客户端将从您的内容存储中获取图像。

        【讨论】:

          猜你喜欢
          • 2011-04-18
          • 2010-11-07
          • 1970-01-01
          • 1970-01-01
          • 2021-05-17
          • 2017-11-05
          • 2020-08-09
          • 2010-12-27
          • 2012-11-10
          相关资源
          最近更新 更多