2010-02-07 6 views
4

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

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

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

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

Благодаря

+0

Есть много более или менее дубликатов в stackoverflow, некоторые более агенты, специфичные для базы данных, более конкретно, например. http://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay В большинстве случаев из-за базы данных предпочтительнее, но есть некоторые, которые могут объяснить причины, по которым они хранятся в базе данных. Где-то между ними (хотя и опираясь на сторону базы данных) находятся механизмы вне очереди, такие как тип данных FileStream в sql-сервере, см. Http://msdn.microsoft.com/en-us/library/bb933993.aspx. Эти обсуждения, скорее всего, продолжайте вечно. – VolkerK

ответ

5

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

1

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

0

В моих веб-приложениях я хранил двоичные файлы из базы данных. Реализация более сложная, но база данных - это сохранение пространства.

0

Сохранить их в виде файлов:

  • Это быстрее.

  • Вы можете обрабатывать файлы (копирование на другой сервер) без доступа к базе данных.

С умным дизайном приложения вы можете даже избежать доступа к базе данных по этим изображениям. Кэшированный шаблон обращается к изображениям или с умными именами файлов.

3

Если вы предоставляете хостинг статических файлов, вам может потребоваться отключение файлов с CDN, таких как Amazon S3. Реализация - большая работа, но вам не придется беспокоиться о перемещении файлов, если вы меняете веб-хосты (если вы не меняете поставщика cdn). Плюс доступ к файлам будет локализован для клиента и даже не понадобится поражать ваш веб-сервер для большинства запросов, тем самым уменьшая использование полосы пропускания.

1

Если это изображения - база данных. Производительность может быть такой же хорошей, как файловая система, особенно если вы извлекаете файл вместе с именем файла и сохраняете целостность данных, что гораздо важнее производительности по крайней мере для бизнес-приложений и обычных веб-сайтов (т. Е. Не youtube, gmail, microsoft.com и т.д.)

здесь больше по теме: http://sietch.net/ViewNewsItem.aspx?NewsItemID=124

Одна вещь, которую вы должны проверить и исследовать себя, как MySQL обрабатывает сгустки. Если бы это был SQL Server или Oracle, я уверен, что они неплохо справляются с блобами и особенно специальными типами filestream и bfile. У меня нет опыта работы с MySQL и я не знаю, может ли он обрабатывать более нескольких мегабайт капли.

0

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

Вместо этого у меня есть папка, содержащая все загруженные файлы, с базой данных и объектом, которая связана с загруженными файлами, а не просто сохраняет их «как есть». Вместо этого я сохраняю имя файла, соответствующая контрольная сумма MD5 (или SHA-1) вышеупомянутого файла, которая довольно хорошо устраняет дубликаты загрузок и сокращает накладные расходы - require(); более эффективен, чем сброс данных из db.

Смежные вопросы