Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Большое количество файлов в папке


Автор: dark_religion 26.8.2009, 14:10
Есть 100 тыс картинок. Как их лучше разместить по папкам? И как это влияет на производительность.

Чем отличается поиск файла в папке от поиска папки в папке. 

Если разместить каждый файл в отдельной папке будет быстрее?

Автор: MoLeX 26.8.2009, 14:32
Цитата(dark_religion @  26.8.2009,  14:10 Найти цитируемый пост)
Если разместить каждый файл в отдельной папке будет быстрее? 

100 тыс. папок, да здравствуй самый извращенный метод  smile 

исходим из того что файлы появляются постепенно: каждый месяц - создается новая папка и туда складываются файлы (или же по достижению в папке определенного кол-ва файло создается новая папка)

Автор: Ипатьев 26.8.2009, 14:33
1. зайти на любой сайт с картинками и посмотреть
2. ничем
3. нет

Автор: dark_religion 26.8.2009, 15:27
Кто-то более побробно может рассказать? Ато люди пишут, а есть ли у них какое-то понимание не понятно, когда без объяснений, сложно сделать вывод. 

И вообще ипатьев....думай перед тем как что-то писать.

Если нет разницы между поиском папок и поиском файлов, то какой смысл тогда вообще групировать файлы по каким -то папкам. Даже первокласник знает, что от перестановки слогаемых сума не меняетца....

Ты сочиняешь ужас....бррррррррррррррррррр

Автор: IZ@TOP 26.8.2009, 15:56
dark_religion, существует много разных вариантов. Однако ничего предлагать не буду, поскольку у вас в задаче есть такой пункт, как поиск в файловой системе.
Если бы Вы описали свою проблему несколько конкретнее, мы смогли бы предложить Вам какой-нибудь вариант. 
Обычно файлы хранят в структуре вроде:
1. /storage/yyyy/mm/dd
2. /storage/u/us/user
3. /storage/m/md/md5ofidpart

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

Автор: NewDima 26.8.2009, 16:23
dark_religion, зря на Ипатьева топишь ;) так и есть, с точки зрения операционной системы - разници нет. А вот с точки зрения скрипта, который ищет - есть. Если будешь структурировать все, как сказал IZ@TOP, то выбор поиска будет быстро уменьшаться в разы. Главное грамотно структурировать. А вообще, действительно, опиши задачу и условия подробнее

Автор: dark_religion 26.8.2009, 18:26
Я понял, ну вообщем) ничего на самом деле искать ненадо скриптом) суть в том что есть в папке картинки. и в базе есть путь к этим картинкам. Когда отображается страница, в ней в виде хтмл в конечном счете указаны пути этих картинок. 

Нью дима, так я думал, что файлы ищутся средствами операционной системы. 

Еще я вначале видимо неправильно сформулировал задачу. Искать ничего ненадо. Операционная система ищет. Вопрос в том, как сделать, что бы ей было удобнее искать.

Автор: Pfailed 26.8.2009, 18:57
В некоторых файловых системах (FAT?) количество файлов в одной папке сильно ограничено.

Автор: NewDima 26.8.2009, 19:39
Цитата(Pfailed @ 27.8.2009,  01:57)
В некоторых файловых системах (FAT?) количество файлов в одной папке сильно ограничено.

ага, а еще апач на win 3.1 поставим  smile 

Автор: motorway 26.8.2009, 20:51
Разница может быть в том, что когда заходишь по ftp, если в папке больше нескольких тысяч файлов, будет очень тормозить. Кроме этого, на хостинге бывает лимит по кол-ву файлов

Автор: dark_religion 26.8.2009, 21:10
Так кто-то знает или нет, пока то что я понял, это если нужно, искать какие-то файлы, то если структурированные папки, то исходя из логики нужно посматривать меньшее количество папок и соответственно файлов.


А по поводу оптимизации системы не увидел ни одного ответа. Действительно на счет ограничения по файлам сейчас это роли не играет. Вопрос в другом,  что если содержимое папки выводится 5 секунд, то что будет если пользователей будет больше 100! 

Автор: Dima50 26.8.2009, 21:47
Ты как файлы искать хочешь? По маске имени: *text.txt

Зри в то как устроено хранение файлов в файловой системе.

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

Если файловая система не строит хешей или деревьев от имен файлов и работает прямой перебор. То конечно лучше распихать файлы как
IZ@TOP рассказывал. И написать скрипт формирующий путь к директории из имени файла или даты там файла. Трудоемкость поиска уменьшиться в разы.

ИХМО лучше конечно рассредоточить файлы по директориям. motorway и  Pfailed аргументировали почему.

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

Если почитаешь потом расскажи как файлы хранятся.

Автор: NetJunky 27.8.2009, 00:24
MoLeX, мне твоя идея очень понравилась. У неё есть потенциал и такая реализация делает не столько даже быстрее работу, сколько организованнее. Таким макаром можно хорошо организовать ЧПУ для картинок.

Автор: dark_religion 27.8.2009, 02:25
Очень много, читать надо, что бы понять, как файловая система находит файлы. Я по этому и разместил тему в экспертах, что бы кто-то ответил.  

Объясните кто-то плиз. 

Разве сейчас используются системы которые не хешируют файлы?

Автор: MoLeX 27.8.2009, 05:31
NetJunky, такой способ не новый. его во всю использую некоторые гос. учереждения - отслеживать удобнее

Автор: IZ@TOP 27.8.2009, 12:10
dark_religion, я вас не понимаю. Я вам предложил варианты, которые используются на большинстве хостингов картинок. Например, второй вариант, который я привел, используется на проекте http://photofile.ru. Что такое ваши 100 тыс картинок по сравнению с более чем сотней серверов забитых под завязку, от 500Гб до полутора Тб объемом?

Может быть, вас интересует вопрос того, насколько оптимально считывание определенного файла веб-вервером (nginx-ом например), когда в той же директории находятся еще 1000 файлов? Поверьте, разницы в том, один файл лежит в директории или их миллион - нет. Разумеется, в каждой файловой системе есть свои ограничения на количество элементов в папке (дежавю.. где-то я здесь это уже встречал), но и доводить их количество до абсурда нет необходимости.

Автор: Ипатьев 27.8.2009, 12:27
Цитата(NetJunky @  27.8.2009,  00:24 Найти цитируемый пост)
Таким макаром можно хорошо организовать ЧПУ для картинок. 

интересно, зачем картинкам чпу...

Цитата(dark_religion @  27.8.2009,  02:25 Найти цитируемый пост)
Очень много, читать надо, что бы понять, как файловая система находит файлы. Я по этому и разместил тему в экспертах, что бы кто-то ответил.  

Очень много надо читать, поэтому я спросил, чтобы мне объяснили в двух словах.

иногда форум очень грустно читать

Автор: MoLeX 27.8.2009, 14:37
Цитата(Ипатьев @  27.8.2009,  12:27 Найти цитируемый пост)
иногда форум очень грустно читать 

Так не читай, это дело сугубо добровольное. 

Автор: IZ@TOP 27.8.2009, 14:58
Я предлагаю смотреть позитивно на вещи: лично я очень хорошо повеселился с этой темы, чего и всем советую в подобных случаях  smile 

Автор: dark_religion 27.8.2009, 15:56
Цитата(IZ@TOP @ 27.8.2009,  12:10)
Может быть, вас интересует вопрос того, насколько оптимально считывание определенного файла веб-вервером (nginx-ом например), когда в той же директории находятся еще 1000 файлов? Поверьте, разницы в том, один файл лежит в директории или их миллион - нет. Разумеется, в каждой файловой системе есть свои ограничения на количество элементов в папке (дежавю.. где-то я здесь это уже встречал), но и доводить их количество до абсурда нет необходимости.

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

ОБ этом писал в принципе ипальев, просто ни ты ни он не объяснили) почему нет разницы сколько файлов в папке. По этому, на мнение одного человека не хотелось полагаться.)) Но теперь вас уже больше) Придется поверить)

Автор: IZ@TOP 27.8.2009, 16:02
dark_religion, я не спец по файловым системам. Если ты хочешь узнать именно по какой причине - читай документация по файловой системе которую собираешься использовать.

Вообще, я о таких вещах никогда не задумывался. Вот, например, бэкап файловой помойки в 1.5тб - да, вопрос интересный. А скорость доступа к файлу напрямую - что-то из разряда низкоуровневых систем.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)