Уведомления

Группа в Telegram: @pythonsu

#1 Июль 26, 2011 10:54:57

dissdoc
От:
Зарегистрирован: 2009-12-12
Сообщения: 273
Репутация: +  0  -
Профиль   Отправить e-mail  

Хранение изображений в БД

Всем привет! Это не холивар))) После глубокого изучения MySQL, SQLServer и MongoDB (причем здесь и NoSQL? узнаете позже) пришел к раздумьям и не знаю что делать… Есть изображения - их много. Раньше как делал - в БД хранил ссылку, а картинки на диске.
Теперь, когда появились поля типа BLOB, стал сомневаться - может туда пихать их?
Собственно хочу хранить данные пользователей в БД отдельной, а куда девать изображения не знаю. Имеет смысл в БД аватары хранить или нет?
С условием того, что юзеров переношу в MongoDB, так проще мне в дальнейшем работать.



Офлайн

#2 Июль 26, 2011 13:01:29

masterito
От:
Зарегистрирован: 2011-06-13
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Хранение изображений в БД

Смысла в этом я не вижу. БД для структурированной информации, которой картинка не является.
С этой задачей лучше справится файловая система.



Офлайн

#3 Июль 26, 2011 13:48:46

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Хранение изображений в БД

в MongoDB есть GridFS, только я не знаю есть ли там отдача по http.
а вообще в файловой системе - нормально, тем более их ассортимент.

Офлайн

#4 Июль 26, 2011 17:17:18

dissdoc
От:
Зарегистрирован: 2009-12-12
Сообщения: 273
Репутация: +  0  -
Профиль   Отправить e-mail  

Хранение изображений в БД

Хм..
может я просто уже перемудрил… Файловая система действительно быстрее и проще… =\
Ох моя голова)))) Рукам покоя не дает)



Офлайн

#5 Июль 26, 2011 19:01:45

villager
От:
Зарегистрирован: 2008-11-04
Сообщения: 111
Репутация: +  0  -
Профиль   Отправить e-mail  

Хранение изображений в БД

а если клиент-серверная система на БД MySql, и у клиента нет доступа к сетевым дискам?
как в таком случае поступать?



Офлайн

#6 Июль 26, 2011 19:04:45

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Хранение изображений в БД

А может и не перемудрили. Если у вас большая локалка, или интернет, то база данных в отличии от fs обеспечит передачу файлов клиентам и их кеширование на стороне клиента. Кроме того как и обычно, будет обеспечена транзакционная целостность при изменении контента, и будут более разнообразные возможности при разрешении конфликтов доступа. Если перечисленное не нужно тогда - файловая система лучше. правда но… Если картинок много и они мальенькие (100-200-500 байт как у иконок) тогда накладные расходы fs могут быть значительны. (Например вам нужна база данных отпечатков пальцев всего населения). В этом случае БД тоже может выиграть. (не проверял)



Офлайн

#7 Июль 26, 2011 21:07:14

kachayev
От:
Зарегистрирован: 2011-07-08
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Хранение изображений в БД

doza_and
В этом случае БД тоже может выиграть. (не проверял)
Может, но только в том случае, если она поддерживает асинхронный I/O. В противном случае упретесь в тоже самое. Отсюда mysql и подобные сразу отпадают.



Офлайн

#8 Июль 26, 2011 21:25:33

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Хранение изображений в БД

doza_and
А может и не перемудрили. Если у вас большая локалка, или интернет, то база данных в отличии от fs обеспечит передачу файлов клиентам и их кеширование на стороне клиента. Кроме того как и обычно, будет обеспечена транзакционная целостность при изменении контента, и будут более разнообразные возможности при разрешении конфликтов доступа. Если перечисленное не нужно тогда - файловая система лучше. правда но… Если картинок много и они мальенькие (100-200-500 байт как у иконок) тогда накладные расходы fs могут быть значительны. (Например вам нужна база данных отпечатков пальцев всего населения). В этом случае БД тоже может выиграть. (не проверял)
1) файловую систему легко сделать распределенной
2) маленькие/большие файлы - выберите себе подходящий тип ФС - их десятки
3) “кеширование на стороне клиента” - это не зависит как хранить файлы на сервере
4) “ обеспечена транзакционная целостность” - это зависит о движка и в том и в том случае.

так что все плюсы перекрыты.

тут надо смотреть конкретную базу, как она по скорости, расширяемости, возможность отдачи по http…

Офлайн

#9 Июль 27, 2011 01:06:44

alexandre
От:
Зарегистрирован: 2010-11-16
Сообщения: 104
Репутация: +  0  -
Профиль   Отправить e-mail  

Хранение изображений в БД

Еще есть аналог MongoDB, CouchDB там вообще все просто к каждому документу приатачиваються любые файлы в любом количестве, а при желании эти файлы могут участвовать в запросах. Очень удобно впринцепе.



Отредактировано (Июль 27, 2011 01:08:52)

Офлайн

#10 Июль 27, 2011 09:33:42

Sleepwalker
От:
Зарегистрирован: 2008-07-18
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Хранение изображений в БД

Более того сама CouchDb работает по http протоколу, следовательно картинки можно грузить непосредственно с Couch. Правда не знаю на сколько это хорошо с точки зрения производительности (стоит почитать) но возможность такая есть.



Отредактировано (Июль 27, 2011 09:34:02)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version