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 :
hlogm((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 linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !