Самый простой способ сохранить изображения в базе данных на Heroku?

У нас есть сайт RoR 3.2 на Heroku, используя их базу данных PostgreSQL производственного уровня.

наши пользователи сайта иногда загружают изображения размером 0,5-2 МБ. По разным причинам мы хотим сохранить эти изображения в базе данных, а не как файлы на S3 или подобное.

Если бы наш сайт был тяжелым, то есть клоном Facebook, конечно, хранение изображений в БД не было бы хорошей вещью.

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

  • контроль над всем: время простоя S3 и сторонние драгоценные камни не могут сломать обработку изображений/доступ к изображениям.
  • Easy delete: если пользователь отменяет свою учетную запись, мы можем легко удалить все связанные изображения с этой учетной записью через наши модели rails (зависимости отношений).
  • более легкий экспорт пользовательских данных: когда пользователь хочет покинуть наш сайт и взять свои данные с собой, мы можем более легко экспортировать его изображения, а не необходимость экспорта из S3
  • стоимость: не весомый аргумент, но поскольку мы уже платим за базу данных, это будет дешевле, чем использовать S3, который стоит (небольшая сумма) денег.
  • резервные копии: не весомый аргумент, но резервная копия нашей БД будет включать все, что связано с нашим сайтом (за исключением кода RoR, конечно).

каков самый простой способ хранения изображений в базе данных Heroku PostgreSQL? Пример кода или ссылки на walk-through добро пожаловать.

спасибо :)

2 ответов


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

S3 может быть резервное копирование очень эффективно, и это очень закаленной. С точки зрения потери данных, это эффективно безопаснее, чем разработка базы данных Postgres базы данных план с Heroku.

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

наконец, скорость передачи на S3 из EC2 (где размещен Heroku) очень быстрая из-за внутренней сети Amazon.

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

там же dev center article об использовании S3 и Heroku.


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

еще проверить следующую ссылку для хранения изображения в базе данных Heroku PostgreSQL

загрузить изображения в базу данных