Aplatissement de la table
L’aplatissement de table stocke une hiérarchie de tables connexes sous la forme d’une table unique dans une base de données relationnelle.
Modèles d'extension
Le système propose ces modèles d’extension pour stocker une hiérarchie de tables sur une base de données relationnelle.
| Modèle d'extension | Aplatit les tables ? |
|---|---|
| Table par classe | Non |
| Table par hiérarchie | Oui |
| Table par partition | Oui |
Table par classe
Le modèle d’extension Table par classe stocke chaque table de la hiérarchie dans sa propre table physique sur la base de données relationnelle. Chaque table physique utilise le préfixe de table de la table source, chacune stocke une classe différente d’enregistrements. La table Actif [alm_asset] et ses tables enfants sont un exemple de table par modèle d’extension de classe : Matériel [alm_hardware], Consommable [alm_consumable], Installation [alm_facility] et Licence de logiciel [alm_license]. La table parente de la hiérarchie, Actif, stocke une copie de chaque enregistrement dans ses tables descendantes.
Pour rechercher des enregistrements dans le modèle d’extension Table par classe, le système interroge les enregistrements de plusieurs tables et joint les résultats. Par exemple, lors de la recherche de matériel dans une installation associée, le système doit joindre les résultats des tables Matériel, Installation et Actif.
Les jointures de tables provoquent un goulot d’étranglement des performances sur les bases de données relationnelles. Plus une requête inclut de classes, plus les performances de la requête sont mauvaises. Par conséquent, toute requête d’enregistrements provenant du haut de la hiérarchie de table a les moins bonnes performances, car elle nécessite la jointure de toutes les tables descendantes.
Le système utilise la table par modèle d’extension de classe par défaut lors de la création de tables. La plupart des tables système utilisent également le modèle d’extension Table par classe, car il n’y a aucun avantage en termes de performances à les aplatir.
Table par hiérarchie
Le modèle d’extension Table par hiérarchie stocke une hiérarchie de table entière dans une seule table physique plate sur la base de données relationnelle. La table physique est nommée d’après la table parente de la hiérarchie, telle que Tâche. La table physique contient tous les enregistrements de la hiérarchie de table et attribue une valeur de colonne de nom de classe à chaque table descendante de la hiérarchie. Le système utilise le nom de la table source comme valeur de nom de classe. Par exemple, les enregistrements de tâches peuvent avoir des noms de classe tels que Changement, Incident ou Problème.
Pour rechercher des enregistrements dans une hiérarchie de table, le système interroge la table physique et utilise la colonne de nom de classe pour limiter les résultats. Étant donné que ces requêtes ne nécessitent pas de joindre les résultats de plusieurs tables, le système offre de meilleures performances de recherche.
Le système utilise le modèle d’extension Table par hiérarchie pour la hiérarchie de la table Tâche sur les bases de données MySQL. D’autres tables utilisent le modèle d’extension Table par classe, car leur aplatissement ne présente aucun avantage en termes de performances. Pour utiliser la table par hiérarchie sur une base de données Oracle, contactez le support technique.
Table par partition
Le modèle Table par extension de partition stocke une hiérarchie de table entière dans une seule table logique plate sur la base de données relationnelle. Chaque table logique peut avoir plusieurs tables de stockage physiques appelées partitions qui la prennent en charge. Chaque partition optimise les ressources de base de données disponibles pour une table physique, telles que le nombre de colonnes, le nombre d’index et la taille des lignes. Le système ajoute une partition chaque fois que la table logique a besoin de ressources supplémentaires pour la base de données relationnelle.
Chaque table logique est nommée d’après la table parente de la hiérarchie, et chaque partition physique de prise en charge se compose du nom logique et d’un nom de partition. Par exemple, la table Élément de configuration de base [cmdb] commence comme une table logique sans partitions. Supposons que vos éléments de configuration matériels consomment suffisamment de ressources de base de données pour que le système crée une partition appelée cmdb$par1 pour les stocker. Plus tard, les éléments de configuration informatique pouvaient consommer suffisamment de ressources de base de données pour justifier la création par le système d’une deuxième partition appelée cmdb$par2 pour stocker ces enregistrements.
Dans chaque table logique, le système affecte une valeur de colonne de nom de classe à chaque table descendante de la hiérarchie. Par exemple, la table logique d’élément de configuration de base contient des enregistrements avec des noms de classe pour l’application, l’ordinateur et le routeur IP. Le système attribue également une valeur de chemin d’accès de classe à deux chiffres à chaque table descendante de la hiérarchie. Le chemin d’accès de la classe est basé sur l’emplacement de la table dans la hiérarchie. Par exemple, la classe parente Hardware peut avoir un chemin d’accès de classe tel que / !! /! D et la classe enfant Computer peuvent avoir un chemin d’accès de classe tel que / !! /! D/ !!.
Pour rechercher des enregistrements dans le modèle Table par extension de partition, le système interroge la table logique et ses partitions et utilise la colonne de chemin d’accès de la classe pour limiter les résultats. Étant donné que ces requêtes ne nécessitent pas de joindre les résultats de plusieurs tables, le système offre de meilleures performances de recherche. En outre, le chemin d’accès de la classe réduit le nombre total d’enregistrements à rechercher, ce qui améliore encore les performances de recherche.
Le système utilise le modèle d’extension de table par partition pour la hiérarchie de table Élément de configuration de base [cmdb] sur les bases de données MySQL. Pour utiliser la table par partition sur une base de données Oracle, contactez le support technique.