Сбор данных с нескольких рабочих станций - PullRequest
0 голосов
/ 27 мая 2009

В настоящее время я работаю над созданием службы Windows, которая будет развернута на всех рабочих станциях в компании. Цель службы - собирать различную статистику и записывать ее в центральном местоположении.

для первой итерации служба выполняет прямой вызов SQL для записи каждый раз, когда есть данные для записи. Тестирование на 120 рабочих станциях показало мне, что это не очень хорошая идея и не будет масштабироваться.

Может ли кто-нибудь порекомендовать альтернативную стратегию сбора данных, которая не будет перегружать сервер базы данных? Это будет развернуто примерно на 2000 машин.

Я работаю с C #.

Спасибо.

Ответы [ 2 ]

1 голос
/ 27 мая 2009

Судя по вашему вопросу, у вас уже есть работающее решение, и вам просто нужен совет, как его масштабировать. Вот мои два цента:

  • Не держать соединения SQL открытыми в службе рабочей станции
  • Попробуйте пакетное обновление данных в памяти и обновляйте базу данных только после того, как будет собран определенный объем данных или пройден определенный интервал (что делает ваше соединение менее разговорчивым и более объемным).
  • Убедитесь, что ваша база данных правильно нормализована, чтобы избежать дублирования данных

Лично для чего-то критически важного, требующего масштабирования до 2000 рабочих станций, я бы использовал коммерческий продукт и не изобретал бы колесо заново.

0 голосов
/ 07 октября 2009

Просто отвечаю, чтобы завершить вопрос. Вот как я это реализовал.

Сбор данных

  • Служба C # работает на рабочих станциях. Через разные промежутки времени (не предопределено, основываясь на определенных событиях в системе) он запускает сбор данных.
  • Данные записываются в файл на локальной рабочей станции.
  • Файл данных затем копируется в сетевое расположение.

Анализ данных

  • Программа-импортер запускается по расписанию. Он просматривает все текстовые файлы, созданные с момента последнего запуска, анализирует их и импортирует в SQL.

Причина, по которой я реализовал это так:

  • Избегайте проблем с ресурсами на моем сервере SQL, о которых я упоминал в первоначальном вопросе.
  • Созданные файлы очень маленькие, 1-2 КБ
  • Импортер запускается несколько минут назад, чтобы избежать столкновения с любыми выполняемыми копиями.
  • Импортер удаляет файлы, которые были обработаны, и пропускает файлы, не входящие в его окна «lastscantime» и «currentTime-Xminute».
...