Файл можно хранить в папках

Файл можно хранить в папках

Есть несколько десятков тысяч мелких файлов, которыми не так часто пользуюсь по работе.

Как эффективно организовать хранение данных на компьютере, чтоб они не влияли на скорость системы и увеличили срок службы жёсткого диска? Архивировать или в папку?

Есть несколько десятков тысяч мелких файлов, которыми не так часто пользуюсь по работе.

Как эффективно организовать хранение данных на компьютере, чтоб они не влияли на скорость системы и увеличили срок службы жёсткого диска? Архивировать или в папку?

Как известно в одной папке не стоит хранить большое количество файлов т.к. очень быстро может произойти сбой в системе или попросту файлы будут очень медленно считываться.

Для решения этой задачи многие программисты берут md5 имени файла f789f789abc898d6892df98d09a8f8, после чего разбивают имя примерно таким образом:

/f7/89/f789abc898d6892df98d09a8f8.jpg

Математика тут очень проста — один символ это 16 вариантов.
Таким образом 2 символа это уже 16*16=256 вариантов.
В нашем случае у нас 2 вложенности по 2 символа, таким образом максимальное количество папок будет 256*256=65536 папок.
Если нам потребуется сохранить 1000000 файлов то число файлов в каждой папке не превысит 1000000/65536=15 файлов.

Да, вариант прост, но что если нам требуется не только хорошо сохранять файлы, но и еще быстро их находить?

Например у нас социальная сеть и мы хотим для каждого пользователя создать отдельную папку с номером его id и хранить в ней файлы которые в свою очередь тоже имеют свой id.
И для нас важно не только сохранить файл но и быстро найти где он лежит по его id.

Для решения этой задачи я написал класс, который позволяет сохранять на сервере большое количество файлов или папок в древовидной структуре папок.

Читайте также:  Oukitel k6000 plus 4pda

Вот какую структуру создает класс:

Чтобы посчитать максимально число файлов которое уместится в этой структуре нужно возвести максимальное количество файлов в папке в степень количества ветвей плюс один.

На изображении мы видим 2 ветви и по 3 файла в каждой папке.
Таким образом 3 нужно возвести в степень 2+1 = 3*3*3=27 файлов.

Для сохранения не более 1000000 файлов в такой структуре нам хватит 2 ветви по 100 файлов в каждой папке (100*100*100).

В класс нужно передать массив параметров — путь к папке где будет строиться дерево, максимальное число файлов в папке, число ветвей, либо можно применить паттерн (параметр pattern) максимального числа файлов, который уже был заранее просчитан — bigint, int, mediumint, smallint:

Для варианта социальной сети описанной выше, требуется 2 раза использовать класс: вначале для построения дерева папок, потом для построения в каждой папке дерева для файлов.

Так же обращаю ваше внимание, что в этом посте я опустил (а не не знал) тему «Максимально допустимое количество файлов на жестком диске».

Ссылка на основную публикацию
Установить программу для сканирования документов бесплатно
Загрузите бесплатно пробную полнофункциональную версию программы для сканирования Scanitto Pro. Данная версия работает без каких-либо ограничений в течение 30 дней....
Террария мешок с сюрпризом
Мешок с сокровищамиTreasure Bag Характеристики Тип Мешок Подсказка Открывать правой кнопкой мыши Редкость Внутренний ID предмета: 3318-3332 Эксклюзивный контент ПК...
Термопринтер для печати чеков
Термопринтер для чеков — это печатное устройство, которое применяется в торговле и ряде других сфер. Большинство моделей являются стационарными и...
Установить протокол mtp media transfer protocol
Описание Компания Microsoft содержит под своим крылом множество драйверов, среди этой коллекции находится и Media Transfer Protocol, тот самый драйвер,...
Adblock detector