php视频和照片上传:存储在数据库中与上传

时间:2012-04-05 16:45:03

标签: php mysql file-upload upload blob

我将在不久的将来接近一个大型网站,需要上传和存储数百甚至数千个视频。此外,许多图像需要上传,但几乎不需要上传,而且尺寸也很小。到目前为止,我一直使用php和mysql如下:

  • 上传图片
  • 将文件名存储在数据库中
  • 引用数据库中的文件夹+文件名以显示文件

但是,我已经对数据库中存储图像和文件的一些BLOB做了一些研究,并且不确定哪种方式最适合这个潜在的大型项目。我应该继续上传我的方式,还是在mysql中使用BLOB类型更有效率?我担心通过在数据库中存储大量视频和图像,可能会导致数据太多或太慢,但我可能完全错了。请告诉我你提出的所有建议。

2 个答案:

答案 0 :(得分:5)

将图像存储在BOLB中效率不高。管理起来会很困难。您的数据库将变大。

使用PHP脚本从服务器提供文件会慢一些

答案 1 :(得分:3)

好的,所以两大区域是:备份和更改

<强>备份

根据您选择的数据库引擎,备份需要锁定/转储/解锁。数据库越大,锁定的时间就越长。您可以使用某些功能(主/从)来允许hotsyncing(没有锁定的备份)但是备份不会完全覆盖数据集的风险,并且DB的规模仍然是一个因素。如果大文件只是文件(而不是DB BLOBS),那只需要为文件系统制定备份策略,因为它们可能是静态的,这只意味着存储了多个副本(这甚至可以在设计时上传 - 存储在服务器A和服务器B上。)

更改

您希望您的系统保持不变吗?听起来你会有缩放问题。您可能随着系统的发展将数据库移动到另一台服务器,文件存储到另一台服务器或SAN(或S3等)?如果你把它全部锁定在数据库中,你必须依靠仅DB解决方案来处理膨胀的大小(大型昂贵的服务器,主/从等)。当然,您可以将文件存储在一个数据库中(较少的备份要求,不会弄乱数据数据库)和其他数据...但文件系统是各种数据库。

<强>因此

因此,对于备份和扩展存储大文件作为文件而不是BLOB是更好的解决方案。如果文件很小(例如低MP JPG),则余额可能会发生变化。但是对于大型文件,数据库处理的开销以及它对数据库服务器的额外负载要求是没有意义的。保持独立。