Aplatissement de la table

  • Rversion finale: Australia
  • Mis à jour 12 mars 2026
  • 4 minutes de lecture
  • 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.

    Tableau 1. Modèles d’extension disponibles
    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. Un exemple de modèle d’extension de table par classe est la table Actif [alm_asset] et ses tables enfants : 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 entraînent 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 pires performances, car elle nécessite de joindre 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 affecte 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 Table de tâches sur les bases de données MySQL. D’autres tables utilisent le modèle d’extension Table par classe car il n’y a aucun avantage en termes de performances à les aplatir. Pour utiliser une 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 toute une hiérarchie de table 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 de base de données relationnelle supplémentaires.

    Chaque table logique est nommée d’après la table parente de la hiérarchie, et chaque partition physique prise en charge se compose du nom logique et d’un nom de partition. Par exemple, la table Base Configuration Item (Élément de configuration de base) [cmdb] commence comme une table logique sans partitions. Supposons que vos éléments de configuration matérielle 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. Ultérieurement, les éléments de configuration de l’ordinateur pourraient 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, dans la table logique Base Configuration Item (Élément de configuration de base), il existe des enregistrements avec des noms de classe pour Application, Ordinateur et 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 parent 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 la table par modèle d’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 la table Base Configuration Item (Élément de configuration de base) [cmdb] sur les bases de données MySQL. Pour utiliser une table par partition sur une base de données Oracle, contactez le support technique.