Сегодня прочел несколько статей о том, как нужно реализовывать хранение большого количества изображений на сервере. Ввиду того, что я новичок в веб-програмировании, то эти статьи не прояснили мне ситуацию, а наоборот, завели в еще большие дебри и навели на кучу новых вопросов. И вот на эти вопросы надеюсь получить ответы на этом форуме.
Наверное, для вас эти вопросы могут показаться абсурдными, поэтому я готов принять все летящие помидоры .
Так вот. Отрывок из одной статьи http://epsiloncool[dot]ru/programmir[dot][dot][dot]lichestva-fajlov :
Цитата:Ошибка номер 3: сваливать все изображения в одну папку.
Почему и как быть? => Некоторые операционные системы (и Linux тоже) начинают сильно тормозить при доступе в папку, в которой хранится 100 тысяч файлов и более. Идеально, если в каждой папке будет не больше 1000 файлов.
Вот как можно поступить. Для уменьшения количества файлов в каждой папке необходимо делить их по разным подпапкам, в частности, если имя файла сгенерировано через MD5, то можно поступить следующим образом
/ f7 / 89 / f789abc898d6892df98d09a8f8.jpg
Вы видите, что первый уровень подпапки повторяет первые 2 символа имени файла, а второй — следующие два символа. Количество уровней при желании можно увеличивать.
Это гарантирует количество подпапок в каждой папке не более 256 штук, и статистически количество файлов в каждой конечной подпапке будет делиться на 65 тысяч. То есть, при количестве файлов 1 миллион в каждой подпапке окажется по 10-20 файлов. Три уровня вложенности делят это количество на 16 миллионов, чего должно хватить для любых нужд.
И вот чего я не понял:
1) Если в одной папке накопится более 1000 подпапок, то это равносильно наличию 1000 файлов в этой папке? И если да, то какой тогда смысл в подпапке для каждого файла?
2) Цитата:/ f7 / 89 / f789abc898d6892df98d09a8f8.jpg - зачем нужна промежуточная папка 89? Это ведь просто лишнее звено .
3) И вот тут совсем жесть для меня:
Цитата:f7 / 89 / f789abc898d6892df98d09a8f8.jpg - Это гарантирует количество подпапок в каждой папке не более 256 штук.
- почему?
Цитата
и статистически количество файлов в каждой конечной подпапке будет делиться на 65 тысяч.
- почему?
4)
К примеру, я делаю все простым способом без разбиения на подпапки:
создаю основную папку photos, в ней подпапки для каждого пользователя. В каждой подпапке сохраняю все фотографии этого пользователя. Вроде как
photos/user_1/img0.jpg
photos/user_1/img1.jpg
photos/user_1/img2.jpg
Или делаю, как написано выше:
photos/user_1/ha/sh/hash_izobraj eniya1.jpg
photos/user_1/ha/sh/hash_izobrajeniya1.jpg
photos/user_1/ha/sh/hash_izobraj eniya1.jpg
Объясните пожалуйста, чем эти два способа отличаются? Как наличие двух подпапок во втором случае дают все эти самые бонусы из статьи?
|