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


php video and photo uploading: storing in database vs. uploading

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

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

但是,我已经对一些在数据库中存储图像和文件的 BLOB 进行了一些研究,但不确定哪种方式最适合这个潜在的大型项目。我应该继续以我的方式上传,还是在 mysql 中使用 BLOB 类型更有效? 我担心通过在数据库中存储大量视频和图像,它可能会变得太多数据或太慢,但我可能完全错了。 请让我知道您的任何和所有建议。

BOLB中存储图像效率不高。这将很难管理。您的数据库将变得很大。

它会比使用 PHP 脚本从服务器提供文件慢

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

备份

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

改变

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

所以

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