为啥我应该在数据库而不是文件系统中插入 blob?

Posted

技术标签:

【中文标题】为啥我应该在数据库而不是文件系统中插入 blob?【英文标题】:Why should I insert blobs in database instead of filesystem?为什么我应该在数据库而不是文件系统中插入 blob? 【发布时间】:2015-08-10 11:56:03 【问题描述】:

我必须在 Web 应用程序中管理一些文件,比如用户个人资料的头像图像。 我问自己:我应该在用户的数据库表中使用 blob 字段还是仅仅在 avatars/userid.jpg 之类的文件系统文件中使用?如果我不需要此字段的搜索功能,将 blob 存储到数据库有什么好处?

【问题讨论】:

【参考方案1】:

还要考虑文件的数量。如果您必须管理大量文件(至少 >10.000),您必须考虑将文件组织在目录结构中,否则某些文件系统可能会变慢。数据库通常会处理这些。

此外,如果用户已经连接到数据库,则无需担心设置所有用户都可以连接的共享文件。另一方面,数据库中单个文件的安全管理要困难一些,必须自己做。

【讨论】:

【参考方案2】:

如果您还没有运行数据库,那么几乎没有什么好处。如果是这样,在某些情况下,您可以利用该数据库的缓存功能。不过,在大多数情况下,如果您不需要搜索,请使用文件系统。

【讨论】:

以上是关于为啥我应该在数据库而不是文件系统中插入 blob?的主要内容,如果未能解决你的问题,请参考以下文章

Azure SQL - 从 Azure 文件而不是 Blob 批量插入

上传视频文件成功后$_FILES['name']的值为啥是blob?而不是原始文件名?怎么才能获取到原始文件名?

为啥 git 将文件内容存储为 blob?

为啥插入动作出现而不是 iBoutlet?

Oracle SQL:插入失败 ORA-01722:无效数字,数据是数字而不是字符串,为啥会失败?

为啥在vim中插入模式下按Backspace键,会输入^?,而不是向前删除呢?怎样更改设置?