Имеем - будет хранить более 40 млн файлов.
Для одной папки этого много. Сейчас имя файла это sha1 от его оригинального имени
(которое естественно не случайно - а)часто расширение файла ави мп3 ехе... б)путь к файлу(логический) - тоже не случайная величина, и может получиться что для 20 млн из 40 это одно и тоже. тоесть хеш берём от строки ХХХХХХХХХХ-рандом-УУУУ
где Х часть и У часть константа.)
если пойти стандартным путём, брать первые три символа от хеша
substr(sha1('XXXXXXX-random-YYYYY'),0,3) - насколько можно быть увереным что я получу то что ожидаю
4096 папок, и в каждой расномерно расложены файлы (получиться по 10 000 на папку)
что не получиться что 100 папок будет содержать по 100 000 файлов.
????
и вопрос другой.
сам sha1 не быстрая функция.
ктото может подсказать быстрый и хороший способ.
ВХОД - имя файла полное PATH1/path2/.../pathN/file.ext
ВЫХОД
sys_file_name - системное имя по которому НЕЛЬЗЯ востановить оригинальное имя файла - естественно уникальное поле для базы данных.
sub_folder - при котором получим равномерное распределение файлов.
ЗЫ
вариант как на одном форуме - subfolder = autoincrement_field(pk) DIV 1000 (нацело)
не подходит. ибо после удаления и закачки новых файлов мы получим на 40 млн файлов 40 млн подпапок.
Добавлено:
НАПОМНИАЮ
ВХОД - имя файла полное PATH1/path2/.../pathN/file.ext
этот путь, это логическая структура, не связан с физическим хранением.
грубо говоря пользователь сам себе придумывает красивое имя для
foto.jpg -типо
/foto/my/2012/summer/july/Ibitca/ya-goliy/dlya_Veri/photoshop/prikol/mocha_v_golovu_idet_naporom/ya_durak/foto.jpg
Для одной папки этого много. Сейчас имя файла это sha1 от его оригинального имени
(которое естественно не случайно - а)часто расширение файла ави мп3 ехе... б)путь к файлу(логический) - тоже не случайная величина, и может получиться что для 20 млн из 40 это одно и тоже. тоесть хеш берём от строки ХХХХХХХХХХ-рандом-УУУУ
где Х часть и У часть константа.)
если пойти стандартным путём, брать первые три символа от хеша
substr(sha1('XXXXXXX-random-YYYYY'),0,3) - насколько можно быть увереным что я получу то что ожидаю
4096 папок, и в каждой расномерно расложены файлы (получиться по 10 000 на папку)
что не получиться что 100 папок будет содержать по 100 000 файлов.
????
и вопрос другой.
сам sha1 не быстрая функция.
ктото может подсказать быстрый и хороший способ.
ВХОД - имя файла полное PATH1/path2/.../pathN/file.ext
ВЫХОД
sys_file_name - системное имя по которому НЕЛЬЗЯ востановить оригинальное имя файла - естественно уникальное поле для базы данных.
sub_folder - при котором получим равномерное распределение файлов.
ЗЫ
вариант как на одном форуме - subfolder = autoincrement_field(pk) DIV 1000 (нацело)
не подходит. ибо после удаления и закачки новых файлов мы получим на 40 млн файлов 40 млн подпапок.
Добавлено:
НАПОМНИАЮ
ВХОД - имя файла полное PATH1/path2/.../pathN/file.ext
этот путь, это логическая структура, не связан с физическим хранением.
грубо говоря пользователь сам себе придумывает красивое имя для
foto.jpg -типо
/foto/my/2012/summer/july/Ibitca/ya-goliy/dlya_Veri/photoshop/prikol/mocha_v_golovu_idet_naporom/ya_durak/foto.jpg