database - 将图像存储在数据库与文件系统中

标签 database

我们都知道在讨论使用数据库进行文件存储(特别是图像)时已经失去了多少争论和生命。在决定如何继续我的项目时,我有点犹豫不决。

我有一个允许管理员上传员工照片的网站。目前,这些图片存储在我的 MySQL 数据库中的 BLOB 中。此外,我还有一个与网站一起运行的 Windows 应用程序。该应用程序使员工能够打卡并在他们成功打卡后显示他们的照片。图片通过应用程序中的 mysql 查询(从非本地远程位置)检索,将图像内容转换为可读图像,输出到图片框中,确认员工的身份。

在我看来,将图像存储在数据库中并通过简单查询检索它们要容易得多。我发现这比在数据库中存储图像路径和处理应用程序下载图像要容易得多。我也不必处理冲突、文件夹组织和安全以及由于 x、y 原因等原因而重写的路径。

存储在数据库中的图像在裁剪到一定大小后只有20 kb。我的问题是,是否仍然值得将图像路径嵌入到数据库中,还是应该简单地按原样存储?如果在这种情况下将图像存储在数据库中仍然是不明智的,是否有正式的方式来存储图像路径?

如有任何帮助,我们将不胜感激。如果这个问题不属于这里,我很乐意将其移动。

最佳答案

如果图像是用户数据,而不是应用程序代码或主题的一部分,那么将图像存储在数据库中是个好主意,因为......

  • 如果您只需要备份数据库,那么备份会更易于管理。另一方面,如果您将一些应用程序数据存储在数据库中,将一些应用程序数据存储在文件系统中,那么您必须协调数据库和文件系统的备份计划,以确保两者一致。

    如果您有一位数据库管理员供您使用,那就太好了!您的备份应该已经处理好了。如果没有,那么数据库备份的设置可能会有点棘手,但是一旦你有了备份系统,它就会比文件系统备份更好。例如,许多数据库系统都支持流复制。

  • 如果您的应用程序是负载平衡的并且由多个网络服务器池提供服务,那么您要么必须将数据复制到所有机器,要么使用网络文件系统在您的服务器之间共享它们。

当然,将图像放在文件系统上也有其优势,即性能和简单性,因为大多数网络服务器都是为静态文件而构建的。混合方法可以让您两全其美:

  • 存储在数据库中的图像将是权威数据。
  • 您的应用程序可以具有将它们提取为本地文件系统中的文件的功能,作为一种缓存。该缓存可以随时重建,因为它不具有权威性。
  • 然后网络服务器可以直接从文件系统提供文件。

关于database - 将图像存储在数据库与文件系统中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25196910/

相关文章:

mysql - 在 2 种不同类型的数据库之间共享 1 个表

database - Laravel 5.x 数据库触发器和可能的最佳实践

ruby-on-rails - 现有数据库的 Rails 一直说迁移挂起

mysql - VS2017 MYSQL SQLDataSource - 对象引用未设置为对象的实例

sql - 如何批量插入数据到两个SQL表

javascript - 在 MongoDb 中使用 mapReduce 获取文档(行)计数

php - 需要清理垃圾邮件数据库

mysql - 在 MySQL 中,如何创建带有外键的列?

php - 将随机 ID 插入数据库

php - 为什么我的在线用户页面不能正常工作?