Я хочу получить доступ к базе данных приложения из другого приложения Heroku. Возможно ли это в общей базе данных?
Доля базы данных между 2 приложениями в Heroku
Ответ 1
ОБНОВЛЕНО
Первоначально этот ответ утверждал, что, хотя это было возможно с помощью нескольких трюков, это было сильно обескуражено. Это было основано на советах на веб-сайте поддержки разработчиков Heroku. Тем не менее, недавно Heroku выпустил сообщение, в котором конкретно описывается, как этого добиться, и опустил свои советы на сайте разработчика. Полный текст этого раздела их электронного письма приведен ниже:Знаете ли вы, что приложения Heroku могут поделиться общей базой данных? Например, вы можете использовать функции аналитики в отдельном приложении из вашего кода, обращенного к пользователю.
Просто установите параметр конфигурации DATABASE_URL для нескольких приложений на один и тот же стоимость. Во-первых, получите DATABASE_URL для вашего существующего приложения:
$ heroku config | grep DATABASE_URL --app sushi DATABASE_URL => postgres://lswlmfdsfos:[email protected]/ldfoiusfsf
Затем установите для DATABASE_URL для новых приложений значение:
$ heroku config:add DATABASE_URL=postgres://lswlmfdsfos:[email protected]/ldfoiusfsf --app sushi-analytics Adding config vars: DATABASE_URL => postgres://lswlm...m/ldfoiusfsf Restarting app... done, v74. That it
- теперь оба приложения будут совместно использовать одну базу данных.
Как и в качестве ориентира, первоначальный совет Heroku заключался в создании и использовании API для удаленного доступа к данным. Мое личное мнение заключается в том, что в целом для многих ситуаций это хороший совет (лучше, чем просто подключение нескольких приложений к одному и тому же БД), хотя я могу видеть ситуации, в которых это будет больше проблем, чем это стоит.
UPDATE
Согласно комментариям к этому ответу, стоит отметить, что Heroku оставляет за собой право изменять URL-адреса базы данных по мере необходимости. Если это произойдет, это приведет к сбою ваших дополнительных подключений, и вам необходимо будет обновить URL-адреса соответственно.
Ответ 2
Поздний ответ на соответствующий вопрос!
Heroku официально поддерживает лучшее/изящное решение по пути своей инфраструктуры аддона. В своем последнем информационном бюллетене описано, как делиться аддонами между приложениями. Ниже приведены фрагменты, упомянутые в записи:
$ heroku addons:attach my-sushi-db -a my-sushi-reporting --as MAIN_SUSHI_DB
Adding MAIN_SUSHI_DB to my-sushi-reporting... done
Setting MAIN_SUSHI_DB vars and restarting my-sushi-app-reporting... done, v3
Ссылка: expanding_the_power_of_add_ons
Ответ 3
насколько я знаю, это возможно - вам придется посмотреть переменные конфигурации heroku для вашего приложения с помощью БД, а затем установить database_url в приложении, которое хочет разделить базу данных с тем же значением. Откажитесь от трека, хотя и о том, насколько это поддерживается, я не знаю.
EDIT Просто, чтобы успокоиться, я создал два приложения на Heroku - простой эстафетный пост с заголовком.
http://evening-spring-734.heroku.com/posts является ведущим
http://electric-galaxy-230.heroku.com/posts - это подчиненный
Таким образом, сообщения, созданные на обоих, будут записаны в URL-адрес базы данных вечером spring -734.
Все, что я сделал, это использовать конфигурацию heroku для получения DATABASE_URL вечера - spring -734, а затем установить такое же значение в DATABASE_URL электрогалактики-230.
В итоге вы можете столкнуться с определенными фруктными условиями гонки, но это определенно возможно.
Волшебный ха?
Ответ 4
В последнее время я получил это в информационном бюллетене Heroku. Я отправляю их по электронной почте, чтобы узнать, действительно ли это утвержденное использование.
ЗНАЕТЕ ЛИ ВЫ?
Совместное использование одной базы данных со многими приложениями
Знаете ли вы, что приложения Heroku могут совместно использовать общую базу данных? Например, вы можете поместить функции аналитики в отдельное приложение из вашего кода, обращенного к пользователю.
Просто установите
DATABASE_URL
config var для нескольких приложений с тем же значением. Во-первых, получитеDATABASE_URL
для вашего существующего приложения:$ heroku config | grep DATABASE_URL --app sushi DATABASE_URL => postgres://lswlmfdsfos:[email protected]/ldfoiusfsf
Затем установите
DATABASE_URL
для новых приложений на это значение:$ heroku config:add DATABASE_URL=postgres://lswlmfdsfos:[email protected]/ldfoiusfsf --app sushi-analytics Adding config vars: DATABASE_URL => postgres://lswlm...m/ldfoiusfsf Restarting app... done, v74.
Что это - теперь оба приложения будут совместно использовать одну базу данных.
Ответ 5
Плагин Amazon RDS хорошо работает для этого. Несколько приложений могут совместно использовать один и тот же экземпляр RDS.
У вас есть гибкость, позволяющая им обмениваться таблицами или избегать конфликтов имен таблиц с помощью active_record.table_name_prefix.
Ответ 6
См. ссылку Heroku: https://devcenter.heroku.com/categories/heroku-postgres
Q: Может ли несколько приложений Heroku подключаться к одной базе данных?
Да. Вы можете настроить несколько приложений, работающих на Heroku, для подключения к одной базе данных при условии, что у вас есть учетные данные баз данных. Просто переопределите DATABASE_URL приложений, которые вы хотите подключить, используя config heroku: добавьте команду DATABASE_URL =....