/  12
 
Le Type HierarchyId
Table of Contents
Stratégies Dindexation .................................................................................................................. 2Les méthodes associées au type Hierarchyid .................................................................................. 3Création du projet de Test .............................................................................................................. 5Construction de lapplication Cliente .............................................................................................. 9Test De performance du type HierarchyId .................................................................................... 11
Introduction
Le type de données hierarchyid est un type de données système à longueur variable. Il représenteune position dans une arborescence donnée. Il permet de créer des tables avec une structurehiérarchique ou de référencer la structure hiérarchique de données à un autre emplacement.Les valeurs de ce type de données ont les
propriétés
suivantes :-
 
E
xtrêmement compacte-
 
La comparaison est effectuée dans lordre à profondeur prioritaire-
 
Prend en charge les insertions et les suppressions arbitraires-
 
Codage limité à 892octetsLes limites de ce type de données sont les suivantes :-
 
Première limitation : Lunicité.
E
n effet, ce type neffectue pas de contrôle surlarborescence créée et lon peut se retrouver avec deux racines dans une même table.Pour palier à ce problème on peut indexer la colonne de type hierarchyid comme cléprimaire.-
 
Les relations avec ce type de donnée ne fonctionnent pas de la même manière quunerelation de clé étrangère. Ce type de donnée ne contrôle pas les différentes relationsdans une arborescence et cest à vous dimplémenter votre propre logique. Si une unnud A possède un enfant B et que A doit être supprimé, B se retrouve sans parent. Sicette relation nest pas acceptable dans votre application, il vous faut alors supprimer lesenfants de A avant de le supprimer.Le type
h
ierarc
hy
id
est disponible pour les clients CLR comme type de données
SqlHierarc
hyI
d
.
 
 
U
tilisation de Hierarchyid
S
tratégies Dindexation
Il existe deux stratégies d'indexation des données hiérarchiques:
 A profondeur prioritaire
Dans un index à profondeur prioritaire, les lignes d'une sous-arborescence sont stockées à proximitéles unes des autres. Par exemple, tous les groupes ayant un groupe parent sont stockés à proximitéde l'enregistrement de celui-ci.Ce type dindexation est celui utilisé par défaut dans hierarchyid.
E
tant donné que tout les nud dela sous-arborescence dun nud sont colocalisés, ce type dindexation est très efficace pourrépondre aux requêtes de sous arborescences. (exemple: des fichiers localisés dans un dossier oudans un sous dossier)
 A largeur prioritaire
Un index à largeur prioritaire stocke les lignes en regroupant les niveaux de la hiérarchie. Parexemple, les enregistrements des groupes ayant le même parent direct sont stockés à proximité lesuns des autres.
 
 Dans un index à largeur prioritaire, tous les enfants directs d'un nud sont colocalisés. Les index àlargeur prioritaire sont par conséquent efficaces pour répondre aux requêtes sur les enfantsimmédiats. Cette Indexation peut être mise en uvre grâce à la méthode
getlevel()
fournie parhierarchyid.
USE HierarchyidTest;GOCREATE TABLE Groups(GroupHid hierarchyid,GroupLevel as GroupHid.GetLevel(),GroupName nvarchar(50) NOT NULL) ;GO
Les méthodes associées au type Hierarchyid
Avec lapparition du type hierarchyid, des méthodes permettant la manipulation de ce dernier on vule jour. Ci-dessous la liste des méthodes détaillées par la suite :GetAncestor(int n), GetDescendant(hierarchyid childA, hierarchyid childB), GetLevel(), GetRoot(),IsDescendantOf(hierarchyid Parent), Parse(nvarchar NodeRepresentation), Read(),GetReparentedValue(hierarchyid OldRoot, hierarchyid NewRoot), ToString(), Write()
1)
 
La méthode GetAncestor 
Cette méthode permet de Retourner le parent de nième niveau du nud sélectionné, n étant passéen paramètre de la méthode.Si un nombre supérieur au niveau de hiérarchie du nud est passé la méthode retournera Null etelle lèvera une exception si le paramètre est un nombre négatif.
E
xemple :
SelectGroupNodeFromdbo.Groups WhereGroupNode.GetAncestor(1) =@GroupHId

Share & Embed

More from this user

Add a Comment

Characters: ...