Оптимальная архитектура хранения файлов.

Компьютеры программирование

Допустим имеется миллион примерно одинаковых по размеру файлов. Можно разместить их все в одной "папке", можно, допустим в десяти директориях по 100000. В каком случае они быстрее будут находиться системой? Существует ли какой нибудь алгоритм оптимизации?

Примечание:
СКВ, при большом количестве обращений, я думаю, да.

Примечание:
То, что в разных папках быстрее тоже не факт. Если взять крайний случай: миллион папок по одному файлу, я думаю не быстрее будет поиск, чем в случае с одним каталогом. Существует, видимо, оптимальное сооотношение количества папок и файлов в них.

Примечание:
dr.5y51em, индексация по какому параметру?

Примечание:
_enemy_, считаете, что добавление sql сервера ускорит процесс? Мне кажется, нет.

Примечание:
azlibr, а какая ОС у вас?
Ответы:
Зависит от файловой системы. Например, на FAT (FAT16, FAT32 etc.) при миллионе файлов в одном каталоге поиск нужного файла затянется очень надолго, ибо надо будет последовательно перебрать все имена в поисках нужного.
В NTFS же файлы отсортированы по имени, поэтому доступ будет на порядок быстрее (бинарный поиск рулит)...
Системой будут находиться быстрее, конечно при хранении в разных папках. Но так ли уж критично время системного поиска файла?
В вашем случае существенно поможет индексация. Затем поиск по идентификатору, извлечение пути и обращение к самому файлу, это в несколько раз быстрее, чем перебирать всю файловую систему.
sql server + blob поля, не?
Индексация как правило подразумевает под собой некую базу данных, выбор за вами какая. Заводите в ней таблицу типа:
______________________________________________________________________
I id I Имя_файла I Путь I Дата_создания I Размер I Другие_нужные_Вам_данные I
---------------------------------------------------------------------------------------------------------------------------
|23 I Отдых        IC:\img\отдых.jpg | xx.xx.xxxx | 3 Мб | ........................................I
--------------------------------------------------------------------------------------------------------------------------
Для такого количества файлов нужно разбивать на каталоги, в каждом каталоге должно быть не более 3000 файлов (определено опытным путем) . Индексирование не влияет на скорость открытия файлов, оно влияет на время поиска. Но при таком количестве файлов процесс индексирования будет жрать все процессорное время. Так что я у себя его отключаю. Кроме того индекс будет занимать достаточно много места.


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.