URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 7109
[ Назад ]

Исходное сообщение
"Хранение картинок"

Отправлено mef , 09-Янв-11 13:12 
Есть связка nginx+Apache. Размер картинок не более 50кб каждая. Количество 100-200 тыс, периодически меняются. Решено хранить в базе только названия файлов, а сами файлы в файловой системе. Имеет ли смысл делать поддиректории или можно хранить все в одной? На сколько это критично с точки зрения производительности?
Если разбивать на поддиректории, то по сколько файлов в каждой или может быть есть другой принцип разбития?

Содержание

Сообщения в этом обсуждении
"Хранение картинок"
Отправлено Аноним , 09-Янв-11 18:07 
Более чем имеет. Такое количество файлов можно назвать серьёзной нагрузкой на файловую систему (даже ext3 больше 32 000 в одном каталоге не поддерживает). Разбивать рекомендую так: 123456.jpg (6 байт на собственно название без расширения), из них берём последние два символа - первый каталог, вторые два символа - второй каталог, в итоге получается что-то вроде:

img/56/34/123456.jpg

Так мы получаем быстрый поиск по файловому дереву, ну и поддержка не самых новых ФС в качестве бонуса.

Кстати, зайдите в /usr/bin, засеките время чтения ФС и количество файлов в нём. Вы увидите насколько может тормозить чтение большого списка файлов.


"Хранение картинок"
Отправлено Vlas , 10-Янв-11 00:11 
> из них берём последние два символа - первый каталог, вторые два
> символа - второй каталог, в итоге получается что-то вроде:
> img/56/34/123456.jpg

А почему не с первых символов? Что-то вроде
img/12/34/123456.jpg


"Хранение картинок"
Отправлено Аноним , 10-Янв-11 16:56 
>> из них берём последние два символа - первый каталог, вторые два
>> символа - второй каталог, в итоге получается что-то вроде:
>> img/56/34/123456.jpg
> А почему не с первых символов? Что-то вроде
> img/12/34/123456.jpg

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


"Хранение картинок"
Отправлено Vlas , 10-Янв-11 23:01 
> Чтобы равномерно распределить файлы по каталогам, а то на нулях спереди большая
> часть файлов будет храниться.

А если имена файлов идут не по порядку? И также содержат буквы (генерятся рандомно)


"Хранение картинок"
Отправлено Аноним , 10-Янв-11 23:40 
> А если имена файлов идут не по порядку? И также содержат буквы
> (генерятся рандомно)

Тогда надо думать. К каждому методу свой подход.