我应该使用 MySQL blob 字段类型吗?

2024-02-28

我正在努力决定是否应该在即将进行的项目中使用 MySQL blob 字段类型。

我的基本要求是,可以查看某些数据库记录,并上传多个文件并将其“附加”到这些记录。根据具体情况,查看所述记录可能仅限于某些人。任何类型的文件都可以上传,几乎没有任何限制。

因此,从一种角度来看,如果我选择 MySQL 路线,我不必担心病毒的蔓延或随机 php 文件被上传并以某种方式执行。我还有一个更简单的途径来获得许可并将数据与记录紧密结合。

另一个明显的途径是将数据存储在 webroot 之外的特定文件夹结构中。在这种情况下,我必须为文件夹/文件制定一个特殊的命名约定,以跟踪它们在数据库中引用的内容。

使用 MySQL blob 字段类型是否会影响性能?我担心选择的解决方案会阻碍网站未来的发展以及选择不易维护的解决方案。


使用 MySQL blob 字段类型是否会影响性能?

本质上不是这样,但是如果您有大的 BLOB 堵塞了表和内存缓存,那么肯定会导致性能下降。

另一个明显的途径是将数据存储在 webroot 之外的特定文件夹结构中。在这种情况下,我必须为文件夹/文件制定一个特殊的命名约定,以跟踪它们在数据库中引用的内容。

是的,这是一种常见的方法。您通常会做类似的事情,例如以与它们关联的每个表命名文件夹,其中包含仅基于主键(理想情况下是整数;当然绝不是用户提交的任何内容)的文件名。

这是一个更好的主意吗?这取决于。仅拥有一个数据存储具有部署简单性的优点,并且不必担心向 Web 用户提供对任何内容的写访问权限。此外,如果可能有多个应用程序副本正在运行(例如主动-主动负载平衡),那么您需要同步存储,这对于数据库来说比使用文件系统要容易得多。

如果您确实使用文件系统而不是 blob,那么问题是,您是否通过将别名指向文件夹来让 Web 服务器为其提供服务?

  • + 超级快
  • + 缓存良好
  • - 额外的服务器配置:虚拟目录;需要适当的文件扩展名才能返回所需的Content-Type
  • - 额外的服务器配置:需要添加Content-Disposition: attachment/X-Content-Type-Options作为反 XSS 措施的一部分,阻止 IE 嗅探 HTML 的标头

或者您是否通过让服务器端脚本将其吐出来手动提供该文件,就像您必须从 MySQL blob 提供服务一样?

  • - 可能很慢
  • - 需要大量手动 If-Modified-Since 和 ETag 处理才能正确缓存
  • + 可以使用应用程序自己的访问控制方法
  • + 轻松从服务脚本添加正确的 Content-Type 和 Content-Disposition 标头

这是一种权衡,没有一个全球公认的答案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该使用 MySQL blob 字段类型吗? 的相关文章

随机推荐

  • 如何在python中将MPI信息传递给ctypes

    我的动机是将 MPI 信息有效地从 python 传递到通过 ctypes 调用的 C 函数 我在 python 中使用 mpi4py 进行 MPI 绑定 我想通过一个用 C 编写并通过 python 中的 ctypes 调用的简单示例 M
  • 有没有办法确定 Android 应用程序是在运行时进行生产签名还是调试签名?

    有没有办法确定 Android 应用程序是在运行时进行生产签名还是调试签名 private static Boolean isDebugBuild null protected boolean isDebugBuild if isDebug
  • Pip 安装到自定义目标目录并排除特定依赖项

    我正在寻找一种使用 pip 或类似方法将 python 包列表安装到自定义目标目录 例如 mypath python pkgs 的方法 但也排除 黑名单specific依赖关系 我想排除特定的依赖项 因为它们已经从不同的安装路径 例如 an
  • keras的model.fit中tf.Print没有结果

    我写了那个损失 用于测试 keras 中的自定义损失 def loss y true y pred loss tf reduce sum y true tf log y pred loss tf Print loss loss loss r
  • 如何在python中删除文件的部分内容?

    我有一个名为 a txt 的文件 如下所示 我是第一线我是第二线 这里可能还有更多行 我在空行下方 我是一条线更多线路在这里 现在 我想删除空行上方的内容 包括空行本身 我怎样才能以 Pythonic 的方式做到这一点 基本上 您无法从文件
  • 嵌入式 Jetty - 启动 Jetty 服务器后添加上下文

    在没有指定上下文和上下文处理程序的情况下启动jetty实例 然后在服务器启动后继续向其添加上下文是否正确 尽管我能够使用可变的 HandlerCollection 来执行此操作 并且日志显示服务器和上下文已启动且可用 但我无法使用 URL
  • 在设计时隐藏私有子控件属性

    我有一个带有一些私有子控件的容器控件 如何在设计时隐藏属性浏览器以显示控件 它还在设计时在每个控件上显示一个锁和一个方形图标 我尝试为控件设置
  • PHP中HTTP请求完成后执行代码?

    PHP提供了注册关闭函数的机制 register shutdown function shutdown func 问题是在最新版本的 PHP 中 该函数仍然在请求期间执行 我有一个平台 如果重要的话 在 Zend Framework 中 整
  • Ehcache并发修改异常+Spring+Struts应用

    在我的应用程序中 ehcache 配置如下 应用程序数据区域 java import statements public class AppDataRegion Variable for region identifier private
  • Android RSA 加密与 OAEP 使用 SHA-256 进行主摘要和 MGF1 摘要

    根据规范 我需要对两个摘要 主摘要和 MGF1 摘要 使用带有 SHA 256 的 RSA ECB OAEPPadding 密码 安卓密码学 https developer android com guide topics security
  • java try 块的范围应该尽可能严格吗?

    有人告诉我 使用 Java try catch 机制会产生一些开销 因此 虽然有必要将抛出已检查异常的方法放入 try 块中来处理可能的异常 但从性能角度来看 限制 try 块的大小以仅包含那些可能抛出异常的操作是一种很好的做法 我不太确定
  • 在数据库表中存储视图计数

    每次访问数据库记录时存储视图计数的适当且最有效的方法是什么 我有桌子ITEMS包含以下字段 id item name 每个项目都有自己的永久链接 http domain com item name http domain com item
  • CSS 动画属性在动画后保留

    我试图让 CSS 动画属性在完成后保留 这可能吗 这就是我正在努力实现的目标 当用户登陆页面时 该元素应该隐藏 3秒后 或其他时间 它应该淡入 一旦动画完成 它应该停留在那里 这是一个小提琴尝试 http jsfiddle net GZx6
  • SVN将服务器端的数据存储在哪里?

    我已经在我的 Web 主机服务器上创建了一个 svn 存储库 并成功向其中提交文件并更新了文件 但我似乎实际上无法在服务器上找到这些文件 我的 svn 仓库位于 svn my first repo 其中包含以下内容 README txt c
  • 在 Python 中将图像中的颜色映射到颜色列表中最接近的成员

    我有一个 19 种颜色的列表 它是一个大小为 numpy 的数组 19 3 colors np array 0 0 0 0 0 255 255 0 0 150 30 150 255 65 255 150 80 0 170 120 65 12
  • 如何使用 iTextSharp 获取 pdf 文件中的部分目标页码?

    我有一个 pdf 文件 其中包含索引页 其中包含目标页面部分 我可以获得章节名称 第 1 1 节 第 5 2 节 但无法获取目标页码 For ex http www mikesdotnetting com Article 84 iTextS
  • 使用 VB.NET 创建 ODBC DSN

    我想为数据库创建 ODBC DSN 每当用户设置应用程序时 该数据库将包含在我的应用程序文件夹中 我想知道如何使用所有必需的参数创建 ODBC 以便运行安装程序时要做的第一件事是将数据库连接到应用程序 我尝试过使用默认的 VB NET 安装
  • 如何向某些 jQuery 对象添加函数,而不向其他对象添加函数?

    假设我有一个 ul list ul class products ul 我想用 jQuery 选择它 然后向该对象添加一些函数 例如 我想添加一个addProduct productData 函数和一个deleteProduct produ
  • 降低 Bootstrap 3.0 导航栏的高度

    我正在尝试降低与固定顶部行为一起使用的 Bootstrap 3 0 导航栏高度 这里我使用的是代码 HTML div class tnav div class navbar navbar fixed top div class navbar
  • 我应该使用 MySQL blob 字段类型吗?

    我正在努力决定是否应该在即将进行的项目中使用 MySQL blob 字段类型 我的基本要求是 可以查看某些数据库记录 并上传多个文件并将其 附加 到这些记录 根据具体情况 查看所述记录可能仅限于某些人 任何类型的文件都可以上传 几乎没有任何