1

문제가있어서 도움이 필요합니다.Heroku에서 Play Framework를 사용하여 데이터베이스에 액세스하는 경우

자바에서 Play Framework v1.2.4로 작업 중이며 내 서버가 Heroku 서버에 업로드되었습니다.

모두 정상적으로 작동하지만 내 데이터베이스에 액세스 할 수 있으며 모두 정상이지만 데이터베이스에 몇 가지 저장을 수행하면 실험 문제가 발생합니다.

데이터를 데이터베이스에 여러 번 저장하고 휴대 전화로 알림을 보내는 방법이 있습니다. 내 문제는 도착할 때 서버에 업데이트 데이터를 요청하고 마지막 업데이트없이 데이터를 반환하기 때문에 데이터베이스가 데이터를 저장하기 전에 알림이 도착한다는 것입니다. 몇 초 후에 다시 업데이트하려고하는데 데이터가 올바르게 표시되므로 시간 액세스 문제가 있다고 생각합니다. 데이터를 저장하기 위해 데이터베이스가 끝나면 서버는 알림을 보냅니다.

무료 버전의 Heroku 서버를 사용하고 있기 때문에 이것이 발생했는지 알지 못합니다. 구입하기 전에 확실하게 알고 싶습니다.

답변

2

일반적으로 클라우드 데이터베이스에 대한 모든 요청은 로컬 컴퓨터에서의 동일한 작업보다 항상 느립니다. 컴퓨터에서 단지 0.0001 초만 필요하다는 쿼리 만해도 클라우드에서 0.5 초로 느려질 수 있습니다. 이유는 단순한 클라우드 공급자가 공유 데이터베이스 + (지리적) 복제를 사용하기 때문에 ... 같은 컴퓨터의 한 프로그램에서만 액세스하는 데이터베이스와 비교할 수 없습니다.

무료 Heroku DB plans은 모든 데이터베이스 캐시를 제공하지 않으므로 모든 쿼리가 클라우드에서 직접 페치된다는 것을 명심하십시오.

우리는 응용 프로그램을 모르기 때문에 문제를 해결하는 데 적어도 3 가지 방법이 있다는 것을 거의 확실하게 확인할 수있는 병목 현상을 말하기는 어렵습니다. 그들은 대안이 아니므로 아마 모든 것을 사용 (또는 적어도 확인)해야 할 것입니다.

  1. 당신은 위험 일부 기본 계획에 필요 유료 버전으로 변경 일들이, 어쩌면 아마, 당신을 위해 충분 방법을 참조하십시오.
  2. 쿼리를 줄이기 위해 응용 프로그램을 다시 디자인하십시오. 예를 들어 10 개의 다른 행을 선택하기 위해 10 개의 쿼리를 보내는 대신 한 번에 10 개의 레코드를 모두 선택하는 쿼리 하나를 보내야합니다.
  3. 동일한 데이터 세트를 반복해서 반복하여 선택하지 않으려면 Play's cache API을 사용하십시오. 예를 들어 드물게 변경되는 일부 카테고리가 있지만 각 아티클에 카테고리 트리가 필요한 경우 매번 DB에서 카테고리를 가져올 필요가 없으며 캐시 목록에 카테고리 목록을 저장할 수 있으므로 기사의 내용을 가져 오기 위해 단 하나의 요청 만 사용해야합니다. (짧은 시간 동안 캐시 될 수도 있습니다.)
+0

오, 저는 dev 어플 리케이션을 위해 서버를 지불 할 수 없어 두려워요. 내 서버의 이중 스레드, 그리고 문제가없는 업데이 트를 모바일 애플 리케이션에 충분한 시간을주는 알림을 보내 스레드를 자고. 나는 그것이 최선의 해결책은 아니라는 것을 알고 있지만, 지금은 충분할 것입니다. 도와 주셔서 감사합니다! –

관련 문제