Хранение изображения в базе данных против файловой системы (это допустимый вариант использования?) - PullRequest
1 голос
/ 10 августа 2011

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

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

Можно ли хранить в базе данных в этом случае?

(я знаю, что об этом много спрашивали)

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

Ответы [ 3 ]

1 голос
/ 10 августа 2011

Чтобы взять противоположное представление от Натаниэля - мне легче использовать базу данных для хранения непрозрачных данных, таких как изображения. При резервном копировании базы данных вы автоматически получаете резервную копию изображений. Кроме того, вы можете извлекать, обновлять или удалять изображение вместе со всеми другими данными в интегрированных SQL-запросах; Хранение файлов по отдельности означает написание гораздо более сложного кода, который должен передаваться в файловую систему для поддержания целостности данных при каждом выполнении определенных запросов SQL. Блокировка может быть большой проблемой, а обработка транзакций (особенно откат) еще больше.

1 голос
/ 10 августа 2011

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

0 голосов
/ 08 февраля 2013

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

  1. Хранение файловой системы сложнее, когда ваши серверы приложений кластерный. Вы должны иметь общее хранилище. Даже если ваш нынешний среда не кластеризована, это усложняет масштабирование когда вам нужно
  2. Вы должны использовать CDN для вашей статики контент в любом случае, и установите ваше приложение в качестве источника. Это означает, что ваше приложение будет поражено только один раз для данного изображения, тогда оно будет кэшируется на CDN. CloudFront очень дешев и прост в установке вверх ... нет причин не использовать его. Сохраните пропускную способность для вашего динамический контент.
  3. Это намного быстрее (и, следовательно, дешевле), чтобы развиваться база данных сохраненных изображений
  4. Вы получаете ссылочную целостность с база данных сохранила изображения. Если вы храните изображения в файле система, вы неизбежно будете иметь потерянные файлы без соответствия записи базы данных, или у вас будут записи базы данных с поврежденным файлом ссылки. Это случится ... это просто вопрос времени. Вам придется напиши что-нибудь, чтобы очистить их.

В любом случае, мои два цента.

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