来自多个工作站的数据收集

时间:2009-05-27 16:30:47

标签: c# data-collection

我目前正致力于开发一项Windows服务,该服务将部署到公司内的所有工作站。该服务的目的是收集各种统计数据并将其记录在一个中心位置。

对于第一次迭代,服务正在直接调用SQL以记录每次有数据要记录。在大约120个工作站上进行测试告诉我,这不是一个好主意,也不会扩展。

有人可以推荐一种替代策略来收集有问题的数据,这些数据不会超载数据库服务器吗?这将部署到大约2000台机器上。

我正在使用C#。

感谢。

2 个答案:

答案 0 :(得分:1)

从您的问题来看,您似乎已经拥有了一个可行的解决方案,而您只需要了解如何进行扩展。这是我的两分钱:

  • 不要在工作站的服务中打开SQL连接
  • 尝试在内存中批量处理数据更新,并仅在收集了一定数量的数据或经过一定时间间隔后更新数据库(使您的连接不那么繁琐且更加粗糙)。
  • 确保您的数据库已正确规范化以避免重复数据

就个人而言,对于需要扩展到2000个工作站的关键任务,我会使用商业产品而不会重新发明轮子。

答案 1 :(得分:0)

回答问题。以下是我最终实现它的方法。

数据收集

  • C#服务在工作站上运行。在不同的时间间隔(未预先确定,基于系统上的某些事件),它会触发数据收集。
  • 将数据写入本地工作站上的文件。
  • 然后将数据文件复制到网络位置。

数据解析

  • “进口商”程序按计划运行。它遍历自上次运行以来创建的所有文本文件,解析它们并将它们导入SQL。

我这样实现的原因是:

  • 避免我在原始问题中提到的SQL服务器的资源问题。
  • 创建的文件非常小,1-2KB
  • 导入器过去运行几分钟,以避免与正在进行的任何副本发生冲突。
  • 导入器删除已处理的文件,并跳过不在其中的“lastscantime”和“currentTime-Xminute”窗口中的文件。