Все крупные сайты не сохраняют изображения в базу данных они хранят их на диске.
Они сохраняют ссылку на положение картинки в таблице. А потом ссылку оттуда.
Почему? Производительность.
Извлечение тяжелого контента из базы данных является огромным узким местом для производительности. А базы данных не так хорошо масштабируются по горизонтали, что означало бы еще большую проблему. Все большие сайты используют фермы статического контента для работы со статическим контентом, таким как изображения. Это серверы, которые не будут заботиться о вашей личности.
Как они могут сохранять конфиденциальность фотографий, спросите вы? Они не.
Ссылка на изображение сама по себе является адресом и паролем. Давайте возьмем Facebook, например. Если я сохраню личную фотографию в моем аккаунте, вы не сможете ее открыть. Но пока у вас есть правильный адрес, вы можете.
Это частное изображение . Обратите внимание на имя файла
10400121_87110566301_7482172_n.jpg
(время от времени Facebook изменяет URL, поэтому ссылка может быть неработающей)
Это не последовательно. Единственный способ получить изображение - узнать его адрес.
Основываясь на предыдущей фотографии пользователя, вы не можете угадать следующую.
Он обладает огромной энтропией, поэтому даже если вы начнете делать случайные дикие предположения, у вас будет большое количество сбоев, и, если вы дойдете до картинки, вы не сможете оттуда понять личность владельцев, которая, сама по себе защита анонимности.
Редактировать (почему не следует хранить изображения в папке «username»:
После вашего редактирования стало ясно, что вы намерены поместить файлы на диск, а не в базу данных. Это редактирование охватывает новый сценарий.
Несмотря на то, что ваша логика (создание папки на пользователя) выглядит более организованной, она создает проблемы, когда у вас много пользователей и много картинок. Представьте, что на ваших серверах есть 1T дискового пространства. И давайте также представим, что 1T более или менее точен с нагрузкой, которую может выдержать сервер.
Теперь у вас есть 11 пользователей, предположим, что они начинают загружать одновременно, и каждый будет загружать более 100 ГБ файлов. Когда они достигают 91 ГБ каждый сервер заполнен, и вы должны начать хранить изображения на другом сервере. Если следовать этой структуре пользователя / папки, вам придется выбрать одного из пользователей и перенести все его данные на другой сервер. Кроме того, это накладывает жесткие ограничения на пользователя, который не может загружать в файлы более 1 т.
Должен ли я хранить все файлы в одной папке, тогда?
Нет, большие сайты обычно хранят файлы в последовательных папках (/ 000001 /, / 000002 / и т. Д.), Имеющих определенное количество файлов x в папке. В основном это связано с проблемами производительности файловой системы.
Подробнее о сколько файлов в каталоге слишком много?