0

私は、複数のシステムに分散しているソフトウェア用のカスタム監視サービスを開発しています。パフォーマンス モニターのレポート ビューのようにデータを表示することにしました。 ここに画像の説明を入力

データを保存するために、最新の値のみを保持する非常に単純なデータベース テーブルを使用します。

|Server|Object|Instance|Query|Value|

したがって、各値は、サーバー、オブジェクト、インスタンス、およびクエリを通じて一意に識別できます。例は次のとおりです。

|Server| Object     |Instance| Query     |Value|
+------+------------+--------+-----------+-----+
| Srv1 | Disk       |   C:/  | TotalSize |500GB|
| Srv1 | Disk       |   C:/  | FreeSpace | 50GB|
| Srv1 | Disk       |   C:/  | UsedSpace |450GB|
| Srv1 | Disk       |   C:/  | VolumeLbl |  OS |
| Srv1 | Disk       |   D:/  | TotalSize |900GB|
| Srv1 | Disk       |   D:/  | FreeSpace |700GB|
| Srv1 | Disk       |   D:/  | UsedSpace |200GB|
| Srv1 | Disk       |   D:/  | VolumeLbl | Data|
| Srv1 | Performance|   ---  | CpuUsage  | 12% |
| Srv1 | Performance|   ---  | MemUsage  | 34% |
| Srv1 | Performance|   ---  | Processes | 64  |

これを次のように変換します。

Srv1
    Disk             
                     C:/        D:/  
        TotalSize    500GB      900GB
        FreeSpace    50GB       700GB
        UsedSpace    450GB      200gb
        VolumeLbl    OS         Data            

    Performance      
        CpuUsage     12%
        MemUsage     34%
        Processes    64

これをどのような構造で保管すればよいのか途方に暮れています。オブジェクト (ディスクとパフォーマンス) がサーバーのサブオブジェクトであることは簡単にわかりますが、クエリはインスタンスまたはオブジェクトのサブオブジェクトである必要がありますか? 通常のテーブルでは、各行はオブジェクトであり、列はその行のサブオブジェクトです。しかし、クエリはインスタンスのサブオブジェクトであるため、この場合は逆であるべきだと思います。また、値はクエリまたはインスタンスの下に格納する必要がありますか、それとも何らかの 2 次元配列にする必要がありますか? 基本的に、これを実装するための最もクリーンで効率的でベストプラクティスの方法は何ですか?

私たちは WPF を使用しており、構造にバインドできることはほぼ必須です。そのため、ObservableCollections または CollectionChanged を使用したカスタム構造のみを使用してこれを実装することは、2 番目の課題です。

4

0 に答える 0