Я программирую веб-приложение php / mysql, которое вроде как платформа для ведения блога, где люди могут загружать фотографии и публиковать их.
Каков наилучший способ хранения этих изображений, Хранение их в папке или в таблице mySQL через BLOB?
я спрашиваю об этом, потому что мне нужен самый простой способ, который позволяет мне легко перемещаться на другой хост / сервер, не тратя дней на загрузку всех размещенных изображений и загружать их на новый сервер.
Необязательный вопрос: достаточно ли выделенного сервера для платформы для ведения блогов?
благодаря
Из базы данных. Когда он выходит из базы данных, ваш веб-сервер может выполнять свою работу и заставлять клиентов кэшировать изображения. Выполнение этого с помощью динамического образа, управляемого базой данных, является более сложным. Кроме того, вы обнаружите, что вы, вероятно, получите гораздо лучшую производительность, позволяя веб-серверу справляться с этим.
Если вы предоставляете хостинг статических файлов, вам может потребоваться отключение файлов с CDN, таких как Amazon S3. Реализация – большая работа, но вам не придется беспокоиться о перемещении файлов, если вы меняете веб-хосты (если вы не меняете поставщика cdn). Плюс доступ к файлам будет локализован для клиента и даже не понадобится поражать ваш веб-сервер для большинства запросов, тем самым уменьшая использование полосы пропускания.
Лучший способ – хранить изображения в каталоге и хранить только имя изображения в базе данных. Таким образом, база данных не станет огромной и будет более удобной для обслуживания …
Если это изображения – база данных. Производительность может быть такой же хорошей, как файловая система, особенно если вы извлекаете файл вместе с именем файла и сохраняете целостность данных, что гораздо важнее производительности по крайней мере для бизнес-приложений и обычных веб-сайтов (т. Е. Не youtube, gmail, microsoft.com , и т.д.)
подробнее об этой теме: http://sietch.net/ViewNewsItem.aspx?NewsItemID=124
Одна вещь, которую вы должны проверить и исследовать самостоятельно, – это то, как MySQL обрабатывает капли. Если бы это был SQL Server или Oracle, я уверен, что они неплохо справляются с блобами и особенно специальными типами filestream и bfile. У меня нет опыта работы с MySQL и я не знаю, может ли он обрабатывать более нескольких мегабайт капли.
В моих веб-приложениях я хранил двоичные файлы из базы данных. Реализация более сложная, но база данных – это сохранение пространства.
Сохраните их как файлы:
Это быстрее.
Вы можете обрабатывать файлы (копирование на другой сервер), даже не обращаясь к базе данных.
Благодаря продуманному дизайну вашего приложения вы даже можете избежать доступа к базе данных по этим изображениям. Кэшированный шаблон обращается к изображениям или с умными именами файлов.
Не используйте базу данных – используйте файловую систему. У меня была такая же проблема, я пробовал оба подхода и, честно говоря, было слишком много проблем с использованием db как двоичного хранилища данных.
Вместо этого у меня есть папка, содержащая все загруженные файлы, с ссылочной базой данных и объектом, которая связана с загруженными файлами, но вместо того, чтобы просто хранить их «как есть», вместо этого я сохраняю тогда, когда имя файла соответствует соответствующему MD5 (или SHA-1) контрольной суммы вышеупомянутого файла, что довольно хорошо устраняет дублирование загрузок и сокращает накладные расходы – require (); более эффективен, чем сброс данных из db.