かなり小さなIT環境の文書化に役立つDjangoアプリの作成を検討しています。同じタイプのデバイス間でも、デバイスごとの属性の数が異なる可能性があるため、データをモデル化するのに最適な方法に行き詰まっています。たとえば、SANには1つ以上のアレイと1つ以上のボリュームがあります。アレイには名前、RAIDレベル、サイズ、ディスク数の属性があり、ボリュームにはサイズと名前の属性があります。SANが異なれば、アレイとボリュームの数も異なります。
サーバーについても同じことが言えます。各サーバーには異なる数のディスク/パーティションがあり、そのすべてにサイズ、使用済みスペースなどの属性があり、これはサーバーによって異なります。
別のデバイスタイプは、アレイやボリュームを持たないスイッチですが、いくつかのネットワークポートがあり、その一部はギガビット、その他は10/100、その他は10ギガビットなどです。
さらに、将来的にはモデルを変更せずにデバイスタイプを追加できるようにしたいと思います。新しいデバイスタイプは電話システムである場合があり、電話システムごとに異なる独自の属性があります。
私はEAVデータベースの設計を調べましたが、それは非常にすぐに複雑になるようであり、それがこれを行うための最良の方法であるかどうかはわかりません。写真のようにモデルのラインに沿って何かを考えていました。
http://i.stack.imgur.com/ZMnNl.jpg
ボーナスとして、特定の時間に環境の「スナップショット」を作成して、時間の経過に伴う環境の変化を表示できるようにすることができます。属性テーブルに日付列を追加することは、これを解決する方法かもしれません。
ちなみに、このアプリはそれほど拡張する必要はないので(最大で1000台のデバイス)、大規模なスケーラビリティは大きな問題ではありません。