Onatskyi
@Onatskyi

Хранение аватарок в БД, что скажете?

Здравствуйте!
Возникла идея хранить аватарки пользователей не файлами, а в базе, в base64. Хочу таким образом уменьшить количество запросов на сервер, и общее количество файлов (так как на хостинге есть ограничение на колво файлов). Да и в принципе морочить голову с архитектурой не охота. При этом аватарки имеют размер около 10-20 кб в размере (в base64). Так от интересно, какие есть при таком подходе подводные камни?? Сильно ли возрастет нагрузка на базу, и стоит ли оно того? И второй вопрос, если хранить авки в бд, то в отдельной таблице, или можно сразу в таблицу с пользователями колонку добавить.

Заранее спасибо за помощь!
  • Вопрос задан
  • 2603 просмотра
Решения вопроса 2
landergate
@landergate
IT-шный jack-of-all-trades
Хочу таким образом уменьшить количество запросов на сервер

Это не уменьшит количество клиентских запросов на веб-сервер. Запросов останется такое же количество, просто источником данных для выдачи станет не диск, а СУБД.
В большинстве случаев, обращение к диску дешевле, чем обращение к СУБД.

Для уменьшения количества клиентских запросов на веб-сервер, можно:
  • Перенести изображения на внешний CDN/облачное хранилище: Amazon S3 или Openstack Swift у большинства облачных провайдеров.
  • Перенести изображения на ещё один веб-хостинг, используя его исключительно для публикации изображений.
Ответ написан
Комментировать
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Во-первых, если уж хранить изображения в БД, то не в base64, а в виде BLOB'ов. Во-вторых, это не уменьшит количество запросов к серверу, а наоборот увеличит нагрузку на бэкенд и БД.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@D3lphi
Никогда так не делайте. Файлы нужно хранить в файловой системе, она с этим справляется лучше, так как предназначена для этого. Файлы в БД не хранят. Складывайте в базу путь к файлу, но не сам файл. Это будет гораздо эффективнее.
Ответ написан
Комментировать
profesor08
@profesor08
так как на хостинге есть ограничение на колво файлов

вали с этого хостинга, если там именно такое ограничение.

Статическому контенту, вроде картинок, не место в бд. Со статикой хорошо и быстро справляется веб сервер и для этого ему не нужен ни пхп, ни что либо еще. Если ты запихнешь их в бд, то по мимо веб сервера будет дергаться и пхп и бд. Скорость упадет в разы.
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
1) Оверхед при хранении в базе64 порядка 30%. то есть + 30% к траффику, а учитывая п. 2 - еще больше.
2) Кеш браузера не работает с базе64 картинками(и замечательно работает с картинками в файлах).
3) Файлы храните в файлах.
4) Жметесь на количество файлов и место - граватар.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы