ubuntu 10.04 -图片/视频/mp3网络文件系统使用php


ubuntu 10.04 - images/videos/mp3s on Network file system using php

我做了一些谷歌搜索,似乎找不到我想要的。我正在设计我的网站使用MYSQL, PHP web服务器。多个带有负载平衡器的web服务器和一个用于扩展的MySql caster目前正在计划中。但后来我开始使用图像/视频/mp3。我需要一个文件系统,多个服务器可以读取文件和写入文件。因此,一个web服务器可以运行MySQL,网络文件系统和web服务器,但随着网站规模的扩大,网站可以切换到多个服务器。有人有任何例子,教程或资源来帮助我吗?该网站运行在Ubuntu服务器上。我最初的想法是只是将图像存储在MySQL(我知道如何做到这一点,并有工作的例子),所以所有的服务器都可以读/写,但其他人告诉我这是一个坏主意,我应该使用文件系统(但不想使用本地的,因为我不认为它的规模为大型网站)。

我想到了三个系统——Mogilefs、Mongodb GridFS和基于云的存储解决方案。

MogileFS (OMG Files!)是为Livejournal开发的,并在Mysql中存储元数据。它使用它来查找具有适当文件的实际磁盘,并将其输出。

MongoDB GridFS更新得多,可能更容易上手,当然对于较小的系统来说。它使用一个新的"NoSql"数据库来存储整个数据库中的部分文件,并根据需要进行组装。到处搜索信息会发现大量的信息。

最后,您可以简单地避免整个问题,只需将图像上传到Amazon的S3或Rackspace Cloudfiles。我之前做过后者(尽管网站已经在Rackspace的系统中运行了),这并不是很困难,也有很多例子。

对于S3,还有一个命令行工具,s3cmd,可以设置为同步(或者更好)上传然后删除一个目录的文件到S3的"桶"。

首先存储图像/大文件在MySQL中是不可能的,因为最大的大小限制

引用这个答案为MySQL选择数据类型?

MySQL无法处理任何大于max_allowed_packet(默认值:1M)大小的数据,除非您在服务器端构造复杂且占用大量内存的解决方案。这进一步限制了类TEXT/blob类型可以做的事情,并且通常使LARGETEXT/LARGEBLOB类型在默认配置中无用。

现在对于存储和升级兼容性,为什么不只是将它们存储在NAS或Raid系统上,您可以继续添加驱动器。然后在数据库中存储文件的路径。最小的数据库密集,并允许良好的可伸缩性