IT

Heroku의 두 앱간에 데이터베이스 공유

lottoking 2020. 9. 13. 10:57
반응형

Heroku의 두 앱간에 데이터베이스 공유


다른 Heroku 앱에서 앱 데이터베이스에 액세스하고 싶습니다. 공유 데이터베이스에서 가능합니까?


업데이트 됨

원래이 답변은 몇 가지 트릭으로 가능하지만 강력히 권장하지 않습니다 . 이것은 Heroku 개발자 지원 웹 사이트의 조언을 기반으로합니다. 그러나 최근 Heroku는 달성하는 방법을 설명하는 통신문을 발표하는 개발자 사이트에서 조언을 제공했습니다. 이 이메일 섹션의 전체 텍스트는 다음과 가변적입니다.

Heroku 앱이 공통 데이터베이스를 공유 할 수있는 것을 알고 계십니까? 예를 들어, 사용자 대면 코드와는 별도의 애플리케이션에 분석 기능을 배치 할 수 있습니다.

여러 앱의 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

— 이제 두 앱이 하나의 데이터베이스를 공유합니다.

참고로 Heroku의 원래 조언은 API를 생성하고 사용하여 원격으로 데이터에 액세스 것이 었습니다. 제 개인적인 견해는 전반적으로 많은에서 이것이 좋은 조언입니다 (즉, 동일한 상황 DB에 여러 응용 프로그램을 연결하는 것보다 낫습니다). 가치가있는 것보다 더 문제가 발생하는 상황을 볼 수 있습니다.

최신 정보

이 답변에 대한 의견에 따라 Heroku는 필요에 따라 데이터베이스 URL을 언급 권리가 있음을 주목할 가치가 있습니다. 이 경우 보조 연결이 실패 할 때 그에 따라 URL을 업데이트해야합니다.


관련 질문에 대한 최신 답변!

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


내가 아는 가능한 한 -DB로 앱의 heroku 구성 변수를 본 다음 데이터베이스를 공유하려는 앱에서 database_url을 동일한 값으로 설정해야합니다. 그래도 조금 벗어 났고 어떻게 지원 모르겠습니다.

편집 마음을 쉬게하기 위해 Heroku에서 제목이있는 간단한 비계 '포스트'라는 두 개의 개의 앱을 만들었습니다.

http://evening-spring-734.heroku.com/posts 가 마스터입니다.

http://electric-galaxy-230.heroku.com/posts- 노예입니다

따라서 둘 중 하나에 해당하는 게시물은 저녁 봄 734의 데이터베이스 URL에 기록됩니다.

저녁 봄 -734의 DATABASE_URL을 다음 electric-galaxy-230의 DATABASE_URL에 동일한 값을 설정하는 것입니다.

과일 같은 DB 경쟁 조건으로 끝날 수 있습니다.

매직 응?


최근에 Heroku 뉴스 레터에서 교회입니다. 실제로 승인 된 사용인지 확인하기 위해 이메일을 보냅니다.

알고 계십니까?

하나의 데이터베이스를 여러 앱과 공유

Heroku 앱이 공통 데이터베이스를 공유 할 수있는 것을 알고 계십니까? 예를 들어, 사용자 대면 코드와는 별도의 애플리케이션에 분석 기능을 배치 할 수 있습니다.

여러 앱 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.

이제 두 앱이 하나의 데이터베이스를 공유합니다.


Amazon RDS 작동은이를 위해 잘 작동합니다. 여러 앱이 동일한 RDS 인스턴스를 공유 할 수 있습니다.

active_record.table_name_prefix를 사용하여 테이블을 공유하거나 테이블 이름 충돌을 피할 수있는 유연성이 있습니다.


Heroku 참조 참조 : https://devcenter.heroku.com/categories/heroku-postgres

Q : 다수의 Heroku 애플리케이션을 단일 데이터베이스에 다수의 운영 체제입니까?

예. 자격 증명이있는 경우 Heroku에서 실행되는 여러 애플리케이션을 단일 데이터베이스에 연결하도록 구성 할 수 있습니다. heroku config : add DATABASE_URL = ... 명령을 사용하여 연결하려는 앱의 DATABASE_URL을 재정의합니다.

참고 URL : https://stackoverflow.com/questions/5981508/share-database-between-2-apps-in-heroku

반응형