2012-11-25 2 views
3

Я ищу масштабируемый способ хранения большого количества файлов от пользователей. Моя стратегия - сохранить их со случайным именем и сохранить отношения имени и файла в базе данных.Рекомендуемая практика для хранения большого количества загруженных пользователем файлов?

Вопрос в том, что является рекомендуемой практикой для хранения файлов на диске? Единственное ограничение, с которым я столкнулся, заключается в том, что если я сохраню их все в одном каталоге, производительность ОС ухудшится, что нет, нет.

Очевидно, что я могу создавать каталоги с указанными интервалами и разделять нагрузку, но это всего лишь хак, и я уверен, что должны быть проверенные и правильные процедуры для работы с хранилищем. Я просто не могу найти их :)

Я ищу файлы для хранения файлов конфиденциально, а не на внешнем хранилище, таком как S3.

ответ

3

Как вы уже дали каждому файлу random имя, отрубите его в подкаталоги.

Допустим, есть произвольное имя:

$randomName = 'Akj823daosd03hdx'; 

Сохраните его:

/Ak/j8/23/daosd03hdx 

Это позволит ограничить число узлов в каждом каталоге. Если у вас есть хорошее случайное распределение, это должно быть равномерно распределено.

В зависимости от того, сколько у вас файлов, вы также можете распространять их по-разному, но со случайными именами, как правило, прямо в таком виде. Вы можете различать длину и количество подкаталогов и конечных имен файлов в зависимости от ваших потребностей.

+0

Спасибо за ваше предложение, имеет смысл, и его проще реализовать! – johnjohn

Смежные вопросы