Обычное сохранение изображения или mySQL blob?

Я программирую веб-приложение php / mysql, которое вроде как платформа для ведения блога, где люди могут загружать фотографии и публиковать их.

Каков наилучший способ хранения этих изображений, Хранение их в папке или в таблице mySQL через BLOB?

я спрашиваю об этом, потому что мне нужен самый простой способ, который позволяет мне легко перемещаться на другой хост / сервер, не тратя дней на загрузку всех размещенных изображений и загружать их на новый сервер.

Необязательный вопрос: достаточно ли выделенного сервера для платформы для ведения блогов?

благодаря

Solutions Collecting From Web of "Обычное сохранение изображения или 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.