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

1 Survol du Stockage et de lIndexage Chapitres 9-12.

Présentations similaires


Présentation au sujet: "1 Survol du Stockage et de lIndexage Chapitres 9-12."— Transcription de la présentation:

1 1 Survol du Stockage et de lIndexage Chapitres 9-12

2 2 Données sur Stockage Externe Disques: Peuvent puiser des pages au hasard à un coût fixe Cependant la lecture de plusieurs pages consécutives est moins coûteuse que une lecture dans un ordre aléatoire Bandes magnétiques: Peuvent ne lire les pages que séquentiellement Moins coûteux que les disques; utilisées pour archivage Gestion des fichiers: Méthode pour arranger un fichier denregistrements sur stockage externe. Fichiers de données: structure pour entreposage des données dune organisation. Identité denregistrement (Record id -- rid): suffisant pour localiser physiquement lenregistrement Fichiers dindexes: structures de données permettant de trouver les identités des enregistrements à partir des valeurs des clés de recherche

3 3 Organisation des Fichiers Plusieurs alternatives existent, chacune étant idéale pour certaines situations, et pas pour dautres: Tas (Heap files): Adapté au scannage de tous les enregistrements. Fichiers triés: Adapté aux situations où les enregistrements doivent être puisés dans un certain ordre, ou lorsque une plage (range) denregistrements est requis. Indexes: Structures des données en forme darbres ou de hachage pour organiser les enregistrements. Comme les fichiers triés, ils accélèrent les recherches pour un sous ensemble denregistrements sur base des valeurs des clés. Les modifications sont plus rapides que dans les fichiers triés.

4 4 Composantes dun Disque Plateaux Les plateaux tournent (90tps). Axe Le bras est déplacé (par un contrôleur ) pour positionner une tête de lecture/écriture sur la piste désirée. Les pistes sous les têtes de lecture forment un cylindre. Tête Mouvement du bras Assemblage du bras Une seule tête de lecture lit/écrit à la fois. Pistes Secteur La taille de bloc est un multiple de la taille du secteur (qui est fixe).

5 5 Accès à une Page de Disque Le temps daccès à un bloc de disque est fait de: seek time (déplacement du bras pour positionner la tête de lecture/écriture sur une piste) rotational delay (temps dattente pour que le bloc tourne sous la tête de lecture/écriture) transfer time (temps de transfert des données vers/de la surface du disque) Le temps de recherche (seek time) et le délai de rotation (rotational delay) dominent. Le temps de recherche varie denviron 1 à 20msec Le délai de rotation varie de 0 à 10msec Le taux de transfert est denviron 1msec par page de 4KB Elément crucial des coûts I/O: réduire les délais de recherche et de rotation! Solutions hardware vs. software?

6 6 Arrangements des Pages sur Disque Concept de bloc `suivant ( Next ): blocs sur la même piste, suivi des blocs sur le même cylindre, suivi des blocs sur le cylindre adjacent Les blocs dans un fichier devraient être arrangés séquentiellement sur disque (suivant le concept de `suivant) afin de minimaliser le délai de recherche et de rotation. Pour un scannage séquentiel, une prélecture de plusieurs pages à la fois est un grand gain!

7 7 Gestion de lEspace Disque La couche la plus basse du SGBD gère lespace sur disque. Les couches plus élevées font appel à cette couche la plus basse afin de: Affecter/désaffecter de lespace mémoire Lire/écrire sur une page La requête pour une séquence de pages doit être satisfaite par lallocation de pages de manière séquentielle sur le disque! La gestion des espaces libres est transparente aux couches supérieures du SGBD.

8 8 Gestion des Mémoires Tampon Les données doivent être ramenées dans le RAM afin que le SGBD opère sur elles! Le système maintient une table de paires. DB MEMOIRE PRINCIPALE DISQUE Page de disque Cadre libre Requête de page dun niveau plus élevé BUFFER POOL Le choix dun cadre à remplacer lorsque la réserve est pleine est régi par une police de remplacement

9 9 Procédure en Cas de Requête pour une Page Le manager maintient 2 variables: pin_count : # dutilisateurs courants (ne remplacer une page que si cette variable = 0). dirty : page modifiée? Si la page requise est dans la réserve, incrémenter le pin_count. Sinon: Choisir un cadre pour remplacement selon une police (LRU, MRU, …) Si le cadre est sale (dirty), lécrire sur disque Lire la page requise dans le cadre choisi Incrémenter le pin_count de la page et retourner son adresse. * Si les requêtes peuvent être prédîtes (p.ex. dans le scannage séquentiel), plusieurs pages peuvent être prélues à la fois!

10 10 Formats dEnregistrements: Longueur Fixe Linfo sur les champs des enregistrements est la même pour tout le fichier et est stockée dans les catalogues du système. Trouver le i- ème champ requiert un scannage de tout lenregistrement. Adresse de base (B) L1L2L3L4 F1F2F3F4 Adresse = B+L1+L2

11 11 Formats dEnregistrements: Longueur Variable Deux alternatives au moins existent (# champs fixe): * Le second format offre un accès direct aux champs ainsi quun stockage efficient. Il implémente bien les nulls (valeurs inconnues). 4$$$$ Compteur du # champs Champs délimités par des symboles spéciaux F1 F2 F3 F4 Liste de déplacements (offsets) des champs

12 12 Format des Pages: Enreg.s à Longueur Fixe * Record id =. Dans la première alternative, mouvoir les enreg.s pour la gestion des espaces vides change les rids; nest donc pas acceptable dans bien des cas ! Tranche 1 Tranche 2 Tranche N... N M1 0 M... 3 2 1 PACKED UNPACKED, BITMAP Tranche 1 Tranche 2 Tranche N Espace libre Tranche M 11 nombre denreg.s nombre de tranches

13 13 Format des Pages: Enreg.s à Longueur Variable * On peut mouvoir les enreg.s sur une page sans devoir changer les rids; doù ce format est aussi attractif pour les enreg.s à longueur fixe. Page i Rid = (i,N) Rid = (i,2) Rid = (i,1) Pointeur vers le début de lespace libre REPERTOIRE DES TRANCHES N... 2 1 201624 N # slots

14 14 Fichiers dEnregistrements Les pages ou blocs sont la mesure de lI/O, mais les couches plus élevées du SGBD opèrent sur les enregistrements, et utilisent des fichiers denregistrements. FICHIER: Collection de pages, chacune contenant une collection denregistrements. Doit supporter: insertion/effacement/modification des enregistrements lecture dun enregistrement particulier (spécifié par son record id -- rid ) scannage de tous les enregistrements

15 15 Implémentation du Heap File Comme Liste Le SGBD retient ladresse de lendroit où est stockée la première page dun fichier à un endroit bien spécifique sur disque. Chaque page contient 2 pointeurs ainsi que des données. Page de tête Page de données Page de données Page de données Page de données Page de données Page de données Pages avec espace libre Pages pleines

16 16 Heap File Utilisant une Page Répertoire Lentrée dune page peut inclure le nombre doctets qui sont libres sur cette page. Le répertoire est une collection de pages pouvant être organisée comme une liste. Beaucoup moins despace utilisé que dans la première méthode ! Page de données Page de données Page de données Page de tête REPERTOIRE

17 17 Catalogues du Système Pour chaque index: Indique la structure (p.ex. B+) et les champs de la clé de recherche Pour chaque relation: nom, nom de fichier, structure du fichier (p.ex., Heap file) nom et type de chaque attribut nom de chaque index sur la relation contraintes dintégrité Pour chaque vue: nom et définition Statistiques, autorisations, taille du buffer pool, etc. * Les catalogues sont stockés comme des relations !

18 18 Indexes Un index sur un fichier accélère les sélections sur les clés de recherche pour cet index. Tout sous-ensemble des attributs dune relation peut servir de clé pour un index sur cette relation. Une clé de recherche nest pas la même chose quune clé au sens densemble minimal dattributs qui identifie de manière unique un enregistrement de la relation. Un index contient une collection d entrées des données et permet de puiser de manière efficiente toutes les entrées des données k* en utilisant une valeur de clé k.

19 19 Entrées des Données k* dans un Index Trois alternatives: une entrée des données peut être un enregistrement de données avec une valeur de clé k une paire Le choix dune des alternatives dépend de la technique dindexage utilisée pour localiser les entrées des données ayant une valeur de clé k. Exemples de techniques dindexage: Arbres B+, hachage Typiquement, un index contient de linformation qui oriente les recherches vers les entrées des données désirées.

20 20 Entrées des Données k* dans un Index (Suite) Les pages feuilles contiennent les entrées des données et sont chaînées. Les pages internes contiennent les entrées de lindex et dirigent la recherche. Pages internes feuilles pages

21 21 Classification des Indexes Hachage versus Arbres : Selon que la structure de recherche est en forme de table à hachage ou en forme darbre. Primaire vs. secondaire : Selon que la clé de recherche contient la clé primaire ou pas, on a un index primaire ou secondaire. Index unique : La clé de recherche contient une candidate clé. Groupé vs. nongroupé (Clustered vs. unclustered) : Si lordre des enregistrements des données est le même que ou proche de celui des entrées des données, alors lindex est groupé; sinon il est nongroupé.

22 22 Indexes à Arbres Les indexes à arbres supportent à la fois la recherche des plages de valeurs (range search) ainsi que les recherches degalités (equality search). ISAM : structure statique; B+ tree : dynamique, sajuste gracieusement aux insertions et effacements. Indexes à Hachage : meilleurs pour les recherches dégalité; ne peuvent supporter les recherches des valeurs des plages.

23 23 ISAM Le fichier dindexes peut être très large. On peut cependant appliquer lidée de fichier dindexes de manière répétée! * Les pages feuilles contiennent les entrées des données. P 0 K 1 P 1 K 2 P 2 K m P m Entrée dindex Pages internes feuilles Page de débordement Pages primaires Pages

24 24 ISAM (Suite) Création du fichier : les feuilles (pages de données) sont allouées séquentiellement et triées selon la clé de recherche; ensuite les pages de débordement sont crées. Entrées dindexes : ; orientent la recherche vers les entrées de données se trouvant dans les pages feuilles. Recherche : Commence à la racine; compare des clés pour aller vers la feuille appropriée. Coût log F N ; F = # entrées/pg index, N = # feuilles Insertion : Trouver la feuille à la quelle appartient lentrée de donnée et ly mettre. Effacement : Trouver et enlever lentrée de la feuille; désaffecter une page de débordement vide. * Structure statique : les changements naffectent que les feuilles. Pages de données Pages des indexes Pages de débordement

25 25 Arbre B+: LIndex le plus Usuel Insertion/effacement avec coût log F N; Garde la hauteur balancée. (F = fanout, N = # feuilles) Taux doccupation minimum de 50%(sauf pour la racine). Chaque nœud contient d <= m <= 2 d entrées. Le paramètre d est appelé l ordre de larbre. Supporte efficacement les recherches des plages de valeurs et les recherches dégalités. Entrées de lindex Entrées de données ("Sequence set") (orientent la recherche)

26 26 Exemple dArbre B+ La recherche commence à la racine et les comparaisons des clés lorientent vers une page (similaire à la méthode ISAM). Recherchez 5*, 15*, …, toutes entrées de données >= 24*... Racine 1724 30 2* 3*5* 7*14*16* 19*20*22*24*27* 29*33*34* 38* 39* 13

27 27 Arbre B+ en Pratique Ordre typique: 100. Remplissage typique: 67%. Sortance (fanout) moyenne = 133 Capacités typiques: Hauteur 4: 133 4 = 312,900,700 enreg.s Hauteur 3: 133 3 = 2,352,637 enreg.s Les niveaux supérieurs de larbre peuvent souvent tenir en mémoire principale (buffer pool): Niveau 1 = 1 page = 8 Kbytes Niveau 2 = 133 pages = 1 Mbyte Niveau 3 = 17,689 pages = 133 MBytes

28 28 Insertion dune Entrée de Données Trouver la feuille appropriée L. Mettre lentrée de données dans L. Si L a assez despace, fin ! Sinon, on doit partager L (en L et un nouveau nœud L2) Redistribuer les entrées de manière égale, copier la clé du milieu vers le haut. Insérer lentrée dindex pointant vers L2 dans le parent de L. Ceci peut arriver de manière récursive Pour partager nœud dindex, redistribuer les entrées de manière égale, mais pousser la clé du milieu vers le haut. (Contrastez ceci avec le partage des feuilles !!) Les partages font croître larbre; le partage de la racine augmente sa hauteur. Croissance de larbre: devient plus large ou d un niveau plus élevé à la racine.

29 29 Chargement en Vrac dun Arbre B+ Si lon a une large collection denreg.s et que lon veut créer un indexe à arbre B+ avec une clé donnée, le faire enregistrement par enregistrement est très inefficace. Solution: Bulk Loading (chargement en vrac). Initialisation : Trier toutes les entrées de données et les diviser en page; créer une page racine vide; et insérer un pointeur de la racine vers la 1ère page des données. 3* 4* 6*9*10*11*12*13* 20*22* 23*31* 35* 36*38*41*44* Pages dentrées de données triées; non encore mises dans larbre B+ Racine

30 30 Chargement en Vrac (Suite) Les entrées dindex pour les feuilles sont toujours créées dans la page dindex la plus à droite située juste au dessus du niveau des feuilles. Si cette dernière est pleine, elle est partagée. (Ce processus peut se répéter récursivement 3* 4* 6*9*10*11*12*13* 20*22* 23*31* 35* 36*38*41*44* Racine Pages de données à mettre sur larbre 3523126 1020 3* 4* 6*9*10*11*12*13* 20*22* 23*31* 35* 36*38*41*44* 6 Racine 10 12 23 20 35 38

31 31 Indexes à Hachage Bon pour les sélections dégalité. Lindex est une collection de compartiments ( buckets ). Bucket = page domiciliaire plus zéro ou plus des pages de dépassement. Fonction de hachage h : h ( r ) = bucket auquel lenregistrement r appartient. h utilise la clé de recherche de r. Si lalternative 1 est utilisé, les buckets contiennent les enregistrements des données; sinon, ils contiennent des pairs ou.

32 32 Hachage Statique Pages primaires en nombre fixe et affectées séquentiellement; jamais désaffectées; pages de débordement si nécessaire. h ( k ) mod M = bucket où mettre lentrée des données dont la clé est k. (M = # de buckets) h(key) mod N h key Pages (bucket) primaires Pages de débordement 2 0 N-1

33 33 Hachage Statique (Suite) Les buckets contiennent les entrées des données. La fonction de hachage utilise le champ de la clé de recherche de lenregistrement r. Les valeurs des clés doivent être distribuées sur une plage allant de 0 à M-1. Les fonctions de hachage ont été abondamment étudiées. Défaut: possible développement de longues chaînes de débordement qui peuvent entraver la performance. Hachage extensible et haching linéaire : Techniques dynamiques pour résoudre ce problème.

34 34 Hachage Extensible Situation: un bucket (page primaire) se remplit. Pourrait-on réorganiser le fichier en doublant le # de buckets? Lire et écrire toutes les pages est très coûteux! Solution : Utiliser un répertoire de pointeurs vers les buckets ; doubler le # de buckets en doublant la taille du répertoire, tout en ne partageant que les buckets en débordement! Le répertoire est bien plus petit que le fichier lui-même, doù doubler le répertoire est moins coûteux. Plus besoin de pages de débordement !

35 35 Résumé Gestion des fichiers: Méthode pour arranger un fichier denregistrements sur stockage externe. Fichiers de données: structure pour entreposage des données sur disque. Collection de pages stockées sur disque. Indexes Arbres: ISAM, arbres B+ ISAM est une structure statique Seules les feuilles sont modifiées; pages de débordement nécessaires Défaut: chaînes de débordements Arbres B+ est une structure dynamique. Insertion et effacement laissent larbre balancé coût de log F N Pas de chaînes de débordement Hachage: Hachage statique vs. extensible


Télécharger ppt "1 Survol du Stockage et de lIndexage Chapitres 9-12."

Présentations similaires


Annonces Google