2009-05-31 4 views
2

이것은 무엇보다 호기심이 많으며 "나중에 참조 할 수 있습니다"이지만 혜성은 데이터베이스 측에서 어떻게 구현 되었습니까? 대부분의 구현은 데이터가 사용 가능할 때까지 "대기"하기 위해 오래 지속되는 HTTP 요청을 사용하지만 서버 측에서이 작업을 수행하는 방법은 알고 있습니다. 웹 서버는 새로운 데이터를 언제 사용할 수 있는지 어떻게 알 수 있습니까? 데이터베이스를 지속적으로 폴링합니까?데이터베이스 측에 혜성 구현

답변

1

어떤 DB를 사용하고 있습니까? 많은 모양의 RDBMS가 어떤 모양이나 형태로 수행하는 트리거을 지원하는 경우 실제로 트리거를 실행하여 적절한 응답을 보내도록 HTTP 요청을 알릴 수 있습니다.

트리거는 폴링 필요성을 제거합니다 ... 폴링은 일반적으로 최선의 방법은 아닙니다.

PostgreSQL은 (PL/Python조차도) 꽤 좋은 지원을하는 것 같습니다.

1

이것은 대단히 응용 프로그램에 따라 다릅니다. 가장 가능성있는 구현은 일종의 메시징 시스템입니다.

대부분의 경우 꽤 많은 부분으로 구성됩니다 서버 측 코드 : 열려있는 모든 연결을 다루는

  • 들어오는 요청을 hansle 몇 가지 애플리케이션 서버,
  • A (별도의) 혜성 서버 에 클라이언트, 메시징 인프라의
  • 데이터베이스 및
  • 어떤 종류의

마지막 e, 메시징 인프라가 실제로 핵심입니다. 이것은 app 서버가 혜성 서버와 통신 할 수있는 방법을 제공합니다. 따라서 응용 프로그램 서버에 요청이 들어 오면 혜성 서버가 올바른 클라이언트에 알리도록 메시지 큐에 메시지를 넣습니다.

메시징 구현 방법은 응용 프로그램에 따라 달라집니다. 매우 간단한 구현은 messages이라는 데이터베이스 테이블을 사용하여이를 폴링합니다.

그러나 사용하려는 스택에 따라보다 정교한 도구를 사용할 수 있어야합니다.

레일즈에서 나는 단순히 어떤 네트워크 포트를 듣는 Juggernaut을 사용하고 있습니다. 전송할 데이터가있을 때마다 Rails 애플리케이션 서버는이 거대한 푸시 서버에 대한 연결을 열어 클라이언트에 보낼 대상을 알려줍니다.

+0

내 질문에 직접 대답하지 않았지만 설명에 +1을 붙였습니다 (또한 Ruby를 사용하기 때문에 Juggernaut에 대한 링크도 있음). –