2 Gestion des données en mémoire secondaire
Données persistantes en mémoire secondaire
–
principalement le disque
Organisation physique des données
–
façon dont les données sont structurées en mémoire secondaire
Méthode d'organisation des données
–
structure de données particulière utilisée pour
organiser les données en mémoire secondaire
Critères d'évaluation des méthodes d'organisation
Temps d'accès aux données par rapport à différentes méthodes d'accès
Délai d'insertion et de suppression
Occupation mémoire
Conception physique
Choix des méthodes d ’organisation
– organisation sérielle
– organisation séquentielle
– indexage
– hachage
– organisation par grappe
– ...
Schéma interne de la BD
2.1 Principales caractéristiques des disques
Unité de disque (disk pack ) ou disque
P is t e
C y lin d r e
S e c t e u r
P la t e a u
T ê t e d e
le c t u r e / é c r it u r e
Capacité de Superbit
capacitéDisque = nbSurfaces nbCylindres nbSecteursParPiste tailleSecteur
= 20 surfaces 1000 cylindres 50 secteurs par piste 512 octets
= 512,000,000 octets 500,000 kilooctets(K) 500 mégaoctets (M)
Paramètre Valeur
Nombre de surfaces ( nbSurfaces ) 20
Nombre de pistes par surface ( nbCylindres ) 1000
Nombre de secteurs par piste ( nbSecteursParPiste ) 50
Nombre d'octets de données par secteur ( tailleSecteur ) 512
Transfert d ’un secteur
Secteur
–
unité d'adressage et de transfert minimal
Adresse physique de secteur
–
numéro de surface (noSurface), numéro de cylindre (noCylindre), numéro de secteur dans la piste
(noSecteur)
Adresse relative de secteur (noSecteurRelatif)
–
dans l'intervalle [0..n-1]
Tampon (buffer )
–
zone de la mémoire centrale où transitent les données de
la mémoire secondaire
2.1.1Modèle simple d'estimation du coût d'une entrée/sortie (transfert) sur disque
Temps de transfert (entrée/sortie) de n octets
–
TempsESDisque(n) = TempsPosDébut + TempsTrans (n)
TempsPosDébut = TempsDépBras + TempsRotation (10ms)
– TempsDépBras :
6-25 ms (6ms)
– TempsRotation :
4.18 à 8.35 ms = 60 à 120 tours/sec (4ms)
TempsTrans(n) = n / TauxTransVrac
– TauxTransVrac = NombreOctetsPiste / TempsRotationComplète (2M/sec)
– ex: TempsTrans(2K) = 2K / 2M/sec = 1ms
ex: TempsESDisque(2K) = 10ms + 1ms = 11ms
Minimiser le nombre d'entrées/sorties en mémoire
secondaire
Importance de la contiguïté physique
Ex: transfert de 2000 secteurs de 512 octets (1M)
– Secteurs consécutifs
TempsESDisque(1M) = 10ms + 500ms = 510ms
– Secteurs dispersés aléatoirement
TempsESDisque(un secteur) = 10ms + 0.25ms = 10.25ms
Total = 2000 10.25 = 20500 ms = 20.5 secs
Effet de grappe (clustering)
– regrouper physiquement selon patrons d ’accès
logiques
2.1.2 Contrôleur de disque
Contrôleur de disque (disk controller )
–
processeur simple et indépendant de l'unité centrale de traitement
–
DMA (« Direct Memory Access »)
Interface du contrôleur :
–
type de transfert (lecture ou écriture)
–
adresse du premier secteur
–
nombre de secteurs à transférer
–
adresse du tampon
Standards pour PC
–
IDE/ATA, SCSI
2.1.3 Autres types d'unité de mémoire secondaire
Type d'unité Temps de positionnement (ms)
Taux de
transfert en vrac (M/ sec)
Capacité
(M) Coût ($/ M) Particularité
Mémoire vive 10
-6-10
-510
2-10
30-10
410-10
2Volatile
Disque 1-10 1-10
210-10
410
-1-1 Non amovible
Disque
amovible 10-10
21 10-10
31-10
Disquette 10
210
-11 10
-1Disque
Optique 10
210
-1-1 10
2-10
310
-2-10
-1Cédérom non modifiable
Bande
magnétique 10
61-10 10
2-10
610
-3-10
-2Accès direct prohibitif
Tableau comparatif des types de
mémoire
2.2 Fichiers et répertoires
Système de gestion de fichier (SGF, file system)
– abstraction des mémoires secondaires sous forme d'un ensemble de fichiers
Hiérarchie des répertoires (directory hierarchy) ou répertoire
– structure d ’arbre
– dossier, catalogue
Cas de UNIX
Chemin du fichier (“ file path ”)
– /usr/degas/travaux/fibonacci.cpp
u s r b in
/
d e v
m o n e t d e g a s
t r a v a u x
c v . t x t
Volume racine
Descripteur de fichier (file descriptor )
Ensemble d ’attributs du fichier
– Nom du fichier
– Type de fichier
– Propriétaire
– Date de création
– Date de dernière modification
– Paramètres de protection
– Taille actuelle
– Taille maximale
– Référence à la table d'allocation des fichiers
Descripteur de répertoire
Ensemble d ’attributs du répertoire
– Nom du répertoire
– Type de répertoire
– Propriétaire
– Date de création
– Paramètres de protection
– Taille
– Collection de références aux sous-répertoires
– Collection de références aux fichiers sous ce
répertoire
Unité de mémoire secondaire logique /physique
Partition du disque (“ disk partition ”)
– découper un disque en plusieurs partitions
– unité logique de mémoire secondaire
Descripteur de disque
– partitions, hiérarchie des répertoires et fichiers
– maintenu sur disque
Services de base
Ouvrir (IN cheminFichier, OUT idInterne,…)
–
SGF crée une entrée dans la table des fichiers ouverts
–
idInterne : référence à la table des fichiers ouverts
–
mode d ’accès : lecture/écriture, accès
direct/séquentiel, création ou fichier existe déjà ,…
–
allocation d ’espace
–
exceptions
Fermer (IN idInterne, …)
–
libère l ’entrée de la table des fichiers ouverts
–
évacuer tampons
2.3 Organisation par bloc
Fichier ~ tableau de blocs (taille variable)
–
LireBloc(IN idInterne, IN numéroBloc, OUT tamponApplication,…)
–
ÉcrireBloc(IN idInterne, IN numéroBloc, IN tamponApplication,…) 0
1 2
n-1
#bloc
Bloc, page ou
enregistrement physique
Ensemble de bits d'une taille fixe
– habituellement n secteurs (1, 2, 4, 8,…)
– traduction bloc => secteur
Unité de base de transfert de données
Unité minimale d'allocation d'espace
Allocation des secteurs aux blocs de Superbit
Allocation par cylindre pour minimiser déplacement du bras
noBloc noSecteurRelatif noPiste noSurface noSecteur
0 0-4 0 0 0-4
1 5-9 0 0 5-9
2 10-14 0 0 10-14
3 15-19 0 0 15-19
... ... ... ... ...
9 45-49 0 0 45-49
10 50-54 0 1 0-4
11 55-59 0 1 5-9
... ... ... ... ...
20 100-104 0 2 0-4
21 105-109 0 2 5-9
... ... ... ... ...
190 950-954 0 19 0-4
191 955-959 0 19 5-9
... ... ... ... ...
200 1000-1004 1 0 0-4
201 1005-1009 1 0 5-9
... ... ... ... ...
Paramètre Valeur
nbSurfaces 20
nbCylindres 1000
nbSecteursParPiste 50
tailleSecteur 512
nbSecteursParBloc 5
Calcul d ’adresse relative du premier secteur d ’un bloc
noSecteurRelatif (105)
– = noBloc (21) nbSecteursParBloc (5)
noBloc noSecteurRelatif noPiste noSurface noSecteur
0 0-4 0 0 0-4
1 5-9 0 0 5-9
2 10-14 0 0 10-14
3 15-19 0 0 15-19
... ... ... ... ...
9 45-49 0 0 45-49
10 50-54 0 1 0-4
11 55-59 0 1 5-9
... ... ... ... ...
20 100-104 0 2 0-4
21 105-109 0 2 5-9
... ... ... ... ...
190 950-954 0 19 0-4
191 955-959 0 19 5-9
... ... ... ... ...
200 1000-1004 1 0 0-4
201 1005-1009 1 0 5-9
... ... ... ... ...
Paramètre Valeur
nbSurfaces 20
nbCylindres 1000
nbSecteursParPiste 50
tailleSecteur 512
nbSecteursParBloc 5
Calcul de l ’adresse physique du premier secteur du bloc
noCylindre (0) = noSecteurRelatif (105) DIV nbSecteursParCylindre (1000)
où nbSecteursParCylindre (1000) = nbSecteursParPiste (50) nbSurfaces (20)
noSurface (2) = (noSecteurRelatif (105) MOD nbSecteursParCylindre (1000)) DIV nbSecteursParPiste (50)
noSecteur (5) = (noSecteurRelatif (105) MOD nbSecteursParCylindre (1000)) MOD nbSecteursParPiste (50)
noBloc noSecteurRelatif noCylindre noSurface noSecteur
0 0-4 0 0 0-4
1 5-9 0 0 5-9
2 10-14 0 0 10-14
3 15-19 0 0 15-19
... ... ... ... ...
9 45-49 0 0 45-49
10 50-54 0 1 0-4
11 55-59 0 1 5-9
... ... ... ... ...
20 100-104 0 2 0-4
21 105-109 0 2 5-9
... ... ... ... ...
190 950-954 0 19 0-4
191 955-959 0 19 5-9
... ... ... ... ...
200 1000-1004 1 0 0-4
201 1005-1009 1 0 5-9
... ... ... ... ...
Paramètre Valeur
nbSurfaces 20
nbCylindres 1000
nbSecteursParPiste 50
tailleSecteur 512
nbSecteursParBloc 5
2.3.1 Allocation d'espace contigu au fichier
Allocation en vrac à la création du fichier
Croissance de la taille du fichier ???
Fragmentation externe
F i c h i e r A F i c h i e r B F i c h i e r C F i c h i e r D
Mieuxajusté
F i c h i e r A F i c h i e r B F i c h i e r C F i c h i e r D
Premierajusté
2.3.2 Allocation dynamique d'espace par granule
Granule d'allocation d'espace (segment, cluster, extent)
–
unité d'allocation d'espace
–
ensemble de blocs consécutifs
Fragmentation du fichier (“file fragmentation ”)
A B C
D A B B B C D B
A B C
D D A B B B B C
Défragmentation
Table d'allocation des
fichiers ( “fille allocation table - FAT ”)
B lo c 0 d u F i c h ie r A B lo c 1 d u F i c h ie r A B lo c 0 d u F i c h ie r B B lo c 1 d u F i c h ie r B
B l o c li b r e B l o c li b r e B lo c 5 d u F i c h ie r A B lo c 0 d u F i c h ie r C B lo c 1 d u F i c h ie r C
B l o c li b r e 1 0
1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 N u m é r o d e b lo c
d u d i s q u e
B lo c 2 d u F i c h ie r A B lo c 3 d u F i c h ie r A B lo c 4 d u F i c h ie r A 2 0
2 1 2 2
1 1
N o m d u f ic h i e r
N u m é r o d u p r e m i e r b l o c
A 1 0
B 1 2
C 1 7 2 0
1 3 2 3
N i l 1 0 N i l
2 1 2 2 1 6
D i s q u e o r g a n i s é p a r b l o c T a b l e d ' a l l o c a t i o n
d e s fic h i e r s
1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2
Ex: granule = 1 bloc
Style DOS
Allocation d ’espace chaînée
Chargée en mémoire centrale
Organisations plus
sophistiquées pour la table d ’allocation
UNIX
– arborescence de I-node
Stratégie des frères jumeaux (“buddy system”)
– granules d'allocation d'espace de taille 2
n– fusion/division de granules voisins
(jumeaux)
Couches de base
Niveau 1 Niveau 2 Opérations sur blocs
Niveau 3 Opérations sur hiérarchie de répertoires et fichiers organisés par
blocs
2.3.3Optimisation du déplacement du bras de lecture/écriture
Algorithme de l'ascenseur (“SCAN”)
Algorithme de balayage circulaire (“ C-SCAN ”)
Temps
Temps
2.3.4 Taille optimale de bloc
Grande taille =>
– effet de grappe
– données transférées inutilement
– gaspillage d ’espace pour petits fichiers
Compromis
– 512 octets à 4K pour applications traditionnelles
– >> pour entrepôt de données, multimédia
2.3.5 Antémémoire (cache memory )
Mémoire intermédiaire
Données fréquemment utilisées
Réduire le temps moyen
Antémémoire disque (disk cache)
– réalisée en mémoire centrale afin
d'accélérer les entrées/sorties sur un
disque
Principe de l ’ antémémoire
B l o c 0
B l o c 5 B l o c 1
B l o c 6 B l o c 2
B l o c 7 B l o c 3
B l o c 8 B l o c 4
B l o c 9
T a m p o n s y s t è m e
B l o c 4 1 e r
T a m p o n p r o c e s s u s # 1
B l o c 4 2 e
T a m p o n p r o c e s s u s # 2
B l o c 4
3 e
Antémémoire
Gestionnaire de l'antémémoire disque (“disk cache manager ”)
D is q u e
2 0 B l o c 4
B l o c 2 0
B l o c 7 0
B l o c 5 0
B l o c 0
B l o c 5 B l o c 1
B l o c 6 B l o c 2
B l o c 7 B l o c 3
B l o c 8 B l o c 4
B l o c 9
n o B l o c
4 5 7
S
R é p e r t o i r e d e
l 'a n t é m é m o ir e A n t é m é m o i r e
M é m o i r e p r im a i r e
T a m p o n
Écriture en antémémoire
2 0 B l o c 4
B l o c 2 ' 1
B l o c 7 0
B l o c 5 0
B l o c 0
B l o c 5 B l o c 1
B l o c 6 B l o c 2
B l o c 7 B l o c 3
B l o c 8 B l o c 4
B l o c 9
n o B lo c
4 5 7
S
R é p e r t o ir e d e
l 'a n t é m é m o ir e A n t é m é m o i r e
T a m p o n p r o c e s s u s # 1
B l o c 2 '
T a m p o n
Sélection d ’une victime
Processus #1: lire Bloc 3 et antémémoire pleine !
Choix d ’une victime pour remplacement: Bloc 2 ’ qui est sale (s = 1)
Évacuation de la victime
2 0 B l o c 4
B l o c 2 ' 1
B l o c 7 0
B l o c 5 0
B l o c 0
B l o c 5 B l o c 1
B l o c 6 B l o c 2 '
B l o c 7 B l o c 3
B l o c 8 B l o c 4
B l o c 9
n o B l o c
4 5 7
S
R é p e r t o i r e d e
l'a n t é m é m o i r e A n t é m é m o ir e
T a m p o n p r o c e s s u s # 1
T a m p o n
1er
Remplacement de la victime
3 0 B l o c 4
B l o c 3 0
B l o c 7 0
B l o c 5 0
B l o c 0
B l o c 5 B l o c 1
B l o c 6 B l o c 2 '
B l o c 7 B l o c 3
B l o c 8 B l o c 4
B l o c 9
n o B lo c
4 5 7
S
R é p e r t o ir e d e
l'a n t é m é m o ir e A n t é m é m o ir e
T a m p o n p r o c e s s u s # 1
B l o c 3
T a m p o n
2 e
3 e
Stratégie de remplacement
Maximiser la probabilité d ’accès en antémémoire
Remplacer le tampon le moins récemment utilisé (Least Recently Used (LRU))
Remplacer le tampon le moins
fréquemment utilisé (Least Frequently
Used (LFU))
Hiérarchie de mémoire
Hierarchical Storage Management
– migration automatique entre niveaux
– contrôlée par paramètres de configuration
Primaire
Secondaire
Tertiaire
Capacité Vitesse
d'accès Coût
2.4Organisation par enregistrements
Enregistrement (record ), champ (field )
TYPE PlantCatalogue = ENREGISTREMENT
noCatalogue : ENTIER;
description : CHAINE[30];
prixUnitaire : REEL;
FIN.
noCatalogue description prixUnitaire
10 Cèdre en boule 10.99
20 Sapin 12.99
40 Epinette bleue 25.99
50 Chêne 22.99
60 Erable argenté 15.99
70 Herbe à puce 10.99
80 Poirier 26.99
81 Catalpa 25.99
90 Pommier 25.99
Niveau 4 : enregistrement
N i v e a u 1 N i v e a u 2 O p é r a t i o n s s u r b l o c s
N i v e a u 3
O p é r a t i o n s s u r h i é r a r c h i e d e r é p e r t o i r e s e t f i c h i e r s o r g a n i s é s p a r
b l o c s N i v e a u 4
O p é r a t i o n s s u r h i é r a r c h i e d e r é p e r t o i r e s e t f i c h i e r s o r g a n i s é s p a r
e n r e g i s t r e m e n t s
Méthode et chemin d ’accès
Méthode d'accès (“ access method
”) ou mode d'accès
– manière d'accéder d'un point de vue logique
sériel, séquentiel, sélection par clé, par intervalle
Chemin d'accès (“ access path ”)
– chemin dans les structures de données
Méthode d'accès sériel
Patron d ’itérateur
Ordre => séquentiel
PremierEnregistrement ( TypeEnregistrement , TamponEnregistrement , …) TANT QUE pas la fin de la collection
traitement d'un enregistrement
EnregistrementSuivant ( TypeEnregistrement , TamponEnregistrement ,…)
FIN TANT QUE
Méthode d'accès par sélection basée sur un identifiant d'enregistrement
Identifiant d ’enregistrement (IDE)
– accès rapide
SélectionnerEnregistrement ( IDE , TamponEnregistrement ) Entrée : IDE
Sortie : TamponEnregistrement
CréerEnregistrement ( IDE , TamponEnregistrement ) Entrée : TamponEnregistrement
IDE sera une entrée ou une sortie selon le cas ModifierEnregistrement ( IDE , TamponEnregistrement )
Entrée : IDE, TamponEnregistrement
SupprimerEnregistrement ( IDE )
Méthode d'accès par sélection basée sur une clé d'accès
Clé d'accès (“ access key ”)
– champ ou combinaison de champs utilisés comme critère de sélection
Clé simple/composée
Clé unique (“ unique key ”)
Sélection par intervalle
Méthode d ’accès multidimensionnelle
2.4.1 Organisation primaire et secondaire
Organisation primaire (primary organization)
–
placement des enregistrements
sériel, séquentiel, index primaire, hachage, grappe, ...
–
gestion des IDE
Organisation secondaire (secondary organization )
–
liste , arbre, index secondaire, etc.
–
référence aux IDE
2.4.2 Fichier homogène (homogeneous) ou hétérogène (heterogeneous)
2.4.3 Niveau 4 : SGF ou SGBD
2.4.4 Alternatives de réalisation de l'IDE
idFichier, NER
l'adressage relatif
(e.g. organisation “relative” de NON STOP SQL)
l'indexage
(e.g. organisation “key sequenced” sur “SYSKEY” de NON STOP SQL)
idFfichier, #bloc, #séquence (e.g. DBKEY DBMS-32 (CODASYL), ROWID ORACLE).
idFichier, #bloc, #octet (e.g. “entry-sequenced” de NON STOP SQL)
idFichier, clé unique (e.g. “key-sequenced” de NON STOP SQL)
IDE logique
(e.g. OID dans les SGBDO)
2.4.5 Représentation interne des enregistrements
Enregistrements => blocs
Séquence consécutive d ’octets
Taille fixe ou variable
2.4.5.1Enregistrements de taille fixe
Chaque champ => nombre fixe d ’octets
Remplissage par caractère neutre
T o t a l : 4 2 o c t e t s d e s c r ip t io n
C H A I N E [ 3 0 ]
u n o c t e t ( A S C I I 8 b it s ) p a r c a r a c t è r e ( r e m p lis s a g e a v e c e s p a c e s ) ( 3 0 o c t e t s )
p r ix U n it a ir e R E E L
p o in t - f lo t t a n t 6 4 b it s ( 8 o c t e t s ) n o C a t a lo g u e
E N T I E R b in a ir e 3 2 b it s
( 4 o c t e t s )
2.4.5.2Enregistrements de taille variable
Frontières de champs et d ’enregistrements
indicateur de taille en entête de chaque champ (descripteur de champ)
délimiteur (code réservé)
index en entête de l'enregistrement (descripteur d'enregistrement)
d e s c r ip t io n p r ix U n it a ir e
n o C a t a lo g u e
t a ille N o C a t a lo g u e t a ille D e s c r ip t io n t a ille P r ix U n it a ir e
d e s c r ip t io n p r ix U n it a ir e
n o C a t a lo g u e
2.5 Allocation sérielle d'espace pour les enregistrements de taille fixe et
l'adressage relatif
Allocation d'espace sérielle (serial space allocation)
– avec/sans chevauchement de bloc
Facteur de blocage (FB, blocking factor)
– nombre d'enregistrements par bloc
Numéro de bloc = NER / FB
Position relative dans le bloc =
– NER MOD FB taille d'un enregistrement
NER = champ ?
IDE = idFichier, NER
Gros enregistrement : chevauchement
N u m é r o d e b l o c
N u m é r o d 'e n r e g i s t r e m e n t
r e l a t i f
0
1
2
0 1 2 3 4
5 6 7 8 9
1 0 1 1 1 2 1 3
E s p a c e p e r d u
Liste des espaces libres (free list)
P o i n t e u r s u rp r e m i e r e s p a c e l i b r e
E s p a c e l i b r e
E s p a c e l i b r e
E s p a c e l i b r e E s p a c e l i b r e
E s p a c e l i b r e
0 1 2 3 4
5 6 7 8 9
1 0 1 1 1 2 1 3
B l o c r é s e r v é à
l ' e n t ê t e d e f i c h i e r
2.6 Allocation d'espace pour les enregistrements de taille variable
Analogue à l ’allocation d ’espace pour les fichiers
Granularité plus fine
2.6.1 Allocation sérielle pour enregistrements de taille variable
Gestion d ’espace libre
– ne pas récupérer
– liste libre
mieux ajusté
premier ajusté
Fragmentation interne au fichier
IDE = idFichier, #bloc, #octet
– enregistrement cloué
0 N u m é r o
d e b l o c
1
2
2.6.2 Récupération d'espace et adressage structuré par bloc
IDE = idFichier, #bloc, #séquence ( clouage partiel)
Suppression de #2
3 Espace libre Enr. #3 Enr. #2 Enr. #1
Taille de l'index des positions
1 2 3
Index des positions des enregistrements
3 Espace libre Enr. #3 Enr. #1
2.6.3Gestion des débordements
Même IDE
Oracle : PCTFREE
B l o c d 'a n c r a g e
B l o c d e d é b o r d e m e n t
B lo c v i r t u e l d e t a i ll e v a r i a b le
0 N u m é r o
d e b l o c
1
2
Découpage de l ’enregistrement
2 e m o r c e a u B lo c
d 'a n c r a g e
B l o c d e d é b o r d e m e n t
0 N u m é r o
d e b l o c
1
2
1 e r m o r c e a u
Cas particulier :
2.6.4 Adressage logique
IDE découplé de sa position physique
Souplesse d ’allocation d ’espace
–
Ex: OID dans les BD objet
M é c a n i s m e d e t r a d u c t i o n ( e . g . i n d e x ) I D El o g i q u e
a d r e s s e p h y s i q u e
2.6.5 Découpage en morceaux de taille fixe
Découper un enregistrement de taille variable en morceaux de taille fixe
Allocation des morceaux par
adressage relatif
2.6.6Allocation d'espace pour gros enregistrements de taille variable
Allocation chevauchante
– blocs consécutifs
– diminuer le nombre de positionnements
Réalisation de l ’IDE
– adressage logique
– adresse de suivi
2.6.7Allocation hybride pour les enregistrements de taille variable
Organisations spécialisées selon la taille des champs
– un mécanisme pour petits champs
– un autre pour les gros champs
référence externe (e.g. chemin, URL)
2.7Allocation sérielle par grappe homogène
Grappe (cluster)
–
ensemble d ’enregistrements regroupés physiquement
Clé de la grappe (cluster key)
–
critère de regroupement
–
ensemble de champs
Identifiant de grappe (IDG, cluster identifier)
–
IDG = #bloc, valeur de la clé de grappe
Exemple : insertion avec idMembre = 2
idMembre datePrêt idExemplaire
2 15/ 08/ 2000 75
3 16/ 08/ 2000 200
1 17/ 08/ 2000 100
4 18/ 08/ 2000 400
2 19/ 08/ 2000 50
1 20/ 08/ 2000 300
3 21/ 08/ 2000 150
2 1 5 / 0 8 / 2 0 0 0 7 5
0
3 1 6 / 0 8 / 2 0 0 0 2 0 0
1 1 7 / 0 8 / 2 0 0 0 1 0 0
4 1 8 / 0 8 / 2 0 0 0 4 0 0
N u m é r o
d e b l o c I D G = # b l o c , c l é d e g r a p p e 0 , 2
0 , 3 0 , 1 0 , 4
0
3 1 6 / 0 8 / 2 0 0 0 2 0 0 1 1 7 / 0 8 / 2 0 0 0 1 0 0 4 1 8 / 0 8 / 2 0 0 0 4 0 0 N u m é r o
d e b l o c I D G
0 , 3 0 , 1 0 , 4
2 1 5 / 0 8 / 2 0 0 0 7 5
2 1 9 / 0 8 / 2 0 0 0 5 0
0 , 2
Exemple : insertion avec idMembre = 1
0
3 1 6 / 0 8 / 2 0 0 0 2 0 0 1 1 7 / 0 8 / 2 0 0 0 1 0 0 4 1 8 / 0 8 / 2 0 0 0 4 0 0 N u m é r o
d e b l o c I D G
0 , 3 0 , 1 0 , 4
2 1 5 / 0 8 / 2 0 0 0 7 5
2 1 9 / 0 8 / 2 0 0 0 5 0
0 , 2
0
3 1 6 / 0 8 / 2 0 0 0 2 0 0
1 1 7 / 0 8 / 2 0 0 0 1 0 0
N u m é r o
d e b l o c I D G
0 , 3
0 , 1
2 1 5 / 0 8 / 2 0 0 0 7 5
2 1 9 / 0 8 / 2 0 0 0 5 0
0 , 2
1 2 0 / 0 8 / 2 0 0 0 3 0 0
Exemple : insertion avec idMembre = 3
0
3 1 6 / 0 8 / 2 0 0 0 2 0 0
1 1 7 / 0 8 / 2 0 0 0 1 0 0
N u m é r o
d e b l o c I D G
0 , 3
0 , 4 0 , 1
2 1 5 / 0 8 / 2 0 0 0 7 5
2 1 9 / 0 8 / 2 0 0 0 5 0
0 , 2
4 1 8 / 0 8 / 2 0 0 0 4 0 0
1 2 0 / 0 8 / 2 0 0 0 3 0 0
0
N u m é r o
d e b l o c I D G
0 , 1
0 , 4
2 1 5 / 0 8 / 2 0 0 0 7 5
2 1 9 / 0 8 / 2 0 0 0 5 0
0 , 2
4 1 8 / 0 8 / 2 0 0 0 4 0 0 3 1 6 / 0 8 / 2 0 0 0 2 0 0
1 1 7 / 0 8 / 2 0 0 0 1 0 0
1 2 0 / 0 8 / 2 0 0 0 3 0 0
3 2 1 / 0 8 / 2 0 0 0 1 5 0
0 , 3
2.7.1 Réservation d'espace pour les grappes
Limiter débordements
– ex: SIZE (Cluster Oracle)
2 1 5 / 0 8 / 2 0 0 0 7 5
0
3 1 6 / 0 8 / 2 0 0 0 2 0 0
1 1 7 / 0 8 / 2 0 0 0 1 0 0
4 1 8 / 0 8 / 2 0 0 0 4 0 0
N u m é r o
d e b l o c I D G = # b l o c , c l é d e g r a p p e 0 , 2
0 , 3 0 , 1
0 , 4
1
0
N u m é r o
d e b l o c I D G
0 , 2
0 , 3
1 , 1
4 1 8 / 0 8 / 2 0 0 0 4 0 0 1 1 7 / 0 8 / 2 0 0 0 1 0 0
2 1 5 / 0 8 / 2 0 0 0 7 5
3 1 6 / 0 8 / 2 0 0 0 2 0 0
1 , 4
Résultat final
1 0
Numéro
de bloc IDG
0, 2
0, 3
1, 1
1 20/08/2000 300
4 18/08/2000 400
1 17/08/2000 100
2 15/08/2000 75
2 19/08/2000 50
3 16/08/2000 200
3 21/08/2000 150
4, 1
Sans réservation d ’espace
0 N u m é r o
d e b l o c I D G
0 , 1
0 , 4
2 1 5 / 0 8 / 2 0 0 0 7 5
2 1 9 / 0 8 / 2 0 0 0 5 0
0 , 2
4 1 8 / 0 8 / 2 0 0 0 4 0 0 3 1 6 / 0 8 / 2 0 0 0 2 0 0
1 1 7 / 0 8 / 2 0 0 0 1 0 0 1 2 0 / 0 8 / 2 0 0 0 3 0 0
3 2 1 / 0 8 / 2 0 0 0 1 5 0 0 , 3
2.8 Fichiers séquentiels
Enregistrements ordonnés (clé de tri)
Mise à jour difficile
N u m é r o d e b l o c
N u m é r o d 'e n r e g i s t r e m e n t
r e l a t i f
0
1
0 1 2 3 4
5 6 7 8 9
1 0 C è d r e e n b o u l e 1 0 . 9 9
2 0 4 0 5 0 6 0
S a p i n E p i n e t t e b l e u e
C h ê n e E r a b l e a r g e n t é
1 2 . 9 9 2 5 . 9 9 2 2 . 9 9 1 5 . 9 9
1 5 . 9 9 2 5 . 0 0 2 5 . 9 9 2 6 . 9 9
G é n é v r i e r P o m m i e r
C a t a l p a P o i r i e r
9 5 9 0 8 1 8 0
1 0 . 9 9 H e r b e à p u c e
7 0