Какие имена директорий сделать для крупного проекта?
Всем привет. Есть некий проект, где регистрируются люди и выкладывают фото.
В планах для каждого юзера будет отводиться папка /pictures/000001/x.jpg, где 000001 это номер пользователя шестизначный (на перспективу), с заполненными нулями, а x.jpg имена файлов. Всего 1 юзер грузит по 30-100 таких файлов.
Столкнулся с проблемой недавно, тк сейчас все фото лежат в одной папке (/pictures/x.jpg). Файлов уже 25.000+, и папка при открытии жестко тупит, я представляю, что будет дальше.
Вот я и решил сделать разделение проекта логически на данную структуру, чтобы в каждой папке были записи одного юзера. Подскажите, НА БУДУЩЕЕ, универсальна ли данная схема (в плане расширения)?
Правильно ли я задумал идею? /pictures/000001/x.jpg
Хранить ведущие нули в именах папок - лишнее. В целом решение вполне норм, вот только если пользователей, как вы написали, в перспективе станет 100 000+, то это это уже 100 000+ папок и опять возникает та же проблема.
Можно делать, например, как в git: берем хеш sha1 от данных файла, создаем папку из первых двух (или более) символов этого хеша, а внутрь заливаем данные. Получится что-то вроде:
/a4/b7fce097055c3cbd6879db9625f9a3890cc409.jpg
/a4/a66ce019422c3cbcbd69db9625f9a3890cda83.jpg
/8c/3c7fbcd903744b20fd7567a1fcefa99133b5bc.jpg
/e9/65047ad7c57865823c7d992b1d046ea66edf78.jpg
(Всего не более 256 папок)
Или если все файлы пронумерованы:
/a4/1.jpg
/a4/2.jpg
/8c/3.jpg
/e9/4.jpg
При таком подходе вы сами сможете регулировать количество папок, уровень вложенности и среднее число файлов в папках.