Académique Documents
Professionnel Documents
Culture Documents
Jacques Le Maitre
Universit du Sud Toulon-Var
Ce cours est mis disposition selon les termes de la licence Creative Commons Paternit-Pas d'Utilisation Commerciale-Pas de Modification 2.0 France
Nouvelles architectures
Navigateur
prsentation
(Clients)
(2)
Serveur dapplication
Serveur Web
SGBD (3) BD
Jacques Le Maitre Bases de donnes avances 3
Entrept de donnes
Entrept
Intgrateur
Extracteur
Extracteur
Source 1
Jacques Le Maitre Bases de donnes avances
Source 2
4
Mdiateur
requte
rponse
Mdiateur
Adaptateur
Adaptateur
Source 1
Source 2
Jacques Le Maitre
rponse pair
pair
Jacques Le Maitre
Sommaire
Atouts du modle relationnel Limites du modle relationnel Une solution : lapproche objet SGBD objet purs Un compromis : lobjet-relationnel Etude de cas : PostgresQL
Jacques Le Maitre
BD = ensemble de tables
normalisation
Jacques Le Maitre
Jacques Le Maitre
10
Exemple
Une adresse est compose d'une rue, d'une ville et d'un code postale, Un ami est une personne, Un nom, un prnom, une rue, une ville et un code postal sont des chanes de caractres. L'ge d'une personne est gal la date courante moins sa date de naissance.
Bases de donnes avances 11
un nom, une liste de prnoms, une date de naissance, une adresse personnelle, une adresse professionnelle, des amis dont chacun est une personne
Jacques Le Maitre
Principaux concepts :
Jacques Le Maitre
12
Smantique de lhritage
Substitution
Un tudiant est une personne car tout programme qui sapplique une personne peut tre appliqu un tudiant.
Un tudiant est une personne car il a toutes les proprits (attributs et oprations) dune personne plus des proprits spcifiques. Un adolescent est une personne dont lge est compris entre 12 et 18 ans.
Spcialisation
Restriction
Inclusion
Un tudiant est une personne car lensemble des tudiants de la BD est un sous-ensemble de celui des personnes.
Jacques Le Maitre
13
Des prototypes :
Inconvnients :
Jacques Le Maitre
Un compromis : lobjet-relationnel
Principe :
on ajoute au relationnel un certain nombre des concepts de lapproche objet, on conserve la notion de table et on tend SQL. SQL:1999 qui tend et intgre SQL 92.
Jacques Le Maitre
SQL:1999
Types distincts Types utilisateurs (UDT)
Jacques Le Maitre
16
Les valeurs dattributs de type taille et celles de type poids ne sont pas comparables. Pour les rendre comparables, il faut les convertir en un type commun, par exemple : integer.
Jacques Le Maitre
17
Jacques Le Maitre
20
Jacques Le Maitre
21
SQL:1999 : hritage
CREATE TYPE dvd UNDER film AS ( editeur CHARACTER VARYING(35), bonus ROW( nom CHARACTER VARYING(35), dure CHARACTER VARYING(35)) ARRAY[10])) INSTANTIABLE NOT FINAL); CREATE TABLE dvds OF dvd UNDER films;
Jacques Le Maitre
22
Constructeurs de n-uplets et de tableaux Types composites dfinis par lutilisateur Fonctions dfinies par lutilisateur Hritage de tables Types gomtriques Rgles
Jacques Le Maitre
23
Jacques Le Maitre
25
Jacques Le Maitre
26
Jacques Le Maitre
27
Hritage de tables
CREATE TABLE document ( titre text, auteur text, annee integer); CREATE TABLE livre ( nb_pages integer) INHERITS (document); CREATE TABLE dvd ( duree interval) INHERITS (document);
Jacques Le Maitre
28
Hritage de tables
INSERT INTO dvd VALUES ('L\'equipier', 'Philippe Lioret', 2004, '94 min'); INSERT INTO livre VALUES ('Le lievre de Vatanen', 'Arto Paasilina', 1975, 236);
Jacques Le Maitre
29
Hritage de tables
SELECT titre FROM document; titre -------------------Le lievre de Vatanen L'equipier SELECT p.relname, titre FROM document d, pg_class p WHERE d.tableoid = p.oid; relname | titre --------+--------------------livre | Le lievre de Vatanen dvd | L'equipier
Jacques Le Maitre
30
Types gomtriques
Points Segments de droite Bote (x, y) ((x1, y1), (x2, y2)) ((x1, y1), (x2, y2))
Chemins
Polygones Cercle
Jacques Le Maitre
Types gomtriques
CREATE TABLE figure ( nom text PRIMARY KEY); CREATE TABLE rectangle ( representation box) INHERITS (figure); CREATE TABLE cercle ( representation circle) INHERITS (figure);
Jacques Le Maitre
32
Types gomtriques
INSERT INTO rectangle VALUES ('R1', '((3, 2), (8, 5))'); INSERT INTO rectangle VALUES ('R2', '((6, 4), (9, 6))');
C1
R2
Jacques Le Maitre
33
Types gomtriques
CREATE FUNCTION recouvre(text, text) RETURNS boolean AS 'SELECT (SELECT representation FROM rectangle WHERE nom = $1) && (SELECT representation FROM rectangle WHERE nom = $2)' LANGUAGE SQL; SELECT recouvre('R1', 'R2');
Jacques Le Maitre
34
Types gomtriques
CREATE FUNCTION surface(figure) RETURNS double precision AS '(SELECT area(c.representation) FROM rectangle c WHERE c.nom = $1.nom) UNION (SELECT area(c.representation) FROM cercle c WHERE c.nom = $1.nom)' LANGUAGE SQL; SELECT nom, surface(f) FROM figure f;
Jacques Le Maitre Bases de donnes avances 35
Rgles
CREATE TABLE societe ( nom text PRIMARY KEY, sigle text) CREATE TABLE employe ( nom text PRIMARY KEY, nom_societe text REFERENCES societe(nom), salaire float) CREATE TABLE localisation ( nom_societe text REFERENCES societe (nom), pays text)
Jacques Le Maitre
36
Rgles
CREATE VIEW emp_soc_australienne( nom, sigle_societe, salaire) AS SELECT e.nom, s.sigle, e.salaire FROM employe e, societe s, localisation l WHERE e.nom_societe = s.nom AND s.nom = l.nom_societe AND l.pays = 'Australie'; CREATE RULE my_rule AS ON UPDATE TO emp_soc_australienne DO INSTEAD UPDATE employe SET salaire = NEW.salaire WHERE nom = NEW.nom; UPDATE emp_soc_australienne SET salaire = 2 * salaire;
Jacques Le Maitre
37
Concurrence
Concept de transaction
Une transaction est un fragment de programme dont lexcution fait passer une BD dun tat cohrent un autre tat cohrent. Une transaction est une suite dvnements dont chacun peut tre :
la lecture ou lcriture dune donne, le verrouillage ou le dverrouillage dune donne, le dmarrage ou larrt de la transaction. une valeur dattribut, un n-uplet, une table
Jacques Le Maitre
39
Evnements
vnement start read D write D rollback commit signification dmarrage de la transaction lecture dune donne D modification dune donne D annulation de la transaction confirmation de la transaction
Jacques Le Maitre
40
Exemple de transaction
T start read A A = A - S write A
read A
B = B + S write B commit
Jacques Le Maitre
41
Atomicit
Cohrence
Soit toutes les modifications effectues par une transaction sont enregistres dans la BD, soit aucune ne lest. Si une transaction est confirme (commit) toutes les modifications quelle a effectues sont enregistres dans la BD et rendues visibles aux autres utilisateurs. Si une transaction est interrompue alors aucune de ces modifications nest enregistre dans la BD.
Isolation
Une transaction fait passer une BD dun tat cohrent un autre tat cohrent. Un tat cohrent est un tat dans lequel les contraintes dintgrit sont vrifies.
Une transaction se droule sans tre perturbe par les transactions concurrentes :
tout se passe comme si elle se droulait seule.
Durabilit
Une fois quune transaction a t confirme le SGBD garantit quaucune modification quelle a effectue ne sera perdue quelque soient les accidents qui surviendront : interruption, pannes du systme dexploitation, crash de disque, etc.
Jacques Le Maitre
42
Jacques Le Maitre
43
read A
read A A = A + 10 write A A = A + 50 write A A = 60 A = 20
Jacques Le Maitre
44
A = 70
B = 130
Bases de donnes avances 45
A = 70
write A read A (70 est lu) rollback (La valeur initiale de A est restaure) A = 50 A= 70
Jacques Le Maitre
46
Jacques Le Maitre
47
Excution srialisable
Le principe sur lequel repose le contrle de concurrence est celui de la srialisabilit de lexcution dun ensemble de transactions. En effet, lorsque les transactions sont excutes les unes aprs les autres, il ny a pas de problmes de concurrence. Malheureusement, cette solution est inapplicable car trs coteuse en temps calcul. La solution adopte consiste excuter un ensemble de transactions concurrentes de faon ce que le rsultat soit quivalent une excution en srie de ces transactions :
Jacques Le Maitre
48
Dfinition de la srialisabilit
Lexcution dun ensemble de transactions est dite en srie si, pour tout couple de transactions, tous les vnements de lune prcdent tous les vnements de lautre. Deux excutions dun mme ensemble de transactions sont quivalentes si et seulement si :
elles sont constitues des mmes vnements, elles produisent le mme tat final de la BD et les mmes rsultats pour les transactions :
Une excution concurrente dun ensemble de transactions est dite srialisable si et seulement si il existe une excution en srie quivalente.
Bases de donnes avances 49
les lectures produisent les mmes rsultats, les critures sont ralises dans le mme ordre.
Jacques Le Maitre
Condition de srialisabilit
Deux oprations sont dites conflictuelles si elles appartiennent deux transactions diffrentes et si elles ne sont pas permutables. Deux oprations appartenant deux transactions diffrentes sont conflictuelles si et seulement si elles portent sur la mme donne et que lune des deux au moins est une opration dcriture. Une excution concurrente est srialisable si elle peut tre transforme en une excution en srie quivalente par une suite de permutations doprations non conflictuelles.
Bases de donnes avances 50
Jacques Le Maitre
read A
write A
write A
read B write B r1(A) w1(A) r1(B) w1(B) r2(A) w2(A) r2(B) w2(B)
Jacques Le Maitre
51
Test de srialisabilit
Un graphe de prcdence pour une excution dun ensemble de transactions S est un graphe orient dans lequel :
Une excution dont le graphe de prcdence ne comporte pas de cycle est srialisable.
Bases de donnes avances
les nuds reprsentent les transactions de S, il existe une arte dun nud T1 vers un nud T2 sil existe dans S une opration op1 de T1 en conflit avec une opration op2 de T2 et que op1 apparat avant op2.
Jacques Le Maitre
52
Test de srialisabilit
r2(A) r1(B) w2(A) r3(A) w1(B) w3(A) r2(B) w2(B) T1 T2 T3
Cette excution est srialisable ! r2(A) r1(B) w2(A) r2(B) r3(A) w1(B) w3(A) w2(B) T1 T2 T3
Verrouillage
Cest la technique la plus classique pour viter les problmes dus la concurrence :
Le verrouillage dgrade les performances dun SGBD en imposant des temps dattente :
chaque transaction verrouille les donnes quelle lit ou crit pour interdire aux autres transactions dy accder.
On peut encore amliorer les performances en prcisant la nature des oprations pour lesquelles le verrouillage est ralis (lecture ou criture par exemple) :
il y a donc intrt limiter la taille des donnes verrouiller, do le concept de granularit de verrouillage.
Jacques Le Maitre
54
Granularit
On peut verrouiller :
une valeur dattribut, un n-uplet et donc toutes ses valeurs, une page de fichier et donc tous ses n-uplets, une table et donc toutes ses lignes, la BD et donc toutes ses tables.
Jacques Le Maitre
55
Modes de verrouillage
partag (S) : demand avant de lire une donne, exclusif (X) : demand avant de modifier une donne.
Les rgles qui rgissent ces deux modes sont les suivantes :
Un verrou partag ne peut tre obtenu sur une donne que si les verrous dj placs sur cette donne sont eux mme partags. Un verrou exclusif ne peut tre obtenu sur une donne que si aucun verrou nest dj plac sur cette donne.
Jacques Le Maitre
56
Matrice de compatibilit
MC
S
X
oui
non
non non
Jacques Le Maitre
57
Oprations de verrouillage
Signification demande dun verrou en mode m sur la donne D dverrouillage dune donne D
Jacques Le Maitre
58
Une transaction est deux phases si elle est bien forme et si aprs avoir libr un verrou elle nen acquiert plus : On distingue donc :
elle obtient un verrou sur une donne avant de lire ou dcrire cette donne, elle libre tous ses verrous avant de se terminer.
Le protocole habituel consiste lever les verrous lors de la confirmation de la transaction (commit). Il est dmontr que lexcution dun ensemble de transactions deux phases est srialisable.
une phase dacquisition des verrous, une phase de libration des verrous.
En consquence il ne peut y avoir ni pertes de mise jour, ni lectures impropres, ni lectures non reproductibles.
Jacques Le Maitre
59
unlock A
attente
read A A = A + 50 write A unlock A A = 70
Jacques Le Maitre
60
attente A = 20 write A
Jacques Le Maitre
61
Interblocage
T1 lock X A lock X B lock S B attente attente lock S A attente T2
B(S)
T
2
A(S) T
1
Jacques Le Maitre
62
Rsolution de linterblocage
Prvention
en accordant une transaction tous les verrous dont elle a besoin avant son dmarrage, ou bien en fixant un ordre sur les donnes et en imposant aux transactions de respecter cet ordre dans leur demandes de verrous.
Dtection
On laisse les situations dinterblocage se produire et lon inspecte intervalles rguliers le graphe dattente pour dtecter si un interblocage sest produit. Dans ce cas on dfait lune des transactions bloques et on la relance un peu plus tard.
Jacques Le Maitre
63
Les objets manipuls par un SGBD peuvent tre de granularit variable : BD, table, n-uplet, etc. Selon les oprations raliser, il peut tre ncessaire de spcifier le niveau de granularit des objets verrouiller. Par exemple, une requte qui calcule la moyenne des ges dun ensemble de personnes, doit pouvoir verrouiller cet ensemble en criture, durant le temps de ce calcul. Ceci est possible grce au protocole de verrouillage intentionnel qui permet de placer des verrous sur des objets de granularit variable imbriqus hirarchiquement
Bases de donnes avances 64
Jacques Le Maitre
Hirarchie de granularit
BD table bloc ligne
Jacques Le Maitre
65
IS
IX
intention partage, qui est demande sur un objet O par une transaction qui souhaite lire certains des sous-objets de O. intention exclusive, qui est demande sur un objet O par une transaction qui souhaite modifier des sous-objets de O. intention partage exclusive, qui est demande sur un objet O par une transaction qui pour mettre jour certains sous-objets de O, a besoin de lire pralablement les objets de O.
SIX
Jacques Le Maitre
66
Pour placer un verrou en mode S ou X sur un objet o, il faut se placer sur la racine de la hirarchie. Si lobjet sur lequel on se trouve est lobjet o, alors on place le verrou et on arrte le processus. Si lobjet O sur lequel on se trouve contient lobjet o verrouiller, alors on place sur O un verrou :
en mode IS, si o est verrouiller en mode S, en mode IX ou SIX, si lobjet o est verrouiller en mode X.
Bases de donnes avances 67
Jacques Le Maitre
Matrice de compatibilit
MC IS IS oui IX oui SIX oui S oui X non
IX
SIX S X
oui
oui oui
oui
Jacques Le Maitre
68
Justification
Si une transaction veut lire o alors elle doit empcher toute modification de O dans sa totalit.
Pour lire o, elle le verrouille en mode S, ce qui implique de verrouiller O en mode IS, ce qui interdira une autre transaction de verrouiller O en mode X et donc de modifier O dans sa totalit.
Si une transaction veut modifier o alors elle doit empcher toute lecture ou modification de O dans sa totalit.
Pour modifier o, elle le verrouille en mode X, ce qui implique de verrouiller O en mode IX, ce qui interdira une autre transaction de verrouiller O en mode S ou X et donc de lire ou de modifier O dans sa totalit.
Jacques Le Maitre
69
Justification (suite)
Le verrouillage en mode IX (resp. IS) de O par une transaction T2 est accept mme sil a dj t verrouill en mode IS (resp. IX) par une transaction T1 car il se peut que le sousensemble des objets de O lus (resp. modifis) par T1 soit disjoint du sous-ensemble des objets de O modifis (resp. lus) par T2. Dans le cas contraire, le verrouillage des objets communs en mode S ou X empcherait le conflit.
Jacques Le Maitre
70
Soit la relation :
livre(isbn, titre, catgorie, prix) UPDATE livre SET prix := 1.25 * prix WHERE catgorie = 'roman';
et la transaction T :
Pour raliser cette mise jour, la transaction T doit demander un accs exclusif la table livre pour empcher toute modification de cette table durant lopration de mise jour. Si T verrouille la table livre en mode exclusif alors elle ne pourra pas lire les n-uplets de livre pour slectionner ceux qui doivent tre mis jour. Par contre, si T verrouille la table livre en mode SIX (accs partag exclusif), alors elle et elle seule pourra verrouiller les lignes de cette table en mode S pour les lire afin de slectionner ceux qui sont des romans, qui eux seront verrouills en mode X afin dtre modifis.
Jacques Le Maitre
71
Jacques Le Maitre
72
Jacques Le Maitre
73
Transactions en SQL
La norme SQL :
nimpose aucun choix sur limplantation des mcanismes de concurrence, formalise les problmes que doivent rsoudre ces mcanismes.
la connexion entre un client et un serveur, les niveaux disolation, la dfinition dune transaction, les points de reprise.
Bases de donnes avances 74
La norme spcifie :
Jacques Le Maitre
Connexion et session
Un agent est lexcution dun programme contenant une ou plusieurs requtes SQL. Lagent dmarre lexcution sous le contrle dun client. Pour accder une BD, il doit tablir une connexion avec un serveur qui peut tre implant sur une machine diffrente du client. Le client et le serveur constituent les deux composantes dun environnement. Une session se droule de la faon suivante :
CONNECT transaction 1 transaction n DISCONNECT (dmarrage de la session)
(arrt de la session)
Bases de donnes avances 75
Jacques Le Maitre
Transaction SQL
Une transaction est une suite de commandes SQL. Deux transactions ne peuvent pas tre imbriques :
il est impossible de dmarrer une transaction tant que la transaction courante nest pas termine.
Une transaction est dmarre par un agent lorsquil excute une commande SQL et quil ny a pas de transactions en cours. Une transaction est termine explicitement par une commande COMMIT ou une command ROLLBACK.
Bases de donnes avances 76
Jacques Le Maitre
Le mode dexcution dune transaction est spcifi par la commande SET TRANSACTION qui la prcde immdiatement :
SET TRANSACTION (mode daccs | ISOLATION LEVEL niveau disolation) mode daccs ::= READ ONLY | READ WRITE niveau disolation ::=
Attention ! la commande SET TRANSACTION nest pas un dbut de transaction et elle ne peut pas tre utilise si une transaction est en cours.
Jacques Le Maitre
77
Niveaux disolation
READ UNCOMMITED
il ny a pas de perte de mise jour ; il peut y avoir des lectures incohrentes, des lectures non reproductibles, et des objets fantmes ; les lecteurs ne sont pas bloqus p/r aux crivains. il ny a ni pertes de mise jour, ni lectures incohrentes ; il peut y avoir des lectures non reproductibles et des objets fantmes ; les transactions nont accs quaux donnes produites par des transactions valides. il ny a ni pertes de mise jour, ni lectures incohrentes, ni lecture non reproductibles, il peut y avoir des objets fantmes ; une transaction qui lit plusieurs fois la mme donne lit toujours la mme valeur. il ny a ni pertes de mise jour, ni lectures incohrentes, ni lecture non reproductibles, ni objets fantmes, lisolation est totale, la visibilit de la BD est quivalente un clich ralis au dbut de la transaction.
READ COMMITTED
REPEATABLE READ
Jacques Le Maitre
78
Nous montrons comment un niveau disolation peut tre mis en place pour une transaction SQL, laide de 2 types de verrous :
des verrous de longue dure qui peuvent tre demands pour la lecture ou lcriture dun n-uplet ou dune table et qui ne sont librs quaprs la confirmation de la transaction, des verrous de courte dure qui sont demands pour la lecture dun n-uplet et librs aprs la lecture de celui-ci.
Jacques Le Maitre
79
READ UNCOMMITED
On autorise T lire un n-uplet sans demande pralable de verrou. T peut donc lire une donne verrouille en criture par une autre transaction et donc effectuer une lecture impropre. On impose T dobtenir un verrou de courte dure sur un n-uplet avant de pouvoir le lire. Ce verrou ne pourra pas tre obtenu si une autre transaction T possde un verrou en criture sur ce n-uplet, et puisque T ne librera ce verrou que lors de sa confirmation (les verrous en criture sont de longue dure), T ne pourra pas donc pas lire un n-uplet non confirm. Par contre, une autre transaction pourra modifier un n-uplet entre deux lectures de celui-ci par T : les lectures de ce n-uplet par T pourront donc ne pas tre reproductibles.
Bases de donnes avances 80
READ COMMITTED
Jacques Le Maitre
REPEATABLE READ
On impose T dobtenir un verrou de longue dure sur un n-uplet avant de pouvoir le lire. Aucune autre transaction ne pourra donc modifier ce n-uplet avant que T soit confirme. Les lectures de ce n-uplet par T seront donc reproductibles.
On impose T dobtenir un verrou en lecture de longue dure sur chaque table lue et donc sur chaque n-uplet de cette table. Aucune autre transaction ne pourra donc insrer un n-uplet dans une de ces tables car cette opration est une opration dcriture de cette table et est donc interdite si un verrou en lecture est dj plac sur cette table, ce qui est le cas. Il ny aura donc pas de n-uplets fantmes dans les tables lues par T.
Bases de donnes avances 81
SERIALIZABLE
Jacques Le Maitre
Points de reprise
Certaines transactions peuvent durer longtemps. Les annuler compltement la suite dun problme peut coter cher.
Pour cela SQL permet de poser des points de reprise afin de permettre des annulations partielles.
Un point de reprise est un marqueur positionn par une transaction dans le droulement de celleci. Une transaction peut abandonner toutes les actions ralises depuis un point de reprise par linstruction ROLLBACK POINT n.
Bases de donnes avances 82
Jacques Le Maitre
Jacques Le Maitre
83
Jacques Le Maitre
84
Une transaction T peut tre confirme sil ny a pas dautre transaction qui, la fois :
Ainsi :
a t confirme entre le dbut de T et le moment o elle demande tre confirme, a modifi un objet que T a aussi modifi.
Inconvnient :
un lecteur nest jamais en attente derrire un crivain, un crivain nest jamais en attente derrire un lecteur. la maintenance des versions multiples
Jacques Le Maitre
85
Les transactions sont numrotes par ordre chronologique. Une nouvelle version de chaque donne modifie par une transaction i confirme est enregistre avec le numro de version i. Soit une transaction de numro 10 qui lit les donnes a, b, c, d, e, f et g.
La valeur lue pour c est celle de sa version 8 (deux retours arrire) La valeur lue pour e est celle de sa version 7 (un retour arrire).
4 a
10 b
8 11 16 c
9 d 7
14 e
2 f
5 g images avant
Jacques Le Maitre
donnes
86
Dbut de transaction
Contrairement la norme SQL, PostgreSQL offre une commande de dbut de transaction qui a la syntaxe suivante :
BEGIN [TRANSACTION] [mode daccs | ISOLATION LEVEL niveau disolation] ;
Jacques Le Maitre
87
Niveaux disolation
En consquence, si dans la clause ISOLATION LEVEL des commande SET TRANSACTION ou BEGIN on spcifie :
Attention !
seules les donnes confirmes avant le dbut dune commande SELECT, INSERT, UPDATE ou DELETE sont visibles dans la clause WHERE de cette commande. seules les donnes confirmes avant le dbut de cette transaction sont visibles dans la clause WHERE dune commande de cette transaction.
Jacques Le Maitre
88
K I
1 un 2 deux 3 trois
Jacques Le Maitre
89
Jacques Le Maitre
90
Jacques Le Maitre
91
Jacques Le Maitre
92
Jacques Le Maitre
93
Verrous explicites
PostgreSQL place les verrous ncessaires pour chaque commande SQL, ce verrouillage est dit implicite, car l'utilisateur n'a pas les spcifier. Cependant, pour certaines transactions, lorsque la protection apporte par le verrouillage n'est pas suffisant, il peut tre ncessaire de spcifier explicitement le verrouillage. Ce verrouillage peut tre :
Jacques Le Maitre
94
Verrous de table
LOCK TABLE t1, ..., tn IN mode MODE [NOWAIT] Les modes disponibles sont :
ACCESS SHARE
ROW SHARE :
acquis notamment par SELECT acquis notamment par SELECT FOR UPDATE et SELECT FOR SHARE acquis notamment par UPDATE, DELETE et INSERT pour protger une table contre les modifications concurrentes de schma acquis par CREATE INDEX
ROW EXCLUSIVE
SHARE
la transaction qui a pos le verrou est la seule y accder acquis notamment par ALTER TABLE et DROP TABLE
Ce qui est important, c'est ce qui est interdit aux transactions concurrentes et donc la matrice de compatibilit. L'option NOWAIT indique que si le verrou demand ne peut tre acquis, la transaction est annule.
Bases de donnes avances 95
Jacques Le Maitre
Matrice de compatibilit
MC AS RS RX SUX AS oui oui oui oui RS oui oui oui oui RX oui oui oui oui SUX oui oui oui non S oui oui non non SRX oui oui non non X oui non non non AX non non non non
S
SRX X AX
oui
oui oui non
oui
oui non non
non
non non non
non
non non non
oui
non non non
non
non non non
non
non non non
non
non non non
Jacques Le Maitre
96
Exemple
Soit la BD de schma :
livre(cote, titre) emprunteur(nom, cote) o cote est une cl trangre qui rfre la relation livre.
On veut insrer l'emprunteur du livre "Les BD en BD" et empcher que ce livre ne soit supprim pendant cette opration :
BEGIN; LOCK TABLE livre IN SHARE MODE; SELECT cote FROM livre WHERE titre = 'Les BD en BD'; INSERT INTO emprunteur VALUES ('Dupont', cote); COMMIT;
Bases de donnes avances 97
Jacques Le Maitre
Verrous de lignes
Jacques Le Maitre
les transactions qui veulent raliser un UPDATE, DELETE ou SELECT FOR UPDATE d'une autre transaction, mais pas celles qui veulent raliser un SELECT FOR SHARE.
Bases de donnes avances 98
Transactions distribues
Une BD peut tre distribue sur plusieurs sites Une transaction peut donc impliquer des calculs sur plusieurs de ces sites :
Questions :
Jacques Le Maitre
Exemple
Une chane de n magasins dont chacun possde son propre inventaire. Une transaction mise par le directeur de la chane destine rquilibrer les stocks dun certain produit P par transfert dun magasin lautre :
Le site directeur envoie chaque magasin un message lui demandant la quantit de P dont il dispose, Chaque magasin excute cette requte sur son propre inventaire et renvoie la rponse au site du directeur. Aprs un calcul celui-ci envoie certains magasins un ordre denvoi dune quantit q de P un autre magasin. Les magasins recevant ce message mettent jour leur inventaire puis effectuent lenvoi demander.
Jacques Le Maitre
100
Jacques Le Maitre
101
1re phase
Il envoie chaque site Si un message lui demandant de se prparer confirmer sa part Ti de T. Chaque site Si recevant ce message dcide sil peut confirmer Ti ou sil doit labandonner. Sil dcide de confirmer :
il entre dans une phase de prconfirmation et ne peut plus abandonner sauf sil en reoit lordre du coordinateur ; il journalise tous les effets de Ti ; il envoie un message au coordinateur lui annonant quil est prt confirmer, mais ne confirme pas effectivement. il envoie un message au coordinateur lui annonant quil abandonne et le fait effectivement car il est sr que T sera abandonne.
Bases de donnes avances 102
Si Si dcide dabandonner :
Jacques Le Maitre
2e phase
Elle commence quand le coordinateur a reu de tous les sites un message annonant sa dcision de confirmer ou dabandonner.
Sil a reu de tous les sites un message de dcision de confirmation, alors il envoie chaque site Si un message lui demandant de confirmer Ti. Sil a reu dau moins un site un message de dcision dabandon, alors il envoie chaque site Si un message lui demandant dabandonner Ti. Le site qui reoit un message de demande de confirmation la ralise. Le site qui reoit un message de demande dabandon le ralise, sil ne la dj fait.
Jacques Le Maitre
103
Jacques Le Maitre
104
Srialisabilit
La srialisabilit dune transaction locale est assure par le protocole de verrouillage deux phases. Quen est-til pour la transaction globale ? On montre que pour un ensemble de transactions distribues, si :
les transactions locales sont excutes selon un protocole de verrouillage deux phases, les transactions globales sont excutes selon le protocole de confirmation deux phases,
Index multidimensionnels
Rfrences bibliographiques : H. Garcia-Molina, J. D. Ullman, J. Wisdom, Database Systems The Complete Book, Prentice Hall, 2002, Chapter 14. G. Gardarin, Internet/intranet et bases de donnes, Eyrolles, 1999, chapitre 3.
Index multidimensionnels
arbres k-dimensionnel (kd-trees) arbres quadrants (quadtrees) arbres R (R trees) Grid files hachage partitionn
Jacques Le Maitre
107
Dimensions
Dimensions spatiales
Dimensions spatio-temporelles
Plus gnralement, tout attribue dune relation peut-tre vue comme une dimension.
lge et le salaire constituent chacun une dimension. Un n-uplet de la relation personne est donc un point dans cet espace deux dimensions.
Jacques Le Maitre Bases de donnes avances 108
Types de requtes
Requtes exactes :
Requtes partielles :
...
Jacques Le Maitre Bases de donnes avances 109
J. L. Bentley, 1975 Index mmoire centrale, gnralisant la structure darbre binaire. Chaque enregistrement possde k champs dont chacun est associ une dimension. Un enregistrement est un point dans lespace k dimensions ainsi dfini. Les dimensions sont numrotes de 0 k 1. Chaque nud de larbre contient un enregistrement.
Bases de donnes avances 110
Jacques Le Maitre
Si larbre est vide, on cre un nud qui constitue la racine de larbre et on y insre le nouvel enregistrement. Sinon, on parcoure larbre depuis sa racine. A partir de chaque nud n de niveau i contenant un enregistrement e on se dplace :
dans le sous-arbre gauche, si la valeur du nouvel enregistrement pour la dimension i modulo k est infrieure ou gale celle de lenregistrement e, dans le sous-arbre droit, dans le cas contraire.
Si le sous-arbre atteint est vide, on en cre un constitu dune nud unique (une feuille) dans lequel on insre le nouvel enregistrement.
Bases de donnes avances 111
Jacques Le Maitre
Exemple
Chaque enregistrement reprsente une personne dont lidentifiant (1er champ) lge (2e champ) et le salaire (3e champ) sont donns :
La dimension 0 est celle des ges et la dimension 1 est celle des salaires.
Bases de donnes avances 112
(p1, 25, 600) (p2, 45, 600) (p3, 50, 750) (p4, 50, 1000) (p5, 50, 1200) (p6, 70, 1100), (p7, 85, 1400) (p8, 30, 2600) (p9, 25, 4000) (p10, 45, 3500) (p11, 50, 2750) (p12, 60, 2600)
Jacques Le Maitre
Larbre obtenu
p1, 25, 600
Jacques Le Maitre
113
Larbre obtenu
p1, 25, 600 p2, 45, 600 ge
Jacques Le Maitre
114
Larbre obtenu
p1, 25, 600 p2, 45, 600 ge salaire p3, 50, 750
Jacques Le Maitre
115
Larbre obtenu
p1, 25, 600 p2, 45, 600 ge salaire p3, 50, 750 p4, 50, 1000 ge
Jacques Le Maitre
116
Larbre obtenu
p1, 25, 600 p2, 45, 600 ge salaire p3, 50, 750 p4, 50, 1000 ge
salaire
Jacques Le Maitre
117
Larbre obtenu
p1, 25, 600 p2, 45, 600 ge salaire p3, 50, 750 p4, 50, 1000 p6, 70, 1100 ge
salaire
Jacques Le Maitre
118
Larbre obtenu
p1, 25, 600 p2, 45, 600 ge salaire p3, 50, 750 p4, 50, 1000 p6, 70, 1100 ge
salaire
Jacques Le Maitre
119
Larbre obtenu
p1, 25, 600 p2, 45, 600 ge salaire p3, 50, 750 p4, 50, 1000 p6, 70, 1100 ge
salaire
ge
Jacques Le Maitre
120
Larbre obtenu
p1, 25, 600 p2, 45, 600 ge p9, 25, 4000 salaire p3, 50, 750 p4, 50, 1000 p6, 70, 1100 ge
salaire
ge
Jacques Le Maitre
121
Larbre obtenu
p1, 25, 600 p2, 45, 600 ge p9, 25, 4000 salaire p3, 50, 750 p4, 50, 1000 p6, 70, 1100 ge
salaire
ge
salaire
Jacques Le Maitre
122
Larbre obtenu
p1, 25, 600 p2, 45, 600 ge p9, 25, 4000 salaire p3, 50, 750 p4, 50, 1000 p6, 70, 1100 ge
salaire
ge
salaire ge
Larbre obtenu
p1, 25, 600 p2, 45, 600 ge p9, 25, 4000 salaire p3, 50, 750 p4, 50, 1000 p6, 70, 1100 ge
salaire
ge
salaire ge
On dmarre la racine de larbre et on parcoure une branche jusqu atteindre une feuille. A partir de chaque nud de niveau i et dtiquette v, on se dplace :
dans le sous-arbre gauche si la valeur de lenregistrement insrer pour la dimension i modulo k est infrieure ou gale v, dans le sous-arbre droit dans le cas contraire.
2.
si le nombre denregistrements contenus dans F est infrieur n, le nouvel enregistrement est rang dans F, sinon, on partage F en deux puis on reprend linsertion de lenregistrement.
Bases de donnes avances 126
Jacques Le Maitre
3. 4.
on cre une nouvelle feuille F, soit vm la valeur mdiane des valeurs de la dimension (i mod k) des enregistrements dj prsents dans la feuille et de lenregistrement insrer, on transfre dans Fnouv les enregistrements de F dont la valeur pour la dimension i modulo k est suprieure vm, on remplace la feuille F par un arbre dont la racine est un nud tiquet par v et qui a pour fils gauche F et pour fils droit F.
vm
niveau i
127
Larbre obtenu
47,5
ge
1600
1050
salaire
p1, p2
F1
p3, p4
F2
60
ge
p6, p7 F5
(p1, 25, 600) (p2, 45, 600) (p3, 50, 750) (p4, 50, 1000) (p5, 50, 1200) (p6, 70, 1100) (p7, 85, 1400) (p8, 30, 2600) (p9, 25, 4000) (p10, 45, 3500) (p11, 50, 2750) (p12, 60, 2600)
Jacques Le Maitre
128
Sa construction (1)
p1, p2, p3
(p1, 25, 600) (p2, 45, 600) (p3, 50, 750) (p4, 50, 1000) (p5, 50, 1200) (p6, 70, 1100) (p7, 85, 1400) (p8, 30, 2600) (p9, 25, 4000) (p10, 45, 3500) (p11, 50, 2750) (p12, 60, 2600)
Jacques Le Maitre
129
Sa construction (1)
p1, p2, p3
(p1, 25, 600) (p2, 45, 600) (p3, 50, 750) (p4, 50, 1000) (p5, 50, 1200) (p6, 70, 1100) (p7, 85, 1400) (p8, 30, 2600) (p9, 25, 4000) (p10, 45, 3500) (p11, 50, 2750) (p12, 60, 2600)
Jacques Le Maitre
130
Sa construction (2)
47,5
ge
p1, p2 F1
p3, p4 F2
(p1, 25, 600) (p2, 45, 600) (p3, 50, 750) (p4, 50, 1000) (p5, 50, 1200) (p6, 70, 1100) (p7, 85, 1400) (p8, 30, 2600) (p9, 25, 4000) (p10, 45, 3500) (p11, 50, 2750) (p12, 60, 2600)
Jacques Le Maitre
131
Sa construction (3)
47,5
ge
p1, p2 F1
p3, p4, p5 F2
(p1, 25, 600) (p2, 45, 600) (p3, 50, 750) (p4, 50, 1000) (p5, 50, 1200) (p6, 70, 1100) (p7, 85, 1400) (p8, 30, 2600) (p9, 25, 4000) (p10, 45, 3500) (p11, 50, 2750) (p12, 60, 2600)
Jacques Le Maitre
132
Sa construction (4)
47,5
ge
p1, p2 F1 p3, p4 F2
1050
salaire
p5, p6 F3
(p1, 25, 600) (p2, 45, 600) (p3, 50, 750) (p4, 50, 1000) (p5, 50, 1200) (p6, 70, 1100) (p7, 85, 1400) (p8, 30, 2600) (p9, 25, 4000) (p10, 45, 3500) (p11, 50, 2750) (p12, 60, 2600)
Jacques Le Maitre
133
Sa construction (5)
47,5
ge
p1, p2 F1 p3, p4 F2
1050
salaire
p5, p6, p7 F3
(p1, 25, 600) (p2, 45, 600) (p3, 50, 750) (p4, 50, 1000) (p5, 50, 1200) (p6, 70, 1100) (p7, 85, 1400) (p8, 30, 2600) (p9, 25, 4000) (p10, 45, 3500) (p11, 50, 2750) (p12, 60, 2600)
Jacques Le Maitre
134
Sa construction (6)
47,5
ge
1050
salaire
p5, p6, p7
F2
F3
(p1, 25, 600) (p2, 45, 600) (p3, 50, 750) (p4, 50, 1000) (p5, 50, 1200) (p6, 70, 1100) (p7, 85, 1400) (p8, 30, 2600) (p9, 25, 4000) (p10, 45, 3500) (p11, 50, 2750) (p12, 60, 2600)
Jacques Le Maitre
135
Sa construction (7)
47,5
ge
1600
1050
salaire
p1, p2 F1
p8, p9 F4
p3, p4 F2
p5, p6, p7 F3
(p1, 25, 600) (p2, 45, 600) (p3, 50, 750) (p4, 50, 1000) (p5, 50, 1200) (p6, 70, 1100) (p7, 85, 1400) (p8, 30, 2600) (p9, 25, 4000) (p10, 45, 3500) (p11, 50, 2750) (p12, 60, 2600)
Jacques Le Maitre
136
Sa construction (8)
47,5
ge
1600
1050
salaire
p1, p2 F1
p3, p4 F2
p5, p6, p7 F3
(p1, 25, 600) (p2, 45, 600) (p3, 50, 750) (p4, 50, 1000) (p5, 50, 1200) (p6, 70, 1100) (p7, 85, 1400) (p8, 30, 2600) (p9, 25, 4000) (p10, 45, 3500) (p11, 50, 2750) (p12, 60, 2600)
Jacques Le Maitre
137
Sa construction (9)
47,5
ge
1600
1050
salaire
p1, p2
F1
p3, p4
F2 p5, p11 F3
60
ge
p6, p7 F5
(p1, 25, 600) (p2, 45, 600) (p3, 50, 750) (p4, 50, 1000) (p5, 50, 1200) (p6, 70, 1100) (p7, 85, 1400) (p8, 30, 2600) (p9, 25, 4000) (p10, 45, 3500) (p11, 50, 2750) (p12, 60, 2600)
Jacques Le Maitre
138
Sa construction (10)
47,5
ge
1600
1050
salaire
p1, p2
F1
p3, p4
F3
60
ge
p6, p7 F5
(p1, 25, 600) (p2, 45, 600) (p3, 50, 750) (p4, 50, 1000) (p5, 50, 1200) (p6, 70, 1100) (p7, 85, 1400) (p8, 30, 2600) (p9, 25, 4000) (p10, 45, 3500) (p11, 50, 2750) (p12, 60, 2600)
Jacques Le Maitre
139
Dcoupage de lespace
salaire F1 {p1, p2} - ge 47,5 dans F1 ou F4 - 47,5 < ge 60 dans F2 ou F3 - ge > 60 dans F3 ou F5 - salaire 1050 dans F3 ou F4 - 1050 < salaire 1600 F5 dans F2, F4, F5 {p6, p7} - salaire > 1600 dans F1, F2 ou F5 (p1, 25, 600) (p2, 45, 600) (p3, 50, 750) (p4, 50, 1000) (p5, 50, 1200) (p6, 70, 1100) (p7, 85, 1400) (p8, 30, 2600) (p9, 25, 4000) (p10, 45, 3500) (p11, 50, 2750) (p12, 60, 2600)
140
1600
F3 {p3, p4}
47,5
60
ge
Jacques Le Maitre
Requtes partielles
Employs ayant un salaire de 2600 ?
47,5
ge
1600
1050
salaire
p1, p2 F1
p3, p4 F3
60
ge
p6, p7 F5
(p1, 25, 600) (p2, 45, 600) (p3, 50, 750) (p4, 50, 1000) (p5, 50, 1200) (p6, 70, 1100) (p7, 85, 1400) (p8, 30, 2600) (p9, 25, 4000) (p10, 45, 3500) (p11, 50, 2750) (p12, 60, 2600)
Jacques Le Maitre
141
47,5
ge
1600
1050
salaire
p1, p2 F1
p3, p4 F3
60
ge
p6, p7 F5
(p1, 25, 600) (p2, 45, 600) (p3, 50, 750) (p4, 50, 1000) (p5, 50, 1200) (p6, 70, 1100) (p7, 85, 1400) (p8, 30, 2600) (p9, 25, 4000) (p10, 45, 3500) (p11, 50, 2750) (p12, 60, 2600)
Jacques Le Maitre
142
Arbres R
A. Guttman, 1984 Adaptation des arbres B+ aux objets multidimensionnels :
Bien adapts aux requtes de recherche des objets contenus dans une rgion de lespace.
Jacques Le Maitre
143
un identificateur, le plus petit rectangle qui le contient, appel rectangle englobant minimal.
objet
Les rectangles englobants minimaux sont regroups lintrieur de rectangles appels rectangles directeurs qui peuvent eux-mmes tre regroups au sein de rectangles directeurs. Un rectangle est dcrit par les coordonnes de son sommet en bas gauche et de son sommet en haut droite. Les rectangles peuvent se chevaucher. Une feuille de larbre est associe un rectangle directeur r qui contient k objets. Elle contient une liste de k paires (ri, idi) o ri est le rectangle englobant minimum dun objet contenu dans r et idi est lidentificateur de cet objet Un nud non terminal de larbre est associ un rectangle directeur r qui contient k rectangles directeurs. Il contient une liste de k paires (ri, pi) o ri est la description dun rectangle directeur contenu dans r et pi est le pointeur vers le nud associ au rectangle directeur ri. Soit m le nombre maximum de paires dans un nud :
la racine contient au moins deux paires, les autres nuds contiennent au moins m/2 paires.
Jacques Le Maitre
145
Jacques Le Maitre
146
si n est non terminal et si le rectangle directeur associ n recouvre partiellement R, on ritre lopration 2 sur chacun des nuds fils de n ; si n est une feuille, on recherche les objets contenus dans le rectangle directeur associ cette feuille dont les rectangles englobants sont contenus dans R.
Bases de donnes avances 147
Jacques Le Maitre
Exemple de recherche
4 3 1 2 6 A D B 5
Jacques Le Maitre
148
On calcule le rectangle englobant minimal r de lobjet insrer. Soit id lidentificateur de cet objet, la paire insrer est (r, id) On recherche partir de la racine, les rectangles qui peuvent contenir r :
3.
puis on rpte lopration 2, sur les rectangles fils du rectangle choisi. Lorsque lon atteint une feuille :
sil en existe plusieurs, on en choisit un ; sil nen existe pas, on tend un de ces rectangles, pour quil puisse contenir R (problme : lequel choisir ?),
si elle contient moins de m paires, on y insre la paire (r, id) sinon, on partage cette feuille en deux (problme : comment raliser ce partage ?) puis lon insre la paire (r, id) dans lune des 2 feuilles produites. Comme dans les arbres B+, ce dcoupage peut entraner le dcoupage des rectangles directeurs anctres.
Bases de donnes avances 149
Jacques Le Maitre
Problmes
On a intrt minimiser la surface de chaque rectangle directeur non occupe par des rectangles englobants minimaux. En consquence :
Lorsque plusieurs rectangles directeurs peuvent accueillir lobjet insrer on a intrt choisir celui qui ncessite le plus petit agrandissement. Lorsque lon partage un rectangle directeur r en deux rectangles r1 et r2, on a intrt rpartir les rectangles contenus dans r de telle faon ce que r1 et r2 aient une surface minimum. Malheureusement cette opration a un cot exponentiel en nombre de rectangles contenus dans r car il faut tester toutes les combinaisons possibles.
Bases de donnes avances 150
Jacques Le Maitre
cole
route 1 maison 1 r o u t e 2
maison 2 canalisation
Jacques Le Maitre
151
cole
ct
route 1 maison 1 r o u t e 2
maison 2 canalisation
Jacques Le Maitre
152
cole
ct
route 1 maison 1 r o u t e 2
Jacques Le Maitre
Index textuels
Rfrence bibliographique : R. Baeza-Yates, B. Ribeiro-Neto, Modern Information Retrieval, Addison Wesley, 2002, Chapter 8.
Objectifs
Recherche dun mot dans un ensemble de mots. Recherche dune sous-chane dans une chane. Recherche de documents dont le texte contient (ou non) certains mots.
Jacques Le Maitre
155
Chaque mot correspond une branche de larbre. Chaque arte est tiquete par une lettre.
Jacques Le Maitre
156
Trie
Jacques Le Maitre
157
Trie
b a bas bateau batte baume bauxite berge berger cap
Jacques Le Maitre
158
Trie
b a bas bateau batte baume bauxite berge berger cap
Jacques Le Maitre
159
Trie
b a bas bateau batte baume bauxite berge berger cap
Jacques Le Maitre
160
Trie
b a bas bateau batte baume bauxite berge berger cap
Jacques Le Maitre
161
Trie
b a bas bateau batte baume bauxite berge berger cap
Jacques Le Maitre
162
Trie
b a e bas bateau batte baume bauxite berge berger cap
Jacques Le Maitre
163
Trie
b a e bas bateau batte baume bauxite berge berger cap
Jacques Le Maitre
164
Trie
b c a e a bas bateau batte baume bauxite berge berger cap
Jacques Le Maitre
165
Applications
Oprations :
recherche dun mot et de linformation qui y est associe numration de tous les mots dont le prfixe est donn :
affichage dun mot complet ds que les premires lettres saisies lidentifient :
baux bauxite
Jacques Le Maitre
166
0 0 avion 1 corde
0 1
0 0 1
jouet
jumelles
Jacques Le Maitre
167
Jacques Le Maitre
168
0 1
0 0 1
jouet
jumelles
Jacques Le Maitre
169
0 1
0 0 1
jouet
jumelles
Jacques Le Maitre
170
0 0 1
jouet
jumelles
Jacques Le Maitre
171
0 0 avion 1 corde
0 1
0 0 1
jouet
jumelles
Jacques Le Maitre
172
Arbre PATRICIA
1
pierre
avion
corde
jouet
jumelles
Jacques Le Maitre
173
Ils permettent de reprsenter tous les suffixes dune chane de caractres. Par exemple, les suffixes du mot ananas sont :
Jacques Le Maitre
Exemple
a na s 5 nas 1 s 3 nas 2 na s 4 s 6 ananas 123456
Jacques Le Maitre
175
Oprations et performances
Jacques Le Maitre
176
Fichiers inverss
Les fichiers inverss sont un moyen rapide daccder certains enregistrements dune base de donnes partir dune valeur contenue dans un champ de cet enregistrement. Soit, par exemple un ensemble de livres dinformatique dont le sujet est dcrit par un ensemble de mots-cls : algorithmique, compilation, Java, rseaux , XML... On peut construire un fichier invers qui associe chaque mot-cl la liste (dite liste inverse) des numros de livre dont le domaine est dcrit par ce mot-cl. On pourra ainsi rpondre une question telle que :
en ralisant lintersection de la liste inverse associe au mot-cl base de donnes avec celle associe au mot-cl rseaux.
Jacques Le Maitre Bases de donnes avances 177
Mise en uvre
Soit N le nombre denregistrements. Une liste inverse peut-tre reprsente par une chane de N bits. La rponse une requte de la forme :
pourra tre obtenue trs rapidement en ralisant lintersection bit bit des listes inverses associes aux valeurs v1 et v2 du champ C. Dans un certain nombre de SGBD relationnel, les listes inverses peuvent tre implantes laide des index bitmap.
Bases de donnes avances 178
Jacques Le Maitre
Exemple
no_livre 1 2 3 4 mots-cls algorithmique, Java compilation XML, rseaux XML, Java mot-cl algorithmique XML compilation Java rseaux liste inverse 1000 0011 0100 1001 0010
requte Livres sur XML et les rseaux ? Livres sur Java ou la compilation Livres sur XML mais pas sur les rseaux ?
rponse 0011 & 0010 = 0010 = livre 3 1001 | 0010 = 1011 = livres 1, 3 et 4 0011 & ~0010 = 0001 = livre 4
Jacques Le Maitre
179
Rgles dassociation
Rgle dassociation
{x1, , xn} y
qui indique que si les objets x1, , xn appartiennent un ensemble E, alors y appartient aussi E.
Jacques Le Maitre
181
Contexte :
I est un ensemble ditems Une transaction t est un sous-ensemble de I Une base de donnes B est un ensemble de transactions. Si t est une transaction, on note :
Jacques Le Maitre
182
Exemple
Base de donnes Transaction T1 T2 T3 T4 Items {Farine, Lait, Sucre} {Chocolat, ufs, Sucre} {Chocolat, Farine, ufs, Sucre} {Chocolat, ufs, Th}
Jacques Le Maitre
183
Un ensemble ditems est frquent si son support est suprieur un seuil appel support_minimum. Une rgle dassociation est forte si sa confiance est suprieure un seuil appel confiance_minimum.
Bases de donnes avances 184
Jacques Le Maitre
Exemple
Base de donnes Transaction Items
T1
T2 T3 T4
Jacques Le Maitre
185
La dcouverte de rgles dassociation dans une base de donnes B est ralise en deux tapes :
1. 2.
Calculer lensemble L des ensembles frquents ditems. Pour chaque ensemble frquent ditems F de L, gnrer les rgles dassociation fortes X F X telle que X est un sous-ensemble non vide de F.
Jacques Le Maitre
186
Algorithme a priori
On appelle ensemble candidat un ensemble ditems candidat tre un ensemble frquent ditems. On note :
Jacques Le Maitre
187
Algorithme a priori
Proprit a priori :
Tout sous-ensemble dun ensemble frquent ditems doit tre un ensemble frquent ditems :
Si {a, b} est un ensemble frquent ditems, alors {a} et {b} doivent tre des ensembles frquents ditems.
On calcule itrativement L1, , Lk en gnrant partir de Li un ensemble Ci+1densembles candidats puis en retenant parmi ceux-ci ceux qui sont frquents. On suppose que lensemble des items est muni dune relation dordre. Un ensemble ditems {i1,..., in} est reprsent sous la forme dun ensemble ordonn selon cette relation.
Bases de donnes avances 188
Jacques Le Maitre
Algorithme a priori
L1 = ensemble des ensembles frquents de 1 item k=1 Tant que Lk nest pas vide
Gnrer lensemble des ensembles candidats Ck+1 partir de Lk Lk+1 = Pour chaque candidat c dans Ck+1
nb(c) = 0 Pour chaque transaction t Si c items(t) alors nb(c) = nb(c) + 1 Si nb(c) > support minimum alors Lk+1 = Lk+1 {c}
Bases de donnes avances
Jacques Le Maitre
189
Calcul de L1
L1 = Pour chaque item i de lensemble des transactions de B tel que support({i}) support_minimum :
L1 = L1 {c}
Jacques Le Maitre
190
Si [i1, i2, .., ik-1, ik] et [i1, i2, .., ik-1, ik+1] sont dans Lk alors :
Pourquoi ?
Si [i1, i2, .., ik-1, ik] Lk et [i1, i2, .., ik-1, ik+1] Lk cela signifie que [i1, i2, .., ik-1, ik+1] nest pas un ensemble frquent ditems et donc que [i1, i2, .., ik-1, ik, ik+1] ne lest pas non plus et donc quil ne faut pas lajouter Ck+1.
Jacques Le Maitre
191
Transaction
T1 T2 T3 T4
Items
{F, L, S} {C, O, S} {C, F, O, S} {C, O, T}
Jacques Le Maitre
192
Transaction
T1 T2 T3
Items
{F, L, S} {C, O, S} {C, F, O, S} L3 {{C, O, S}: 2}
T4
{C, O, T}
Confiance minimum = 50 %
Jacques Le Maitre Bases de donnes avances 193
En SQL
transaction id T1 T1 T1 T2 T2 T2 T3 T3 Lait Sucre Chocolat ufs Sucre Chocolat Farine item Farine
T3
T3 T4 T4 T4
Jacques Le Maitre
ufs
Sucre Chocolat ufs Th
194
En SQL
INSERT INTO candidat SELECT * FROM transaction WHERE item IN (SELECT item FROM transaction GROUP BY produit HAVING COUNT(*) >= support_minimum SELECT i.item, j.item, COUNT(*) FROM candidat i, candidat j WHERE i.id = j.id i.item < j.item GROUP BY i.item, j.item HAVING COUNT(*) >= support_minimum
Jacques Le Maitre Bases de donnes avances 195
Supermarch :
1 000 000 transactions 10 000 items 20 items / transaction 20 000 000 lignes dans la table transaction 190 paires ditems par panier 190 000 000 de paires ditems grouper puis compter
Bases de donnes avances 196
Soit :
Jacques Le Maitre