Quiero acceder a la base de datos de una aplicación desde otra aplicación Heroku. ¿Es eso posible en la base de datos compartida?Compartir base de datos entre 2 aplicaciones en Heroku
Respuesta
ACTUALIZADO
Originalmente, esta respuesta afirma que, aunque esto era posible con un poco de ingenio, era fuertemente desanimado. Esto se basó en consejos sobre el sitio web de soporte para desarrolladores de Heroku. Sin embargo, recientemente Heroku emitió una comunicación que describe específicamente cómo lograr esto, y ha suavizado sus consejos sobre el sitio del desarrollador. El texto completo de esta sección de su correo electrónico se incluye a continuación:
¿Usted sabía que las aplicaciones pueden heroku compartir una base de datos común? Por ejemplo, puede poner las funciones de análisis en una aplicación separada de su código de usuario.
Simplemente configure la configuración var DATABASE_URL para varias aplicaciones con el mismo valor . En primer lugar, obtener la DATABASE_URL para su aplicación existente:
$ heroku config | grep DATABASE_URL --app sushi DATABASE_URL => postgres://lswlmfdsfos:[email protected]/ldfoiusfsf
A continuación, establezca la DATABASE_URL para las nuevas aplicaciones de este valor:
$ 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's it
- ahora ambas aplicaciones comparten una base de datos.
Al igual que un punto de referencia, el consejo original de Heroku fue crear y utilizar una API para acceder a los datos de forma remota. Mi opinión personal es que en general, para muchas situaciones esto es buen consejo, (es decir, mejor que simplemente conectar múltiples aplicaciones al mismo DB) aunque puedo ver situaciones donde eso sería más problemático de lo que vale.
ACTUALIZACIÓN
De acuerdo con los comentarios de esta respuesta, vale la pena señalar que Heroku reservamos el derecho de cambiar las URL de base de datos según sea necesario. Si esto ocurre, las conexiones secundarias fallarán y deberá actualizar las URL según corresponda.
hasta donde yo sé que es posible - tendrás que mirar las variables de configuración de heroku para tu aplicación con la base de datos y luego configurar la base de datos en la aplicación que quiere compartir la base de datos con el mismo valor. Un poco fuera de pista, sin embargo, y en cuanto a qué tan compatible es, no lo sé.
EDIT Solo para tranquilizar he creado dos aplicaciones en Heroku: una simple "publicación" de andamio con un título.
http://evening-spring-734.heroku.com/posts es el maestro
http://electric-galaxy-230.heroku.com/posts - es el esclavo
Así puestos creados en ambos se escribirá en la base de datos de URL de la tarde de la primavera-734.
Todo lo que he hecho es usar heroku config para obtener DATABASE_URL de evening-spring-734 y luego establecer el mismo valor en DATABASE_URL de electric-galaxy-230.
Podría terminar con algunas condiciones frutales de carrera de DB, pero definitivamente es posible hacerlo.
Magic huh?
+1: Veo esto como muy útil para hacer URL cortas o de vanidad ... como http://myapp.me/iwasrobbed (Aplicación Heroku # 1) redirige a http://myapp.com/users/1 (Heroku) Aplicación n. ° 2) ya que ahora puedo almacenar el nombre de la vanidad en el DB de usuario estándar. Gracias John! – iwasrobbed
heroku pg: promueve DATABASE_URL --app your_app_name es la forma admitida de establecer esta variable. –
mi único comentario es sobre las condiciones de la carrera. Los trabajadores y la instancia web serían los mismos, al igual que los trabajadores remotos como el trabajador de hierro o resqueue. – baash05
El plugin de Amazon RDS funciona bien para esto. Varias aplicaciones pueden compartir la misma instancia de RDS.
Tiene la flexibilidad de hacer que compartan tablas o evitar la colisión del nombre de la tabla utilizando active_record.table_name_prefix.
Recibí esto recientemente en el boletín de Heroku. Los envío por correo electrónico para averiguar si realmente es un uso aprobado.
¿LO sabía?
compartir una base de datos con muchas aplicaciones
¿Sabías que las aplicaciones heroku pueden compartir una base de datos común? Por ejemplo, puede colocar las funciones de análisis en una aplicación separada de su código de usuario.
Simplemente configure
DATABASE_URL
config var para varias aplicaciones con el mismo valor. En primer lugar, obtener laDATABASE_URL
para su aplicación existente:$ heroku config | grep DATABASE_URL --app sushi DATABASE_URL => postgres://lswlmfdsfos:[email protected]/ldfoiusfsf
A continuación, establezca la
DATABASE_URL
para las nuevas aplicaciones de este valor:$ 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.
Eso es todo - ahora ambas aplicaciones comparten una base de datos.
referencia
Le pregunté a Heroku sobre el uso de este método para obtener un dinamómetro Web gratuito y un dinamómetro Worker libre. Aquí está su respuesta. >> "Josh - desaconsejamos hacer esto, pero además habría problemas con el trabajador en inactividad. Una vez que estuviera inactivo, sería dejar de hacer cualquier trabajo y sin nada para 'despertarlo' como una web solicitud, sería inútil como trabajador. "<< Parece que puede usar varias aplicaciones en la misma base de datos, pero no es muy útil de forma gratuita. – JoshRivers
Lo estoy usando para fines de desarrollo, ya tengo miles de filas en mi aplicación en vivo, y la nueva apariencia se está desarrollando en otra aplicación heroku más pequeña, por lo que poder compartir datos es genial, puedo desarrollar y ver nuevos looks con los mismos datos –
Ver Heroku: https://devcenter.heroku.com/categories/heroku-postgres
Q: ¿Puede múltiples aplicaciones heroku conectarse a una sola base de datos?
Sí. Puede configurar varias aplicaciones que se ejecutan en Heroku para conectar a una única base de datos, siempre que tenga las credenciales de las bases de datos. Simplemente anule el DATABASE_URL de las aplicaciones que desea conectar usando el comando heroku config: add DATABASE_URL = ....
Última respuesta a la pregunta pertinente!
Heroku oficialmente es compatible con una solución mejor/elegante por el camino de su marco de complemento ahora. Se describe en su último boletín sobre cómo compartir complementos entre aplicaciones. A continuación se presentan los fragmentos mencionados en la valoración crítica:
$ 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
Enlace: expanding_the_power_of_add_ons
¡Muchísimas gracias !, ¡esta debería ser la respuesta priorizada! – HLL
Esta es la respuesta correcta. Todas las otras respuestas están en desuso, y la mayoría de ellas están duplicadas de todos modos. – jelder
El formato del comando que utilicé fue 'heroku addons: adjuntar originating_app_name :: HEROKU_POSTGRESQL_COLOR_URL -a no_db_app_name' – Marklar
- 1. Compartir datos entre aplicaciones en un iDevice
- 2. Compartir datos de iCloud entre dos aplicaciones
- 3. compartir datos entre dos aplicaciones de iphone
- 4. ¿Cómo puedo compartir modelos de mangosta entre 2 aplicaciones?
- 5. Compartir modelos entre 2 API Rails (aplicaciones separadas)
- 6. Cómo compartir datos de llavero entre aplicaciones de iOS
- 7. Compartir código entre 2 proyectos sin dll
- 8. Compartir datos entre AppDomains
- 9. ¿Cómo compartir objetos entre aplicaciones java?
- 10. compartir una base de datos entre el trenzado y Django
- 11. Compartir modelos entre las aplicaciones de Django
- 12. Compartir vistas, lógica, etc. entre aplicaciones MVC
- 13. Compartir modelos entre aplicaciones Rails usando gems
- 14. Android: compartir actividades/código entre diferentes aplicaciones
- 15. Memoria compartida entre 2 procesos (aplicaciones)
- 16. Javascript: compartir datos entre pestañas
- 17. Compartir datos entre páginas html
- 18. La mejor manera de compartir imágenes entre varias aplicaciones
- 19. Compartir datos entre procesos en Python
- 20. ¿Se pueden migrar las bases de datos heroku entre aplicaciones mediante el uso de bifurcaciones?
- 21. ¿Cómo compartir archivos entre 2 aplicaciones ios locales sin esquema de URL o servidor externo?
- 22. Intercambio de datos entre dos aplicaciones
- 23. ¿La mejor manera de compartir modelos y datos de ActiveRecord entre diferentes aplicaciones de Rails?
- 24. Heroku - Cómo cifrar la base de datos
- 25. ¿Se pueden compartir SharedPreferences entre diferentes aplicaciones de Android?
- 26. Compartir datos entre controles de usuario
- 27. Cómo compartir el conjunto de conexiones entre múltiples aplicaciones Java
- 28. Cómo compartir configuraciones de configuración entre varias aplicaciones
- 29. Compartir datos entre actividades y servicios
- 30. Compartir bases de datos sqlite entre múltiples actividades de Android
sólo aplicaciones de configuración en Heroku para demostrar que es posible - detalles en mi respuesta. –
@ John Coo - interesante :) No estoy seguro en sentido estricto que merezca un voto negativo. Heroku específicamente lo prohíbe en sus documentos de desarrollador, lo que significa que podría romperse inesperadamente en algún momento en el futuro ... –
Lo suficientemente justo, el voto negativo se retractó ... ¡El apoyo de Heroku da una respuesta diferente! Pregunta: Si desarrollo dos aplicaciones heroku, ¿pueden acceder a una única base de datos ? La razón por la que pregunto es que tenemos una aplicación de rieles y una aplicación de sinatra , y necesitan compartir una base de datos de postgres. ¡Preferiría no hacer que por http! Respuesta del soporte de heroku: Sí, si es necesario, puede hacerlo. Cada aplicación Heroku obtiene una base de datos aprovisionada de forma predeterminada, pero es posible que una aplicación use la base de datos de otra aplicación simplemente copiando la configuración var DATABASE_URL de una aplicación a otra. –