1
Modèles de stockage
et d’indexation
Support construit à partir de ceux de Nicolas Anciaux, L. Bouganim, P. Pucheral,
P. Bonnet, D. Shasha, Mohammed J. Zaki
2
Architecture en couche d’un SGBD
Gestion de
Mémoire Gestion de
Verrous Gestion des
Journaux
Méthodes d’accès aux données
Opérations relationnelles
Moteur d’exécution
Optimiseur
Analyseur sémantique
Interface
Système opérationnel
3
Modèle de stockage: plan du cours
• Introduction à la hiérarchie mémoire
– Cache CPU, RAM, disques, bandes, …Flash ?
• Organisation des données
– Format des attributs, tuples, pages, fichiers, index
– Modèle de stockage
• Organisation des index
– Type d’index
– Modèle de stockage
•Oracle
– Structures de stockage
– Organisation du dictionnaire
4
Hiérarchie mémoire
10
1
0.01
0.001
1
10
107
10ms
1010
qq sec
Cache processeur
RAM
Disques
Bandes / Disques optiques
Ratio Prix (approx) Accès (ns)
10 Go/s
1 Go/s
(x10-1)
100 Mo/s
(x10-2)
10 Mo/s
(x10-3)
Débit (Mo/s)
5
Disques Magnétiques
• Progression moyenne des disques
– Capacité + 60% par an
– Latence + 15% par an Åcontraintes
mécaniques …
– Débit + 40% par an
Contrôleur
tête de
lecture
bras
piste
plateau
arbre
levier
Interface (IDE, SCSI)
© Dennis Shasha, Philippe Bonnet
Plateaux
Arbre
Tête de lecture
Mouvement du bras
Bras
Pistes
Secteur
© Mohammed J. Zaki, Luc Bouganim, Philippe Pucheral 6
Optimisations logicielles
– Prefetching
• Le SGBD peut anticiper les patterns d’accès aux données
• Ainsi, il peut pré-charger (prefetch) des données en RAM
• NB: le prefetching doit être géré au niveau du SGBD (vs. OS)
– Clustering
• Regroupement physique des blocs de données
– Quand ils contiennent des données souvent utilisées ensemble
• Placement de ces blocs sur
– La même piste physique => I/O unique
– Le même cylindre physique => I/O séquentielles
• Compromis entre bon placement et trop de perte de place
– Allocation d’un ensemble de blocs par «granule»
– Calibrer la taille du granule pour chaque objet BD
7
NAND Flash : le futur ?
• Capacité des disques SSD jusqu’à 256GB aujourd’hui
• Performances STM NAND 08Gb
– Read: Random (25µs), sequentiel (50ns/byte)
– Write: page (300 µs)
• Écritures séquentielles dans un bloc
• Contrainte Erase-before-rewrite
– Erase: block granularity (2ms)
•10
4to 105erase cycles => wear leveling
• FTL (Flash Translation Layer) actuelles peu adaptées à des
comportements BD
– Notamment, coût extrême des écritures aléatoires
…
…
Bloc
(64 pages)
Page 2
Page 1
8192 blocs
…
Sequential
writes
Page 3
Page 64
2048 bytes
•Ex: STM NAND 08Gb
8
Modèles de stockage des données
• Les données sont stockées sous forme de
–attributs, de taille fixe ou variable...
– …stockés eux-mêmes sous forme de tuples...
– …stockés dans des pages (blocs disques)...
– …stockés dans des fichiers
• Rappel : le SGBD gère un cache de pages en RAM à
la façon d’une mémoire virtuelle
attributs tuples pages fichiers
∈∈ ∈
9
Stockage des tuples (attributs de taille fixe)
• Les informations concernant les types/tailles d’attributs
– Sont partagées par tous les tuples d’un fichier
– Sont stockées dans le catalogue système
• Accéder au ième attribut ⇒la lecture totale du tuple
Adresse de base (B)
T1 T2 T3 T4
Att1 Att2 Att3 Att4
Adresse = B+T1+T2
10
Stockage des tuples (att. de taille variable)
• Deux alternatives de stockage (le nombre d’attributs est fixe):
• La deuxième alternative offre
– Un accès direct au ième attribut
– Un petit coût de stockage supplémentaire (taille de «offset» > taille «$»)
$$$$
Att1 Att2 Att3 Att4
Att1 Att2 Att3 Att4
Tableau d’offsets des attributs
11
Pages : tuples de taille fixe
• Identifiant d’un tuple (Record id) : Rid = < id page, emplacement #>
• Remarque
–la Clé d’un tuple est un «pointeur logique», le Rid est un «pointeur physique»
. . . . . .
NM1
0
. . .
M ... 3 2 1
Page compacte
(pas de trou) Bitmap (0=trous)
Page éparse
Emplacement 1
Trou
11
Nombre
de tuples Nombre
d’emplacements
Emplacement 2
Emplacement N
Emplacement M
Emplacement 1
Emplacement 2
Emplacement N
12
Pages: tuples de taille variable
• Déplacement des tuples dans la page sans changer le Rid…
Page i
Rid = (i,N)
Rid = (i,2)
Rid = (i,1)
Pointeur
vers l’espace
libre
Pointeurs d’emplacements
N . . . 2 1
N
20 16 24
Nombre
d’emplacements
13
Fichiers non ordonnés
• Soit la table Doctor suivante
• Le modèle de stockage NSM
(N-ary Storage Model)
• Le modèle de stockage DSM
(Decomposition Storage Model)
– Optimisation des I/O
• Le modèle de stockage PAX
(Partition Attributes Across)
– Optimisation du cache
PsychologyFDominique3
DermatologyMAntonio2
Pediatrics
specialty
char(20)
1
id
number(4)
Maria
first_name
char(30)
F
gender
char(1)
2 Antonio M DermatologyPediatricsFMaria1
ID3 32ID21ID1
Pages disques
ID3 DominiqueAntonioID2MariaID1
ID3 FMID2FID1
ID3 PsychologyDermatologyID2PediatricsID1
Pediatrics DermatologyFM12 MariaID2ID1 Antonio
PsychologyF3 DominiqueID3
3 Dominique F Psychology
14
Indexation
• Objectifs
– Offrir un accès rapide à tous les tuples d’un fichier
satisfaisant un même critère
• A partir d’une clé (discriminante ou non, mono ou multi-attributs)
• Sur des fichiers ordonnés sur cette clé, ou non ordonnés, ou
ordonnés sur une autre clé
• Moyen
– Créer une structure de données accélératrice associant des
adresses de tuples aux valeurs de clés
• Index
– Table (ou hiérarchie de tables) implémentant cet
accélérateur
15
Catégories d’index (1)
• Index primaire ou plaçant
(primary or clustered)
– Tuples du fichier organisés par rapport à l’index
• Les tuples sont stockés «dans» l’index
– 1 seul index primaire par table…
• Souvent construit par le SGBD sur la clé primaire
• Index secondaire ou non plaçant
(secondary or unclustered)
– Tuples organisés indépendamment de l’index
• Seuls les Rid des tuples sont «dans» l’index
– Plusieurs index secondaires possibles par table
…K1…
…K2… …Kn…
Page 1 Page 2 Page i
…K1…
…K2… …Kn…
Page 1 Page 2 Page i
Clé L
↓
Tuples
triés sur K
Tuples non triés sur L
Clé K
16
Catégories d’index (2)
• Index dense (dense)
– Contient toutes les clés
– Adresse tous les tuples
• Index non dense (sparse)
– Ne contient pas toutes les clés
– N’adresse pas tous les tuples
(e.g., adresse une seule fois chaque page)
– Nécessite que le fichier soit trié sur les clés
Contient alors la plus grande clé de chaque bloc
+ l'adresse du bloc
• NB : Densité d’un index : nb clés dans l'index
nb clés dans la table
tuple
tuple tuple
Page 1 Page 2 Page i
tuple
tuple tuple
Page 1 Page 2 Page i
17
Catégories d’index (3)
• Mais au fait …
– Peut-on créer un index non dense non plaçant ?
– Peut-on créer un index dense et plaçant ?
– Peut-on créer un index primaire (c.à.d, plaçant) sur une clé
secondaire (c.à.d, non discriminante) ?
– Peut-on créer un index secondaire (c.à.d, non plaçant) sur
une clé primaire (c.à.d, discriminante) ?
18
Index arborescents
• Index hiérarchisés ou multi-niveaux
– Permet de gérer de gros index
(i.e., très gros fichiers…)
– Principe : chaque index est indexé
• Fonctionnement
– L’index est trié
(mais trop gros Îpeu performant…)
– On indexe l’index
• Par un second index non dense
(Æ2ème niveau)
– On peut continuer…
(jusqu’à obtenir un index non dense qui
tiennent dans une seule page…)
Pourquoi l’index à indexer doit-il être trié ?
19
Exemple : Arbre-B+
1) en mettant toutes les clés des articles dans un arbre B+ et en pointant sur
ces articles par des adresses relatives ==> INDEX NON PLACANT
2) en rangeant les articles au plus bas niveau de l'arbre B+ ==> INDEX
PLACANT
Arbre-B (B-tree)
Un arbre-B d'ordre mest un arbre tel que:
(i) chaque noeud contient k clés triées, avec m <= k <= 2m,
sauf la racine pour laquelle k vérifie 1<= k <= 2m.
(ii) tout noeud non feuille possède (k+1) fils. Le ième fils contient des
clés comprises entre la (i-1)ème et la ième clé du père.
(iii) l'arbre est équilibré.
20
Hauteur d'un Arbre-B
• La hauteur d'un arbre-B est déterminé par son ordre et le
nombre de clés contenues.
– pour stocker N clés :
h≤logm((N+1)/2)
– Soit h=3 pour N=2 millions et m=100
– Soit encore h=3 pour N=250 millions et m=500
• h est très important car il détermine le nombre d’E/S nécessaire
pour traverser l’arbre lors d’une sélection
• Dans la pratique, qu’est ce qui détermine m ?
• Et pourquoi est-ce important que l’arbre soit équilibré ?
1 / 15 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!