изображения / видео / mp3 в сетевой файловой системе с использованием php - PullRequest
0 голосов
/ 16 апреля 2011

Я сделал несколько поисков в Google и не могу найти то, что хочу. Я проектирую свой веб-сайт для использования MYSQL, PHP веб-серверов. До сих пор планируется создание нескольких веб-серверов с балансировщиком нагрузки и MySql Custer для масштабирования. Но потом я получаю изображения / видео / mp3. Мне нужна файловая система, с которой несколько серверов могут читать и записывать файлы. Таким образом, один веб-сервер может запускать MySQL, сетевую файловую систему и веб-сервер, но по мере масштабирования сайта сайт может переключаться на несколько серверов. У кого-нибудь есть примеры, учебные пособия или ресурсы, чтобы помочь мне в этом? Сайт работает на серверах Ubuntu. Моя первоначальная идея состояла в том, чтобы просто хранить изображения в MySQL (я знаю, как это сделать, и у меня есть рабочие примеры), чтобы все серверы могли читать / писать, но другие люди говорили мне, что это плохая идея, и я должен использовать файловую систему (но не я не хочу использовать местный, так как я не думаю, что это масштаб для больших сайтов).

Ответы [ 2 ]

1 голос
/ 19 апреля 2011

На ум приходят три системы - Mogilefs , Mongodb GridFS и решение для облачного хранения.

MogileFS (OMG Files!) Была разработана для Livejournal и хранит метаданные в Mysql. Он использует его, чтобы найти реальный диск с соответствующим файлом, и выводит его на поток.

MongoDB GridFS намного новее, и, вероятно, легче приступить к работе, особенно для небольшой системы. Он использует новую базу данных NoSql для хранения частей файлов в своей базе данных, собирая их по мере необходимости. Поиск вокруг информации найдет много информации.

Наконец, вы можете просто избежать всей проблемы и просто загрузить изображения в Amazon S3 или Rackspace Cloudfiles . Я делал это раньше (хотя сайт уже работал в системе Rackspace), и это не очень сложно, опять же, с большим количеством примеров.

Для S3 также имеется инструмент командной строки, s3cmd , который можно настроить на синхронизацию (или, что лучше,) загрузку, а затем удалить каталог, полный файлов, в «корзину» S3.

0 голосов
/ 16 апреля 2011

Первое сохранение изображений / больших файлов на самом деле невозможно с MySQL из-за ограничения максимального размера

Цитировать этот ответ Выбор типа данных для MySQL?

MySQL не может работать с любыми данными, размер которых превышает max_allowed_packet (по умолчанию: 1M), если только вы не создадите сложные и интенсивно использующие память обходные пути на стороне сервера. Это дополнительно ограничивает то, что может быть сделано с TEXT / BLOB-подобными типами, и обычно делает тип LARGETEXT / LARGEBLOB бесполезным в конфигурации по умолчанию.

Теперь для совместимости с хранилищами и обновлениями, почему бы просто не хранить их в системе NAS или Raid, на которую вы можете продолжать прикреплять диски. Тогда в вашей БД просто храните путь к файлу. Значительно, чтобы не занимать дБ и обеспечить достаточную масштабируемость.

...