我正在制作视频分享网站。所以我在想什么是存储大量视频文件的最佳方式。因此,访问它们时速度快,性能高。
我问我的同事,他们说将文件存储在硬盘文件夹上不会有效,因为在许多读/写操作中它会非常慢。
有人建议存储在mysql blob中。
我在这里很困惑!
让我知道你们的想法是什么?
答案 0 :(得分:4)
通常将大型文件存储在数据库中并不是一种好习惯。有关详细信息,请参阅this问题以及与其相关的问题。
如果您的预算允许,您可以考虑使用Rackspace Cloud Files或Amazon S3等服务,而不是简单地存储在磁盘上。
答案 1 :(得分:1)
使用数据库中的ID键将文件排序到文件夹中。
取第一个数字,将其放在第一个目录中,将第二个数字放在下一个......依此类推:
例如:
18
/视频/ 1/8 / MyvideoFile
1892
/视频/ 1/8/9/2 / MyVideoFile
或者,您也可以通过在数据库中存储服务器编号,在各种服务器或NAS群集上对它们进行排序。
希望有所帮助。
答案 2 :(得分:0)
存储在mysql数据库中比在HDD上存储二进制文件要慢。如果一台计算机无法处理负载,您可以在多台计算机上存储文件的副本,并使用现成的负载平衡器来管理它。
答案 3 :(得分:0)
视频太大,无法在MySQL中高效存储。使用文件系统。想出一个合理的方法将视频文件分类到不同的目录中,这样就不会在一个目录中结束数千个文件。例如,所有以'a'开头的文件都会进入目录'a'等等。
如果您的网站变得非常庞大,将视频卸载到CDN可能是有意义的,例如Amazon Cloudfront。
答案 4 :(得分:0)
例如,你有一个大小为50 GB的文件,你可以在50个磁盘上并行写入,每个磁盘上有1 GB的部分,所以你只需要1秒钟就可以写入,同样它需要1秒钟才能写入从50个磁盘中读取。考虑像HDFS这样的文件系统。
答案 5 :(得分:-1)
一个解决方案需要您花费很少的前期时间投资,但从长远来看这将为您节省大量麻烦...正在使用云存储服务,如:
http://aws.amazon.com/s3/ 要么 http://www.rackspacecloud.com/cloud_hosting_products/files
它可扩展,您的服务器可以专注于运行您的网络应用程序。