Bonjours à tous,
Pour débuter, je tiens à m'excuser pour la lourdeur de ce message mais j'ai cru bon fournir le plus d'information possible afin de donner une image claire des défis que je ne réussie pas à mettre dans un ordre fonctionnel. De plus, j'utilise des anglisismes pour faciliter le lien avec les termes utilisés dans la réalité.
Je tente depuis quelques semaines déjà de modéliser un schémas de basse de données afin d'obtenir un modèle de connectivité réseau représentant les aspects physiques d'un élément réseau (noeud), de la connectivité de deux de ces noeuds entre eux et finalement, je désire représenter certains aspects logique de ce type de réseau comme les LAG, les SVLAN, les VLAN, etc... Tout ça en essayant autant que possible d'aller vers un modèle le plus générique possible pouvant par la suite être réutilisé dans dans une multitude d'applications similaires qui bénéficiraient grandement d'une telle structure de BD.
Je ne suis certes pas un professionel en conception de base de données relationnelles mais je crois maintenant avoir capturé l'essentiel des notions de mises en gardes en matière de modélisation et de normalisation probablement trop bien documentés sur la toile pour apparaitre à mes yeux du premier coup d'oeuil... J'ai donc trébuché sur les mêmes pierres que plusieurs d'entre vous et me voilà maintenant un peu amoché tentant maitenant d'éviter ces nombreux pièges. Alors me voilà tentant tant bien que mal de mettre en place un modèle qui pourra me servir à nouveau dans un futur prochain sans avoir besoin de réinventer la roue à chaque fois. Je me heurte justement à une multitude de contraintes en tentant de suivre au mieux de mes connaissances, les recommendations d'un bon design...
Voici l'ensemble des éléments principaux définissant l'aspect physique d'un équipement :
- Dans un premier temps, je cherche à représenter une gestion matérielle des ressources d'éléments réseaux. Je parles ici de gestion dans une BD des différents types de ports, interfaces, modules, cartes, convertisseurs optiques, etc... Mon besoin est de représenter et stocker toutes ces informations sous forme d'arborescence et par équipement.
Exemple :
- Certains équipements réseau possède des interfaces intégré non enfichable qui utilisent la nomenclature suivante :
Ethernet 0 = interface
- Certains, utilisent une nomenclature à deux niveaux comme par exemple :
FastEthernet 0/1 = module/interface
GigabitEthernet 1/0 = module/interface
- De plus, un autre type d'équipement utilise une structure à quatre niveaux comme ceci :
1/1/4/25 = rack/shelf/slot/port
- Et pour finir, un modèle intéressant utilise une structure à trois niveaux qui se traduit à 8 niveaux (voir plus bas) :
4/2/18 = slot/mda/port
Jusqu'ici pas trop de soucis, ça représente une simple structure hiérarchique multi niveaux peu importe comment on désire la représenter :
Précision : Le terme "slot" représente ici un emplacement physique dans lequel on peut insérer un module, une carte, un convertisseur optique, donc un élément enfichable.
Ethernet 0 = noeud -> interface
FastEthernet 0/1 = noeud -> module -> interface
GigabitEthernet 0/1 = noeud -> module -> slot -> GBIC -> interface
1/1/4/25 = rack -> shelf -> slot -> carte -> port
4/2/18 = noeud -> slot -> iom -> slot -> mda -> slot -> sfp -> port
J'ai trouvé au cours de mes multiples recherches, une bonne quantité d'exemples d'arborescences modélisé et les deux concepts qui reviennent le plus souvent sont le modèle par auto-jointure et la représentation intervallaire. Pour les besoins de ce modèle, il semble évident que la seconde option est le meilleur choix. Car j'estime que je débuterais avec 125 000 entités avec ce niveau de granularité et ça pourrait augmenter très aisément vers le haut... De plus, l'ajout serait majoritairement de nouveaux noeuds donc ajouté à la fin de l'arborescence ce qui minimiserait les impacts de renumérotations des indexes. Il faut tout de même tenir compte de la performance pour des ajouts ou modifications aux éléments existants même si ces transactions seraient moins nombreuses.
Bon, c'est surtout à partir d'ici que je commence à perdre mon sens de l'orientation...
Tous les exemples que j'ai trouvé à date ne permettent pas de relier les éléments de derniers niveau (feuilles) entre eux.
Tout réseau comporte plusieurs terminaisons finales (les x) mais certains de ces équipements comme les routeurs et les commutateurs par exemple, utilisent des liens redondants qui forment une boucle fermé (les O).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 x---O----O | | | | O----O---x
Voici les questionnements qui pourraient possiblement relancer ma réflection qui est au point mort depuis un certain temps :
- Est-ce que ce modèle tient la route?
- Est-ce que ce niveau de granularité peux être conservé tout en simplifiant le modèle comme intégrer les slots à même l'entité à laquelle elles appartiennent? En retirant la notion de slot complètement?
- Comment fait-on pour relier tout ça afin de représenter un réseau?
- Peut-on toujours interroger efficacement ce type de données en boucle?
Voilà la une première ébauche d'un besoin primaire et je vais en rester là pour le moment car c'est déjà passablement lourd.
Il resterait à couvrir les aspects logiques que comportent un tel réseau et j'aimerais pouvoir intégrer les notions de couche deux du modèle OSI qui représentent elles aussi des arborescences multi niveaux potentiels tout en utilisant le modèle interconnectivité physique ci-haut comme structure de transport...
- LAG ou Link Aggregation Group (Etherchannel pour les natifs Cisco)
- SVLAN
- VLAN
Utopique? Bonne question...
C'est pour cette raison que je fais appel à vos connaissances approfondies en la matière afin de déterminer si je dois mettre fin à mes idées folles ;-)
Robert.
Partager