Каков наилучший способ хранения загруженных пользователем файлов на веб-сайте? - PullRequest
8 голосов
/ 28 июля 2011

Я пытаюсь создать веб-сайт, на котором мне нужно хранить несколько загруженных пользователем файлов (например, некоторые изображения профиля, некоторые файлы XML и т. Д.).

Так, как лучше всего хранить эти файлы?

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

Итак, как мне хранить эти файлы? Создаю ли я общий каталог и назову файлы в соответствии с идентификатором пользователя или что-то связанное с пользователем ИЛИ продолжаю создавать новый каталог для каждого пользователя ??

Ответы [ 2 ]

5 голосов
/ 28 июля 2011

Работоспособное решение будет зависеть от ваших требований, например, сколько пользователей вы ожидаете. Решение «один каталог на пользователя» может вскоре обрушиться на некоторые ограничения файловой системы (для ext3 максимальное количество подкаталогов в одном каталоге равно 32000).

Один файл на пользователя должен быть в порядке в течение длительного времени (см .: Сколько файлов в каталоге слишком много? ).

Наконец, если ваша база пользователей растет, вы можете использовать фиксированное количество шардов (например, на основе идентификатора пользователя), чтобы ограничить как количество каталогов, так и количество файлов в каталоге (в качестве примера для этого см. как git хранит свои объекты в свободном формате ).

2 голосов
/ 28 июля 2011

Ну, у вас есть несколько вариантов.

  1. Вы можете хранить их в виде файлов в файловой системе вне корневого веб-каталога.
  2. Вы можете хранить их как двоичные данные в стандартной RMDBS, такой как MySQL.
  3. Вы можете использовать базу данных «NoSQL», такую ​​как CouchDB или Redis, которая специализируется на хранении документов.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...