我正在考虑编写一个 Django 应用程序来帮助记录相当小的 IT 环境。我被困在如何最好地对数据建模,因为每个设备的属性数量可能会有所不同,即使在相同类型的设备之间也是如此。例如,一个 SAN 将有 1 个或更多阵列,以及 1 个或更多卷。然后阵列将具有名称、RAID 级别、大小、磁盘数的属性,卷将具有大小和名称的属性。不同的 SAN 将具有不同数量的阵列和卷。
服务器也是如此,每台服务器可能有不同数量的磁盘/分区,所有这些都将具有大小、已用空间等属性,这在服务器之间会有所不同。
另一种设备类型可能是交换机,它没有阵列或卷,但有许多网络端口,其中一些可能是千兆位,其他 10/100,其他 10Gigabit 等。
此外,我希望将来能够在不更改模型的情况下添加设备类型。一个新的设备类型可能是一个电话系统,它有自己独特的属性,这些属性在不同的电话系统之间可能会有所不同。
我研究过 EAV 数据库设计,但它似乎很快就变得非常复杂,我不清楚这是否是解决这个问题的最佳方法。如图所示,我正在考虑模型的一些内容。
http://i.stack.imgur.com/ZMnNl.jpg
一个好处是能够在特定时间创建环境的“快照”,从而可以查看环境随时间的变化。向属性表添加日期列可能是解决此问题的一种方法。
根据记录,这个应用程序不需要进行太多扩展(最多 1000 台设备),因此大规模的可扩展性并不是一个大问题。