Страница 1 из 1
Как разбить по папкам хранение файлов?
Добавлено: 2016-03-17 13:08:04
Духовитин
Доброго дня Уважаемые!
У меня для моей информационной системы возникла задача организации хранения файлов.
Поясню:
Когда файл добавляется в ИС, то информация о нём заносится в БД. От самого файла вычисляется SHA-хеш и сам файл кладётся в папку по первым символам в хеше, т.е.
значит лежать он будет в папке:
/var/storage/ab/cd/
Так вот вопрос в том, сколько делать уровней папок?
Для указанного варианта с двумя уровнями по два символа получается что всего вариантов подпапок будет на первом уровне 256 и на втором по 256 для каждой из папок первого уровня, и того всего 65536 подпапок.
В плане производительности доступа к файлам, оптимального хранения и других может каких-либо имеющихся заморочек стоит ли по другому организовать организацию хранилища?
Сама ФС хранилища - ZFS RaidZ, файлов подразумевается что может быть много.
Вобщем ваши мысли на этот счёт?
Как разбить по папкам хранение файлов?
Добавлено: 2016-03-17 19:45:23
Neus
А если в каждую положить по 256 файлов, в сумме будет ~16 миллионов. Нормально придумал:)
Как разбить по папкам хранение файлов?
Добавлено: 2016-03-18 9:04:03
Bayerische
Как разбить по папкам хранение файлов?
Добавлено: 2016-03-18 9:21:39
Духовитин
Всем спасибо, теперь спокойно значит сделаю как задумал.
Как разбить по папкам хранение файлов?
Добавлено: 2016-03-22 23:33:28
FiL
Духовитин писал(а):Всем спасибо, теперь спокойно значит сделаю как задумал.
коментарии не читал, видимо

Как разбить по папкам хранение файлов?
Добавлено: 2016-03-23 6:32:35
Духовитин
FiL писал(а): коментарии не читал, видимо

Имеешь в виду комменты к статье на хабре? Почитал. То что у меня велосипед, даже не сомневался изначально. Да я и не претендую на оригинальность предложенного подхода. Так как сама идея возникла на основе организации папок кэшей у squid'а. Когда ему говоришь кол-во папок и он формирует своё кэш-хранилище.
В комментах на хабре вроде как основные претензии были к стилю и качеству php кода предложенного в качестве реализации этой идеи.
Если я чего-то не увидел, то укажи пожалуйста что именно.

Как разбить по папкам хранение файлов?
Добавлено: 2016-03-23 17:17:00
FiL
Основная мысль хоть как-то сформулированная в каментах там заключалась в том, что если есть возможность настроить современную файловую систему, то нужно это делать. И тогда нет вообще никакой необходимости делить файлы на каталоги.
Структура имеет смысл если по ней надо будет ручками шастать или если не известно на чем оно будет лежать и как файловая система относится к большому количеству файлов в каталоге.
Как разбить по папкам хранение файлов?
Добавлено: 2016-03-23 19:01:33
Духовитин
Там до чего договорились, так это что после тюнинга стало в 20 раз быстрей, а вот насчёт того что разницы между плоским размещением и многоуровневым нет, про это ничего не говорилось. Тут для выбора безуровневого способа хранения со сколь угодно большим количеством файлов в папке надо как минимум провести тесты самому.
Всё таки не зря разработчики squid'а , всяких ВК и ФБ выбрали способ хранения с разбиением по подпапкам. Да ещё и с гибко настраиваемыми параметрами этого разбития.
Я в данном случае если запарюсь, то может и запарюсь ради интереса с проверкой двух способов. Но сейчас делаю всё таки как изначально предположил.
Как разбить по папкам хранение файлов?
Добавлено: 2016-03-23 19:23:47
FiL
у разработчиков сквида нет влияния на FS. Оно где поставилось - там поставилось. И они пытаются оптимизировать так, чтоб оно везде прилично работало. И это не говоря о том, что сквид писали во времена ext2, что не добавляло оптимизма.
а "всякие" VК и FB - это не совсем всякие. У них файлов в день новых больше, чем в твоем доморощенном проекте за 10 лет наберется, скорее всего. И при этом...
https://scontent-lga3-1.xx.fbcdn.net/hp ... lename.jpg> - то есть по сути только один уровень вложенности.
Еще раз, я не говорю, что разбиение по подпапкам плохо. Это хорошо. При прявильной реализации. Но плохая реализация может оказаться хуже, чем плоское хранилище с нормально настроенной FS. Ну, до определенного количества файлов.
Как разбить по папкам хранение файлов?
Добавлено: 2016-03-23 20:01:39
Духовитин
За дискуссию однозначно спасибо. Из неё в любом случае полезная информация в голове осела. Вопрос подняли, обсудили и для себя что-то из него вынесли

Как разбить по папкам хранение файлов?
Добавлено: 2016-03-23 23:06:29
Bayerische
Погодите, это как — не влияет?
Вот к примеру, FTP. На любой ФС листинг забитой директории нудное дело.
Как разбить по папкам хранение файлов?
Добавлено: 2016-03-24 5:02:42
FiL
a зачем делать листинг забитой директории? Полные пути есть в базе. Делать полный листинг с тысячами файлов с названием вида 012345FED ни нафик не сдалось.
Как разбить по папкам хранение файлов?
Добавлено: 2016-03-24 8:24:37
Alex Keda
Ручками никогда не приходилось рыться в хранилище организованном такими вот гениями - мильён файлов в директории одной?
Мне приходится, минимум раз в неделю.
Поверьте, никаких восторгов по поводу быстрой и хорошей файловой системы у меня давно уже нет

Как разбить по папкам хранение файлов?
Добавлено: 2016-03-29 19:35:07
FiL
A что можно ручками найти в хранилище, где имена файлов - это MD5 от содержимого?
В том-то и дело, что если имена файлов хоть как-то осмысленны и в них надо лазить ручками, то тогда и структура каталогов имеет смысл. И смысл может быть очень разный. А если одни MD5, то и смысла нет.
Как разбить по папкам хранение файлов?
Добавлено: 2016-04-01 16:18:12
Alex Keda
это потому что вам не надо было ручками достать такой вот файлик
Как разбить по папкам хранение файлов?
Добавлено: 2016-04-01 19:55:25
ADRE
есть решение от солярки всем известное. засунул и забыл. zfs
Код: Выделить всё
2^56 — количество файлов в директории (реально ограничен 2^48 на количество файлов в файловой системе ZFS);
Отправлено спустя 2 минуты 39 секунд:
не 256, а 2 в 48 степени по факту. -