首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库中的Blob还是指向文件的指针?

数据库中的Blob还是指向文件的指针?
EN

Stack Overflow用户
提问于 2013-01-16 21:55:10
回答 3查看 1.4K关注 0票数 1

可能重复: When to store images in a database(mySQL) and when not? (Linking image to item in database) Which is the best method to store files on the server (in database or storing the location alone)?

在用数据库存储MP3s/pdfs之间,我应该考虑哪些最佳选择。是否最好将文件作为BLOB存储在DB中?还是仅仅有一个允许我查看文件系统的字段更好呢?

问题中的文件不太可能超过15 1MiB,但所有文件都可能至少是1 1MiB,以防出现这种情况。

数据将通过PHP访问,如果有区别的话.

编辑:我将介绍我已经在做的事情:)数据库中文件系统中文件名的资源。谢谢,或者输入!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-16 22:09:05

在过去的3年里,我一直在从事一个将大型附件存储在数据库中的项目。

优势

  • 与处理相关文件相比,管理数据库中的记录更容易,代码更少。
  • 即使使用CakePHP的行为来实现任务的自动化。数据库更简单。
  • 有些项目需要将数据保存在数据库中(即使它并没有真正提高安全性)。
  • 自动构建过程可以轻松地备份数据,因为数据已经在数据库中了。

缺点

  • 为开发而拍摄数据库快照是一件痛苦的事。
  • 在您通过几个GBs的大小之后。不管别人怎么跟你说。您会开始怀疑DB引擎是否能够处理它。
  • 转储数据库需要很长时间。
  • 数据迁移到不同的架构开始需要非SQL解决方案。

关于DB的神话

  • 你的数据库不能处理大的数据库文件大小。
  • 硬盘上的一个坏扇区意味着你可能会丢失所有的blob数据。
  • 在数据库中存储有一定的性能成本。
  • 它更安全。
  • 从DB读取数据并发送到客户端比读取文件和发送文件要慢。

以上(根据我的经验)都是false

关于大气泡的事实

  • 总有一天,你不再想要它在数据库中。
  • GUID记录标识符是您的朋友。不要在文件名中使用记录(int)ID。
  • 您不需要从文件名中反向查找记录,但需要从记录中查找文件。所以您可以只使用guid作为文件名。
  • 备份/复制文件系统和小型数据库比只备份大型数据库更容易。
  • 不要把文件存储在你的webroot里。
票数 5
EN

Stack Overflow用户

发布于 2013-01-16 22:04:29

我认为对于大多数用例来说,仅仅存储文件文件是最好的方法。对我来说,这种方法的优点包括:

  • 对于用户可以下载的图像或其他文件,您可以让客户机直接下载/缓存这些文件。
  • 允许在将来某个时候实现CDN (即只更新数据库中的文件引用)。
  • 它将极大地减少传回的数据量以及应用程序和数据库之间的数据量,从而潜在地消除额外的带宽使用(如果DB位于远程服务器上),并使查询响应更快(因此不会捆绑数据库)。
  • 它使DB备份速度快得多。
  • 它允许您对资产使用传统的文件管理技术。

有一些用于存储气泡的潜在用例:

  • 也许您希望对资产执行某种类型的二进制搜索(尽管可以很容易地认为,这方面有比MySQL更好的解决方案)。
  • 由于某种原因,您需要保证没有孤立的文件,或者没有实际文件的条目(即提交图像事务)。
票数 4
EN

Stack Overflow用户

发布于 2013-01-16 21:56:11

最好的方法是将文件保存在上传目录中,并将该位置传递给MySQL。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14368581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档