Хранить изображения пользователя в веб-приложении - PullRequest
7 голосов
/ 30 апреля 2011

У меня есть веб-приложение, которое в настоящее время разрабатывается в JSP / Servlets.
Приложение позволяет пользователям загружать файлы изображений для каждой учетной записи пользователя.

Каков наилучший способ хранения изображений?
Пожалуйста, рассмотрите следующие функции, которые я хотел бы иметь перед вашим ответом;

  1. Сейчас я использую MySQL, но возможна возможность перехода на другую базу данных.

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

  3. Использование BLOB / CLOB - это вариант, который решает проблему 2.
    Но что если моя база данных станет очень большой ?

Ответы [ 3 ]

6 голосов
/ 30 апреля 2011

В вашем случае я настоятельно рекомендую вам иметь поле blob в вашей базе данных и хранить в нем изображения.Главным образом, потому что это является правильное место для них.Итак, создайте сервлет, который извлекает изображение указанного пользователя из базы данных.Например, /userimage?name=john.

О вашей проблеме «размер / производительность»:

  • Созданы базы данных (среди прочего) для хранения и обмена большойобъемы данных .
    Итак, это лучший вариант .

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

  • Если вы действительно хотите управлять БОЛЬШИМИ данными (> = 3 ТБ, а не вашим случаем), то вы можете сохранить их в файловой системе исохранить имена файлов в БД.Для получения дополнительной информации, посмотрите на этот вопрос .

1 голос
/ 30 апреля 2011

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

Многие другие разделяют это мнение: http://forums.asp.net/p/1512925/3610536.aspx

0 голосов
/ 30 апреля 2011

Просто сохраните их в БД ... если ваша пользовательская база "станет очень большой", у вас будет куча денег, чтобы купить сервер базы данных с шариками (или даже ферму из них), который может справиться с нагрузкой,не так ли?

...