Я занимаюсь разработкой веб-сайта, который может вырасти до нескольких тысяч пользователей, и все они будут загружать до десяти фотографий на сервере. Мне интересно, какой будет лучший способ хранения изображений. Предположим, что у меня есть 5000 пользователей с 10 картинками каждый, что дает нам 50 000 фото. (Я думаю, было бы неплохо хранить их в базе данных в blobs;))Организация тысяч изображений на сервере
Будет ли это хороший способ динамически создавать каталоги для каждых 100 пользователей, зарегистрированных (всего 50 гигабайт, при условии, что 5000 пользователей), и загружать их фотографии там? Будет ли соглашение об именовании «xxx_yy.jpg» (xxx - идентификатор пользователя и номер изображения yy) в порядке? В этом случае, однако, в одной папке было бы 1000 изображений (100x10), разве это не слишком много?
что будет преимуществом как иметь их в нескольких каталогах как сбалансированное дерево? Я помню кое-что о реализациях хэш-таблицы с несколькими ведрами из одного из моих классов компьютерных наук, но я не помню этого преимущества. – Hortinstein
Если вы их хэшировали, у вас уже есть довольно хорошая гарантия распространения имен файлов, поэтому балансировка, вероятно, не нужна. Вы можете просто индексировать в набор дисков ....Например, файл с hash '202cb962ac59075b964b07152d234b70' сохраняется в файле /20/2c/202cb962ac59075b964b07152d234b70.jpg. Но все это повторяет то, что уже делают структуры B-Tree в файловой системе. –
@Hortinstein: Этот вид советов возник, когда каталог inodes был линейным связанным списком содержимого каталога, и ему нужно было пройти, чтобы найти какое-либо конкретное имя файла. Для борьбы с этим вы поместите 16 каталогов в /, затем еще 16 под каждым из них и т. Д. Как и в случае с любым другим деревом, если ваши имена файлов были в порядке AAAAAAAA, AAAAAAAAB и т. Д., Вы бы наполнили "/A/A/A "полный каталог и оставил каталог"/Z "пустым ... Но это мало смысла в 2010 году, когда файловые системы имеют структуры каталогов B-Tree. –