2010-07-20 2 views
0

매우 자주 바뀌는 Vote라는 모델이 있습니다 (사람들이 물건에 투표). 유권자가 남성/여성인지, 연령 등을 보간하는 등 투표가 저장되면 다른 분석을 수행합니다. 이로 인해 (성인 투표, 여성 투표 등) 카운터가 동일한 모델로 업데이트됩니다.백그라운드 작업 대 after_save 콜백

저장 처리 후에이 작업을 수행하는 가장 좋은 방법은 배경 작업 (delayed_job 플러그인 사용)이거나 after_save 콜백으로 남겨 두는 것이 가장 좋은 것인지 궁금합니다. 성능 측면에서도 어느 것이 더 낫습니까?

두 번째 최신 데이터를 사용자에게 표시 할 필요가 없습니다. (심지어 after_save 콜백도이를 수행하지 않습니다.)

감사

+0

분석 자료의 메커니즘에 달려 있다고 생각합니까? 한 번에 하나의 레코드보다 대량으로 수행하는 것이 더 경제적 인 방식으로 전체 풀을 분석하는 프로세스입니까? – jasonpgignac

답변

1

엄지 손가락의 제 규칙이 완료 될 때까지 (평균) 초 이상 걸리는 경우이다 - 나는 백그라운드 작업에 밀어 그렇지 않으면 내가 동기에 유지합니다. 내가 delayed job을 사용하면 잘 작동하고 그만 둘 이유가 없습니다. 나는 백그라운드 작업에서 데이터베이스에 접근 할 필요가 없으며 커스텀 레이크 작업을 사용했는데, 매우 효율적이어서 백그라운드 작업 프로세서를 구현해야하는 번거 로움을 덜어주었습니다.

+0

추가 접근법이있는 두 번째 접근 방식 : 작업이 응용 프로그램 사용에 중요하지 않거나 사용자가이 업데이트 된 정보를 즉시 필요로하지 않으면이를 지연시킬 수 있습니다. 예를 들어 사용자 이름 변경으로 제 3 자 시스템 (인보이스 발행)을 업데이트해도 사용자가 애플리케이션을 사용할 수있는 능력에 영향을주지 않으므로 delayed_job을 사용하십시오 –

관련 문제