Vous êtes sur la page 1sur 196

Bases de donnes avances

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

Architecture 3/3 pour le Web


(1) Navigateur
prsentation

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

Bases de donnes avances

Architecture pair pair (P2P)


pair
pair requte pair pair

rponse pair

pair

Jacques Le Maitre

Bases de donnes avances

Du relationnel lobjet relationnel


Rfrence : Jim Melton, Advanced SQL:1999 Understanding ObjectRelational and Other Advanced Features, Morgan Kaufmann Publishers, 2003.

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

Bases de donnes avances

Atouts du modle relationnel


Un modle simple pour lutilisateur


Un modle formellement bien fond

BD = ensemble de tables

Une mthode de conception de schma


algbre implantation et optimisation calcul BD logique

Un langage de manipulation de donnes universel Un modle de transactions sr


SQL srialisabilit et verrouillage 2 phases

normalisation

Des SGBD commerciaux ou libres performants

Access, DB2, Oracle, MySQL, PostgreSQL, SQL Server, Sybase

Jacques Le Maitre

Bases de donnes avances

Limites du modle relationnel

Structures de donnes limites :

table ensemble de n-uplets de valeurs atomiques (nombres, chanes de caractres)

Oprations sur les donnes exclues du modle Smantique insuffisante

Jacques Le Maitre

Bases de donnes avances

10

Exemple

BD dcrivant un ensemble de personnes. Chaque personne a :


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

Une solution : lapproche objet

Principaux concepts :

objet classe hritage polymorphisme persistance

Jacques Le Maitre

Bases de donnes avances

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

Bases de donnes avances

13

SGBD objets purs

Un standard dfini par lODMG (Object Data Management Group) :


ODL langage de dfinition de donnes OQL langage de requtes la SQL

Des prototypes :

GemStone, O2, ObjectStore

Inconvnients :

complexes implanter peu compatibles avec les SGBD relationnels


Bases de donnes avances 14

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.

Une nouvelle version de SQL :

Disponible partiellement sur DB2, Oracle, PostgreSQL, SQL Server, Sybase


Bases de donnes avances 15

Jacques Le Maitre

SQL:1999
Types distincts Types utilisateurs (UDT)

Tables types Hritage :

hirarchie de types hirarchie de tables

Mthodes associes aux UDT

Jacques Le Maitre

Bases de donnes avances

16

SQL:1999 : types distincts


CREATE TYPE taille AS INTEGER FINAL; CREATE TYPE poids AS INTEGER FINAL;

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

Bases de donnes avances

17

SQL:1999 : types dfinis par lutilisateur (UDT)


CREATE TYPE adresse AS ( rue ROW( nom CHARACTER VARYING(35), type CHARACTER VARYING(35)), ville CHARACTER VARYING(35), cp CHARACTER(5)) NOT FINAL; CREATE TABLE personnes AS ( nom CHARACTER VARYING(35), adr adresse); SELECT p.nom, p.adr.rue.nom FROM personnes p;
Jacques Le Maitre Bases de donnes avances 18

SQL:1999 : tables types


CREATE TYPE film AS ( titre CHARACTER VARYING(100), description CHARACTER VARYING(100), dure INTEGER) INSTANTIABLE NOT FINAL REF IS SYSTEM GENERATED INSTANCE METHOD note() RETURNS DECIMAL(2,1); CREATE TYPE acteur AS ( nom CHARACTER VARYING(100), role CHARACTER VARYING(100), film REF(film)) INSTANTIABLE NOT FINAL REF IS SYSTEM GENERATED;
Jacques Le Maitre Bases de donnes avances 19

SQL:1999 : tables types


CREATE TABLE films OF film (REF IS id_film SYSTEM GENERATED); CREATE TABLE acteurs OF acteur (REF IS id_acteur SYSTEM GENERATED film WITH OPTIONS SCOPE films); CREATE TABLE films_courts OF film (REF IS id_film SYSTEM GENERATED duree WITH OPTIONS CONSTRAINT CHECK (dure < 90));

Jacques Le Maitre

Bases de donnes avances

20

SQL:1999 : tables types


SELECT film->dure FROM acteurs WHERE acteur.nom = 'Audrey Tautou'; SELECT film->note() FROM acteurs WHERE acteur.nom = 'Audrey Tautou'; SELECT DEREF(film) FROM acteurs WHERE acteur.nom = 'Audrey Tautou';

Jacques Le Maitre

Bases de donnes avances

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

Bases de donnes avances

22

Etude de cas : PostgreSQL

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

Bases de donnes avances

23

Types composites : dfinition


CREATE TYPE adresse AS ( rue text, ville text, cp integer); CREATE TABLE personne ( nom text PRIMARY KEY, prenom text[], adr_perso adresse, adr_pro adresse); INSERT INTO personne VALUES ('Dupont', ARRAY ['Jean', 'Robert'], ROW ('rue des Amandiers', 'Toulon', 83100), ROW ('rue des Mimosas', 'Marseille', 13009));
Jacques Le Maitre Bases de donnes avances 24

Types composites : accs


SELECT (adr_pro).ville FROM personne WHERE nom = 'Dupont'; SELECT (p.adr_pro).ville FROM personne p WHERE p.nom='Dupont'; SELECT nom, prenom[1] FROM personne p WHERE (p.adr_perso).ville = 'Toulon';

Jacques Le Maitre

Bases de donnes avances

25

Types composites : modification


UPDATE personne SET adr_perso = ROW ('rue des Mimosas', 'Marseille', 13009) WHERE nom = 'Dupont'; UPDATE personne SET adr_pro.ville = 'Toulon', adr_pro.cp = 83100 WHERE nom = 'Dupont';

Jacques Le Maitre

Bases de donnes avances

26

Fonctions : dfinition et appel


CREATE FUNCTION no_dept(adresse) RETURNS integer AS 'SELECT $1.cp / 1000' LANGUAGE SQL; SELECT nom, no_dept((p).adr_perso) FROM personne p;

Jacques Le Maitre

Bases de donnes avances

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

Bases de donnes avances

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

Bases de donnes avances

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

Bases de donnes avances

30

Types gomtriques
Points Segments de droite Bote (x, y) ((x1, y1), (x2, y2)) ((x1, y1), (x2, y2))

Chemins
Polygones Cercle
Jacques Le Maitre

((x1, y1), ..., (xn, yn))


Chemin ferm ((x, y), r)
Bases de donnes avances 31

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

Bases de donnes avances

32

Types gomtriques
INSERT INTO rectangle VALUES ('R1', '((3, 2), (8, 5))'); INSERT INTO rectangle VALUES ('R2', '((6, 4), (9, 6))');
C1

INSERT INTO cercle VALUES ('C1', '<(4, 9), 2>');


R1

R2

SELECT nom FROM figure;

Jacques Le Maitre

Bases de donnes avances

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

Bases de donnes avances

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

Bases de donnes avances

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

Bases de donnes avances

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

Une donne est un fragment dune BD :

Jacques Le Maitre

Bases de donnes avances

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

Bases de donnes avances

40

Exemple de transaction
T start read A A = A - S write A

read A
B = B + S write B commit

Jacques Le Maitre

Bases de donnes avances

41

Proprits dune transaction

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

Bases de donnes avances

42

Problmes dus la concurrence


perte de mise jour, lecture impropre :

lecture de donnes incohrentes, lecture de donnes non confirmes,

lecture non reproductible, objets fantmes.

Jacques Le Maitre

Bases de donnes avances

43

Perte de mise a jour


T1 T2 BD A = 10

read A
read A A = A + 10 write A A = A + 50 write A A = 60 A = 20

Jacques Le Maitre

Bases de donnes avances

44

Lecture impropre (donnes incohrentes)


T1 T2 BD A + B = 200 A = 120 B = 80 read A A = A - 50 write A read A read B display A + B (150 est affich) read B B = B + 50 write B
Jacques Le Maitre

A = 70

B = 130
Bases de donnes avances 45

Lecture impropre (donnes non confirmes)


T1 T2 BD A = 50

A = 70
write A read A (70 est lu) rollback (La valeur initiale de A est restaure) A = 50 A= 70

Jacques Le Maitre

Bases de donnes avances

46

Lecture non reproductible


T1 T2 BD A = 10

read A (10 est lu)


A = 20 write A read A (20 est lu) A = 20

Jacques Le Maitre

Bases de donnes avances

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 :

une telle excution est dite srialisable.


Bases de donnes avances

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

Exemple dexcution srialisable


T1 T2 T1 read A write A read A read B write A write B read B write B r1(A) w1(A) r2(A) r1(B) w2(A) w1(B) r2(B) w2(B) read B write B read A T2

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

Bases de donnes avances

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

Cette excution nest pas srialisable !


Jacques Le Maitre Bases de donnes avances 53

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.

cela conduit la dfinition de modes de verrouillage.


Bases de donnes avances

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

Bases de donnes avances

55

Modes de verrouillage

Deux modes sont toujours dfinis :

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

Bases de donnes avances

56

Matrice de compatibilit

MC

S
X

oui

non

non non

Jacques Le Maitre

Bases de donnes avances

57

Oprations de verrouillage

Opration lock m D unlock D

Signification demande dun verrou en mode m sur la donne D dverrouillage dune donne D

Jacques Le Maitre

Bases de donnes avances

58

Verrouillage deux phases

Une transaction est bien forme si :


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.

Lordre de srialisation est celui des instants dacquisition du dernier verrou.


Bases de donnes avances

En consquence il ne peut y avoir ni pertes de mise jour, ni lectures impropres, ni lectures non reproductibles.

Jacques Le Maitre

59

Plus de perte de mise jour


T1 lock X A read A lock X A A = A + 10 write A attente attente A = 20 T2 BD A = 10

unlock A

attente
read A A = A + 50 write A unlock A A = 70

Jacques Le Maitre

Bases de donnes avances

60

Plus de lecture non reproductible


T1 T2 lock S A read A (10 est lu) lock X A attente read A (10 est lu) unlock A A = 20 BD A = 10

attente A = 20 write A

Jacques Le Maitre

Bases de donnes avances

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

Bases de donnes avances

62

Rsolution de linterblocage

Prvention

On vite les verrous mortels :

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

Bases de donnes avances

63

Verrouillage granularit multiple


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

Bases de donnes avances

65

Modes de verrouillage intensionnels

Trois modes de verrouillage sont rajouts :

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

Bases de donnes avances

66

Rgles de verrouillage intensionnel

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

non non non


oui non

non non non non non non

non non non non non

Jacques Le Maitre

Bases de donnes avances

68

Justification

Soit un objet o contenu dans un objet O.

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

Bases de donnes avances

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

Bases de donnes avances

70

Verrouillage en mode SIX

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

Bases de donnes avances

71

Objets fantmes : le problme


T1 SELECT COUNT(*) FROM livre WHERE annee = 2003; (rponse n) SELECT COUNT(*) FROM livre WHERE annee = 2003; (rponse n + 1) T2 INSERT INTO livre VALUES ("Les BD", 2003);

Jacques Le Maitre

Bases de donnes avances

72

Objets fantmes : une solution


T1 LOCK IS livre SELECT COUNT(*) FROM livre l (Verrouillage de l en S) WHERE l.annee = 2003; (rponse n) SELECT COUNT(*) FROM livres l (verrouillage de l en S) WHERE l.annee = 2003; (rponse n) COMMIT T2 LOCK X livres attente attente attente attente attente attente INSERT INTO livres VALUES ("Les BD", 2003);

Jacques Le Maitre

Bases de donnes avances

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

Mode dexcution dune transaction

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.

READ UNCOMMITED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE

Jacques Le Maitre

Bases de donnes avances

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

SERIALIZABLE (par dfaut)


Jacques Le Maitre

Bases de donnes avances

78

Une mise en place des niveaux disolation (1)

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.

Soit T la transaction considre.

Jacques Le Maitre

Bases de donnes avances

79

Une mise en place des niveaux disolation (2)

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

Une mise en place des niveaux disolation (3)

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

Points de reprise : exemple


start "voyage"; res = reservation_train("Toulon", "Paris"); if (res = "erreur") rollback; savepoint 1; res = reservation_train("Paris", "Londres"); if (res = "erreur") rollback point 1; savepoint 2; res = reservation_htel("Londres"); if (res = "erreur") rollback point 2; savepoint 3; commit

Jacques Le Maitre

Bases de donnes avances

83

Etude de cas : PostgreSQL


Le systme de gestion de transactions est trs semblable celui dOracle. Il a t conu pour que les lecteurs ne soient pas bloqus par les crivains et que les crivains ne soient pas bloqus par les lecteurs. Ceci est obtenu par le mcanisme de contrle de concurrence multiversions.

Jacques Le Maitre

Bases de donnes avances

84

Contrle de concurrence multiversions

Le contrle de concurrence multiversions assure que :

Toute demande de lecture dune transaction est satisfaite :

Une transaction T peut tre confirme sil ny a pas dautre transaction qui, la fois :

elle a accs la valeur la plus rcemment confirme de objet.

Ainsi :

Dans le cas contraire, elle est abandonne.

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

Bases de donnes avances

85

Contrle de concurrence multiversions : exemple


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

Bases de donnes avances

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] ;

PostgreSQL offre les deux modes daccs :


READ ONLY, READ WRITE (par dfaut).

Jacques Le Maitre

Bases de donnes avances

87

Niveaux disolation

PostgreSQL noffre que deux niveaux disolation


READ COMMITTED (par dfaut, contrairement la norme SQL) SERIALIZABLE

En consquence, si dans la clause ISOLATION LEVEL des commande SET TRANSACTION ou BEGIN on spcifie :

READ UNCOMMITED ou READ COMMITED :

REPEATABLE READ ou SERIALIZABLE :

la transaction sera excute au niveau READ COMMITED,


la transaction sera excute au niveau SERIALIZABLE.

Attention !

Si une transaction est excute au niveau READ COMMITED, alors :

Si une transaction est excute au niveau SERIALIZABLE, alors :

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

Bases de donnes avances

88

Une table pour les exemples

K I
1 un 2 deux 3 trois

Jacques Le Maitre

Bases de donnes avances

89

Niveau disolation READ COMMITED


T1 T2 BEGIN; SELECT * FROM T WHERE K = 2; (2, deux) BEGIN; UPDATE T SET I = 'two' WHERE K = 2; COMMIT; la mise jour est effectue SELECT * FROM T WHERE K = 2; (2, two) COMMIT;

Les lectures ne sont pas reproductibles !

Jacques Le Maitre

Bases de donnes avances

90

Niveau disolation READ COMMITED


T1 T2 BEGIN; SELECT COUNT(*) FROM T; 3 BEGIN; INSERT INTO T VALUES (4, 'quatre') COMMIT; linsertion est effectue SELECT COUNT(*) FROM T; 4 COMMIT;

Il y a une ligne fantme !

Jacques Le Maitre

Bases de donnes avances

91

Niveau disolation SERIALIZABLE


T1 T2 BEGIN ISOLATION LEVEL SERIALIZABLE; SELECT * FROM T WHERE K = 2; (2, deux) BEGIN; UPDATE T SET I = 'two' WHERE K = 2; COMMIT; la mise jour est effectue SELECT * FROM T WHERE K = 2; (2, deux) COMMIT

Les lectures sont reproductibles !

Jacques Le Maitre

Bases de donnes avances

92

Niveau disolation SERIALIZABLE


T1 T2 BEGIN ISOLATION LEVEL SERIALIZABLE; SELECT COUNT(*) FROM T; 3 BEGIN; INSERT INTO T VALUES (4, quatre) COMMIT; linsertion est effectue

SELECT COUNT(*) FROM T; 3 COMMIT

Il ny a plus de ligne fantme !

Jacques Le Maitre

Bases de donnes avances

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 :

un verrouillage de table, un verrouillage de lignes.

Jacques Le Maitre

Bases de donnes avances

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 UPDATE EXCLUSIVE

SHARE

SHARE ROW EXCLUSIVE EXCLUSIVE ACCESS EXCLUSIVE


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

Bases de donnes avances

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

SELECT ... FOR UPDATE

verrouille en mode exclusif les lignes slectionnes par SELECT


peut-tre utilis pour viter que des lignes slectionnes soient modifies par une autre transcation. mme comportement, mais le verrouillage des lignes slectionnes est ralis en mode partag, ce qui bloque :

SELECT ... FOR SHARE

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 :

elle est dite distribue.


Comment abandonner ou confirmer une transaction distribue ? Comment assurer la srialisabilit des transactions distribues ?
Bases de donnes avances 99

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

Bases de donnes avances

100

Confirmation deux phases (Two-Phase Commit)


Soit T une transaction distribue sur n sites et dcompose en n transactions locales T1, , Tn. Un des sites sur lequel est excute T joue le rle de coordinateur.

Jacques Le Maitre

Bases de donnes avances

101

1re phase

Le coordinateur dcide dessayer de confirmer la transaction :


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

Bases de donnes avances

103

Panne dun site


Si un des sites, non coordinateur, tombe en panne on fixe un dlai de rponse qui, sil est dpass est quivalent un message dabandon. Si le coordinateur tombe en panne : cest plus grave ! Sans rponse de lui au bout dun certain temps, on doit abandonner latomicit de T.

Jacques Le Maitre

Bases de donnes avances

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,

alors les transactions globales sont srialisables.


Jacques Le Maitre Bases de donnes avances 105

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

Accs par parcours darbre :


arbres k-dimensionnel (kd-trees) arbres quadrants (quadtrees) arbres R (R trees) Grid files hachage partitionn

Accs par hachage


Jacques Le Maitre

Bases de donnes avances

107

Dimensions

Dimensions spatiales

abscisse, ordonne et lvation dun point de lespace


on ajoute une 4e dimension : le temps,

Dimensions spatio-temporelles

Plus gnralement, tout attribue dune relation peut-tre vue comme une dimension.

Par exemple, dans la relation : personne(id, ge, salaire)

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 :

la valeur de chaque dimension est spcifie.


seules les valeurs de certaines dimensions sont spcifies. les intervalles auxquels doivent appartenir les valeurs de certaines dimensions sont spcifis.

Requtes partielles :

Requtes par intervalle

Requtes de localisation spatiale :

on recherche les objets contenus dans une ceratine rgion de lespace.

...
Jacques Le Maitre Bases de donnes avances 109

Arbres k-dimensionnels (kd-trees)

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

Insertion dun enregistrement

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

Bases de donnes avances

113

Larbre obtenu
p1, 25, 600 p2, 45, 600 ge

Jacques Le Maitre

Bases de donnes avances

114

Larbre obtenu
p1, 25, 600 p2, 45, 600 ge salaire p3, 50, 750

Jacques Le Maitre

Bases de donnes avances

115

Larbre obtenu
p1, 25, 600 p2, 45, 600 ge salaire p3, 50, 750 p4, 50, 1000 ge

Jacques Le Maitre

Bases de donnes avances

116

Larbre obtenu
p1, 25, 600 p2, 45, 600 ge salaire p3, 50, 750 p4, 50, 1000 ge

salaire

p5, 50, 1200

Jacques Le Maitre

Bases de donnes avances

117

Larbre obtenu
p1, 25, 600 p2, 45, 600 ge salaire p3, 50, 750 p4, 50, 1000 p6, 70, 1100 ge

salaire

p5, 50, 1200

Jacques Le Maitre

Bases de donnes avances

118

Larbre obtenu
p1, 25, 600 p2, 45, 600 ge salaire p3, 50, 750 p4, 50, 1000 p6, 70, 1100 ge

salaire

p5, 50, 1200

p7, 85, 1400

Jacques Le Maitre

Bases de donnes avances

119

Larbre obtenu
p1, 25, 600 p2, 45, 600 ge salaire p3, 50, 750 p4, 50, 1000 p6, 70, 1100 ge

salaire

p5, 50, 1200 p8, 30, 2600

p7, 85, 1400

ge

Jacques Le Maitre

Bases de donnes avances

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

p5, 50, 1200 p8, 30, 2600

p7, 85, 1400

ge

Jacques Le Maitre

Bases de donnes avances

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

p5, 50, 1200 p8, 30, 2600 p10, 45, 3500

p7, 85, 1400

ge

salaire

Jacques Le Maitre

Bases de donnes avances

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

p5, 50, 1200 p8, 30, 2600 p10, 45, 3500

p7, 85, 1400

ge

salaire ge

p11, 50, 2750


Jacques Le Maitre Bases de donnes avances 123

Larbre obtenu
p1, 25, 600 p2, 45, 600 ge p9, 25, 4000 salaire p3, 50, 750 p4, 50, 1000 p6, 70, 1100 ge

salaire

p5, 50, 1200 p8, 30, 2600 p10, 45, 3500

p7, 85, 1400

ge

p12, 60, 2600

salaire ge

p11, 50, 2750


Jacques Le Maitre Bases de donnes avances 124

Arbres k-dimensionnels pour BD


Les feuilles sont des blocs disque. Une feuille peut contenir n enregistrements au maximum. Les dimensions sont numrotes de 0 k 1 ainsi que les niveaux dans larbre de lindex. Chaque nud interne de lindex de niveau i est tiquet par une valeur v prise dans la dimension i modulo k.

Jacques Le Maitre Bases de donnes avances 125

Insertion dun enregistrement


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 :

Lorsque lon atteint une feuille F, deux cas sont possibles :


1.

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

Partage dune feuille

Le partage dune feuille F de niveau i est ralis de la faon suivante :


1. 2.

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

enregistrements de F dont la valeur pour la dimension i modulo k est vm


F
Jacques Le Maitre

enregistrements de F dont la valeur pour la dimension i modulo k est > vm


F

Bases de donnes avances

127

Larbre obtenu

47,5

ge

1600

1050

salaire

p1, p2
F1

p8, p9, p10 F4

p3, p4
F2

60

ge

p5, p11, p12 F3

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

Bases de donnes avances

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

Bases de donnes avances

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

Bases de donnes avances

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

Bases de donnes avances

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

Bases de donnes avances

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

Bases de donnes avances

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

Bases de donnes avances

134

Sa construction (6)

47,5

ge

p1, p2, p8 F1 p3, p4

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

Bases de donnes avances

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

Bases de donnes avances

136

Sa construction (8)

47,5

ge

1600

1050

salaire

p1, p2 F1

p8, p9, p10 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

Bases de donnes avances

137

Sa construction (9)

47,5

ge

1600

1050

salaire

p1, p2
F1

p8, p9, p10 F4

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

Bases de donnes avances

138

Sa construction (10)

47,5

ge

1600

1050

salaire

p1, p2
F1

p8, p9, p10 F4

p3, p4
F3

60

ge

p5, p11, p12 F2

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

Bases de donnes avances

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

F2 {p5, p11, p12}

1050 F4 {p8, p9, p10}

F3 {p3, p4}

47,5

60

ge

Jacques Le Maitre

Bases de donnes avances

Requtes partielles
Employs ayant un salaire de 2600 ?

47,5

ge

1600

1050

salaire

p1, p2 F1

p8, p9, p10 F2

p3, p4 F3

60

ge

p5, p11, p12 F4

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

Bases de donnes avances

141

Requtes par intervalles


Employs gs de 50 60 ans ayant un salaire de plus 1500 ?

47,5

ge

1600

1050

salaire

p1, p2 F1

p8, p9, p10 F2

p3, p4 F3

60

ge

p5, p11, p12 F4

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

Bases de donnes avances

142

Arbres R
A. Guttman, 1984 Adaptation des arbres B+ aux objets multidimensionnels :

larbre de lindex est quilibr contrairement aux arbres k-dimensionnels.

Bien adapts aux requtes de recherche des objets contenus dans une rgion de lespace.

Jacques Le Maitre

Bases de donnes avances

143

Identification dun objet gomtrique

Un objet gomtrique est repr par :


un identificateur, le plus petit rectangle qui le contient, appel rectangle englobant minimal.

objet

rectangle englobant minimum


Jacques Le Maitre Bases de donnes avances 144

Structure dun arbre R 2 dimensions


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 :

Un arbre R est quilibr.

la racine contient au moins deux paires, les autres nuds contiennent au moins m/2 paires.

Jacques Le Maitre

Bases de donnes avances

145

Structure dun arbre R 2 dimensions


rectangles directeurs 4 3 1 2 6 A D B 5

Jacques Le Maitre

Bases de donnes avances

146

Recherche des objets contenus dans un rectangle R


1. 2.

On se place sur la racine de larbre. Soit n le nud courant :

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

Bases de donnes avances

148

Insertion dun objet


1. 2.

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

Construction dun arbre R (1)


route1, route2, maison 1, maison 2, canalisation, cole

cole

route 1 maison 1 r o u t e 2

maison 2 canalisation

Jacques Le Maitre

Bases de donnes avances

151

Construction dun arbre R (2)


((0, 0), (28, 10)) ((14, 4), (50, 16))

route1, route2, maison 1

maison 2, canalisation, cole, cabine

cole

ct

route 1 maison 1 r o u t e 2

maison 2 canalisation

Jacques Le Maitre

Bases de donnes avances

152

Construction dun arbre R (3)


((0, 0), (41, 10)) ((14, 4), (50, 16))

route1, route2, maison 1, maison 3

maison 2, canalisation, cole, cabine

cole

ct

route 1 maison 1 r o u t e 2

maison 2 canalisation maison 3


153

Jacques Le Maitre

Bases de donnes avances

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

Bases de donnes avances

155

Tries ou arbres prfixe


Le mot trie vient de retrieval. Un trie est un arbre qui reprsente un ensembles de mots :

ceux dun dictionnaire par exemple.

Chaque mot correspond une branche de larbre. Chaque arte est tiquete par une lettre.

Jacques Le Maitre

Bases de donnes avances

156

Trie

bas bateau batte baume bauxite berge berger cap

Jacques Le Maitre

Bases de donnes avances

157

Trie
b a bas bateau batte baume bauxite berge berger cap

Jacques Le Maitre

Bases de donnes avances

158

Trie
b a bas bateau batte baume bauxite berge berger cap

Jacques Le Maitre

Bases de donnes avances

159

Trie
b a bas bateau batte baume bauxite berge berger cap

Jacques Le Maitre

Bases de donnes avances

160

Trie
b a bas bateau batte baume bauxite berge berger cap

Jacques Le Maitre

Bases de donnes avances

161

Trie
b a bas bateau batte baume bauxite berge berger cap

Jacques Le Maitre

Bases de donnes avances

162

Trie
b a e bas bateau batte baume bauxite berge berger cap

Jacques Le Maitre

Bases de donnes avances

163

Trie
b a e bas bateau batte baume bauxite berge berger cap

Jacques Le Maitre

Bases de donnes avances

164

Trie
b c a e a bas bateau batte baume bauxite berge berger cap

Jacques Le Maitre

Bases de donnes avances

165

Applications

Oprations :

recherche dun mot et de linformation qui y est associe numration de tous les mots dont le prfixe est donn :

ber berge, berger

affichage dun mot complet ds que les premires lettres saisies lidentifient :

baux bauxite

Jacques Le Maitre

Bases de donnes avances

166

Trie binaire (1)


0 1 pierre 0 1

0 0 avion 1 corde

0 1

jumelles jouet pierre corde avion

0101010101 0101001111 1000001001 0001101111 0000110110

0 0 1

jouet

jumelles

Jacques Le Maitre

Bases de donnes avances

167

Trie binaire (2)


jumelles

jumelles jouet pierre corde avion

0101010101 0101001111 1000001001 0001101111 0000110110

Jacques Le Maitre

Bases de donnes avances

168

Trie binaire (3)


0 1

0 1

jumelles jouet pierre corde avion

0101010101 0101001111 1000001001 0001101111 0000110110

0 0 1

jouet

jumelles

Jacques Le Maitre

Bases de donnes avances

169

Trie binaire (4)


0 1 pierre 1

0 1

jumelles jouet pierre corde avion

0101010101 0101001111 1000001001 0001101111 0000110110

0 0 1

jouet

jumelles

Jacques Le Maitre

Bases de donnes avances

170

Trie binaire (5)


0 1 pierre 0 corde 0 1 1

jumelles jouet pierre corde avion

0101010101 0101001111 1000001001 0001101111 0000110110

0 0 1

jouet

jumelles

Jacques Le Maitre

Bases de donnes avances

171

Trie binaire (6)


0 1 pierre 0 1

0 0 avion 1 corde

0 1

jumelles jouet pierre corde avion

0101010101 0101001111 1000001001 0001101111 0000110110

0 0 1

jouet

jumelles

Jacques Le Maitre

Bases de donnes avances

172

Arbre PATRICIA
1

pierre

jumelles jouet pierre corde avion

0101010101 0101001111 1000001001 0001101111 0000110110

avion

corde

jouet

jumelles

Jacques Le Maitre

Bases de donnes avances

173

Arbre des suffixes


Ils permettent de reprsenter tous les suffixes dune chane de caractres. Par exemple, les suffixes du mot ananas sont :

Bien adapts la recherche dune souschane


Bases de donnes avances 174

ananas nanas anas nas as s

Jacques Le Maitre

Exemple
a na s 5 nas 1 s 3 nas 2 na s 4 s 6 ananas 123456

Jacques Le Maitre

Bases de donnes avances

175

Oprations et performances

Soit n la longueur de la chane.


Construction de larbre en O(nlogn) Recherche dune sous-chane de longueur m en O(m).

Jacques Le Maitre

Bases de donnes avances

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 :

Quels sont les livres sur XML et les rseaux ?

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

Quels sont les enregistrements dont le champ C contient les valeurs v1 et v2 ?

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

Bases de donnes avances

179

Rgles dassociation

Rgle dassociation

Une rgle dassociation est une rgle de la forme :

{x1, , xn} y

qui indique que si les objets x1, , xn appartiennent un ensemble E, alors y appartient aussi E.

Jacques Le Maitre

Bases de donnes avances

181

Dcouverte de rgles dassociation

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 :

id(t) : lidentifiant de t, items(t) : lensemble des items de t.

Jacques Le Maitre

Bases de donnes avances

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

Bases de donnes avances

183

Dcouverte de rgles dassociation

Soit X et Y des ensembles ditems dune base de donnes B :


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

support(X) = card({ t | X items(t)}) / card(B) confiance(X Y) = support(X Y) / support(X)

Jacques Le Maitre

Exemple
Base de donnes Transaction Items

T1
T2 T3 T4

{Farine, Lait, Sucre}


{Chocolat, ufs, Sucre} {Chocolat, Farine, ufs, Sucre} {Chocolat, ufs, Th}

support({Farine, Sucre}) = 2 / 4 = 50% confiance(Farine Sucre) = 2 / 2 = 100%

Jacques Le Maitre

Bases de donnes avances

185

Dcouverte de rgles dassociation

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

Bases de donnes avances

186

Algorithme a priori
On appelle ensemble candidat un ensemble ditems candidat tre un ensemble frquent ditems. On note :

Lk : ensemble densembles frquents de k items Ck : ensemble densembles candidats de k items

Jacques Le Maitre

Bases de donnes avances

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

Bases de donnes avances

190

Gnration de Ck+1 partir de Lk

Si [i1, i2, .., ik-1, ik] et [i1, i2, .., ik-1, ik+1] sont dans Lk alors :

Pourquoi ?

[i1, i2, .., ik-1, ik, ik+1] est ajout Ck+1

Ck+1 peut tre obtenu par jointure de Lk par lui-mme.


Bases de donnes avances

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

Calcul des ensembles ditems frquents


C1 L1 Base de donnes C2 C2 L2 C3 C3 L3 {{C}:3, {F}:2, {L}:1, {O}:3, {S}:3, {T}:1} {{C}:3, {F}:2, {O}:3, {S}:3} {{C, F}, {C, O}, {C, S}, {F, O}, {F, S}, {O, S}} {{C, F}: 1, {C, O}: 3, {C, S}: 2, {F, O}: 1, {F, S}: 2, {O, S}: 2} {{C, O}:3, {C, S}:2, {F, S}:2, {O, S}:2} {{C, O, S}} {{C, O, S}: 2} {{C, O, S}: 2}

Transaction
T1 T2 T3 T4

Items
{F, L, S} {C, O, S} {C, F, O, S} {C, O, T}

Support minimum = 50 % = 2 transactions

Jacques Le Maitre

Bases de donnes avances

192

Gnration des rgles dassociation


L1 L2 Base de donnes {{C}:3, {F}:2, {O}:3, {S}:3} {{C, O}:3, {C, S}:2, {F, S}:2, {O, S}:2} CO:1 OC:1 C S : 2/3 S C : 2/3 FS:1 S F : 2/3 O S : 2/3 S O : 2/3 {C, O} S {C, S} O {O, S} C C {O, S} O {C, S} S {C, O} : 2/3 :1 :1 : 2/3 : 2/3 : 2/3

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

Bases de donnes avances

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

Des donnes trs volumineuses

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

Vous aimerez peut-être aussi