हरोकू में 2 ऐप्स के बीच डेटाबेस साझा करें


90

मैं एक ऐप के डेटाबेस को दूसरे हरोकू ऐप से एक्सेस करना चाहता हूं। क्या साझा डेटाबेस में यह संभव है?

जवाबों:


100

UPDATED

मूल रूप से, इस जवाब में कहा गया है कि हालांकि यह कुछ तरकीबों के साथ संभव था, लेकिन यह दृढ़ता से हतोत्साहित किया गया। यह हरोकू डेवलपर समर्थन वेबसाइट पर सलाह पर आधारित था। हालांकि, हाल ही में हरोकू ने विशेष रूप से यह वर्णन करने के लिए एक संचार जारी किया कि इसे कैसे प्राप्त किया जाए, और डेवलपर साइट पर उनकी सलाह पर पानी फेर दिया है। उनके ई-मेल के इस खंड का पूरा पाठ नीचे शामिल किया गया है:

क्या आप जानते हैं कि हरोकू ऐप्स एक आम डेटाबेस साझा कर सकते हैं? उदाहरण के लिए, आप अपने उपयोगकर्ता-सामना कोड से एक अलग एप्लिकेशन में एनालिटिक्स फ़ंक्शन रख सकते हैं।

बस एक ही मान के लिए कई ऐप्स के लिए DATABASE_URL कॉन्फिग वर्जन सेट करें। सबसे पहले, अपने मौजूदा ऐप के लिए DATABASE_URL प्राप्त करें:

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

फिर, इस मूल्य पर नए एप्लिकेशन के लिए DATABASE_URL सेट करें:

$ 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

- अब दोनों ऐप एक डेटाबेस साझा करेंगे।

संदर्भ के एक बिंदु के रूप में, हरोकू की मूल सलाह दूरस्थ रूप से डेटा तक पहुंचने के लिए एपीआई बनाने और उसका उपयोग करने की थी। मेरा व्यक्तिगत विचार है कि कुल मिलाकर, कई स्थितियों के लिए यह अच्छी सलाह है , (यानी एक ही डीबी के लिए कई एप्लिकेशन कनेक्ट करने से बेहतर), हालांकि मैं ऐसी स्थितियों को देख सकता हूं जहां इसके लायक होने से अधिक परेशानी होगी।

अपडेट करें

इस उत्तर पर टिप्पणियों के अनुसार, यह ध्यान देने योग्य है कि हरोकू डेटाबेस URL को आवश्यकतानुसार बदलने का अधिकार सुरक्षित रखता है। यदि ऐसा होता है, तो यह आपके द्वितीयक कनेक्शनों को विफल कर देगा, और आपको तदनुसार यूआरएल अपडेट करने की आवश्यकता होगी।


1
यह साबित करने के लिए हरकोकू पर बस सेटअप ऐप्स - मेरी प्रतिक्रिया में विवरण।
जॉन बेयोन

1
फेयर काफी, डाउन वोट पीछे हट गया ... हरोकू सपोर्ट ने अलग जवाब दिया! प्रश्न: अगर मैं दो हर्को ऐप विकसित करता हूं, तो क्या वे एकल डेटाबेस तक पहुंच सकते हैं? मेरे द्वारा पूछे जाने का कारण यह है कि हमारे पास एक रेल एप्लिकेशन और एक पापात्रा ऐप है, और उन्हें एक पोस्टग्रेज डेटाबेस साझा करना होगा। बल्कि http से ऐसा नहीं होगा! हरोकू समर्थन से उत्तर: हां, यदि आपको जरूरत है, तो आप कर सकते हैं। हर Heroku ऐप को डिफ़ॉल्ट रूप से प्रोविज़न किया गया एक डेटाबेस मिलता है, लेकिन एक ऐप के लिए दूसरे ऐप के डेटाबेस को बस एक ऐप से दूसरे ऐप में DATABASE_URL कॉन्फिग वर्जन को कॉपी करके इस्तेमाल करना संभव है।
जॉन बेयोन

1
मैंने डाउन वोट वापस ले लिया लेकिन स्वीकृत उत्तर अभी भी एक FYI के रूप में गलत है।
जॉन बेयोन

1
वे कहते हैं कि वे आपके एप्लिकेशन डेटाबेस URL को बदलने का अधिकार सुरक्षित रखते हैं ताकि यदि आपको लगता है कि आपको डेटाबेस url को मैन्युअल रूप से उपयोग कर रहे हैं तो बदलने की आवश्यकता होगी।
जॉन बेयोन

7
ऐप्स के बीच DATABASE_URL साझा करने के लिए अब एक आधिकारिक हेरोकू तरीका है। नीचे @ c360ian द्वारा उत्तर देखें
मोबीट्स

82

सदाबहार सवाल का देर से जवाब!

हेरोकू आधिकारिक तौर पर अब उनके ऐडऑन ढांचे के माध्यम से एक बेहतर / सुशोभित समाधान का समर्थन करता है। यह उनके नवीनतम समाचार पत्र में वर्णित किया गया है कि ऐप के बीच कैसे ऐडऑन साझा करें। नीचे दिए गए स्निपेट्स राइटअप में दिए गए हैं:

$ 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

लिंक: विस्तार_थे_पॉवर_ऑफ_एड_ऑन


बहुत धन्यवाद !, यह प्राथमिकता वाला उत्तर होना चाहिए!
HLL

2
यह सही जवाब है। अन्य सभी उत्तर हटा दिए गए हैं, और उनमें से ज्यादातर वैसे भी डुप्लिकेट हैं।
jelder

4
मेरे द्वारा उपयोग की जाने वाली कमांड का प्रारूप थाheroku addons:attach originating_app_name::HEROKU_POSTGRESQL_COLOR_URL -a no_db_app_name
मार्कलर

15

जहां तक ​​मुझे पता है कि यह संभव है - आपको डीबी के साथ अपने ऐप के लिए हरोकू कॉन्फिग वेरिएबल्स को देखना होगा और फिर उस ऐप पर database_url सेट करना होगा जो डेटाबेस को उसी मूल्य पर साझा करना चाहता है। Kinda बंद ट्रैक के रूप में हालांकि और यह कैसे समर्थित है मुझे नहीं पता।

संपादित करें बस अपने दिमाग को आराम से सेट करने के लिए मैंने हर्कोक पर दो ऐप बनाए हैं - एक शीर्षक के साथ एक साधारण मचान 'पोस्ट'।

http://evening-spring-734.heroku.com/posts मास्टर है

http://electric-galaxy-230.heroku.com/posts - गुलाम है

तो या तो सृजित पदों को शाम-बसंत -734 के डेटाबेस URL पर लिखा जाएगा।

मैंने जो कुछ किया है वह शाम-बसंत -734 के DATABASE_URL को प्राप्त करने के लिए हरोकू कॉन्फिग का उपयोग करें और फिर उसी मूल्य को इलेक्ट्रिक-गैलेक्सी-230 के DATABASE_URL में सेट करें।

आप डीबी दौड़ की कुछ शर्तों के साथ समाप्त हो सकते हैं लेकिन ऐसा करना निश्चित रूप से संभव है।

जादू हुह?


+1: मैं इसे शॉर्ट या वैनिटी URL करने के लिए बहुत उपयोगी मानता हूं .. जैसे myapp.me/iwasrobbed (Heroku App # 1) myapp.com/users/1 ( हरोकू ऐप # 2) पर पुनर्निर्देशित करता हूं क्योंकि अब मैं स्टोर कर सकता हूं मानक उपयोगकर्ता DB में घमंड नाम। धन्यवाद जॉन!
iwasrobbed

1
heroku pg: DATABASE_URL को बढ़ावा दें - your_app_name इस चर को सेट करने का समर्थित तरीका है।
नील मिडलटन

मेरी एकमात्र टिप्पणी दौड़ की स्थिति के लिए है। श्रमिक और वेब उदाहरण एक ही होगा, जैसे कि लौह श्रमिक या रिसक्यू जैसे श्रमिक।
baash05

12

मुझे हाल ही में हेरोकू समाचार पत्र में यह प्राप्त हुआ। मैं उन्हें यह पता लगाने के लिए ईमेल कर रहा हूं कि क्या यह वास्तव में स्वीकृत उपयोग है।

क्या तुम्हें पता था?

कई एप्लिकेशन के साथ एक डेटाबेस साझा करना

क्या आप जानते हैं कि हरोकू ऐप्स एक आम डेटाबेस साझा कर सकते हैं? उदाहरण के लिए, आप अपने उपयोगकर्ता-सामना कोड से एक अलग एप्लिकेशन में एनालिटिक्स फ़ंक्शन डाल सकते हैं।

बस एक ही मान के लिए कई एप्लिकेशन के लिए DATABASE_URL कॉन्फ़िगरेशन संस्करण सेट करें । सबसे पहले, DATABASE_URLअपने मौजूदा ऐप के लिए जाएं:

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

फिर, DATABASE_URLइस मूल्य के लिए नए ऐप्स के लिए सेट करें :

$ 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.

यह बात है - अब दोनों ऐप एक डेटाबेस साझा करेंगे।


4
मैंने हेरोकू से इस विधि का उपयोग करने के बारे में पूछा, ताकि दोनों एक नि: शुल्क वेब डायनो और एक नि: शुल्क वर्कर डायनो प्राप्त कर सकें। यहाँ उनकी प्रतिक्रिया है। >> "जोश - हम ऐसा करने को हतोत्साहित करते हैं, लेकिन इसके अलावा कार्यकर्ता के साथ मुद्दों को भी सुलझाया जाएगा। एक बार यह बेकार हो जाने के बाद, यह किसी भी काम को करना बंद कर देगा और वेब रिक्वेस्ट की तरह इसे 'जाग्रत' करने के लिए कुछ नहीं होगा। एक कार्यकर्ता के रूप में बेकार। "<< तो ऐसा लगता है कि आप एक ही DB पर कई ऐप्स का उपयोग कर सकते हैं, लेकिन यह मुफ़्त में बहुत उपयोगी नहीं है।
जोशवर्स

Im विकासशील उद्देश्यों के लिए इसका उपयोग करते हुए, मेरे पास पहले से ही मेरे लाइव ऐप में हजारों पंक्तियां हैं, और नए दिखावे को एक और छोटे हरोकू ऐप में विकसित किया जा रहा है, इसलिए डेटा साझा करने में सक्षम होने के कारण मैं शांत हूं, मैं विकसित कर सकता हूं और देखने के साथ नए रूप में एक ही डेटा
Dvid सिल्वा

7

अमेजन आरडीएस प्लगइन इसके लिए अच्छा काम करता है। कई ऐप एक ही RDS उदाहरण साझा कर सकते हैं।

आपके पास उनके पास टेबल साझा करने के लिए या active_record.table_name_prefix का उपयोग करके तालिका नाम टकराव से बचने का लचीलापन है।


1

हरोकू संदर्भ देखें: https://devcenter.heroku.com/categories/heroku-postgres

प्रश्न: क्या कई हरोकू एप्लिकेशन एक ही डेटाबेस से जुड़ सकते हैं?

हाँ। आप एक डेटाबेस से कनेक्ट करने के लिए हरोकू पर चल रहे कई एप्लिकेशन को कॉन्फ़िगर कर सकते हैं, बशर्ते कि आपके पास डेटाबेस क्रेडेंशियल हों। केवल उन ऐप्स के DATABASE_URL को ओवरराइड करें जिन्हें आप heroku config का उपयोग करके कनेक्ट करना चाहते हैं: DATABASE_URL = ... कमांड जोड़ें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.