繁体   English   中英

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

[英]php video and photo uploading: storing in database vs. uploading

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

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

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

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

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

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

备份

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

改变

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

所以

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM