0

我正在为我们的软件开发一个自定义监控服务,该服务分布在多个系统上。我们决定在性能监视器中显示类似报告视图的数据。 在此处输入图像描述

为了存储数据,我们使用了一个非常简单的数据库表,它只保留最新的值:

|Server|Object|Instance|Query|Value|

所以每个值都可以通过 Server、Object、Instance 和 Query 唯一标识。一个例子可能是

|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

我不知道应该使用哪种结构来存储它。很容易看出Objects(Disk and Performance)是Server的子对象,但是Query应该是Instance的子对象,还是Object?在常规表中,每一行都是一个对象,列是该行的子对象。但我觉得在这种情况下应该是相反的,因为查询是实例的子对象。值应该只存储在查询或实例下,还是应该是某种二维数组?所以基本上,实现这一点的最干净、最有效和最佳实践的方法是什么?

我们正在使用 WPF,并且能够绑定到结构几乎是一项要求。因此,仅使用 ObservableCollections 或带有 CollectionChanged 的​​自定义结构来实现这一点是第二个挑战。

4

0 回答 0