если вы внимательно прочитали все ответы то среди них есть например такие
http://stackoverflow[dot]com/a/21805580/2110663 где указано что в папке в которой 10к файлов поиск происходит более чем в 10 раз медленнее чем в папке в которой 1к и соответственно если меньше то еще быстрее
ну и надеюсь вы прочти то что при количестве овер 32к некоторые программы перестают работать (как то ls)
а теоретически вы можете конечно писать туда сколько угодно, я же даю всего лишь рекоммендацию как лучше
ну и если ближе к делу то достаете md5 hash из файла или названия файла к примеру файл называется test.jpg делаем из него мд5 хеш 0412c29576c708cf0155e8de242169b1
берем первые 2 буквы хеша и создаем с таким названием папку. то есть
04. соответстенно в базу запишите относительный путь вместе с названием файла 04/test.jpg
при таком алгоритме у вас получится размещать файлы примерно одинаково распределенными по 16^2 = 256 папкам это как раз <1000
если файлов намного больше и в каждой папке у вас будет получаться (или теоретически вы предполагаете) >1000 файлов, создаете еще один подуровень по тому же принципу, то есть берем следующие 2 буквы хеша 12.
соответственно создаете папку внутри 04 и уже внутри папки копируете свой файл 04/12/test.jpg - этот же путь будет записан в базу
файлы в идеале тоже лучше переименовывать в latin-digital формат чтобы в файловую систему не попадали всякие юникод символы, но это уже другая тема
а по сути у вас получится 256*256 = 65к файлов относительно равномерно распределенных по файловой системе и доступ к ним будет происходить с приемлемой скоростью.
можно увеличивать иерархию еще на уровень, больше наверное смысла не будет так как такое количество файлов наверняка не влезет на ваш диск, но теоретически можно (Отредактировано автором: 08 Сентября, 2015 - 09:55:41)
|