2009-05-27 4 views
0

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

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

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

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

Спасибо.

ответ

0

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

Сбор данных

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

Синтаксические данные программы

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

Причина я реализовал это таким образом, чтобы:

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

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

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

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

+0

Я закончил его реализацию в два этапа. см. подробности в моем ответе ниже. В то время как коммерческие продукты, я не мог найти ничего, что могло бы удовлетворить особые потребности, которые меня попросили удовлетворить. спасибо, хотя. – Nasir

Смежные вопросы