Techniques dindexation Impl©mentation du mod¨le relationnel ~ LIF10: Fondements des bases de donn©es relationnelles

  • View
    102

  • Download
    0

Embed Size (px)

Text of Techniques dindexation Impl©mentation du mod¨le relationnel ~ LIF10: Fondements des bases...

  • Page 1
  • Techniques dindexation Implmentation du modle relationnel ~ LIF10: Fondements des bases de donnes relationnelles
  • Page 2
  • Une vision conceptuelle des donnes : Algbre relationnel, SQL, etc. Les tables et leurs enregistrements sont stocks physiquement !! Les enregistrements ont une adresse (physique, logique). Mais les requtes SQL rfrencent des valeurs dattributs, pas des adresses. SELECT * FROM R WHERE A=12; SELECT * FROM E WHERE N>10; C O M M E N T R E T R O U V E R ( E F F I C A C E M E N T ) L E S E N R E G I S T R E M E N T S Q U I O N T U N E C E R T A I N E V A L E U R S U R U N A T T R I B U T D O N N ?
  • Page 3
  • Mtaphore de laiguille Les donnes : le foin ! Le rsultat de la requte : laiguille ! Comment trouver trs rapidement laiguille ? Comment viter de parcourir lintgralit des donnes quand ce nest pas ncessaire ?
  • Page 4
  • Comment viter de tout parcourir ? Slection Jointure naturelle Agrgation SELECT * FROM Etudiant WHERE note
  • Questions sur les index Quel type de requtes supportent-ils? slection de la forme x val Egalit : (op est =) Mais aussi (= =, >, etc.) Des requtes plus complexes : ranking queries : 10 restaurants les plus prs de Nautibus; Expressions rgulires (gnome, etc.)
  • Page 12
  • Index sur des fichiers squentiels Rappel : Search key primary key Index primaire : (sur le champ squenc) lindex sur lattribut qui dtermine le squenage de la table Index secondaire : Index sur nimporte quel autre attibut Index dense : toutes les cls de recherche prsentes Index creux (sparse index) Index multi-niveaux
  • Page 13
  • Fichier squentiel 20 10 40 30 60 50 80 70 100 90 Les tuples sont ordonns par rapport leur cl primaire Bloc
  • Page 14
  • Fichier squentiel 20 10 40 30 60 50 80 70 100 90 Index dense 10 20 30 40 50 60 70 80 90 100 110 120 Le fichier index requiert beaucoup moins de blocs que le fichier de donnes. plus facile charger en mmoire Pour une cl K, seulement log 2 n, blocs dindex doivent tre parcourus.
  • Page 15
  • Fichier Sequent. 20 10 40 30 60 50 80 70 100 90 Index creux 10 30 50 70 90 110 130 150 170 190 210 230 Gnralement, une seule cl par bloc de donnes Trouver lentre avec la plus grande valeur infrieure ou gale la valeur recherche
  • Page 16
  • Fichier squent. 20 10 40 30 60 50 80 70 100 90 Index creux double niveau 10 30 50 70 90 110 130 150 170 190 210 230 10 90 170 250 330 410 490 570 Traite lindex comme un fichier et construit un index dessus. 2 niveau sont gnralement suffisants + de 3 rares Pas forcment contigit des deux fichiers...
  • Page 17
  • Opration de m.a.j Insertion Suppression Quid de ces oprations par rapport aux types dindex ?
  • Page 18
  • Suppression dans index creux 20 10 40 30 60 50 80 70 10 30 50 70 90 110 130 150
  • Page 19
  • Suppression dans index creux supprimer lenregistrement 40 20 10 40 30 60 50 80 70 10 30 50 70 90 110 130 150 Si lentre supprime napparait pas dans lindex, ne rien faire.
  • Page 20
  • Suppression dans index creux 20 10 40 30 60 50 80 70 10 30 50 70 90 110 130 150 supprimer lenregistrement 30 40 Si lentre supprime apparat dans lindex alors remplacer avec la cl de recherche suivante
  • Page 21
  • Suppression dans index creux (tjs +) 20 10 40 30 60 50 80 70 10 30 50 70 90 110 130 150 supprimer 30 et 40 50 70 Si la cl suivante a sa propre entre dans lindex alors supprimer lentre
  • Page 22
  • Suppression dans index dense 20 10 40 30 60 50 80 70 10 20 30 40 50 60 70 80
  • Page 23
  • Suppression dans index dense 20 10 40 30 60 50 80 70 10 20 30 40 50 60 70 80 supprimer lenregistrement 30 40 La suppression dans un index primaire dense se fait de la mme faon que dans un fichier seq.
  • Page 24
  • Insertion dans index creux 20 10 30 50 40 60 10 30 40 60
  • Page 25
  • Insertion dans index creux 20 10 30 50 40 60 10 30 40 60 - insrer lenregistrement 34 34 On a de la chance... mais ce nest pas toujours le cas
  • Page 26
  • Insertion dans index creux 20 10 30 50 40 60 10 30 40 60 insrer 15 15 20 30 20 Il faut tout rorganiser des variantes : insrer un nouveau bloc m.a.j index
  • Page 27
  • Insertion dans index creux 20 10 30 50 40 60 10 30 40 60 insrer 25 25 bloc de dpassement (rorganiser plus tard) De nombreuses questions : Quand rorganiser ? Quel cot? Les B-arbres offrent des rponses plus convaicantes
  • Page 28
  • 10 20 30 40 50 60 70 80 90 39 31 35 36 32 38 34 33 overflow area (pas squentielle) Insertion ++ Index (squentiel) continu espace libre
  • Page 29
  • Index basiques Avantages : Algorithmes trs simples Lindex est un fichier squentiel facile pour effectuer des passes dessus Inconvnients : Insertions coteuses, et/ou la notion de squence est perdue cause des overflows (blocs de dpassement) des rorganisations sont ncessaires
  • Page 30
  • Index bas sur les B(+)-Arbres
  • Page 31
  • Rappel ABR : Niveau recherche : Gnralisation des arbres binaires de recherche.
  • Page 32
  • B-Arbres Chaque noeud correspond un bloc Les B-arbres sont quilibrs (toutes les feuilles la mme profondeur). Garantie daccs efficaces B-arbres garantissent une occupation minimale n : nombre maximum de cls dans le noeud, le nombre minimum tant n/2. Exception : la racine peut contenir une unique cl m+1 pointeurs associs (m est le nombre de cls contenues)
  • Page 33
  • B-arbre + Les noeuds feuilles contiennent les enregistrements et sont chains. Les noeuds non-feuilles contiennent les entres de lindex et dirigent les recherches: P 0 K 1 P 1 K 2 P 2 K m P m entre index Non-feuilles Pages Feuilles X
  • Exemple (4) : recherche Trouver 28*? 29*? All > 15* and < 30* Insertion / suppression : Trouver lentre dans une feuille, puis la changer. Besoin dajuster les parents dans certains cas. Et rpercussion dans les noeuds suprieurs de larbre 2*3* Root 17 30 14*16* 33*34* 38* 39* 135 7*5*8*22*24* 27 27*29* Entres < 17 Entres >= 17
  • Page 42
  • 42 Insertion Toujours insrer dans la feuille adquate Arbre grandit de bas en haut Plusieurs cas possibles : Espace libre dans la feuille : facile plus de place dans la feuille : plus dur rpercution sur les anctres cas extrme : jusqu la cration dune nouvelle racine
  • Page 43
  • Insertion dun enregistrement Si le B-arbre est vide : Crer une racine de type feuille; y insrer lenregistrement; Sinon rechercher la feuille L o insrer lenregistrement : Si L nest pas pleine insrer lenregistrement en prservant lordre
  • Page 44
  • Si L est pleine : Crer une nouvelle feuille L; Rpartir les enregistrements entre L et L; M..j le B-arbre en remontant dans celui-ci; La division peut se propager tant que les anctres de L sont pleins. Si on remonte jusqu la racine, on la divise en deux et on cre une nouvelle racine;
  • Page 45
  • Insertion (espace libre) 3 5 11 30 31 30100 32 Insrer enr. 32 n = 3
  • Page 46
  • Plus de place (1) Sparer la feuille cible en deux noeud de (presque) mme taille et copier la cl (sparatrice) sur le noeud pre 3 5 11 30 3130 100 3535 7 7 n = 3 Insrer enr. 7
  • Page 47
  • Plus de place (1I) Sparation en deux de la feuille pleine et rpercussion vers le haut. 100 120 150 180 150 156 179 180 200 160 180 160 179 Insrer enr. 160
  • Page 48
  • Plus de place (III) : nvlle racine La cration dune nvlle feuille se rpercute jusqu la cration dune nvlle racine. 10 20 30 123123 10 12 20 25 30 32 40 45 40 30 new root Insrer enr. 45
  • Page 49
  • Ex: Construction de larbre N=3 (chaque bloc contient 3 valeurs et 4 pointeurs) Construire le B-arbre partir de la liste de valeurs suivante : (24, 123, 3, 12, 32, 1, 2, 5) en insrant les valeurs une une.
  • Page 50
  • Bulk Loading Si on veut crer un B-Arbre un attribut dune grande collections denregistrements, faire des insertions une une est trs lent Bulk Loading est plus efficace. Initialisation : trier les entres, insrer un pointeur sur le premier bloc feuille dans une nouvelle racine. 3* 4* 6*9*10*11*12*13* 20*22* 23*31* 35* 36*38*41*44* noeuds/blocs tris et pas encore dans le B arbre Root
  • Page 51
  • Bulk Loading Les blocs feuilles entrent toujours par la droite sur le noeud (non feuille) le plus droite.Quand il est plein, le couper en deux. (Le Split peut se propager sur le chemin le plus droite jusqu la racine.) Beaucoup plus rapide que des insertions successives !!! 3* 4* 6*9*10*11*12*13* 20*22* 23*31* 35* 36*38*41*44* Root Data entry pages not yet in B+ tree 3523126 1020 3* 4* 6*9*10*11*12*13* 20*22* 23*31* 35* 36*38*41*44* 6 Root 10 12 23 20 35 38 not yet in B+ tree Data entry pages
  • Page 52
  • Suppression Localiser le noeud correspondant Supprimer lentre spcifie Plusieurs cas possibles Le noeud feuille possde encore suffisamment dentres (cas facile) Fusion avec des lments de la fratrie Redistribution des cls Fusion et redistribution aux niveaux suprieurs
  • Page 53
  • Plus prcisment Effacement dun enregistrement de cl e k dun B-arbre. Si le B-arbre nest pas vide. Soit l la feuille contenant lenregistrement supprimer (trouv par une recherche). Aprs