2

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

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

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

4

2 回答 2

5

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

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

于 2012-04-05T16:49:59.970 回答
3

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

备份

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

改变

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

所以

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

于 2012-04-05T16:59:50.690 回答