C
C
Cyril2016-05-24 15:05:13
MySQL
Cyril, 2016-05-24 15:05:13

What is the best way to store photo data?

When developing one system, I wondered how best to store photos.
Everything is banal as always - there is a user page (card). He has a photo. He can download it, change it, delete it.
What is the best way to store these photos? Write a link to a photo in the file system in the photo_url field of the users table , or create a BLOB field that will contain the photo?
Thank you.

Answer the question

In order to leave comments, you need to log in

2 answer(s)
M
Maxim Fedorov, 2016-05-24
@belyaevcyrill

лучше хранить только ссылку на фотографию - это более гибко и оптимальнее по производительности. Приведу простой пример: допустим нужно вывести информацию о 30 пользователях списком с фотографиями, если использовать ссылки вот что мы получим:
1. У нас будет возвращать из базы минимальный объем данных (блоб поля сильно увеличивают вес записи)
2. Мы сможем при необходимости удобно сортировать, выбирать данные по URL, в отличии от BLOB
3. В случае веб-ресурса - мы сможем кешировать картинки, blob-поле полноценно этого не позволит зделать
4. Опять таки в случае веб-ресурса, мы можем разместить эти картинки на 100500 серваках, что бы распределить нагрузку, (а blob этого не позволит сделать)

S
Sumor, 2016-05-25
@Sumor

Я приведу преимущества хранения в БД перед хранением ссылок:
1. Данные и фото хранятся в одном месте - в БД. При перемещении БД на другой сервер перемещается вся база с фотографиями. В случае хранения ссылок вы данные и фотографии перемещаете отдельно и после перемещения вам нужно будет обновить ссылки в новой БД.
2. Положенная в БД фотография доступна всегда. В случае ссылок на другие ресурсы они могут оказаться недоступными. Их могут удалить, переместить, переименовать, так как не очевидно, что на эти фотографии есть ссылки из какой-либо БД.
3. Транзакционность. При добавлении/изменении фото, если у вас случится проблема посередине процесса, то запись не будет добавлена/обновлена. В случае хранения ссылок может оказаться, что файл будет добавлен, а запись в БД не сохранится или наоборот запись в БД обновится, а сохранение файла не пройдёт.
4. Из 2 и 3 вытекает необходимость, в случае хранения ссылок, периодически проверять соответствие между ссылками и файлами.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question