내 웹 사이트의 사용자 (socket.io)를 통해 데이터를 집계 할 작은 앱을 준비 중입니다. 모든 데이터를 매시간 monogDB에 삽입하려고합니다.매시간 DB (mongo)를 업데이트하는 가장 좋은 방법은 무엇입니까?
가장 좋은 방법은 무엇입니까? setInterval (60000)은 lil bit lame처럼 보입니다 :)
내 웹 사이트의 사용자 (socket.io)를 통해 데이터를 집계 할 작은 앱을 준비 중입니다. 모든 데이터를 매시간 monogDB에 삽입하려고합니다.매시간 DB (mongo)를 업데이트하는 가장 좋은 방법은 무엇입니까?
가장 좋은 방법은 무엇입니까? setInterval (60000)은 lil bit lame처럼 보입니다 :)
예를 들어 cron을 사용하고 node.js 앱을 예약 된 작업으로 실행할 수 있습니다.
편집 : 프로그램이 계속 실행해야 할 경우
, 그때 아마의 setTimeout은 (구현이 매우 간단합니다) 몇 가지 가능한 선택 중 하나입니다. 그렇지 않으면 데이터를 일부 임시 저장 시스템 (예 : redis)으로 오프로드하여 정기적으로 다른 node.js 프로그램을 실행하여 데이터를 이동할 수 있지만 다른 DB 시스템에 대한 새로운 종속성이 생기고 시나리오에 따라 복잡성이 증가 할 수 있습니다. Redis는 또한 주 node.js 앱이 예기치 않게 종료되고 데이터 배치의 일부 또는 전부를 잃어 버리는 경우를 대비하여 어떤 종류의 오류 방지 솔루션으로도 사용할 수 있습니다.
curl
요청으로 데이터베이스 쓰기를 트리거하는 이유는 무엇입니까? 매시간 cron 작업에 명령을 입력하고 로컬 포트에서 수신 할 수 있습니다.
시간당 한 번이 아니라 실시간으로 집계해야합니다.
버디 미디어 (BuddyMedia)의 프리젠 테이션을 통해 실시간 집계를 어떻게 진행하는지 확인할 수 있습니다. 나는 실시간 메트릭스에 대해이 접근 방식의 수정 된 버전을 사용하고 있으며 멋지게 작동합니다.
http://www.slideshare.net/pstokes2/social-analytics-with-mongodb
당신은 몽고 저장소 당신이 데이터를 복사하고 요청이 당신을 제공 할 때마다 당신이 마지막으로 데이터를 복사하기 때문에이되었습니다 시간을 확인할 수있는 마지막 시간을 가질 수 있습니다.
또는 1 분에 1 회 확인을 위해 setInterval (checkRestore, 60000)을 시도해 볼 수 있습니다. checkRestore()는 서버에 쿼리하여 마지막으로 업데이트 된 시간이 한 시간 이상 경과했는지 확인합니다. 이를 수행 할 수있는 몇 가지 방법이 있습니다.
날짜를 저장하는 가장 쉬운 방법은 Date.now() (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date)의 값으로 저장 한 다음 db.logs.find ({lastUpdate : {$ lt : Date.now() - 6000000}})와 같은 것입니다.
나는 거기에 몇 가지 다른 솔루션을 혼동하지만, 잘하면 그게 뭔가 효과가있을 것 같아!
노드를 사용하는 경우 멋진 CRON과 유사한 도구는 Forever입니다. 동일한 CRON 패턴을 사용하여 반복되는 작업을 처리합니다.
가능한 경우 cron 작업을하는 것이 가장 쉽습니다. – blu