На входе имеем поступление большого (на практике — бесконечного) количества всевозможных файлов. Я могу точно определить только кто текущий владелец файла (это string) и получить информацию о самом файле. Остальная информация, как например, версия файла или автор файла, определяется не всегда, поэтому не рассматриваю.
Примечание1: файл может быть один, а владельцев — несколько.
Примечание2: хоть я и не рассматриваю версию файла, тем не менее, от одного владельца может поступить файл с тем же именем, который можно рассматривать как следующая версия. И было бы не плохо, если бы старые версии тоже сохранялись.
Вопрос: как лучше (исходя из разных приоритетов) организовать структуру каталогов в файловом хранилище для хранения поступающих файлов?
Примечание2: необходимо использовать БД (хотя, думаю, это и так очевидно).
Одним из ответов на мой вопрос является следующий пример (используется в реальной системе, но возможны неточности в описании).
Всем файлам соответствует какой-либо хэш. Значения хэшей — последовательны. Я не уточнял, поэтому не понял, чей это хэш: самого файла или какого-то объекта, с которым связан этот файл. Исходя из этого хэша создаются каталоги, причём: первые два символа хэша — название дириктории 1-го уровня, вторая пара символов — название дирриктории 2-го уровня, третья пара символов — дириктория 3-го уровня, в которую уже помещается сам файл. Ссылки на файлы хранятся в БД. В итоге получается, что в дирикториях 3-го уровня находится по одинаковому количеству файлов.