Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: как лучше хранить файлы на сервере?

Сообщения:  [1-10]   [11-13] 

 
 автор: glsv (Дизайнер)   (08.06.2008 в 21:18)   письмо автору
 
   для: Trianon   (08.06.2008 в 14:07)
 

>Но даже если рассматривать лишь первые обращения, каталог не читается целиком. Читаться будут лишь те страницы его B+ дерева, которые ведут к конкретному элементу каталога.

Хм... не все файловые системы используют B-деревья. Так, например, ext3 - до сих пор самая популярная в Linux B-деревья не использует. И если заранее не известно где будет работать код, то нужно от этого подстраховаться.

>>И самых наглядных примеров - открытие директории (листинг) по FTP. От нескольких >Получение листинга - операция не элементарная (как открытие файла), а массовая.

Все так, но минусы большого кол-ва файлов в одной директории иллюстрирует.

   
 
 автор: SportSoft   (08.06.2008 в 17:49)   письмо автору
 
   для: а-я   (07.06.2008 в 23:30)
 

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

   
 
 автор: Trianon   (08.06.2008 в 14:07)   письмо автору
 
   для: glsv (Дизайнер)   (08.06.2008 в 12:03)
 

>>Это было актуально лет 5-10 назад, во времена FAT32 .
>Безотносительно файловых систем - чем меньше файлов в директории - тем лучше. Так как чтение директории производится не только при ее листинге, но и при любом обращении к файлу внутри ее.
Не при любом. При первом. Дальше данные будут взяты из кеша.
Но даже если рассматривать лишь первые обращения, каталог не читается целиком. Читаться будут лишь те страницы его B+ дерева, которые ведут к конкретному элементу каталога.

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


>Недаром прокси-сервера (тот же SQUID) используют многоуровневую структуру для хранения кеш-файлов.
Верно. Но разработка SQUID начиналась еще тогда, когда в массе своей применялись Ф/С, хранящие элементы каталогов в списках, а не в деревьях.


>И самых наглядных примеров - открытие директории (листинг) по FTP. От нескольких десятков тысяч файлов - и с открытием такой директории будут большие проблемы. Процесс начинает есть и CPU и память и продолжается это достаточно долго - больше, чем терпение у пользователя.

Получение листинга - операция не элементарная (как открытие файла), а массовая.
Она сопряжена с чтением всего каталога, а в случае с FTP (кстати не только с FTP: ls от ls -la тоже отличается разительно) - еще и с массовым чтением метаданных файлов (т.е. не только имен, которые можно взять тут же в каталоге, но и атрибутов, меток времени,идентификаторов владельца и группы и пр. Понятно, что массовая операция будет жрать все ресурсы пропорционально объему каталога, да еще и напрочь устраняя эффект кеширования. Потому как кеш оправдан там, где из всей массы обращения идут лишь в малую часть её.

>>А усложнение логики работы скрипта может аукнуться ошибками в его коде.
>Если количество файлов исчисляется десятками/сотнями тысяч и более, то усложнение работы скрипта того стоит.

Конечно, положительный эффект будет. Но не при работе скрипта.
Возиться руками по FTP / SSH с таким ресурсом будет куда приятнее.

   
 
 автор: glsv (Дизайнер)   (08.06.2008 в 12:08)   письмо автору
 
   для: а-я   (08.06.2008 в 09:48)
 

>100файлов
Можно больше. Оставляйте 100 только если вдруг захотите сами глазами просматривать такие директории.

   
 
 автор: glsv (Дизайнер)   (08.06.2008 в 12:06)   письмо автору
 
   для: cheops   (08.06.2008 в 11:36)
 

На своем сервера - закешироваться может. Но на сервере где много пользователей - неизвестно сколько этот кэш проживет.

   
 
 автор: glsv (Дизайнер)   (08.06.2008 в 12:03)   письмо автору
 
   для: Trianon   (08.06.2008 в 11:11)
 

>Это было актуально лет 5-10 назад, во времена FAT32 .
Безотносительно файловых систем - чем меньше файлов в директории - тем лучше. Так как чтение директории производится не только при ее листинге, но и при любом обращении к файлу внутри ее. Разумеется, реальное влияние это параметра будет только на большом количестве файлов.

Недаром прокси-сервера (тот же SQUID) используют многоуровневую структуру для хранения кеш-файлов.

>А усложнение логики работы скрипта может аукнуться ошибками в его коде.
Если количество файлов исчисляется десятками/сотнями тысяч и более, то усложнение работы скрипта того стоит.

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

   
 
 автор: cheops   (08.06.2008 в 11:36)   письмо автору
 
   для: Trianon   (08.06.2008 в 11:11)
 

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

   
 
 автор: Trianon   (08.06.2008 в 11:11)   письмо автору
 
   для: glsv (Дизайнер)   (08.06.2008 в 06:28)
 

>Большое кол-во файлов в директории увеличивает время доступа к этой директории на уровне операционной системы. Поэтому используют многоуровневое дерево директорий.

Это было актуально лет 5-10 назад, во времена FAT32 .
Современные файловые системы таких проблем не имеют.
А усложнение логики работы скрипта может аукнуться ошибками в его коде.

   
 
 автор: ddhvvn   (08.06.2008 в 10:26)   письмо автору
 
   для: а-я   (08.06.2008 в 09:48)
 

Логично предположить, что столько же, сколько и файлов! =)
Хотя может я ошибаюсь...

   
 
 автор: а-я   (08.06.2008 в 09:48)   письмо автору
 
   для: а-я   (07.06.2008 в 23:30)
 

Спасибо за советы...

решил делать как зайцы.

допустим ID-файлы: 12345
тогда путь к файлу будет: files/123/12345.xxx

так в одной папке будет где-то 100файлов, но тогда в папке `files` будет очень много подкаталогов. это нормально???

т.е. в одной папке сколько лучше создавать подпапок?

   

Сообщения:  [1-10]   [11-13] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования