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

35
Survol du Stockage et de l’Indexage Chapitres 9-12

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

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

1

Survol du Stockage et de l’Indexage

Chapitres 9-12

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

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 d’enregistrements sur stockage externe. Fichiers de données: structure pour entreposage des

données d’une organisation.• Identité d’enregistrement (‘’Record id’’ -- rid): suffisant pour

localiser physiquement l’enregistrement Fichiers d’indexes: structures de données permettant de

trouver les identités des enregistrements à partir des valeurs des clés de recherche

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

3

Organisation des Fichiers

Plusieurs alternatives existent, chacune étant idéale pour certaines situations, et pas pour d’autres: 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’’) d’enregistrements est requis.

Indexes: Structures des données en forme d’arbres ou de hachage pour organiser les enregistrements.

• Comme les fichiers triés, ils accélèrent les recherches pour un sous ensemble d’enregistrements sur base des valeurs des clés.

• Les modifications sont plus rapides que dans les fichiers triés.

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

4

Composantes d’un 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).

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

5

Accès à une Page de Disque Le temps d’accè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 d’attente 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 d’environ 1 à 20msec Le délai de rotation varie de 0 à 10msec Le taux de transfert est d’environ 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?

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

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!

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

7

Gestion de l’Espace Disque La couche la plus basse du SGBD gère

l’espace sur disque. Les couches plus élevées font appel à

cette couche la plus basse afin de: Affecter/désaffecter de l’espace mémoire Lire/écrire sur une page

La requête pour une séquence de pages doit être satisfaite par l’allocation de pages de manière séquentielle sur le disque! La gestion des espaces libres est transparente aux couches supérieures du SGBD.

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

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 <frame#, pageid>.

DB

MEMOIRE PRINCIPALE

DISQUE

Page de disque

Cadre libre

Requête de page d’un niveau plus élevé

BUFFER POOL

Le choix d’un cadre à remplacer lorsque la réserve est pleine est régi par une police de remplacement

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

9

Procédure en Cas de Requête pour une Page Le manager maintient 2 variables:

pin_count: # d’utilisateurs 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!

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

10

Formats d’Enregistrements: Longueur Fixe

L’info 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 l’enregistrement.

Adresse de base (B)

L1 L2 L3 L4

F1 F2 F3 F4

Adresse = B+L1+L2

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

11

Formats d’Enregistrements: Longueur Variable Deux alternatives au moins existent (#

champs fixe):

Le second format offre un accès direct aux champs ainsi qu’un 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

F1 F2 F3 F4

Liste de déplacements (‘’offsets’’) des champs

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

12

Format des Pages: Enreg.’s à Longueur Fixe

Record id = <page id, slot #>. Dans la première alternative, mouvoir les enreg.’s pour la gestion des espaces vides change les rids; n’est donc pas acceptable dans bien des cas !

Tranche 1Tranche 2

Tranche N

. . . . . .

N M10. . .

M ... 3 2 1PACKED UNPACKED, BITMAP

Tranche 1Tranche 2

Tranche N

Espacelibre

Tranche M

11

nombre d’enreg.’s

nombrede tranches

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

13

Format des Pages: Enreg.’s à Longueur Variable

On peut mouvoir les enreg.’s sur une page sans devoir changer les rids; d’où ce format est aussi attractif pour les enreg.’s à longueur fixe.

Page iRid = (i,N)

Rid = (i,2)

Rid = (i,1)

Pointeurvers le débutde l’espace libreREPERTOIRE DES TRANCHES

N . . . 2 120 16 24 N

# slots

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

14

Fichiers d’Enregistrements Les pages ou blocs sont la mesure de l’I/O, mais

les couches plus élevées du SGBD opèrent sur les enregistrements, et utilisent des fichiers d’enregistrements.

FICHIER: Collection de pages, chacune contenant une collection d’enregistrements. Doit supporter: insertion/effacement/modification des enregistrements lecture d’un enregistrement particulier (spécifié par son

record id -- rid) scannage de tous les enregistrements

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

15

Implémentation du ‘’Heap File’’ Comme Liste

Le SGBD retient l’adresse de l’endroit où est stockée la première page d’un 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 dedonnées

Page de données

Page de données

Page de données

Page dedonnées Pages avec

espace libre

Pages pleines

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

16

‘’Heap File’’ Utilisant une Page Répertoire

L’entrée d’une page peut inclure le nombre d’octets qui sont libres sur cette page.

Le répertoire est une collection de pages pouvant être organisée comme une liste. Beaucoup moins d’espace utilisé que dans la

première méthode!

Page de données

Page de données

Page dedonnées

Page de tête

REPERTOIRE

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

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 d’intégrité

Pour chaque vue: nom et définition

Statistiques, autorisations, taille du ‘’buffer pool’’, etc. Les catalogues sont stockés comme des relations!

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

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 d’une relation peut

servir de clé pour un index sur cette relation. Une clé de recherche n’est pas la même chose qu’une

clé au sens d’ensemble minimal d’attributs 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.

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

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 <k, rid> une paire <k, liste de rids>

Le choix d’une des alternatives dépend de la technique d’indexage utilisée pour localiser les entrées des données ayant une valeur de clé k. Exemples de techniques d’indexage: Arbres B+,

hachage Typiquement, un index contient de l’information qui

oriente les recherches vers les entrées des données désirées.

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

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 l’index et dirigent la recherche.

Pages

internes

feuilles

pages

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

21

Classification des Indexes Hachage versus Arbres: Selon que la structure de

recherche est en forme de table à hachage ou en forme d’arbre.

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 l’ordre des enregistrements des données est le même que ou proche de celui des entrées des données, alors l’index est groupé; sinon il est nongroupé.

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

22

Indexes à Arbres

Les indexes à arbres supportent à la fois la recherche des plages de valeurs (‘’range search’’) ainsi que les recherches d’egalités (‘’equality search’’).

ISAM: structure statique; B+ tree: dynamique, s’ajuste gracieusement aux insertions et effacements.

Indexes à Hachage : meilleurs pour les recherches d’égalité; ne peuvent supporter les recherches des valeurs des plages.

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

23

ISAM

Le fichier d’indexes peut être très large. On peut cependant appliquer l’idée de fichier d’indexes de manière répétée!

Les pages feuilles contiennent les entrées des données.

P0

K1 P

1K 2 P

2K m

P m

Entrée d’index

Pages

internes

feuilles

Page de débordement

Pages primaires

Pages

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

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 d’indexes: <valeur de la clé, page id>; 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 l’entrée de donnée et l’y mettre.

Effacement: Trouver et enlever l’entrée de la feuille; désaffecter une page de débordement vide. Structure statique: les changements n’affectent que les feuilles.

Pages de données

Pages des indexes

Pages de débordement

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

25

Arbre B+: L’Index le plus Usuel Insertion/effacement avec coût log F N; Garde la

hauteur balancée. (F = ‘’fanout’’, N = # feuilles) Taux d’occupation minimum de 50%(sauf pour la

racine). Chaque nœud contient d <= m <= 2d entrées. Le paramètre d est appelé l’ordre de l’arbre.

Supporte efficacement les recherches des plages de valeurs et les recherches d’égalités.

Entrées de l’index

Entrées de données("Sequence set")

(orientent la recherche)

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

26

Exemple d’Arbre B+ La recherche commence à la racine et les

comparaisons des clés l’orientent vers une page (similaire à la méthode ISAM).

Recherchez 5*, 15*, …, toutes entrées de données >= 24* ...

Racine

17 24 30

2* 3* 5* 7* 14* 16* 19* 20* 22* 24* 27* 29* 33* 34* 38* 39*

13

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

27

Arbre B+ en Pratique Ordre typique: 100. Remplissage typique: 67%.

Sortance (‘’fanout’’) moyenne = 133 Capacités typiques:

Hauteur 4: 1334 = 312,900,700 enreg.’s Hauteur 3: 1333 = 2,352,637 enreg.’s

Les niveaux supérieurs de l’arbre 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

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

28

Insertion d’une Entrée de Données Trouver la feuille appropriée L. Mettre l’entrée de données dans L.

Si L a assez d’espace, 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 l’entrée d’index pointant vers L2 dans le parent de L.

Ceci peut arriver de manière récursive Pour partager nœud d’index, 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 l’arbre; le partage de la racine augmente sa hauteur. Croissance de l’arbre: devient plus large ou d’ un niveau

plus élevé à la racine.

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

29

Chargement en Vrac d’un Arbre B+

Si l’on a une large collection d’enreg.’s et que l’on 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 d’entrées de données triées; non encore mises dans l’arbre B+

Racine

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

30

Chargement en Vrac (Suite) Les entrées d’index

pour les feuilles sont toujours créées dans la page d’index 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 l’arbre3523126

10 20

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

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

31

Indexes à Hachage

Bon pour les sélections d’égalité.• L’index 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 l’enregistrement r appartient. h utilise la clé de recherche de r.

Si l’alternative 1 est utilisé, les buckets contiennent les enregistrements des données; sinon, ils contiennent des pairs <key, rid> ou <key, rid-list>.

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

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 l’entrée des données dont la clé est k. (M = # de buckets)

h(key) mod N

hkey

Pages (bucket) primaires

Pages de débordement

20

N-1

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

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 l’enregistrement 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.

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

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, d’où doubler le répertoire est moins coûteux. Plus besoin de pages de débordement!

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

35

Résumé Gestion des fichiers: Méthode pour arranger un

fichier d’enregistrements 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 l’arbre balancé• coût de log F N • Pas de chaînes de débordement

Hachage: Hachage statique vs. extensible