2009-05-27 2 views
0

현재 회사 내의 모든 워크 스테이션에 배포 할 Windows 서비스를 개발 중입니다. 이 서비스의 목적은 다양한 통계를 수집하여 중앙 위치에 기록하는 것입니다.여러 워크 스테이션의 데이터 수집

첫 번째 반복에 대해 서비스는 SQL에 대한 직접 호출을 수행하여 기록 할 데이터가있을 때마다 기록합니다. 약 120 개의 워크 스테이션에서 테스트 해보니 좋은 생각이 아니며 확장되지 않을 것입니다.

데이터베이스 서버에 과부하가 발생하지 않는 데이터 수집을위한 대안 전략을 권장 할 수 있습니까? 이것은 약 2000 대의 기계에 배치 될 것입니다.

저는 C#으로 작업하고 있습니다.

감사합니다.

답변

0

질문에 답하기 만하면됩니다. 여기에 내가 그것을 구현 한 방법이 있습니다.

데이터 수집

  • C#을 서비스는 워크 스테이션에서 실행됩니다. 서로 다른 간격 (시스템의 특정 이벤트를 기반으로 미리 결정되지 않음)에서 데이터 수집을 시작합니다.
  • 데이터는 로컬 워크 스테이션의 파일에 기록됩니다.
  • 데이터 파일이 네트워크 위치에 복사됩니다.

데이터 구문 분석

  • 에 "수입"프로그램은 일정에 따라 실행됩니다. 마지막으로 실행 된 이후 작성된 모든 텍스트 파일을 분석하고 파싱 한 다음 SQL로 가져옵니다.

내가 그것을 구현 된 이유는이 방법에이다 : 나는 원래의 질문에 언급 내 SQL 서버와

  • 피 자원 문제를 해결합니다.
  • 생성 된 파일이 실제로 작습니다. 1-234
  • 진행중인 복사본과 충돌하지 않도록 Importer를 몇 분 정도 실행합니다.
  • Importer는 처리 된 파일을 삭제하고 "lastscantime"및 "currentTime-Xminute"창에없는 파일은 건너 뜁니다.
1

귀하의 질문에 이미 해결책이있는 것으로 보이며 확장 방법을 알려주고 자합니다. 여기 내 두 센트는 다음과 같습니다

  • 메모리에
  • 한번에 일괄 처리 데이터 업데이트 워크 스테이션의 서비스에 열려있는 SQL 연결을 유지하고 단지 특정 양의 데이터가 수집 된 후 데이터베이스 또는 특정 간격을 업데이트하지 마십시오 (귀하의 연결을 덜 수다스러운하고 chunky 만들기)가 통과했습니다.
  • 데이터베이스가 2000 워크 스테이션으로 확장하는 데 필요한 중요한 뭔가, 나는 상용 제품을 사용하고 바퀴를 다시 발명하지 것이기,

개인적으로 중복 데이터을 피하기 위해 적절하게 표준화되어 있는지 확인 .

+0

두 단계로 구현되었습니다. 내 대답은 아래의 내용을 참조하십시오. 먼 상업용 제품으로서, 나는 만족해야한다는 매우 특별한 요구를 수용 할 수있는 것을 찾지 못했습니다. 덕분에 . – Nasir

관련 문제