하루에 약 250,000 개의 인서트를받는 특정 테이블을 모니터링하는 것에 대한 조언을 찾고 있습니다. 방대한 규모는 아니지만 빠르게 성장하고 있으며 현재와 같이 계속 작업 할 수 없습니다.RoR 자주 업데이트되는 테이블의 변경 사항보기
주요 응용 프로그램은 MySQL 데이터베이스가있는 RoR4를 사용합니다. 데이터는 여러 개의 반경 서버에서 곧바로 데이터베이스로 스트리밍됩니다.
if column == xxx
venue = Venue.find_by(bar: foo)
if venue.is_monitored?
do some other shizzle
end
end
위치 테이블 중 하나 사소한 크기가 아니다, 그래서 나는보고 싶지 않은 :
우리는 간단한 모양을 특정 값에 대해 특정 열을 모니터링 한 후 수행해야 무언가가 발생할 때마다 수십만 개의 행을 통해
누구든지 빠르고 효율적인 방법을 추천 할 수 있습니까? 현재 각 인서트를 검사하는 것은 Rails에서 우스운 것처럼 보입니다. 우리는 또한 60 초마다 백그라운드에서 작업을 처리하려고 시도했지만 오래된 것 같습니다.
지금까지 가장 좋은 해결책은 삽입시 가치를 지켜보고 Redis에 게시하고 노드 서버를 사용하여 이벤트를 수신하는 것이 었습니다. 그런 다음 레일스로 다시 밀어 넣습니다.
죄송합니다. 주관적이거나 요점이 맞지 않으면 미안하지만, 저에게 맛있는 방법을 가르쳐 주시기를 정말 바랍니다.
Ive는 트리거를 빠르게보고 있었고 Rails에서 cron을 실행하는 것보다 낫지 않을지 확신하지 못했습니다. 데이터를 꺼내는 것은 '실시간'으로는 충분하지 않지만 sys_exec 메서드가 작동 할 수 있습니다. 나는 루비 스크립트 오버 헤드를 조사해야 할 것이다. 매초마다 레이크를 돌리면 서버를 죽일 수 있습니다. – simonmorley
편집 내 대답 – Benj
Redis에서 우리는 많은 술집 sub를 사용하고, 무엇인가 놓친 경우에 대비하여 테이블을 점검해야합니다. 당신의 아이디어는 너무 복잡하게 들리지 않습니다. 결정을 내리기 전에 트리거를 읽어야합니다. 기복과 함께 오는 데이터에 대한 로그를 분석하는 것을 살펴 보았습니다. 둘 다 생각처럼 ... – simonmorley