Хранить изображения пользователя в веб -приложении
-
27-10-2019 - |
Вопрос
У меня есть веб -приложение, которое в настоящее время разрабатывается в JSP/Servlets.
Приложение позволяет пользователям загрузить Файлы изображений для каждой учетной записи пользователя.
Как лучше всего хранить изображения?
Пожалуйста, рассмотрите следующие функции, которые я хотел бы получить до вашего ответа;
Сейчас я использую MySQL, но может быть возможность перейти в другую базу данных.
Я могу сохранить изображения в виде плоских файлов, но я хочу
admin
учетная запись, чтобы иметь возможность Резервное копирование полной базы данных и перезагрузить его позже. В идеале резервная копия/перезагрузка также должна работать с изображениями. (Даже если резервная копия была сделана с другой физической машины, а перезагрузка была сделана с другой машины)Использование Blob/Clob - это вариант, который решает задачу 2.
Но, Что если моя база данных станет очень большой?
Решение
Храните их в файловой системе. Это быстрее и проще. Часто при доступе к изображению вам все равно придется сохранить его в файл, прежде чем вы сможете его использовать. Вы можете изучить изображения с помощью сторонних инструментов. Вы можете сохранить RecordID в имени файла, чтобы удержать Ассоциацию изображений/записи когда -либо разбито.
Многие другие делятся этим мнением: http://forums.asp.net/p/1512925/3610536.aspx
Другие советы
В вашем случае я настоятельно рекомендую вам иметь blob
Поле в вашей базе данных и храните в ней изображения. В основном, потому что это является правильное место для них. Итак, сделайте сервлет, который извлекает изображение указанного пользователя из базы данных. Например, /userimage?name=john
.
О вашей проблеме "размер/производительности":
Базы данных были сделаны (среди прочего) для хранения и обмена Большие объемы данных.
Так, Они лучший вариант.Даже если вы храните их на других сайтах, они все равно будут сокращать свободное пространство и производительность.
если ты В самом деле Хотите управлять большими данными (> = 3TB, а не в вашем случае), тогда вы можете сохранить их в файловой системе и сохранить имена файлов в БД. Для получения дополнительной информации, посмотрите на этот вопрос.
Просто храните их в БД ... если ваша пользовательская база "станет очень большой", у вас будут ведра с наличными, чтобы купить сервер базы данных с шариками (или даже их ферма), которые могут обрабатывать нагрузку, теперь выигранный ' ты?