Académique Documents
Professionnel Documents
Culture Documents
BDR06
BDR06
Carthage
Anne Universitaire 2005-2006
Rim Moussa
M.A. lISSATM Universit 7 Nov. Carthage
Email: Rim.Moussa@issatm.rnu.tn
URL: http://ceria.dauphine.fr/Rim/SupportBDR.pdf
11.
12.
Transparence demplacement................................................................................. 41
12.1.
Vues.............................................................................................................. 41
12.2.
Synonymes ................................................................................................... 42
12.3.
Procdures .................................................................................................... 42
13.
13.1.
13.2.
13.3.
Statistiques ................................................................................................... 44
13.4.
Hints ............................................................................................................. 44
13.5.
14.
14.1.
Commande COPY........................................................................................ 45
14.2.
Snapshots...................................................................................................... 46
14.3.
Vues matrialises........................................................................................ 47
15.
15.1.
Partitions....................................................................................................... 48
15.2.
Gestion de Clusters....................................................................................... 50
16.
1.
1.1.
Problmatique
1.2.
Les bases de donnes rparties ont une architecture plus adapte lorganisation des
entreprises dcentralises.
Plus de fiabilit : les bases de donnes rparties ont souvent des donnes
rpliques. La panne dun site nest pas trs importante pour lutilisateur, qui
sadressera autre site.
Meilleures performances : rduire le trafic sur le rseau est une possibilit
daccrotre les performances. Le but de la rpartition des donnes est de les
rapprocher de lendroit o elles sont accdes. Rpartir une base de donnes sur
plusieurs sites permet de rpartir la charge sur les processeurs et sur les entres/
sorties.
Faciliter laccroissement: laccroissement se fait par lajout de machines sur le
rseau.
1.3.
SGBD rparti
Une base de donnes centralise est gre par un seul SGBD, est stocke dans sa
totalit un emplacement physique unique et ses divers traitements sont confis une
seule et mme unit de traitement. Par opposition, une base de donnes distribue1 est
gre par plusieurs processeurs, sites ou SGBD.
Un systme de bases de donnes rparties ne doit donc en aucun cas tre confondu
avec un systme dans lequel les bases de donnes sont accessibles distance. Il ne
doit non plus tre confondu avec une multibase ou une BD fdre.
Dans une multibase, plusieurs BDs interoprent avec une application via un langage
commun et sans modle commun.
Dans une BD fdre, plusieurs BDs htrognes sont accdes comme une seule via
une vue commune.
Du point de vue organisationnel nous distinguons deux architectures :
1. Architecture Client-Serveur : les serveurs, ont pour rle de servir les clients.
Par servir, on dsigne la ralisation dune tche demande par le client.
2. Architecture Pair--Pair (Peer-to-Peer, P2P) : par ce terme on dsigne un type
de communication pour lequel toutes les machines ont une importance
quivalente.
1.4.
__________________
1
1.5.
Problmes surmonter
2.
Conception
rpartie
dune
base
de
donnes
2.1.
2.2.
Lapproche se base sur le fait que la rpartition est dj faite, mais il faut russir
intgrer les diffrentes BDs existantes en une seule BD globale. En dautres termes,
les schmas conceptuels locaux existent et il faut russir les unifier dans un schma
conceptuel global.
Utilisateurs
Schma
Externe
VE
VE
Schma Conceptuel
BDR
Schma de fragmentation
Schma dallocation
Schma Conceptuel
Local Site 1
Schma Conceptuel
Local Site 2
Schma Conceptuel
Local Site 3
Schma Interne
Site 1
Schma Interne
Site 2
Schma Interne
Site 3
3.
Fragmentation
3.1.
Techniques de Fragmentation
3.1.1.
10
Relation Compte
No client
Agence
174723 Lausanne
177498
Genve
201639 Lausanne
201639 Lausanne
203446
Genve
Type compte
courant
courant
courant
dpt
courant
Somme
123345
34564
45102
325100
274882
Relation Agence
Agence
Lausanne
Genve
Adresse
Rue du lac, 3. 1002 Lausanne
Avenue du Mont Blanc, 21. 1200 Genve
Relation Client
No client Nom client
174723
Villard
177498
Cattell
201639
Tsellis
203446 Kowalsky
3.1.2.
Prnom
Jean
Blaise
Alan
Valdimir
Rpartition
horizontale)
Age
29
38
51
36
des
occurrences
(fragmentation
Les occurrences d'une mme classe peuvent tre rparties dans des fragments
diffrents.
3.1.3.
Toutes les valeurs des occurrences pour un mme attribut se trouvent dans le mme
fragment. Une fragmentation verticale est utile pour distribuer les parties des donnes
sur le site o chacune de ces parties est utilise.
11
NomClient
NoClient
Prnom
Age
174 723
177 498
201 639
203 446
Villard
Cattell
Tsellis
Kowalsky
174 723
177 498
201 639
203 446
Jean
Blaise
Alan
Vladimir
29
38
51
36
Relation Cli1
Relation Cli2
La relation d'origine est obtenue avec la recomposition suivante : Client = Cli1 * Cli2
3.1.4.
Relation Cli5
Relation Cli4
[NoClient, Prnom]Client
Relation Cli6
[NoClient, Age]Client
3.1.5.
38]Client)
Dans l'exemple bancaire prcdent, on peut fragmenter les agences avec leurs clients
avec leurs comptes. On obtient alors deux rseaux d'occurrences lies. Le premier est
relatif Genve, et le deuxime est relatif Lausanne.
3.2.
12
base des fragmentations horizontales, les oprations de projection sont la base des
fragmentations verticales.
Pour viter le risque d'mietter la base de donnes, on peut restreindre le nombre de
requtes prises en considration. On ne s'intresse alors qu'aux requtes les plus
frquentes ou les plus sensibles (celles pour lesquelles le temps de rponse maximum
est born).
3.2.1.
Soient c1, c2, ..., cn les conditions de slection qui ont t extraites des requtes.
Comme les fragments horizontaux doivent tre exclusifs, on produit l'ensemble des 2n
conjonctions de condition o chaque condition lmentaire est prise dans sa forme
positive ou dans sa forme ngative :
CC = {
3.2.2.
Les fragments verticaux sont exclusifs, sauf en ce qui concerne le (ou les) attribut(s)
de jointure qui sont communs tous les fragments, et ce pour que la dcomposition
soit sans perte d'information.
On procde comme suit,
1. Extraire toutes les expressions de projection concernes par les requtes.
2. Ajouter chacune d'elles le(s) attribut(s) de jointure si elle ne les possde
pas.
3. Gnrer le complment de chaque expression (c'est dire les autres
attributs) en ajoutant le (ou les) attribut(s) de jointure.
L'tape suivante consiste, pour chaque fragment Fi produit par la fragmentation
horizontale, rechercher toutes les requtes qui concernent ce fragment et prendre
les expressions de projection de ces requtes.
A partir des n expressions de projection qui concernent Fi, il faut produire l'ensemble
des 2n intersections des expressions de projection.
Exercice 1
Objectif : Fragmenter la relation Compte (NoClient, Agence, TypeCompte, Somme).
Proposer un schma de fragmentation horizontale, puis verticale en tenant compte des
requtes suivantes :
13
14
Exercice 3
Considrons la relation
Projet (numP, nomP, budget, ville).
Objectif : Trouver un schma de fragmentation verticale pour la relation Projet, en
tenant compte des requtes suivantes :
R1 : SELECT budget FROM projet WHERE numP = valeur;
R2: SELECT nomP, budget FROM projet;
R3: SELECT nomP FROM projet WHERE ville = valeur;
R4: SELECT SUM(budget) FROM projet WHERE ville = valeur;
1. Construire la matrice dutilisation Ut, dfinie comme suit :
Ut(Ri, Aj) = 1 ssi la requte Ri utilise lattribut Aj
Ut(Ri, Aj) = 0 sinon.
2. Construire la matrice daffinit Aff, dfinie comme suit :
Aff(Ai, Aj) = Ut(Rk, Ai)=1 et Ut(Rk, Aj)=1 sites l Ref l (Rk)* Acc l (Rk)
Ref l (Rk) est le nombre daccs aux attributs Ai et Aj pour une excution de Rk sur
le site l.
Acc l (Rk) reprsente la frquence daccs la requte Rk sur le site l.
Sachant que : Rk, site l, Ref l (Rk) = 1
Acc 1 (R1) = 15
Acc 2 (R1) = 20
Acc 3 (R1) = 10
Acc 1 (R2) = 5
Acc 2 (R2) = 0
Acc 3 (R2) = 0
Acc 1 (R3) = 25
Acc 2 (R3) = 25
Acc 3 (R3) = 25
Acc 1 (R4) = 3
Acc 2 (R4) = 0
Acc 3 (R4) = 0
4.
Schma dallocation
L'affectation des fragments sur les sites est dcide en fonction de l'origine prvue des
requtes qui ont servi la fragmentation. Le but est de placer les fragments sur les
sites o ils sont le plus utiliss, et ce pour minimiser les transferts de donnes entre les
sites.
15
5.
Rplication
Dans le cas o les utilisateurs nauraient pas besoin daccder aux donnes les plus
rcentes, une alternative existe pour viter le trafic quengendre laccs aux donnes
jour. Elle consiste en lutilisation de clichs (ang. snapshot). Un clich reprsente un
tat de la base de donnes un instant donn.
La pertinence d'un clich diminue donc au fur et mesure que le temps passe.
On peut en effet se passer de l'information exacte pour diverses raisons. Certaines
informations ne subissent pas souvent de modification (comme le nom de famille,
l'adresse ou le nombre d'enfants des employs) et par consquent une copie mme
ancienne de ces informations est, dans sa grande majorit, exacte.
Les deux critres qui sont prendre en compte pour dfinir l'intrt d'un clich sont
d'une part l'anciennet du clich, et d'autre part le temps d'attente qui serait ncessaire
avant d'obtenir l'information originale ( jour). Ces deux informations, l'anciennet et
le temps d'attente, peuvent tre pondres par un taux de satisfaction pour le systme
d'information.
Exemple : Dans un milieu bancaire les retraits d'argent par un client ne devraient tre
autoriss que si le compte est suffisamment approvisionn. Comme les ordres de
virement et chques mis au cours des heures coules ne sont pas encore connus et
donc non dbits, la situation relle du compte peut tre bien diffrente de l'tat
correspondant dans la base de donnes. Par consquent, la dcision d'autoriser un
retrait d'argent peut tre prise en fonction d'un clich lgrement ancien plutt que
d'accder l'information originale qui ne sera que lgrement plus fiable. Cependant,
une information exacte permettrait de contrecarrer des retraits d'argent successifs dans
deux distributeurs quelques minutes d'intervalle.
16
3 jours : 0.3
1 Heure : 0.9
1 semaine : 0.1
1 jour : 0.7
1 mois : 0.01
2 min : 0.5
45 sec : 0.9
3 min : 0.1
1 min : 0.7
5 min : 0.01
Si l'on dispose d'un clich vieux d'un jour, le temps d'attente maximum pour la
rception de l'original est dune minute. Pass ce dlai, l'information contenue dans le
clich sera utilise.
6.
6.1.
La principale difficult rside dans le fait qu'une mise jour dans une relation du
schma global se traduit par plusieurs mises jours dans diffrents fragments. Il faut
donc identifier les fragments concerns par l'opration de mise jour, puis
dcomposer en consquence l'opration en un ensemble d'opration de mise jour sur
ces fragments.
Insertion
Retrouver le fragment horizontal concern en utilisant les conditions qui dfinissent
les fragments horizontaux, puis insertion du tuple dans tous les fragments verticaux
correspondants.
Suppression
Rechercher le tuple dans les fragments qui sont susceptibles de contenir le tuple
concern, et supprimer les valeurs d'attribut du tuple dans tous les fragments
verticaux.
Modification
17
Rechercher les tuples, les modifier et les dplacer vers les bons fragments si
ncessaire.
Exercice 5
Dterminer les fragments (de lexercice 1) mis jour par les requtes suivantes :
1.
2.
6.2.
Entres/ Sorties sur les disques (disks I/Os), cest le cot daccs aux donnes.
Cot CPU : cest le cot des traitements de donnes pour excuter les
oprations algbriques (jointures, slections ...).
Communication sur le rseau : cest le temps ncessaire pour changer un
volume de donnes entre des sites participant lexcution dune requte.
Dans une base de donnes centralise, seuls les facteurs E/Ss et CPU dterminent la
complexit dune requte.
Notons que nous faisons la distinction entre le cot total et le temps de rponse
global dune requte:
Cot total : cest la somme de tous les temps ncessaires la ralisation dune
requte. Dans ce cot, les temps dexcution sur les diffrents sites, les accs aux
donnes et les temps de communication entre les diffrents sites qui entrent en jeu.
Temps de rponse global : cest le temps dexcution dune requte. Comme
certaines oprations peuvent tre effectues en parallle sur plusieurs sites, le
temps de rponse global est gnralement infrieur au cot total.
18
6.2.1.
Transferts de donnes
6.2.2.
Le but est d'affecter de manire optimale un site d'excution pour chacune des
oprations algbriques de l'arbre. Pour cela, on associe chacune des feuilles le site
sur lequel la relation va tre puise. Lorsqu'une relation est duplique, le choix du site
de dpart est un lment d'optimisation. On cherche ensuite associer chaque nud
de l'arbre le site sur lequel l'opration algbrique associe ce nud sera excute.
Gnralement, il faut faire localement tous les traitements qui peuvent y tre faits.
Ainsi, lorsque toutes les oprandes d'une mme opration algbrique sont situes sur
le mme site, la solution la moins coteuse pour excuter cette opration est le plus
souvent de l'excuter sur ce site. Ceci est notamment toujours vrai pour les oprateurs
unaires qui font diminuer le volume d'informations (slection, projection).
Pour diminuer le volume de donnes transmis d'un site un autre, il faut limiter les
transferts d'information aux seules informations utiles. Pour cela il faut
systmatiquement rajouter des projections dans l'arbre algbrique pour abandonner les
attributs inutiles. Il faut aussi noter que les parties de requtes indpendantes peuvent
tre excutes en parallle sur des sites diffrents et donc baisser le temps total
d'excution.
6.2.3.
Aprs avoir gnr un arbre de requte, la stratgie adopte pour l'excution est
ascendante. C'est dire que l'affectation de chaque nud de l'arbre un site peut tre
dcide en cours d'excution en fonction des diffrents volumes de donnes
intermdiaires obtenus sur les sites. On part donc des feuilles, o l'on connat les
donnes (type, volume, statistiques sur la rpartition des occurrences dans les
domaines de valeurs...) pour remonter au niveau suprieur et prendre une dcision sur
le site d'affectation de l'oprateur. Et ainsi de suite pour les niveaux suprieurs jusqu'
la racine. Il faut cependant noter que cette stratgie n'est pas optimale si elle est
effectue en aveugle.
D'une manire gnrale, il faut tenir compte des volumes de donnes de chaque
relation, et de leur composition. Il est en effet parfois intressant de tenir compte du
calcul effectu par un site avant que les autres sites se mettent travailler.
19
6.2.4.
Semi-jointure
Les BDR ont abouti la dfinition d'un nouvel oprateur, la semi-jointure, qu'il est
parfois intressant d'utiliser. Il s'agit en fait d'une double jointure : le principe est
d'effectuer deux petites jointures plutt qu'une grosse; c'est dire deux petites
transmissions de donnes plutt qu'une seule beaucoup plus volumineuse.
La semi-jointure rduit la taille des oprandes des relations. Elle permet de rduire la
taille des donnes transmettre.
Soient R1 et R2 deux relations se trouvant respectivement sur les sites S1 et S2.
But : Evaluer R1
temp1 R1 R2(R1)
S1>
S2>
temp2 R2
S2>
S1>
R1
temp1
temp2 (quivalent R1
R2)
Exercice 6
Soit la BDR compose des relations suivantes :
P (NP, NOMP, MADE_IN, COULEUR, POIDS)
U (NU, VILLEU, NOMU)
F (NF, NOMF, VILLEF, ADRESSE, PAYS, COEF)
PUF (NP, NU, NF, DATE, QUANTITE)
Ville(nom, rgion, pays, description)
Les relations U et PUF sont sur le site A.
Les relations F et P sont sur le site B.
Le rseau reliant les deux sites A et B a les caractristiques techniques suivantes :
- temps d'accs d'un site un autre : 0,5 seconde
- dbit de transmission : 9 600 bauds (soit 1 000 octets/ sec)
Un message est donc transfr en ( 0,5 + Nb-d'octets-du-message /1000) secondes.
|F| = 100 enregs, de 120 octets,
|U| = 1000 enregs de 60 octets,
|P| = 10000 enregs de 90 octets,
20
= "Lausanne"]U
* PUF * [MADE_IN
= "Italy"]P
* F)
21
(semi-)jointure entre ces villes des fournisseurs et les villes des usines. Enfin
B fait la seconde semi-jointure et envoie A les fournisseurs retenus.
6.2.5.
Autres Optimisations
Dcomposition de requte
Ce processus est commun aux bases de donnes centralises et rparties.
En premire tape, la requte est rcrite sous forme normalise. La restriction de la
requte (les prdicats qui suivent la clause WHERE) est crite sous la forme
conjonctive, cd une forme de conjonctions de disjonctions de prdicats. La requte
normalise est analyse afin de rejeter les requtes quil serait impossible de traiter,
exemple rejet pour mauvais typage des prdicats. Puis, grce aux rgles
didempotences pour les oprations logiques, les redondances sont limines.
Exercice 7
Rcrire les requtes suivantes :
(R1) SELECT *
FROM square
WHERE length* length < 10 000 ;
(R2) SELECT Title
FROM Employee
WHERE (NOT (Title = programmer) AND ((Title = programmer) OR
(Title = Elect. Eng.)) AND NOT(Title = Elect. Eng.)) OR
(Name = J.Doe);
Localisation des donnes rparties
A ce niveau, on prend en compte que le fait que les donnes sont rparties et
fragmentes. Des slections sur les fragments qui ont des restrictions contraires aux
restrictions qui ont permis de gnrer ces fragments, engendrent des relations vides.
En effet, dans le cas de jointures avec des fragments horizontaux on rencontre les
deux suivants :
1er cas:
A = A1 A2 A
B = ( A1 A2)
B = (A1
B) (A2
B)
Ceci est intressant surtout dans le cas ou B est rplique sur le site qui contient A1 et
sur le site qui contient A2.
2me cas:
A et B sont partitionnes tel que, Ai
Bj = Si i j
22
R4
R3
R1
R2
Arbre linaire
R1
R2
R3
R4
Arbre broussailleux
23
7.
7.1.
Dfinitions
Atomicit : cette proprit signifie quune transaction est traite comme une
seule opration. Toutes les actions sont toutes menes bien ou aucune
dentre elles.
7.2.
Exemple de Transactions
UPDATE ComptesEpargne
SET solde = solde somme
24
UPDATE ComptesCourant
SET solde = solde + somme
WHERE numClient = numClt ;
7.3.
Interfrences viter
7.3.1.
Entre crivains
Perte dopration (ang. lost update)
La mise jour faite par la 1re transaction est perdue.
25
Initialement, C le crdit dun compte est < 500. Une 1re transaction modifie
le crdit C d'un compte. Une 2me lit C dans ce nouvel tat, puis, constatant
que la provision est suffisante, modifie le dbit D du compte. Aprs annulation
de la 1re transaction, la contrainte d'intgrit D C nest plus vrifie.
7.3.2.
26
Une 1re transaction consulte les places libres dans un avion et laisse un temps
de rflexion l'utilisateur. Entre temps, une 2me transaction, qui voit les
mmes places libres, valide deux rservations. La 1re demande nouveau les
places libres: la liste est diminue alors qu'elle n'a pas encore choisi ses
rservations!
Lecture fantme (ang. phantom read)
7.4.
Contrle de concurrence
27
7.4.1.
Les estampilles
Les estampilles permettent dinstaller un ordre total entre les actions, et ainsi de les
srialiser. Lestampille est donc un identifiant unique des transactions qui permet en
plus de les ordonner.
>> chaque transaction est repre par un numro dordre unique dans le systme :
estampille. Lestampille est le couple (valeur compteur : horloge locale, numro du
site).
Linconvnient majeur est la difficult de synchroniser des sites de diffrentes
horloges.
Verrouillage
La technique la plus rpandue pour srialiser les transactions est base sur lutilisation
de verrous. On impose que laccs aux donnes se fasse de manire mutuellement
exclusive.
7.4.2.
Interblocages
Toute mthode base sur le verrouillage peut donner des interblocages lorsque deux
transactions s'entre-attendent. Pour illustrer ce cas, on peut prendre un exemple. Une
transaction Ti dtient un verrou en lecture ou en criture sur la donne x. Une
transaction Tj dtient un verrou en lecture ou en criture sur la donne y. La
transaction Ti attend un verrou en criture sur la donne y et la transaction Tj attend un
verrou en criture sur la donne x. Il y a dans ce cas un interblocage.
Un outil de grande utilit dans l'analyse des interblocages est le graphe des attentes.
Les noeuds du graphe des attentes sont des transactions simultanes et les arcs
orients qui les relient reprsentent l'attente d'une transaction pour une autre. Grce
cette reprsentation, il est facile de caractriser les interblocages : ce sont les cycles
sur le graphe. Dans un environnement rparti, les interblocages peuvent mettre en jeu
diffrents sites. Le graphe des attentes local est donc insuffisant et il faut galement
en maintenir un au niveau global.
28
T1
T2
T1
T2
T1
T5
T3
T4
T5
T3
T2
T3
T4
Graphe Attente
Global
7.4.3.
Une transaction globale est valide ssi toutes les transactions locales qui la composent
valident. En effet, si au moins une transaction locale ne valide pas, toutes les
transactions sont annules.
Le protocole exige un site coordinateur et des sites participants. Il se compose de
deux phases :
Phase de prparation : le coordinateur demande chaque participant de se
prparer pour valider la transaction locale.
Phase de validation : le coordinateur ordonne tous les participants de valider
ou dannuler leur transaction. La dcision est prise par le coordinateur tenant
compte de la rponse de chaque participant.
Coordinateur
Site1
er
prpar
Site2
prpa
re
Site1
Coordinateur
er
prpar
prpa
r er
prt
prt
rejete
p r t
r
valide
Site2
valide
rejeter
Les transactions distribues prsentent deux avantages : (i) les donnes situes sur
dautres serveurs, peuvent tre mises jour, et les instructions UPDATE peuvent tre
29
8.
transparente
Dans ce qui suit, trois architectures parallles, dfinies selon le critre de partage de
ressources, et une architecture hybride sont prsentes.
8.1.
Les disques et les mmoires centrales sont partags par les processeurs du systme.
(+) Lespace dadressage global rend le systme facile implanter pour les vendeurs
de SGBDs. La communication inter-processeurs est rapide, vu laccs partag aux
mmoires centrales.
(+) Equilibre de charge entre les processeurs facile raliser.
Lchec dun processeur nentrane pas la non-possibilit daccs donnes.
(-) Cot du systme.
(-) Accs conflictuels aux mmoires centrales peuvent dgrader les performances.
(-) Le nombre de processeurs est limit 20-30, un nombre suprieur cre des goulots
dtranglements.
(-) Architecture non scalable.
Exemples de SGBD // : XPRS (U. de berkeley), DBS3 (Bull).
CPU
8.2.
CPU
CPU
CPU
Chaque processeur a sa mmoire centrale prive, mais les disques sont partags par
tous les processeurs du systme.
30
CPU
CPU
CPU
CPU
8.3.
31
CPU
M
8.4.
CPU
CPU
M
Architectures hybrides
Une architecture hybride deux niveaux, peut tre au niveau interne une architecture
mmoire partage, et au niveau externe une architecture mmoire distribue. De
telles architectures combinent les avantages de chaque architecture, et compensent les
inconvnients respectifs des architectures.
Larchitecture hybride illustre ci-dessous combine lquilibrage de la charge des
architectures mmoire partage et lextensibilit des architectures mmoire
distribue.
CPU
CPU
CPU
CPU
D
D
CPU
CPU
CPU
CPU
32
33
9.
Architecture dOracle
Chaque fois quune BD est lance sur un serveur (ang. instance start up), une partie
de la mmoire centrale dite SGA : System Global Area, est alloue ; et plusieurs
processus darrire-plan sont lancs. Une instance de BD est un ensemble de
structures de mmoire et de processus darrire-plan qui accdent un ensemble de
fichiers de donnes. Dans Parallel Server plusieurs instances peuvent accder la
mme BD.
Les paramtres dinitialisation dune instance sont dans init.ora. Le nom du fichier
inclut en gnral le nom de linstance, si celle-ci est X, le fichier aura pour nom
initX.ora.
Gestion des donnes : table, index, view, materialized view, snapshot
Stockage physique: cluster, tablespace,
Stockage dinstructions : procedure, trigger,
Gestion dutilisateurs: profile, user,
34
9.1.
Structures logiques de la BD
Pour les objets BD (table, index, cluster), qui requirent leur propre espace de
stockage, un segment dans le tablespace leur est allou. ORACLE permet de
configurer les paramtres de stockage en utilisant la clause STORAGE.
CREATE TABLE Produit
(
NumProd NUMBER(2)
.)
STORAGE (
INITIAL
MINEXTENTS
50) ;
1M
1
NEXT
MAXEXTENTS 20
400K
PCTINCREASE
INITIAL et NEXT spcifient la taille en octet resp. du 1er et du 2me extent, par dfaut
ont la taille de cinq blocs. La taille dun bloc db_block_size figure dans le fichier
init.ora.
35
que chaque nouvelle extension est 1,5 fois plus grande que la prcdente. La
croissance est faite partir du 2me segment.
Pour la table Produit, la taille du 1er extent est 1M, le 2me : 400K, le 3me : 600K, le
4me : 900K etc.
La clause STORAGE dfinit les paramtres de stockage niveau extent. Dautres
paramtres : PCTFREE et PCTUSED, oprent niveau bloc.
PCTFREE : est le pourcentage de lespace libre rserv dans chaque bloc pour les
9.2.
Structures BD physiques
Fichiers Redo-log : Oracle consigne toutes les transactions de la base dans les
fichiers du journal de reprise. Ces fichiers sont utiliss pour rtablir les
transactions dans lordre appropri en cas de dfaillance de la base.
9.3.
Structures de mmoire
36
9.4.
Processus darrire-plan
La relation entre les structures physiques et les structures de mmoire est maintenue,
et mise en uvre au moyen de processus darrire-plan (ang. background processes).
Ces processus sont ddis une instance. Chaque processus darrire-plan cre un
fichier trace, qui est maintenu pendant la dure dactivit de linstance, dans lequel
sont consigns les vnements majeurs et les erreurs internes quil rencontre.
Dans ce qui suit, on dcrit titre non exhaustif les principaux processus:
37
38
9.5.
Supposons quun utilisateur, travaillant sur SQL*Plus, mette une requte de mise
jour sur la table T, et que plusieurs tuples sont affects par la requte. La requte est
passe au serveur par le processus USER. Le serveur (exactement le query processor)
vrifie si la requte existe dj dans le cache de bibliothques. Si non trouve, elle est
analyse, vrifier pr au cache du dictionnaire les privilges et les attributs etc..,
gnrer un plan dexcution. La reprsentation analyse et le plan dexcution sont
alors sauvs dans le cache de bibliothques.
Pour les objets affects par la table T, on vrifie si les blocs de donnes sont dans le
cache de tampons de blocs de donnes . Si non trouvs, le processus USER, les met
dans le cache de tampons de blocs de donnes.
Avant que la mise jour des tuples soit faite, limage avant des tuples est crite sur
les segments de rollback par le processus DBWr.
Pendant que le tampon redo-log est rempli durant la modification des blocs de mise
jour, le processus LGWR crit le contenu du tampon redo-log dans les fichiers redolog.
Aprs la fin de mise jour, lutilisateur valide la mise jour par un commit.
Tant quun commit na pas t excut, les modifications peuvent tre annules par un
rollback. Dans ce cas, les blocs de donnes mis jour dans le tampon BD sont crass
par les blocs originaux sauvs dans les segments de rollback.
Si lutilisateur excute un commit, lespace allou pour les blocs dans les segments de
rollback est dsallou, et peut tre utilis par dautres transactions.
10.
Oracle en rseau
* Oracle Net services fournit des solutions de connectivit dans des environnements
distribus. Il est compos de:
1.
Oracle Net
2.
Modules dcoute/listeners
le fichier de configuration LISTENER.ORA contient :
son nom, par dfaut LISTENER
son adresse (HOST et PORT) : (ADDRESS = (PROTOCOL = TCP) (HOST
= localhost) (PORT = 1521)
lesSIDs (Service ID) des BD guettes
3.
4.
Outils de configuration et de gestion : Oracle Net Configuration Assistant,
Oracle Net Manager.
* Transparent Network Substrate (TNS) est une sous-couche dOracle Net qui reoit
les requtes et met des ouvertures ou fermetures de session, envoie les requtes et
reoit des rponses.
39
* Lorsque les htes qui supportent les bases de donnes Oracle sont connects via un
rseau, les bases peuvent communiquer via Net8 dOracle (prcdemment appel
SQL*Net). Les pilotes de Net8 sappuient sur le protocole de communication local
pour fournir la connectivit entre deux serveurs.
Afin que Net8 reoive et traite les communications, lhte doit excuter un processus
appel listener : module dcoute sur un port de communication spcifique.
* Passerelle transparente (ang. Oracle Transparent Gateway) Cest la possibilit
daccder des objets non Oracle. La passerelle est excute sur lhte source qui
contient la base exploiter.
* Identification des Objets
Dans une BD centralise, la combinaison du nom du propritaire dun objet et du
nom de lobjet permet de lidentifier de faon unique. Dans les BDR deux couches
didentification sont ajoutes. Le quadruplet [hte, instance, schma, objet] forme un
nom dobjet complet ou FQON.
Fully Qualified Object Name: FQON
Nom
de lhte
Nom
de linstance
Schma
Nom
de lobjet
Pour accder une table distante son identifiant FQON doit tre connu. La
transparence demplacement cache lutilisateur le triplet [hte, instance, schma].
11.
40
CONNECT TO ..
CURRENT_USER
User IDENTIFIED BY password
USING connect_string
Un lien est soit priv ou public. Seul lutilisateur qui a cre un lien priv peut
lutiliser, alors quun lien public est utilis par tous les utilisateurs de la base de
donnes. Le lien partag est propre la configuration de serveur multithreaded.
La clause CONNECT TO active une session vers la base distante.
La clause CURRENT_USER cre un lien BD pour lutilisateur courant. Lutilisateur
doit disposer dun compte valide dans la base distante.
La clause USING connect_string spcifie le nom de service dune base distante. Les
noms de service dinstances sont stocks dans le fichier de configuration utilis par
Net8 intitul tnsnames.ora. Ce fichier spcifie lhte, le port, et linstance associs
chaque nom de service.
Des informations sur les liens de BD publics et privs, figurent respectivement dans
les vues du dictionnaire de donnes : DBA_DB_LINKS et USER_DB_LINKS.
Lexemple suivant cre un lien public de bases de donnes, appel RH_Lien :
CREATE PUBLIC DATABASE LINK RH_Lien
CONNECT TO RH IDENTIFIED BY PUFFINSTUFF
USING hq;
hq dsigne le nom de service de la BD.
Utilisation du lien :
SELECT * FROM Employee@RH_Lien
WHERE office = ANNAPOLIS;
12.
Transparence demplacement
Aprs avoir cre les liens de bases de donnes, plusieurs objets : les vues, les
synonymes et les procdures stockes, peuvent servir cacher la distribution des
donnes aux utilisateurs :
12.1.
Vues
Les vues peuvent fournir une transparence par rapport aux tables locales et distantes.
Par exemple, supposons que la table Employ est sur une BD locale et la table
Dpartement est sur une BD distante. Pour rendre ces tables transparentes aux
utilisateurs. Nous pouvons crer une vue dans la BD locale qui fait la jointure des
donnes locales et distantes, comme ci-dessous : Les utilisateurs accdant cette vue
nont pas besoin de savoir o les donnes sont stockes.
41
Exercice 1:
Ecrire en SQL la commande de cration de la vue Entreprise.
12.2.
Synonymes
Les synonymes sont des noms simples qui permettent didentifier de faon unique
dans un systme distribu les objets quils nomment. Les synonymes peuvent tre
cres pour diffrents objets : Tables, Types, Views, Snapshots, Procedures, Functions,
Packages. Ils figurent dans le dictionnaire de donnes.
CREATE [PUBLIC] nom-synonyme
FOR [schma.]nom-objet[@nom-lien-BD] ;
Exercice 2:
Ecrire en SQL la requte suivante On recherche les employs affects au
dpartement gnie logiciel dans les deux cas suivants :
- La requte est mise du site A o se trouve la table Employ.
- La requte est mise du site B o se trouve la table Dpartement.
12.3.
Procdures
Les units de programmes PL/SQL, peuvent servir (a) rfrer des donnes
distantes, (b) appeler des procdures distantes, (c) utiliser des synonymes pour rfrer
des procdures distantes.
(a) Rfrer des donnes distantes
Considrons la procdure LicencierEmploy :
CREATE PROCEDURE LicencierEmploy (enum NUMBER) AS
BEGIN
DELETE FROM Employ@hq.acme.com
WHERE NumEmp = enum
END;
42
(b) Appeler des procdures distantes (RPC : ang. Remote Procedure Call)
On peut utiliser une procdure locale pour appeler une procdure distante. La
procdure distante pourra excuter les instructions LMD requises.
Exercice 3:
Ecrire le scnario suivant :
Un utilisateur scott identifi par tiger se connecte la BD distante hq.acme.com. Il
cre la procdure FinEmploy, ayant pour paramtre le numro de lemploy, qui
supprime lemploy de la table Employ.
Lutilisateur scott identifi par tiger se connecte la BD locale fin.acme.com. Il cre
la procdure LicencierEmploy, ayant pour paramtre le numro de lemploy, qui
appelle la procdure FinEmploy.
13.
Un serveur BD Oracle gnre partir dune requte distribue, des requtes distantes,
quil envoie aux nuds distants pour excution. Les nuds excutent alors les
requtes et retournent les rsultats au serveur local. Un post-traitement est excut
pour enfin retourner le rsultat lutilisateur ou lapplication.
Les stratgies dcrites dans ce qui suit, sont utilises pour optimiser les requtes.
13.1.
13.2.
Oracle utilise une mthode base sur le calcul des cots (ang. Cost based SQL
optimizer : CBO) pour trouver et gnrer la requte SQL qui extrait uniquement les
donnes ncessaires des tables distantes.
Les donnes subissent un premier traitement sur le site distant, puis le site distant
envoie le rsultat au site local, do la requte a t mise.
R-crire la requte suivante :
CREATE TABLE AS (
43
13.3.
Statistiques
Oracle permet galement de collecter des statistiques sur les diffrentes tables du
systme.
(a) Activation:
Il faut excuter lune des instructions suivantes:
ALTER SESSION OPTIMIZER_MODE = CHOOSE ;
ALTER SESSION OPTIMIZER_MODE = COST ;
13.4.
Hints
Les hints conviennent aux requtes distribues contenant des fonctions agrgats, des
sous-requtes, ou du complex-SQL.
Voir http://www.oradev.com/hints.jsp pour une liste de hints
DRIVING_SITE Hint
Linstruction DRIVING_SITE permet de prciser manuellement le site dexcution de
la requte.
Exemple :
SELECT /*+DRIVING_SITE(Dpartement )*/ *
FROM Employ, Dpartement@remote.com
WHERE Employ.NumDept = Dpartement.NumDept ;
La jointure se fera sur le site o se trouve la table Dpartement.
13.5.
Un des aspects les plus importants pour la mise au point de requtes distribues est
lanalyse du plan dexcution dune requte distribue.
44
Enfin, pour afficher le plan dexcution sauv dans PLAN_TABLE, il suffit dexcuter
le script suivant:
SQL>@utlxpls.sql
Pour voir lexpression SQL excute sur le site distant, on excute :
SELECT other
FROM plan_table
WHERE operation = REMOTE;
On obtient par exemple:
SELECT DISTINCT A1.NumDept
FROM Employ A1
GROUP BY A1.NumDept
HAVING COUNT(A1.NumDept) > 3
14.
14.1.
Commande COPY
La premire option consiste rpliquer rgulirement les donnes sur le serveur local
au moyen de la commande COPY de SQL*Plus.
Exemple:
COPY FROM RH/PUFFINSTUFF@loc CREATE Employes USING
SELECT * FROM Employes
45
WHERE Etat = NM ;
COMMIT ;
La base est identifie par le service nomm LOC. durant la connexion, une session
devrait tre initie par le compte RH avec le mot de passe PUFFINSTUFF.
Linconvnient est que les donnes ne peuvent pas tre mises jour. La commande
REPLACE est utilise pour remplacer le contenu des tables.
14.2.
Snapshots
Cette option utilise des snapshots pour rpliquer les donnes depuis une source matre
vers plusieurs cibles. Les snapshots peuvent tre en lecture seule (ang. read-only) ou
mis jour (ang. updateable). Avant de crer un snapshot, il faut dabord crer un lien
vers la base de donnes source.
Deux types de snapshots peuvent tre cres : simples et complexes. Un snapshot
simple ne contient pas de clause distinct, group by, connect by, de jointure multitables
ou doprations set.
Le snapshot suivant est dfini de faon extraire les donnes matres et renouveler
lopration 7 jours plus tard.
CREATE SNAPSHOT LocalEmp
TABLESPACE data2
STORAGE (INITIAL 100K next 100K PCTINCREASE 0)
REFRESH FAST
START with SysDate
NEXT SysDate+7
AS SELECT * FROM Employes@RH_Lien;
Une utilisation classique des snapshots en mise jour est le cas du contrle technique
automobile. Tous les centres de contrle stockent des donnes concernant les
vhicules quils ont contrls durant la journe. Chaque nuit, les donnes sont
dverses dans la base nationale qui centralise les donnes de lensemble du parc
automobile du pays. Notons que, les snapshots en mise jour peuvent engendrer des
conflits. Un dclencheur (ang. trigger) sauve les mises jour opres sur le snapshot
et les transmet au site matre au moment du rafrachissement du snapshot.
46
14.3.
Vues matrialises
TRUE
(ALTER
SESSION
SET
Une vue matrialise cre une table locale pour stocker les donnes, et une vue qui y
accde.
Exemple:
CREATE MATERIALIZED VIEW Ventes-par-Mois
TABLESPACE DATA_AGG
REFRESH COMPLETE
START WITH sysdate
NEXT sysdate+1
ENABLE QUERY REWRITE
AS
SELECT mois, SUM(montant)
FROM Ventes
GROUP BY mois;
15.
Administration
donnes
de
grandes
bases
de
La dfinition dune grande BD change sans cesse. En 1995, cest une BD de taille
suprieure 100Go, de nos jours elle fait plusieurs traoctets.
47
15.1.
Partitions
Au fur et mesure que les tables augmentent en taille, leur maintenance devient
complexe. Une table volumineuse est divise en partitions selon les plages de valeurs
de la colonne de partitionnement. Les index peuvent tre partitionns. Cette
rpartition a pour but damliorer les performances des oprations de maintenance, de
sauvegarde et de rcupration, ainsi que celles des transactions et des requtes.
Oracle8i offre trois types de partitionnements: par plages, par hachage et compos.
15.1.1.
Par contre, si la plage des valeurs dune partition change, le rsultat ne rpondra plus
la requte. Sachant quOracle place des contraintes de contrle CHECK sur chacune
des partitions, il nest pas recommand dutiliser cette syntaxe.
Oracle utilise les contraintes de contrle des partitions, afin de dterminer la partition
implique.
Lajout dune partition se fait comme suit,
48
15.1.2.
(NumDept)
REFRENCES
15.1.3.
49
15.1.4.
de
valeurs
(ang.
List
Un tuple qui comporte une valeur autre que les spcifies est rejet.
15.1.5.
Partitions dindex
Lindex dune table partitionne peut tre partitionn avec les mmes plages de
valeurs que celles de la table.
CREATE INDEX Employs_NumDept
ON Employes(NumDept)
LOCAL
Le mot cl LOCAL, cre un index spar pour chaque partition de la table. Un index
global contient des valeurs provenant de plusieurs partitions.
CREATE INDEX Employs_NumDept
ON Employs(NumDept)
GLOBAL
15.2.
Gestion de Clusters
Les clusters fournissent une mthode de stockage des tables de donnes. Un cluster
est form de groupes de tables qui partagent les mmes blocs de donnes. Les tables
sont regroupes car elles ont des colonnes en commun, et sont trs souvent interroges
ensemble. Cest le cas par exemple des tables Employ et Dpartement qui ont en
commun lattribut NumDpt. Lattribut NumDpt est dit cl du cluster. Si on met en
50
cluster les deux tables, Oracle stocke physiquement, pour chaque dpartement, le
dpartement et ses employs dans les mmes blocs de donnes.
Les clusters sont viter si les tables sont frquemment accdes individuellement.
Par contre, sont conseills dans le cas o lopration de jointure entre les deux tables,
est frquente.
CREATE CLUSTER EmpDept (NumDept NUMBER(3))
PCTUSED 80
PCTFREE 5
SIZE 600
TABLESPACE users
STORAGE (INITIAL
200K NEXT
300K
MINEXTENTS 2
MAXEXTENTS 20
PCTINCREASE 33 );
CREATE TABLE Departement (
NumDept NUMBER(3) PRIMARY KEY, .)
CLUSTER EmpDept(NumDept);
CREATE TABLE Employe (
NumEmp NUMBER(5) PRIMARY KEY, .,
NumDept NUMBER(3) REFRENCES Departement)
CLUSTER EmpDept(NumDept);
16.
Cette option permet dexcuter certains ordres SQL en parallle. Le paralllisme des
traitements est assur par un processus coordinateur et plusieurs processus parallles.
Les ordres DDL suivants peuvent tre paralllises, si lobjet source ou cible est
fragment:
Create table . . . as select . . .
Create index
51
Le degr de paralllisme des ordres DML est dict dune manire prioritaire par les
hints. En ce qui concerne les ordres DDL, ils seront excuts avec le degr de
paralllisme par dfaut. Loption force concerne les objets qui nont aucune clause de
paralllisme dans leur clause de stockage ou ceux qui sont attaqus par des requtes
sans HINTS. Dans tous les cas, le degr de paralllisme doit se trouver dans
lintervalle [PARALLEL_MIN_SERVERS, PARALLEL_MAX_SERVERS].
Mme avec PDML actif dans la session, aucune garantie de la ralisation de lordre
en parallle ne peut tre assure.
De nouveaux hints ont t cres pour tre utiliss avec les INSERT : APPEND et
NOAPPEND.
52
STATISTIC
LAST_QUERY SESSION_TOTAL
------------------------------ ---------- ------------Queries Parallelized
0
9
DML Parallelized
0
0
SQL> create table anp.opqb as
2 select * from anp.opq;
Table created.
SQL> select * from v$pq_sesstat where statistic like '%Parallel%';
STATISTIC
LAST_QUERY SESSION_TOTAL
------------------------------ ---------- ------------Queries Parallelized
1
10
DML Parallelized
0
0
SQL> insert /*+parallel (anp.opqb,5) */ into anp.opqb
2 select /*+parallel (anp.opq, 4) */ * from anp.opq;
2560 rows created.
SQL> select * from v$pq_sesstat where statistic like '%Parallel%';
STATISTIC
LAST_QUERY SESSION_TOTAL
------------------------------ ---------- ------------Queries Parallelized
1
11
DML Parallelized
0
0
SQL> commit;
Commit complete.
SQL> UPDATE /*+PARALLEL (anp.opqb,2) */
2 anp.opqb SET c1 = c1*10;
5120 rows updated.
SQL> select * from v$pq_sesstat where statistic like '%Parallel%';
STATISTIC
LAST_QUERY SESSION_TOTAL
------------------------------ ---------- ------------Queries Parallelized
0
11
DML Parallelized
0
0
SQL> UPDATE /*+PARALLEL (anp.opqb,2) */
2 anp.opqb SET c1 = c1*10;
5120 rows updated.
SQL> DELETE /*+PARALLEL (anp.opqb,4) */
2 FROM anp.opqb
3 WHERE to_number(substr(c2,1,1)) < 5;
4096 rows deleted.
SQL> select * from v$pq_sesstat where statistic like '%Parallel%';
STATISTIC
LAST_QUERY SESSION_TOTAL
------------------------------ ---------- ------------Queries Parallelized
0
11
DML Parallelized
0
0
SQL> spool off;
Lexemple prcdent montre lutilisation des processus en parallle pour toutes les
oprations de cration et dinterrogation de tables. La paralllisation na pas t
effectue pour les delete ou update, car ce nest possible que pour les tables
partitionnes.
53
Bibliographie
[1]
[2]
[3]
[4]
[5]
[6]
Chapitre
8:
La
gestion
mip.fr/cours/concept/chap8.htm
[7]
des
transactions,
http://medias.obs-
http://sunsite.eunnet.net/documentation/oracle.8.0.4/server.804/a58247.pdf
[8]
[9]
Oracle8
Product
rohan.sdsu.edu/doc/oracle/
[10]
Documentation
Library,
http://www-
54
55