[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Файлы в папках и их количество
Master812
Всем привет!
Пишу свой движок, сейчас остановился на менеджере файлов. Реализовал его просто - в каждую папку записывается не более 1000 файлов. Если это число превышено, то создаётся вторая папка и в неё тоже записывается 1000 файлов, затем третья папка, четвёртая и так далее до 1000 папок. В сумме в такую систему можно воткнуть до 1 миллиона файлов. Но вот вопрос: не будет ли тормозов от такого количества? И сколько вообще папок можно создавать, чтобы сервер не тормозил? Мощность сервера средняя.
Жду ответа.
С уважением, Алексей.
AllesKlar
В FAT32 максимальное количество файлов на логическом диске 4,194,304.

В NTFS максимальное количество файлов на логическом диске 4,294,967,295.

В ext4 максимальное количество файлов на логическом диске до 4,294,967,295 (указывается при создании ФС).

Производительность зависит от ОС.
1000 файлов в папке - это незаметно для любой ОСи.
У меня на дебиане, после ~2Mio файлов в папке перестали работать маски типа ls image*.*
Пришлось строить иерархию каталогов типа файл 123456789.jpg лежит в /123/456/123456789.jpg
Фактически получилось, что в каждой папке не более 1000 файлов/каталогов.
Полет нормальный.

_____________
[продано копирайтерам]
depp
Master812
так и делай. хорошее решение. иначе при большом кол-ве файлов в одной папке - тормоза жуткие.
waldicom
Думаю, что подход AllesKlar'а эффективнее - файл с определенным именем всегда будет лежать по определенному пути. Можно вообще брать md5 файла и строить папки по нему

_____________
Свои мозги еще никто не отменял.
Телепатов нету.
AllesKlar
Цитата (waldicom @ 25.10.2017 - 10:02)
Можно вообще брать md5 файла и строить папки по нему

Это сейчас как раз в разработке.
Минус подхода - нужно хранить md5 суммы файлов, при попытке поиска файла по имени.
Плюс подхода - в системе не будет двух одинаковых файлов. Т.е., если два пользователя загрузили в разное время один и тот же файл, даже под разными именами, то фактически будет перелинковка имен файлов к одному физическому файлу.

_____________
[продано копирайтерам]
FatCat
Цитата (AllesKlar @ 25.10.2017 - 00:16)
Пришлось строить иерархию каталогов типа файл 123456789.jpg лежит в /123/456/123456789.jpg
Фактически получилось, что в каждой папке не более 1000 файлов/каталогов.

Аналогияно у нас на форуме предусмотрено хранение сообщения не в БД, а в файле.
Айдишник твоего сообщения 3135069, значит его адрес после архивирования будет /arc/3/135/69.gz

_____________
Бесплатному сыру в дырки не заглядывают...
Master812
Спасибо всем за советы!

Доработал свой скрипт, а именно сделал в нём папки второго уровня вложенности, т.е. теперь в 1-ом уровне может находится 1000 папок, далее в них самих (во 2-ом уровне вложенности) может находиться ещё 1000 папок и в них уже находятся файлы в количестве до 1000 штук. Итого 1000*1000*1000 = 1 миллиард файлов! smile.gif
При этом сохраняется название файлов. А сами папки естественно имеют нумерацию.
При загрузке адрес файлов будет таков

site.ru/files/1/1/Бухгалтерские_документы.doc

Где зелёным помечена папка 1-ого уровня, а красным - второго уровня.
Быстрый ответ:

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