在web应用程序的上下文中,我的老老板总是说在数据库中放置一个对图像的引用,而不是图像本身.我倾向于同意在数据库中存储url和图像本身是一个好主意,但在我现在工作的地方,我们在数据库中存储了很多图像.

我能想到的唯一原因可能是它更安全?你不想让别人直接链接到网址吗?但如果是这种情况,您可以始终让网站/服务器处理图像,就像ASP.NET中的处理程序一样,这样用户就需要进行身份验证才能查看图像.我还认为从数据库中取出图像会影响性能.为什么在数据库中存储图像可能是个好主意,也可能不是什么好主意,还有什么其他原因吗?


Exact Duplicate: User Images: Database or filesystem storage?
Exact Duplicate: Storing images in database: Yea or nay?
Exact Duplicate: Should I store my images in the database or folders?
Exact Duplicate: Would you store binary data in database or folders?
Exact Duplicate: Store pictures as files or or the database for a web app?
Exact Duplicate: Storing a small number of images: blob or fs?
Exact Duplicate: store image in filesystem or database?

推荐答案

如果你需要检索一个图像,并且它必须在多个不同的web服务器上可用.但我觉得差不多就是这样.

  • 如果它不必在多个服务器上可用,那么最好将它们放在文件系统中.
  • 如果它必须在多个服务器上可用,并且系统中确实存在某种类型的负载,那么您将需要某种类型的分布式存储.

我们在这里讨论的是一种边缘情况,在这种情况下,您可以通过利用数据库来避免给系统增加额外的复杂性.

除此之外,不要这样做.

Database相关问答推荐

MongoDB根据嵌套文档中的值匹配数组

聚合以过滤 MongoDB 中的引用

PostgreSQL 嵌套 INSERTs / WITHs 用于外键插入

在sql server中拆分字符串

Symfony2:spl_object_hash() expects parameter 1 to be object, string given in Doctrine

如何将 PHP 会话数据保存到数据库而不是文件系统中?

操作错误:FATAL: database "django" does not exist

ORM vs 传统数据库查询,它们的字段是什么?

触发器内的多个插入/更新语句?

有没有办法在一个脚本中创建多个触发器?

Windows 环境下无法识别 postgres 'psql' 命令

使用 PDO 获取单行单列

使用多个数据库模式的 JPA

从 CSV 文件填充 Android 数据库?

数以百万计的条目排名

dbvisualizer:在 Select 查询中设置最大行数

Django + PostgreSQL:如何重置主键?

根据上次日期 Select 记录

我应该在哪里存储外键?

Guice、JDBC 和管理数据库连接