La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

CHAPITRE 2 Plan 1 INTRODUCTION 2 RAPPELS SUR LES METHODES CLASSIQUES DE STOCKAGE 2.1 Le Fichier comme un « tas de données » 2.2 Le hachage ou adressage.

Présentations similaires


Présentation au sujet: "CHAPITRE 2 Plan 1 INTRODUCTION 2 RAPPELS SUR LES METHODES CLASSIQUES DE STOCKAGE 2.1 Le Fichier comme un « tas de données » 2.2 Le hachage ou adressage."— Transcription de la présentation:

1 CHAPITRE 2 Plan 1 INTRODUCTION 2 RAPPELS SUR LES METHODES CLASSIQUES DE STOCKAGE 2.1 Le Fichier comme un « tas de données » 2.2 Le hachage ou adressage associatif 2.3 Fichiers indexés 3 INDEX EN B-ARBRE 3.1 Définitions 3.2 Algorithme dinsertion 3.3 Algorithme de suppression 4 HACHAGE VIRTUEL 4.1 Introduction 4.2 hachage virtuel HV1

2 Introduction Nous nous intéressons dans ce chapitre à la couche du SGBD qui accède à la BD, cest-à-dire au système de stockage appelé la mémoire relationnelle. Cette couche présente quatre fonctions principales : 1.Présenter une vision relationnelle des fichiers qui constituent la BD. Nous rappelons quun fichier est un ensemble denregistrements composés eux- mêmes de champs. En première approximation, une relation peut être vue comme un fichier, et chaque tuple correspond à un enregistrement. 2.Gérer la mémoire centrale (MC) : les relations sont découpées et stockées par page de taille fixe en mémoire secondaire (MS), lesquelles sont amenées en MC à la demande, grâce à des mécanismes de mémoire virtuelle. Lespace de stockage en MS est logiquement divisé en segments. Un segment est un espace virtuel de stockage qui se compose physiquement de plusieurs pages. Nous rappelons que la page est lunité de transfert entre MC et MS. Un fichier est stocké dans un seul segment et peut sétendre donc, sur plusieurs pages. 3.Gérer les différentes relations de la BD, cest-à-dire les relations de base, les index appelés encore relations inverses, les vues, les différentes relations catalogues permettant de les décrire.

3 Usager 1 Usager n Prog. en PL/1 ou Cobol Langage SQL RDS : Relationnel Data System Gestion de catalogues Optimisation de requêtes Mécanismes dautorisation Contraintes dintégrité DBSS : Data Base Storage System Gestion espace physique Gestion des index Gestion des transactions Accès concurrents Reprise après pannes BD Méta Base (Description relations de base et relations systèmes

4 4. Etablir des méthodes daccès : nous distinguons les méthodes classiques (les méthodes indexées, le hachage etc.) et des méthodes plus particulières à savoir le hachage virtuel et les arbres balancés B-arbres. Les opérations que nous pouvons effectuer sur le fichier sont : Insérer un enregistrement Supprimer un enregistrement Modifier un enregistrement.

5 rappels sur les méthodes classiques de stockage 1.Le fichier comme un « tas de données » Dans cette technique, les enregistrements sont placés à la queue leu leu dans des pages successives. Un enregistrement nest pas à cheval sur deux pages. Le seul accès aux données dans le cas de la recherche dun enregistrement est un balayage séquentiel des tuples. Cette opération est donc très coûteuse. Linsertion dun nouvel enregistrement seffectue dans la dernière page. Si cette dernière est saturée, alors une nouvelle page est allouée et lenregistrement est inséré. La suppression est assurée logiquement grâce à un indicateur de suppression. Cette organisation est généralement implémentée par défaut dans les SGBD.

6 2. L E HACHAGE OU ADRESSAGE ASSOCIATIF Principe : disposer dune fonction de hachage h(c ) qui permet de calculer un numéro de bloc ou paquet, contenant un ensemble de pages, à partir dune clé. La recherche de lenregistrement seffectue ensuite séquentiellement dans le bloc.

7 . H(c) P4P5 P6P7P8 Table des blocs P1P2P3 Exemple de fichier 12...n12...n

8 Explication : La table des blocs va contenir n+1 pointeurs vers n+1 blocs. Chaque pointeur est ladresse de la première page du bloc. Un bloc peut contenir une à plusieurs pages chaînées entre elles. La fonction de hachage permet de retrouver à partir de la clé le numéro du bloc qui va contenir lenregistrement. Remarque : la table des blocs peut être résidente en MC si elle est petite. Dans le cas contraire (définie sur plusieurs pages), il faudra la ramener de la MS par partie (par page) en appliquant la fonction de hachage.

9 Algorithme de recherche entrée : valeur de clé c Calcul h ( c ) : numéro de bloc Consultation de la table des blocs : récupération de la première page du bloc Recherche dans cette page lenregistrement ayant pour clé c. Algorithme de modification : rechercher lenregistrement à laide de lalgorithme précédent réaliser la modification Algorithme dinsertion : rechercher si le nouvel enregistrement nexiste pas. Si non : si le bloc nest pas saturé alors insérer le nouvel enregistrement, sinon, allouer une nouvelle page, insérer le nouvel enregistrement et chaîner la nouvelle page aux autres. *Le bloc est saturé signifie quil va y avoir débordement. Cest la gestion des débordements qui va dégrader les performances dans les techniques de hachage. Algorithme de suppression : rechercher lenregistrement à supprimer et soit libérer la place quoccupait cet enregistrement en mettant à jour le chaînage, soit mettre un indicateur de suppression dans len-tête de lenregistrement à supprimer.

10 3. Fichiers indexés Principe : un fichier index contient un ensemble de couples (c,p) où c est la clé du premier enregistrement de la page p. Index dense : il contient toutes les clés du fichier Index non dense : on crée des enregistrements index pour certains enregistrements du fichier : dans ce cas le fichier est trié et divisé en blocs. A chaque bloc lui est associée une entrée dans lindex. (c,p) =

11 Exemple Soit le fichier suivant : Adresses de blocs Index non dense Index dense Clés

12 1.Algorithme de recherche : accès à lindex, recherche dans lindex de la clé denregistrement désiré, récupération dans lindex de ladresse relative de lenregistrement ( si index dense), ou de ladresse relative du bloc qui le contient (si index non dense), Conversion de ladresse relative en adresse réelle, Accès à lenregistrement ou au bloc, Transfert de lenregistrement dans la zone du programme utilisateur. 2. Algorithme dinsertion : accès à lindex, détermination de lemplacement de la page qui doit contenir lenregistrement, puis détermination de la place de lenregistrement dans la page. Si la place existe (page non saturée), alors insérer lenregistrement en déplaçant les autres si nécessaire. Si la page est pleine, il existe différentes stratégies, entre autres, aller à la page suivante ou allouer une nouvelle page, tout en mettant à jour lindex.

13 3. Algorithme de suppression : appliquer lalgorithme de recherche pour trouver lenregistrement, soit supprimer réellement lenregistrement en mettant à jour lindex, soit faire une suppression logique. Cas particuliers : si lenregistrement à supprimer est le premier de lindex, alors une modification de lindex est nécessaire. Lorsquune page devient complètement vide, il faut la rendre au système et mettre à jour lindex. 4. Algorithme de modification : appliquer lalgorithme de recherche pour trouver lenregistrement à modifier, réaliser la modification. Cas particulier : si la modification porte sur la clé, alors la traiter comme une suppression, suivie dune insertion. Un index étant lui-même un fichier, il ny a aucune raison, si celui-ci est volumineux, de définir un autre niveau dindex et ainsi de suite : nous obtenons alors un index hiérarchisé à plusieurs niveaux ( exemple la méthode séquentielle indexée ISAM dans laquelle il pouvait y avoir deux ou trois niveaux dindex : index de cylindres, index de pistes, et éventuellement index maitre ).

14 4. Index en b-Arbre Les fichiers séquentiels indexés ont pour désavantage de diminuer leurs performances lorsque leur taille grandit. Souvent dans de telles organisations la réorganisation était nécessaire de manière assez fréquente (pour récupérer les places libérées, pour allouer de nouvelles places etc…). Une technique efficace dans le cas de nouvelle insertion ou suppression existe et est largement appliquée dans le cas des BD, il s'agit des index en B-arbre ou encore appelé arbre balancé qui sont des cas particuliers dindex hiérarchisé à plusieurs niveaux. Un B-arbre est un arbre équilibré dans lequel les chemins qui conduisent de la racine à une feuille quelconque sont tous de même longueur.

15 Définition : Soient d et p des nombres entiers positifs : un B-arbre dordre d (nombre de descendants directs dun nœud interne) et de profondeur p est défini comme une arborescence ayant les propriétés suivantes : Chaque nœud a au plus d fils, cest-à-dire d pointeurs. Chaque nœud excepté la racine et les feuilles a au moins [d/2] fils (plus petit entier non inférieur à d/2, ou encore larrondi supérieur de d/2). La racine a au moins 2 fils. Toutes les feuilles apparaissent au même niveau : (p), Un nœud ayant k fils (k<= d) cest-à-dire k pointeurs, contient k-1 clés. Les données (tuples) sont rangées dans les feuilles ou nœuds terminaux. Les nœuds non terminaux ne contiennent que des clés et des pointeurs vers dautres nœuds de larborescence. Ainsi un B-arbre a deux composantes : Un B-index constitué par lensemble des nœuds non feuilles appelé le B + arbre Une relation de base représentée par les feuilles de larborescence.

16 Les types daccès fournis par un B-index Nous pouvons avoir deux types dindex : Index principal : lordre physique coïncide avec lordre logique. Il est construit au chargement initial de la relation et est défini sur une clé. Index secondaire : ordre physique est différent de lordre logique dans la plupart des cas et peut être défini sur des attributs non clés

17 Exemple : Fichier Index P P2P3P4 P5 P7P9 P6 P8P10 P11 D = 3 P = *Par souci de clarté, seul le champ clé est représenté dans les pages du fichier (pages P5 à P11).

18 Algorithme de recherche : soit la recherche dun tuple de clé c lire la racine et rechercher quelle valeur de clé recouvre la valeur c. lire la valeur de pointeur associé. Aller à la page pointée par le pointeur sélectionné. Rechercher quelle valeur de clé recouvre c, lire la valeur de pointeur associé et aller à la page pointée. Répéter lopération précédente jusquà trouver la page feuille contenant la clé. Exemple : le chemin daccès nécessaire à la recherche du tuple de clé 2200 est le suivant : P1 : 1114<2200<2212 : aller à la page P3 ; P3 : 2200>2100 : aller à la page P9 ; P9 : recherche séquentielle du tuple de clé 2200.

19 Algorithme dinsertion : soit à insérer un tuple de clé c rechercher la page feuille du B-arbre qui doit contenir ce tuple en appliquant lalgorithme de recherche : soit Pi cette page ; deux possibilités. 1. Si Pi est non saturée alors insertion dans lordre des clés. 2. Sinon il faut allouer une nouvelle page P. On répartit les tuples de Pi avec le nouveau tuple en deux groupes équilibrés qui seront stockés respectivement sur Pi et P. Soit P0 la page qui pointait sur Pi ; deux possibilités : 1. Soit P0 est non saturée, cest-à-dire quelle na pas les d-1 clés alors insertion dun pointeur pour P avec la valeur minimum de clé de P. 2. Sinon, il faut allouer une nouvelle page pour lindex tout en contrôlant le pointage du niveau antécédent. Dans le cas où plusieurs ancêtres de P0 sont pleins alors linsertion aura pour effet de modifier larbre sur plusieurs niveaux et ainsi être dans la possibilité de modifier la racine qui deviendra un nœud intermédiaire, et qui sera remplacée par une nouvelle racine avec 2 fils. La profondeur de larbre sera alors modifiée. On parle alors dinsertion avec éclatement de nœuds et propagation de léclatement jusquà la racine.

20 Exemple : Insérer le tuple de clé 2000 Rechercher la page qui doit contenir le tuple de clé 2000 : soit P7 P7 est saturée : allocation dune nouvelle page P12 : Répartition des clés : 1114 et 2000 dans P7, 2006 et 2007 dans P12. Insertion dans P3 de la clé 2006 et un pointeur sur la nouvelle page P12, mais P3 est saturée (elle a le maximum de fils). Allocation dune nouvelle page P13 : Pointeurs P7 et P12 dans P3, Pointeurs P8 et P9 dans P13. Insérer dans P1 une nouvelle clé 2018 et un pointeur pour P13, mais P1 est saturée. Allocation dune nouvelle page P14 : pointeurs P2 et P3 dans P1, pointeurs P13 et P4 dans P14. Créer une nouvelle racine P15 contenant la clé 2018 pointant sur P1 et P14. Le B-arbre initial devient :

21 P D = 3 P = P P13 P5 P7 P9 P11 P6 P12 P8 P10 P2 P3 P1 P14

22 Algorithme de suppression : soit à supprimer le tuple de clé c appliquer lalgorithme de recherche de la clé c : soit Pi la page qui contient c Si Pi a un nombre denregistrement >= [d/2] après suppression alors réaliser la suppression. Il faut cependant vérifier que la clé du tuple supprimé ne se retrouve pas comme clé dans lindex du B-arbre (vérifier tous les niveaux de lindex). Dans ce cas, il faut alors remonter dans la hiérarchie afin de remplacer cette clé par la clé du tuple suivant. Sinon (cest-à-dire que Pi a moins de [d/2] fils après suppression) : On examine la page Pj immédiatement à gauche ou à droite de Pi et ayant le même père. Si Pj a plus de [d/2] enregistrements, on redistribue les enregistrements de Pi et Pj de manière équilibrée tout en conservant lordre. On répercute la modification sur les ancêtres de Pi puisque les clés sont modifiées. Sinon on réalise une suppression avec fusion. On regroupe Pi et Pj en un seul bloc et on modifie les ancêtres de Pi. Cette fusion peut être récursive. Exemple : Soit à supprimer dans le B-arbre précédent le tuple de clé 2018 La procédure de recherche nous donne le chemin daccès : P15, P14, P13, P8. La suppression du tuple de clé 2018 implique deux situations : Le tuple de clé 2018 est le premier enregistrement de la page P8. Il faut propager vers le haut de larbre que maintenant la plus petite valeur de la clé dans P8 est Par ailleurs, lorsque 2018 est supprimé de P8, cette page ne respecte plus les caractéristiques du B-arbre (>= [d/2]). P8 na pas de frère à gauche mais il a un frère droit P9 qui contient 2 tuples. On fusionne alors P8 et P9. Mais P13 na plus quun seul fils, ce qui implique la fusion de P13 avec son frère P4. Alors P14 naura plus quun seul fils, donc la fusion se propage à P14 et son frère P1. La racine P15 se retrouve avec un seul fils (P14 et P1 fusionnés), elle est supprimée. Nous obtenons le B-arbre suivant :

23 P P6 P12 D = 3 P = 3 P5 P7P8 et P9P11 P2 P3P4 et P13 P1 et P14

24 Introduction Nous avons vu en étudiant les fichiers aléatoires, que la méthode de hachage était performante tant que le fichier névoluait pas. La détérioration des performances daccès est due à laccumulation des débordements. Souvent la prévision des débordements impliquait des taux doccupation de fichier assez faible. Lidée du hachage virtuel est de prévoir une solution dans le cas dinsertion lorsque le taux doccupation du fichier est voisin de 1. 1.Hachage virtuel1 : HV1 La méthode de hachage virtuel 1 est appliquée à des fichiers ayant des taux de remplissage tout à fait usuel (voisin de 1), lorsque de nouvelles insertions posent problème. La solution consiste lorsquil y a débordement à modifier la fonction de hachage initiale. Principe : il consiste à éclater le paquet saturé en deux paquets grâce à la nouvelle fonction de hachage, et à répartir les enregistrements. La fonction de hachage sur laquelle a été développé le principe de HV1 est la division. Soit la fonction initiale de hashcoding H0, soit c une clé et N le nombre de paquets. H0 : c m [0, N[ R(c,N) = reste de la division de c par N

25 La nouvelle fonction de hachage à utiliser est : m [0, 2N[ H1 : c R(c, 2N) Exemple : Fichier à létat initial : N=100 : H0 (c) = R(c,100)

26 Insertion de : H0 (23753) = 53 : débordement du paquet 53, alors application de la nouvelle fonction de hashcoding H1. H1 (23753) = R(23753,200) = 153, donc éclatement du paquet 53 en deux paquets 53 et Fichier = 200 paquets

27 Ainsi, un nouvel enregistrement r aura soit la même adresse, soit une nouvelle adresse H0(c)+N ou encore H1 (c) = m est telle que H0 (c ) = m-N. Mathématiquement il a été prouvé que lorsquon utilise une pareille fonction de hachage alors : Si y enregistrements partagent la même adresse m avec H0, alors en moyenne y/2 changeraient dadresse en appliquant H1. Soit b le nombre maximal denregistrements du paquet, alors si y est voisin de b, il est très peu probable que H1 attribue m ou m+N à plus de b enregistrements. Ces implications nous permettent daffirmer que la recherche dun enregistrement se fera au maximum en 2 accès : (paquet m et paquet m+N).

28 Règles de fonctionnement de HV1 Le fichier est crée avec H = H0 H est inchangé jusquà ce quune collision se produise et que le taux de remplissage dépasse lusuel. Dès la première collision, alors les actions suivantes sont exécutées : La mémoire est allouée pour les paquets N, N+1, …, 2N-1 Une table de bits B(0, N-1) est crée avec B(n) = 0 quelque soit n. Si m0 est ladresse de la collision, alors B(m0) =1 H = H1(c) si H0(c) = m0 H = H0(c) sinon Chaque enregistrement de clé c tel que H0(c) = m0 est réinséré à ladresse H1(c) soit m0+N C ONCLUSION Une série de tests utilisant HV1 a aboutit à la conclusion suivante : Un fichier HV1 peut subir un grand nombre dinsertions sans altérer les performances. En général, un enregistrement sur deux est trouvé en un accès. Au pire un enregistrement est trouvé en deux accès en moyenne ( la table de bits est résidente en MC)


Télécharger ppt "CHAPITRE 2 Plan 1 INTRODUCTION 2 RAPPELS SUR LES METHODES CLASSIQUES DE STOCKAGE 2.1 Le Fichier comme un « tas de données » 2.2 Le hachage ou adressage."

Présentations similaires


Annonces Google