2009-05-27 15 views
0

私は現在、会社内のすべてのワークステーションに展開されるWindowsサービスの開発に取り組んでいます。サービスの目的は、さまざまな統計情報を収集し、中央の場所に記録することです。複数のワークステーションからのデータ収集

最初の繰り返しでは、サービスはSQLに直接呼び出して記録するデータがあるたびに記録しています。約120台のワークステーションでテストすると、それは良い考えではなく、拡張できないと私に語った。

問題のデータを収集するための代替戦略をお勧めしますが、これはデータベースサーバーを過負荷にしませんか?これは約2000台のマシンに展開されます。

私はC#で作業しています。

ありがとうございました。

答えて

0

質問に答えるだけです。ここで私はそれを実装し終わった方法です。

データ収集

  • C#のサービスは、ワークステーション上で実行されます。異なる間隔(システム上の特定のイベントに基づいて、あらかじめ決められていない)で、データ収集を開始します。
  • データは、ローカルワークステーション上のファイルに書き込まれます。
  • データファイルがネットワーク上の場所にコピーされます。

データ解析

  • アン "輸入" プログラムは、スケジュール上で実行されます。最後に実行されてから作成されたすべてのテキストファイルを解析し、解析してSQLにインポートします。

    • 私は元の質問で述べた私のSQLサーバーとリソースの問題を避けてください:私はそれをこのように実装さ

    理由がにあります。

  • 作成されるファイルは、実際には小さくなります。1-234
  • 過去に数分間実行され、進行中のコピーとの衝突を回避します。
  • Importerは、処理されたファイルを削除し、その中にないファイルをスキップします。「lastscantime」および「currentTime-Xminute」ウィンドウ。
1

あなたの質問から、既に実用的な解決策があり、縮尺を変える方法に関するアドバイスが必要なようです。ここに私の2セントは、以下のとおりです。

  • メモリ内
  • てみバッチ処理データの更新、ワークステーションのサービスでは、オープンSQL接続を維持し、のみ一定量のデータが収集された後、データベースまたは一定の間隔を更新しませんあなたのコネクションをより魅力的で、よりチャンクしないようにしています。
  • データベースが個人的に

重複データを避けるために、適切に正規化されていることを確認し、2000年のワークステーションに拡張することが必要で、ミッションクリティカルな何かのために、私は、商用製品を使用すると、再発明ではないでしょうホイール。

+0

私は2つの段階で実装しました。下の私の答えの詳細を参照してください。これまでの商業用製品では、満足するように求められた非常に特別なニーズに対応するものは見つかりませんでした。 ありがとうございます。 – Nasir