Храните изображения пользователя в веб-приложении

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

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

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

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

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


person Swaranga Sarma    schedule 30.04.2011    source источник
comment
Связано: Хранение изображений в БД - да или нет?   -  person Pekka    schedule 30.04.2011


Ответы (3)


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

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

person Steve Wellens    schedule 30.04.2011

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

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

  • Базы данных были созданы (среди прочего) для хранения и обмена большими объемами данных.
    Так что они являются лучшим вариантом.

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

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

person Alba Mendez    schedule 30.04.2011

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

person corlettk    schedule 30.04.2011