88 votes

Base de données de partage entre 2 applications sur Heroku

Je veux accéder à la base de données d’une application d’une autre application Heroku. Est-ce possible dans la base de données partagée ?

Merci

98voto

Paul Russell Points 3280

Mise à JOUR

A l'origine, cette réponse a déclaré que, bien que cela était possible avec quelques astuces, il est fortement déconseillé. Ceci a été basé sur des conseils sur la Heroku développeur de site web de support. Cependant, récemment, Heroku a publié une communication spécifiquement décrivant la manière d'atteindre cet objectif, et ont arrosée de leur avis, sur le site des développeurs. Le texte complet de cette section de leur adresse e-mail est inclus ci-dessous:

Saviez-vous que les applications peuvent Heroku partager une base de données commune? Par exemple, vous pouvez mettre des fonctions d'analyse de dans une autre application à partir de votre utilisateur face de code.

Il suffit de régler la DATABASE_URL config var pour plusieurs applications à la même de la valeur. Tout d'abord, obtenir la DATABASE_URL pour votre application existante:

$ heroku config | grep DATABASE_URL  --app sushi DATABASE_URL => postgres://lswlmfdsfos:5FSLVUSLLT123@ec2-123-456-78-90.compute1.amazonaws.com/ldfoiusfsf

Ensuite, définissez la DATABASE_URL pour de nouvelles applications pour cette valeur:

$ heroku config:add DATABASE_URL=postgres://lswlmfdsfos:5FSLVUSLLT123@ec2-123-456-78-90.compute-1.amazonaws.com/ldfoiusfsf --app sushi-analytics
Adding config vars: DATABASE_URL => postgres://lswlm...m/ldfoiusfsf Restarting app... done, v74. That's it

- maintenant, à la fois pour les apps de partager une base de données.

Tout comme un point de référence, Heroku initiale de conseils pour créer et utiliser une API pour accéder aux données à distance. Mon avis personnel est que, dans l'ensemble, pour beaucoup de situations, cela est de bon conseil, (c'est à dire mieux que la connexion de plusieurs applications à la même DB) même si je peux voir des situations où ce serait le plus d'ennuis que cela vaut la peine.

Mise à JOUR

Selon les commentaires sur cette réponse, il est intéressant de noter que Heroku ne réservons le droit de modifier la base de données des Url en tant que de besoin. Si cela se produit, il sera la cause de vos connexions secondaires à l'échec, et vous aurez besoin de mettre à jour les Url en conséquence.

15voto

John Beynon Points 23163

autant que je sache, il est possible que vous aurez à regarder le heroku variables de configuration de votre application avec la base de données et ensuite définir la database_url sur l'app qui veut partager la base de données de la même valeur. Un peu hors piste si et comment pris en charge, c'est que je ne sais pas.

EDIT Juste pour mettre mon esprit au repos, j'ai lancé deux applications sur Heroku - un simple échafaudage "post" avec un titre.

http://evening-spring-734.heroku.com/posts est le maître

http://electric-galaxy-230.heroku.com/posts - l'esclave

Afin de postes créés sur les deux seront écrites dans la base de données URL de soirée-printemps-734.

Tout ce que j'ai fait, est d'utiliser heroku config pour obtenir le DATABASE_URL de soirée-printemps-734 et ensuite définir la même valeur dans le DATABASE_URL électrique-galaxy-230.

Vous pourriez vous retrouver avec certains fruités DB conditions de course, mais il est certainement possible de le faire.

La magie hein?

12voto

JoshRivers Points 2902

J'ai reçu cela dans le Heroku newsletter récemment. Je suis envoyant un courriel à savoir si c'est vraiment une utilisation approuvée.

LE SAVIEZ-VOUS?

Le partage d'une base de données avec de nombreuses applications

Saviez-vous que Heroku les applications peuvent partager une base de données commune? Par exemple, vous pouvez mettre des fonctions d'analyse dans une application séparée de votre utilisateur face de code.

Il suffit de régler la DATABASE_URL var config pour plusieurs applications à la même valeur. Tout d'abord, obtenir l' DATABASE_URL pour votre application existante:

$ heroku config | grep DATABASE_URL  --app sushi
DATABASE_URL   => postgres://lswlmfdsfos:5FSLVUSLLT123@ec2-123-456-78-90.compute-1.amazonaws.com/ldfoiusfsf

Ensuite, définissez l' DATABASE_URL pour de nouvelles applications pour cette valeur:

$ heroku config:add DATABASE_URL=postgres://lswlmfdsfos:5FSLVUSLLT123@ec2-123-456-78-90.compute-1.amazonaws.com/ldfoiusfsf --app sushi-analytics
Adding config vars: DATABASE_URL => postgres://lswlm...m/ldfoiusfsf
Restarting app... done, v74.

Voilà, maintenant, à la fois pour les apps de partager une base de données.

7voto

Steve Wilhelm Points 3607

Le plugin Amazon RDS fonctionne bien pour cela. Plusieurs applications peuvent partager la même instance RDS.

Vous avez la possibilité de les faire partager des tableaux ou d’éviter la collision de nom de table à l’aide de la active_record.table_name_prefix.

1voto

jmk Points 31

Voir Heroku de référence: https://devcenter.heroku.com/categories/heroku-postgres

Q: puis-plusieurs Heroku Applications de se Connecter à une base de données unique?

Oui. Vous pouvez configurer plusieurs applications en cours d'exécution sur Heroku pour se connecter pour une base de données unique, à condition que vous avez les bases de données d'informations d'identification. Simplement remplacer le DATABASE_URL les applications que vous souhaitez vous connecter à l'aide de le heroku config:ajouter DATABASE_URL=... commande.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X