[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Разбиение изображений по подкаталогам
Forever
Сегодня прочел несколько статей о том, как нужно реализовывать хранение большого количества изображений на сервере. Ввиду того, что я новичок в веб-програмировании, то эти статьи не прояснили мне ситуацию, а наоборот, завели в еще большие дебри и навели на кучу новых вопросов. И вот на эти вопросы надеюсь получить ответы на этом форуме.

Наверное, для вас эти вопросы могут показаться абсурдными, поэтому я готов принять все летящие помидоры .

Так вот. Отрывок из одной статьи (ссылка на статью):

Цитата
Ошибка номер 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_izobrajeniya1.jpg
photos/user_1/ha/sh/hash_izobrajeniya1.jpg
photos/user_1/ha/sh/hash_izobrajeniya1.jpg

Объясните пожалуйста, чем эти два способа отличаются? Как наличие двух подпапок во втором случае дают все эти самые бонусы из статьи?
depp
листинг папок меньше времени будет занимать - меньше будет тормозить.
kaww
Цитата (Forever @ 9.03.2016 - 08:59)
зачем нужна промежуточная папка 89

Цитата (Forever @ 9.03.2016 - 08:59)
и статистически количество файлов в каждой конечной подпапке будет делиться на 65 тысяч.

Чтобы сократить количество файлов в каталоге. Т.е. при структуре хранилища
/ f7 / f789abc898d6892df98d09a8f8.jpg
в каждую папку будет попадать каждый 256-ой файл (256^1)
при
/ f7 / 89 / f789abc898d6892df98d09a8f8.jpg - каждый 65536-ой (256^2)
Цитата (Forever @ 9.03.2016 - 08:59)
3) И вот тут совсем жесть для меня:

Т.к каталогов может быть от 00 до ff (т.е. от 0x00 до 0xff, что в пересчете из шестнадцатеричной системы счисления в десятичную дает от 0 до 255)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.