Если ваши значения идентификатора пользователя распределены достаточно равномерно и число будет продолжать расти, то вам, вероятно, следует сбалансировать дерево немного больше. Что лучше всего зависит отчасти от того, где вы думаете, в конечном итоге с точки зрения чисел. Большие каталоги медленнее искать, чем маленькие. В то время как 800 файлов не ужасны, но и не велики. Если вы хотите придерживаться 2-х уровней, и у вас есть N пользователей (в качестве целевого населения), то вы должны стремиться к sqrt (N) папкам на первом уровне с sqrt (N) папок в каждом каталоге второго уровня. Для N = 80 000, что означает около 300 папок на уровень. Если вы хотите рассмотреть трехуровневое расположение, замените квадратный корень на кубический корень. Вы также можете обнаружить, что использование арифметики по модулю обеспечивает более плавное распределение. То есть первый уровень может быть лучше рассчитан как:
var first_level = (int) ($user_id % 300);
При условии, что ваш неопознанный язык использует% для своего оператора по модулю.
CPAN использует систему, основанную на 3 уровнях: первый уровень - это первая буква логина пользователя; второй уровень - это первые две буквы, а третий уровень - полный идентификатор входа в систему.
Я где-то читал, что какой-то сайт (университетский, IIRC) обнаружил, что первая и последняя буквы имени дают хорошую систему.