Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Где сохранять картинку в БД или на диске?


Автор: Royan 6.7.2006, 23:39
Вопрос таков. Я пишу ленту новостей (на PHP, поэтому вопрос сюда). Каждой новости будет соответствовать картинка. Небольшая – меньше 100Кб. Следует ли эту картинку сохранять в БД или же следует ее сохранять как файл на диске а в БД держать только ее название?

Почему это меня беспокоит, потому что если сайт будут дергать часто, то пока эти картинки будут "отдаваться" сервером БД будет проходить время + собственно увеличение трафика сервера БД.
Что посоветуете?
 

Автор: RoDeX 7.7.2006, 01:17
Без всяческих вопросов и лишних мыслей знай и помни - картинки всегда надо хранить В ФАЙЛАХ... smile  

Автор: Endeveit 7.7.2006, 15:46
Royan, я за файлы. А вообще делай как тебе удобно, разницы особой нет. И там и там свои плюсы и минусы.
Навскидку:
+ БД: При удалении новости не надо лезть базу и предварительно взяв имя картинки, удалять её и только потом саму новость;
+ Файлов: Просто моё личное мнение о том, что не надо пихать в базу всё подряд. "+" бд с удалением легко обходится путём написания демона, который будет удалять файлы, сведений о которых нет в базе, раз в определённый промежуток времени. 

Автор: BobiKK 7.7.2006, 16:08
Вообще, может я и не прав, но скорость, как козырь MySQL, достигается только при работе с текстом. 

Автор: Kefir 7.7.2006, 17:46
Я обычно храню в файлах. Однако недавно в проекте в одном сделал в базе, т.к. нужна была синхронизация данных (и файлов тоже) на разных серверах. Очень добно - мускульная синхронизация сделала всё за меня. С файлами пришлось бы писать код для синхронизации файлов. 

Автор: Royan 7.7.2006, 22:19
Окей я понял, думаю будут лежать в файлах. Всем спасибо. 

Автор: skyboy 7.7.2006, 23:31
Royan, минус "базового" варианта: если надо поменять местами(мало ли?!) картинки, придётся перебрасывать всё содержимое BLOB-полей, а если в базе только имя файла, то только строка и будет перебрасываться. И ещё: если(это не к новостям, а к подходу как к таковому) у тебя будут связи многие-к-одному? То в базе придётся хранить несколько копий одной и той же картинки! А при работе только с именем файла - будет значительная экономия.  

Автор: mrbig66 14.7.2006, 14:58
Если картинки должны быть доступны не всем, а только определенным лицам, то можно хранить в БД.
Но лучше в БД хранить инфу о картинках, а картинки, как файлы.

И еще...

Представь себе какой у тебя дамп БД получится, упадешь. smile  

Автор: BobiKK 14.7.2006, 15:20
А потом этот дамп восстанавливать... Нечайно сменить кодировки... smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)