Самый простой способ сохранить изображения в базе данных на 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