Как разбить папки с цифровыми именами в иерархию?
Данные хранятся в файлах в папках с цифровыми именами, соотв. id объектов. Диапазон чисел от 1 до 3e9. Ещё и со знаком. Сейчас отрицательные и положительные живут отдельно: plus/1234455/
и minus/123456
.
Операции сводятся к тому, что есть id
, и надо определить, в какой папке лежат его файлы (и на каком сервере, в случае шардинга).
Хочется равномерно разбить их в иерархическую структуру 1-2-3 уровней вложенности, чтобы уменьшить число объектов в одной папке, и с прицелом на как-бы-шардинг.
Стоит ли делать это просто по первым цифрам, или есть более удачный подход?
12/ -> 1/2/
123/ -> 1/2/3/
123456789/ -> 1/2/3456789/
Так получается, что «короткие» папки будут содержать как собственные данные, так и подпапки. Некруто.
Кто знаком с изнанкой всяких MongoDB – как там похожая задача решается?