Академический Документы
Профессиональный Документы
Культура Документы
Bases de données
• Conception de bases de données
• Modèle Relationnel
• SQL
• JDBC
• Transaction, Optimisation
• Sécurité
•…
http://www-smis.inria.fr/~bouganim/afti
3 4
Problèmes
Consultations Psychiatrie
Problèmes Problèmes
Difficultés de gestion Difficultés de gestion
Incohérence des données
ComptaSoft
ComptaSoft
Dupont Dupond Dupont Dupond
ChiruSoft
ChiruSoft
Symptomes : y
Turlututu : sqj
Turlututusqjsk
Symptom: yyyy
Analyses xxxx
plusieurs langages Symptomes : y
Turlututu : sqj
Turlututusqjsk
Symptom: yyyy
Analyses xxxx
plusieurs langages
Symptomes : y Symptomes : y
Turlututu : sdd Turlututudhjsd Turlututu : sdd Turlututudhjsd
Analyses : xxx Analyses :xx
Redondance de données Analyses : xxx Analyses :xx
Redondance de données
Pas de facilité d’interrogation Pas de facilité d’interrogation
Question ⇒développement Question ⇒développement
Redondance de code
Problèmes Problèmes
Difficultés de gestion Difficultés de gestion
Incohérence des données Incohérence des données
Coûts élevés Coûts élevés
Maintenance difficile Maintenance difficile
ConsultSoft
ConsultSoft
PsychiaSoft
PsychiaSoft
Duhpon Duipont
Turlututu : sq
Duhpon Duipont
Turlututu : sq
Gestion de pannes ???
Symptomes : yy Symptomyyyy Symptomes : yy Symptomyyyy
Analyses : xxxx Analysesxxxx Analyses : xxxx Analysesxxxx
ComptaSoft
Dupont Dupond Dupont Dupond
ChiruSoft
ChiruSoft
Symptomes : y
Turlututu : sqj
Turlututusqjsk
Symptom: yyyy
Analyses xxxx
plusieurs langages Symptomes : y
Turlututu : sqj
Turlututusqjsk
Symptom: yyyy
Analyses xxxx
plusieurs langages
Symptomes : y Symptomes : y
Turlututu : sdd Turlututudhjsd Turlututu : sdd Turlututudhjsd
Analyses : xxx Analyses :xx
Redondance de données Analyses : xxx Analyses :xx
Redondance de données
Pas de facilité d’interrogation Pas de facilité d’interrogation
Question ⇒développement Question ⇒développement
Problèmes Problèmes
Difficultés de gestion Difficultés de gestion
Incohérence des données Incohérence des données
Coûts élevés Coûts élevés
Maintenance difficile Maintenance difficile
ConsultSoft
ConsultSoft
PsychiaSoft
PsychiaSoft
Duhpon Duipont
Turlututu : sq
Gestion de pannes ??? Duhpon Duipont
Turlututu : sq
Gestion de pannes ???
Symptomes : yy
Analyses : xxxx
Symptomyyyy
Analysesxxxx Partage des données ??? Symptomes : yy
Analyses : xxxx
Symptomyyyy
Analysesxxxx Partage des données ???
Symptomes : yy Turlututudhjsd Symptomes : yy Turlututudhjsd
Confidentialité ???
L’approche ‘‘Bases de données’’ (1)
13
L’approche ‘‘Bases de données’’ (2) 14
• Logiciel «Système de Gestion de Bases de Données» VII - Gestion des V - Optimisation des
questions
Factorisation des modules de contrôle des applications pannes
16
Modélisation du réel
Réel
Conception de bases de données
• Indépendant du
Modèle modèle de données
• Indépendant du
conceptuel SGBD Médecin effectue Visite
• Dépendant du
Modèle modèle de données
Codasyl Relationnel Objet XML
• Indépendant du
logique SGBD
19 20
23 24
27 28
Comment produire le MCD ? (3/3) Cas pratique : Gérer les notes des étudiants
31 32
35 36
Règles (6) : Dépendance pleine des entités Règles (7): entités et associations
• Les propriétés d’une association doivent dépendre de • 2 entités ne peuvent être directement liées : Il faut une
la totalité des entités associées. Si certaines propriétés association ! Cependant
ne dépendent que d’un sous ensemble des entités, on – Une association peut ne pas avoir de « nom »
devra • Il est des fois difficile à trouver…
– les rattacher à une des entités – Une association peut ne pas avoir de propriété
– créer une nouvelle association • C’est un cas très fréquent
enseigne
associant ce sous ensemble Heure
Prof Groupe
Salle Enseigne
Prof Groupe
Heure
• Exemple:
1/ Un prof enseigne toujours ?
dans la même salle dans prof Cours Salle
2/ La salle dépend du prof et
Cours
du cours Nouvelle association entre prof et cours
39
– Données : 1,n
• Etudiants, Matières, Notes 1,n
• TypeDeNotes, Periodes, Profs, Groupes, etc... Groupe 1,n Profs
Code
1,n
Nom
Prénom
Adresse
46
Le modèle relationnel
• En 1970, Codd, mathématicien, chercheur chez IBM,
propose le Modèle Relationnel, basé sur le concept de
Relation de la théorie des ensembles
Le modèle relationnel
A Relational Model of Data for Large Shared Data Banks,
CACM 13, No. 6, June 1970
47 48
• ATTRIBUT
– nom donné à une colonne d'une relation
Tuples, lignes ou
– prend ses valeurs dans un domaine n-uplets
51 52
Patients Patients
Id-P Nom Prénom Ville Médicaments Id-P Nom Prénom Ville Médicaments
1 Lebeau Jacques Paris Id-M Nom Description 1 Lebeau Jacques Paris Id-M Nom Description
2 Troger Zoe Evry 1 Aspegic 1000 …………………………….. 2 Troger Zoe Evry 1 Aspegic 1000 ……………………………..
3 Doe John Paris 2 Fluisédal …………………………….. 3 Doe John Paris 2 Fluisédal ……………………………..
4 Perry Paule Valenton 3 Mucomyst …………………………….. 4 Perry Paule Valenton 3 Mucomyst ……………………………..
…. ……. ……. ……. …. …….. …………………………….. …. ……. ……. ……. …. …….. ……………………………..
55 56
Patients
Id-P Nom Prénom Ville Médicaments • En souligné : clés primaires
1 Lebeau Jacques Paris Id-M Nom Description
2 Troger Zoe Evry 1 Aspegic 1000 …………………………….. • En italiques : clés étrangères
3 Doe John Paris 2 Fluisédal ……………………………..
3 Mucomyst ……………………………..
• ¨Il faudrait indiquer les types (domaines) de chaque attribut
4 Perry Paule Valenton
…. ……. ……. ……. …. …….. ……………………………..
57 58
59 60
Exemple 2 Exemple 3
Profs
• Un prof enseigne un et un seul Profs
• Un prof enseigne un ou
Cours Cours
Nom 1,1 Enseigne
0,1 cours Nom 1,n Enseigne
1,1 plusieurs cours
NomCours NomCours
Prénom NbreHeures Prénom NbreHeures
Description Description
Adresse
• Un cours est enseigné par un Adresse
• Un cours est enseigné par un et
prof ou n’est pas enseigné un seul prof
Nom Prénom Adresse NomCours Description NbreHeures Nom Prénom Adresse NomCours Description NbreHeures
Solution 1 Bouganim Luc Paris Info Informatique 44 Solution 1 Bouganim Luc Paris Info Informatique 20
Crenn Isabelle Paris Math Mathématiques 78 Crenn Isabelle Paris Math Mathématique 48
Droit Droit Crenn Isabelle Paris Droit Droit 26
Solution 2 Solution 2
Nom NomCours Description NbreHeures
Nom Prénom Adresse NomCours NbreHeures NomCours Description Nom Prénom Adresse
Bouganim Luc Paris Bouganim Info Informatique 20
Bouganim Luc Paris Info 44 Info Informatique
Crenn Isabelle Paris Math 78 Math Mathématiques Crenn Isabelle Paris Crenn Math Mathématique 48
Droit Droit Crenn Droit Droit 26
< def_contrainte_table > ::= CONSTRAINT nom_contrainte < L'association d'un nom à une contrainte est optionnelle. Ce nom peut être utilisé pour
UNIQUE (liste_colonnes) | référencer la contrainte (ex: messages d'erreurs).
PRIMARY KEY (liste_colonnes) |
CHECK (condition) | • Exercice 1
FOREIGN KEY (liste_colonnes) REFERENCES nom_table (liste_colonnes)> – Donnez l’expression SQL de la création des tables DOC et DET
Index, modification du schéma Insertion de données
• Création d’index
– CREATE [UNIQUE] INDEX [nom_index] ON nom_table (<nom_colonne> * );
• Suppression INSERT INTO < nom_table >
– DROP TABLE <nom_table>
– DROP INDEX <nom_index> [( attribute [,attribute] … )]
• Modification {VALUES (<value spec.> [, <value spec.>] … ) |
– ALTER TABLE <nom_table> ADD COLUMN <def_colonne>
– ALTER TABLE <nom_table> ADD CONSTRAINT <def_contrainte_table > <query specification>} ;
– ALTER TABLE <nom_table> ALTER <def_colonne>
– ALTER TABLE <nom_table> DROP COLUMN <nom_colonne>
– ALTER TABLE <nom_table> DROP CONSTRAINT <nom_contrainte > • Exemples :
• Exemples – INSERT INTO DOC VALUES (1, ‘Dupont’, ‘Paris’);
– CREATE INDEX Index_date_RDV ON RDV (DateRDV) ; – INSERT INTO DOC (NumDoc, NomDoc) VALUES (2, ‘Toto’);
– ALTER TABLE RDV ADD COLUMN Commentaires varchar(300); – INSERT INTO PAT (NumPat, NomPat, VillePat)
– ALTER TABLE RDV ADD CONSTRAINT PK PrimaryKey(NumRdv); SELECT NumDoc, NomDoc, VilleDoc FROM DOC;
– ALTER TABLE RDV ALTER Motif CONSTRAINT MotifNN NOT NULL;
• Exercices 2
– Créez un index sur le nom du docteur • Exercices 3
– Supprimez l’attribut Motif de la table RDV – Insérez un ensemble cohérent de tuples dans chaque table (1 par table)
– Ajoutez une contrainte de clé primaire à la table MED (sur NumMed)
Exemple Correction 2
NumOrd NumLig NumMed Qté
Créez un index sur le nom du docteur
1 1 23 2
CREATE INDEX Index_nom_docteur ON DOC (NomDoc) ;
1 2 67 5
1 3 24 7
2 1 19 1 Supprimez l’attribut Motif de la table RDV
2 2 128 1
ALTER TABLE RDV
3 1 12 3
DROP COLUMN Motif;
4 1 11 6
4 2 3 1
4 3 7 2 Ajoutez une contrainte de clé primaire à la table MED (sur NumMed)
75
Correction 3
Insérez un ensemble cohérent de tuples dans chaque table (1 par table)
I - Indépendance Physique
78
79 80
2
Aspegic 1000
Fluisédal
……………………………..
……………………………..
30
20
1
2
2
3
1
4
15 juin
1 mars
250
250
…. …. …. …………
réécriture des applications :
Patients
3
….
Mucomyst
……..
……………………………..
……………………………..
230
…..
Id -P
1
2
Lebeau
Troger
Nom Prénom
Jacques
Zoe
Id -M
1
Nom
Médicament
Aspegic 1000
Description
……………………………..
– ajout de champs, ajout de relation, renommage de champs.
…. ……. ……. 2 Fluisédal ……………………………..
3 Mucomyst ……………………………..
…. …….. ……………………………..
Patients
Id-P Nom Prénom Médicament
1 Lebeau Jacques Id-M Nom Description
2 Troger Zoe 1 Aspegic 1000 ……………………………..
3 Doe John 2 Fluisédal ……………………………..
4 Perry Paule 3 M ucomyst ……………………………..
…. … …. ……. …. …….. ……………………………..
81 82
83 84
• Patients parisiens ayant effectués une visite le 15 juin • Dépenses effectuées par patient trié par ordre décroissant
87 88
σ
Utilisation de l’algèbre relationnelle 1 Lebeau Jacques Paris 1 Lebeau Jacques Paris
2 Troger Zoe Evry 2 Troger Zoe Evry
3 Doe John Paris 3 Doe John Paris
• Optimisation automatique des questions 4 Perry Paule Valenton 4 Perry Paule Valenton
Utilisation de l’aspect déclaratif de SQL
Gestion centralisée des chemins d'accès (index, hachages, …)
Techniques d’optimisation poussées Patients de la ville de Paris
91 92
Projection Jointure
Patients Visites
Id-P Nom Prénom Ville Id-D Id-P Id-V Date Prix
Patients Patients 1 Lebeau Jacques Paris 1 2 1 15 juin 250
Id-P Nom Prénom Ville Id-P Nom Prénom Ville 2 Troger Zoe Evry 1 1 2 12 août 180
π
1 Lebeau Jacques Paris 1 Lebeau Jacques Paris 3 Doe John Paris 2 2 3 13 juillet 350
2 Troger Zoe Evry 2 Troger Zoe Evry 4 Perry Paule Valenton 2 3 4 1 mars 250
π
Select Patients.Nom, Patients.Prénom π π
From Patients, Visites
σ
Where Patients.Id-P = Visites.Id-P
and
and
Patients.Ville = ’Paris’
Visites.Date = ’15 juin’
σ π π
σ σ
Patients Visites Patients Visites
Patients Visites
95 96
99 100
Contraintes d’intégrité : Remarques finales Déclencheurs : Définition
• Contraintes supportées (exemple d’Oracle) • Définition : Déclencheurs ou Triggers
– Les contraintes faisant intervenir un ou plusieurs attributs – Règle E – C – A : Évènement – Condition – Action
d’une seule table et d’un seul tuple
– Contraintes d’intégrité référentielles avec cascade
Lorsque l’évènement se produit
• Mécanisme puissant : – Insert / Update / Delete pour une relation donnée
– Exemple : supprimer les patients n’ayant pas consulté depuis si la condition est remplie
2 ans – Prédicat SQL optionnel
Docteurs Visites Prescriptions
alors exécuter l’action
– Code à exécuter (ex. PLSQL sous Oracle)
– Pour chaque tuple concerné ou une fois pour l’évènement
Patients Médicaments
101 102
– créer un audit de la base de données insert | delete | update [of <attributs>] Quel est l’évènement déclencheur
– dériver des données additionnelles on <relation> indique le nom de la table qui doit être surveillée
[referencing old as <var>, new as <var>] en SQL3, Oracle utilise :new et :old
– maintenir des règles d’intégrité complexes
for each row Précise si l’action est exécuté 1 fois par tuple concerné ou pour toute la table
– implanter des règles métier
[when <condition>] permet d ’indiquer une condition pour l’exécution du trigger
– supporter des alertes (envoi de e-mails par exemple)
DECLARE Déclaration de variables pour le bloc PL/SQL
– simplification du code des applications <PL/SQL bloc> Dans SLQ3, on peut indiquer une suite de commande SQL
103 104
107 108
ATOMICITE DURABILITE
BD
Panne
Begin Begin
CEpargne = CEpargne - 3000 CEpargne = CEpargne - 3000
CCourant = CCourant + 3000 CCourant = CCourant + 3000
Commit T1 Commit T1
Crash disque
BD • Deux niveaux :
– Connexion restreinte aux usagers répertoriés (mot de passe)
– Privilèges d'accès aux objets de la base
111 112
SQL
SQL
Source 1 : Source 2 :
SGBD serveur Web
SGBD 1 SGBD 2
code données code données
code données code données
115 116
Applications traditionnelles
Applications des SGBD (1)
des SGBD
• Challenges majeurs
– Gérer la mobilité
– S’adapter aux contraintes matérielles du calculateur hôte
– Assurer la durabilité des données
– Assurer la confidentialité des données
127 128
Correction 5 Correction 6
• Docteurs ayant le même nom que leur patient NomDoc • Nom des docteurs ayant au moins un RDV pour une grippe NomDoc
SELECT DISTINCT D.NomDoc
SELECT DISTINCT D.NomDoc FROM DOC D, RDV R
FROM PAT P, RDV R, DOC D
WHERE R.NumDoc = D.NumDoc AND R.Motif LIKE “grippe”;
WHERE P.NumPat = R.NumPat AND R.NumDoc = D.NumDoc
AND P.NomPat = D.NomDoc;
SELECT D.NomDoc FROM DOC D WHERE D.NumDoc IN
• Nom des médicaments prescrits le 25/12/2006 NomMed (SELECT R.NumDoc FROM RDV R WHERE R.Motif LIKE “grippe”):
SELECT DISTINCT M.NomMed
FROM MED M, DET D, ORD O SELECT D.NomDoc FROM DOC D WHERE EXISTS
WHERE M.NumMed = D.NumMed AND D.NumOrd = O.NumOrd (SELECT * FROM RDV R WHERE R.NumDoc = D.NumDoc
AND O.Date = #25/12/2006# ; AND R.Motif LIKE “grippe”):
• Nom des docteurs ayant un RDV pour un motif commençant par ‘grippe’ NomDoc
SELECT DISTINCT D.NomDoc
FROM RDV R, DOC D • Nom des patients qui n'ont jamais eu de rendez-vous NomPAT
WHERE R.NumDoc = D.NumDoc
AND R.Motif LIKE “grippe%”; SELECT P.NomPat FROM PAT P WHERE P.NumPat NOT IN
(SELECT R.NumPat FROM RDV R )
• Liste des quantité distinctes prescrites du médicament Bubol Qté
SELECT DISTINCT D.Qté
FROM MED M, DET D SELECT P.NomPat FROM PAT P WHERE NOT EXISTS
WHERE M.NumMed = D.NumMed (SELECT * FROM RDV R WHERE P.NumPat = R.NumPat)
AND M.NomMed LIKE “Bubol”;
129
132
3. GROUP BY XXX
XXX
Constitue les partitions YYY
(e.g., tri sur l’intitulé du groupe) ZZZ [ALL] permet de conserver les doublons dans le résultat d'une union
4. HAVING XXX
XXX
AGG1
ZZZ AGG3
135 136
• Patients qui sont aussi médecins Access SQL Server 2000 Oracle8
SELECT NomPat PatMed FROM PAT INTERSECT SELECT NomMed PatMed FROM MED
GROUP BY Y Y Y
• Patients qui ne sont pas médecins
HAVING Y Y Y
SELECT NomPat Patient FROM PAT EXCEPT SELECT NomMed Patient FROM MED
UNION Y Y Y
INTERSECT N N Y
EXERCICES 10
• Numéro des médicaments jamais prescrits EXCEPT N N Y (MINUS)
• Villes mentionnées dans la base
• Villes où il y a au moins un docteur mais aucun patient
• Villes où il y a au moins un docteur et au moins un patient
138
139
Correction 10
• Nom des médicaments jamais prescrits
SELECT NomMED FROM MED WHERE NumMED not in
(SELECT NumMed FROM DET)
Java
Serveur Oracle COMM
Client PL/SQL
Execute COMM
Moteur Serveur
BD
PL/SQL SQL
Résultat exécution
Serveur Oracle
• Exécution serveur (envoie de procédure anonyme)
COMM
Client PL/SQL – Stocké comme un objet base de données
Moteur Serveur
BD • Le créateur à les droits d’exécuter, modifier, re-compiler la procédure
PL/SQL SQL
Résultat exécution • Partage les droits avec d’autres (GRANT/REVOKE EXECUTE)
Serveur Oracle
146
L’API JDBC
API de communication à un SGBD (Java DataBase Connectivity)
• SQL-CLI (Call Level Interface)
– API standardisée par X/Open depuis 1994, intégrée dans SQL3 • Permet de simplifier l’accès à une BD depuis Java
– Permet de se connecter et d’envoyer des requêtes SQL à tout serveur (évite l’utilisation de code natif)
SQL, quel que soit son type, sa localisation, le mode de connexion ...
• Popularisé par des médiateurs tels que : • JDBC fournit un ensemble de classes et d’interfaces
– ODBC (Open DataBase Connectivity) pour l’utilisation d’un ou plusieurs SGBD à partir d’un
• API assez complexe programme Java
• interface C (nécessite l’utilisation de code natif)
– JDBC (Java DataBase Connectivity) • Intérêts de JDBC
• vue “objet” des mêmes concepts que ODBC – interface uniforme pour accéder à un SGBD
• un pont JDBC-ODBC existe
– indépendant du SGBD cible
• L’interface standard (API) assure la portabilité des – simplicité de mise en œuvre
applications et donne la possibilité de communiquer avec des
– supportant les fonctionnalités de base de SQL
SGBD divers
148
151 152
155 156
SQL statiques) prennent en paramètre une chaîne de caractères • La méthode executeUpdate retourne le nombre
représentant la requête à exécuter
– de tuples affectés dans le cas d’un LMD
• Exemple (INSERT/DELETE/IPDATE…)
import java.sql.*;
public class ObjetUtilisantJDBC – 0 dans le cas d’un LDD (CREATE…)
{
public static void main(String[] Args)
{
– Exemple
// ... Etapes précedentes...
req1.executeUpdate("CREATE TABLE contact (nom VARCHAR(50), tel CHAR(10))"); // ... Etapes précedentes...
req1.executeUpdate("INSERT INTO contact VALUES (’dupond’, ’0102030405’)"); int nbTuples = req1.executeUpdate("UPDATE contact " +
} "SET nom = ’dupont’ " +
} "WHERE nom = ’dupond’");
Accès aux résultats 157
Accès aux résultats 158
• Les valeurs des attributs sont obtenues grâce aux méthodes getXXX( ) • Valeurs nulles (NULL de SQL)
– Paramètre = numéro/nom de colonne dans le résultat – Testé grâce à la méthode wasNull de ResultSet
• wasNull est appelée après la lecture de la valeur
• Exemple
(après l’utilisation d’une méthode getXXX)
// ... – Les méthodes getXXX convertissent les valeurs NULL de SQL en
ResultSet rs = req1.executeQuery("SELECT * FROM contact");
while(rs.next()) { une valeur acceptable pour le type Java cible
String nom = rs.getString("nom"); // ou String nom = rs.getString(1);
String tel = rs.getString("tel"); // ou String nom = rs.getString(2);
// ...
}
159 160
163 164
Requête précompilée Requête précompilée
(paramétrage) (exécution)
• Avant d’exécuter la requête fixer les paramètres
• Grâce aux mêmes méthodes que pour des requêtes
(remplacent les ‘?’ par une valeur dans la chaîne)
fixes, mais sans argument
– Grâce aux méthodes setXXX
(où XXX représente un type de données Java) – ExcuteQuery/executeUpdate
– NB: setNull fixe le paramètre à la valeur NULL de SQL – NB: l’instruction contient déjà la requête à exécuter…
– Premier argument = numéro d’ordre du ‘?’ à remplacer • Exemple
– Deuxième argument = valeur de remplacement
// ...
String req = "UPDATE repertoire SET tel = ? WHERE nom = ?";
• Exemple PreparedStatement updateTel = con.prepareStatement(req);
updateTel.setString(1, "0908070605");
updateTel.setString(2, "durand");
updateTel.executeUpdate();
// ... updateTel.setString(1, "0900000000");
String req = "UPDATE contact SET tel = ? WHERE nom = ?"; updateTel.executeUpdate();
PreparedStatement UpdateTel = con.prepareStatement(req); // ...
UpdateTel.setString(1, "0908070605");
UpdateTel.setString(2, "durand");
// ...
165
Transactions 166
Procédures stockées
(portée)
• L’interface CallableStatement permet d’invoquer une procédure • Rappel = une transaction permet d’exécuter un ensemble de
stockée requêtes sur une BD, la faisant passer d’un état cohérent à un
– NB: la procédure est stockée au niveau du SGBD… autre état cohérant, respectant les propriétés transactionnelles
– … la création se faisant avec la méthode prepareCall de Connection (ACID)
• Par défaut, la connexion JDBC est en mode chaîné
// ...
CallableStatement cs = c.prepareCall("{call nom_procedure_stockee}");
– chaque requête est suivie d’un ordre SQL « commit » implicite
// ...
• On peut désactiver ce mode
– soit lors de la création de la connexion // ...
c.setAutoCommit(false);
• La syntaxe de l’appel de procédure (call ...) est traduit par le – soit grâce à la méthode setAutoCommit // ...
driver JDBC dans la syntaxe native du SGBD
• L’exécution de l’instruction se fait de façon classique en – La validation doit alors se faire
fonction de ce que retourne la procédure explicitement par la méthode commit… // ...
c.commit();
// ...
• L’interface CallableStatement est sous-interface de – … et l’annulation se fait grâce à c.rollback();
PreparedStatement et accepte donc des paramètres la méthode rollback // ...
171 172
PAT (P)
175 176
• Une question
Select
• Plusieurs expressions
From équivalentes en SQL
Where • Plusieurs expressions
équivalentes en algèbre
• Plusieurs algorithmes
algébriques équivalents
Requête SQL Arbre logique Arbre
Coût
Physique
Sophie
Martin
Felix
Alon
• Objectif de l’optimiseur : trouver le meilleur plan …
• Donnant les résultats le + vite …. Adam Ben Gil Karine Nicole Théo
• Optimisation pour le temps de réponse (response time) Alain Claire Hilda Martin Paul Tom
Felix Jean Sophie Zoe
• Minimisant la consommation de ressources
• Optimisation du travail total (Total work)
• Minimisant le temps de délivrance des premiers tuples • Attention :
• Optimisation de la latence (Latency / First tuples …) • Surcoût lors des mises à jour !
• Des fois un accès par index est plus coûteux !
181 182
π
From Patients, Visites
• accélère l'exécution des sélections et des jointures Where Patients.Id-P = Visites.Id-P
and Patients.Ville = ’Paris’
π
• ralentit l'exécution des mises à jour et des insertions
and Visites.Date = ’15 juin’
• offre des informations statistiques à l'optimiseur
• permet le contrôle efficace de contraintes d'intégrité
π
• Nested loop Join : Jointures par boucle imbriquées
• Pour chaque visite, parcourir les patients
Jointure
• Index Join : Utilisation d’index sur une des relations
• Nested Loop Join ?
• Pour chaque visite, retrouver le patient grâce à l’index
• Index Join ?
• Hash Join ?
• Sort Merge Join
π π
• Sort Merge Join ?
• Trier les visites sur le N° de patient
• Trier les patients sur le N° de patient
• Fusionner les deux tables triées (jointure ‘à deux doigts’)
σ σ
Sélection
• FTS (Full Table Scan) ? • Hash Join
• Index Scan (B+tree) ? • Hacher les patients sur le N° de patient
• Index Scan (Bitmap) ? • Pour chaque visite, calculer la valeur de hachage et chercher
dans la table de hachage le patient correspondant
Patients Visites
185 186
187 188
Difficultés de l’optimisation basée coût Les statistiques
• Difficulté pour estimer le coût de chaque opérateur • Personnes ayant 2 véhicules et un salaire entre 2 et K4 K€? 3% ? Non !
• Difficulté encore plus importantes pour estimer la taille des résultats En fait, 14%
intermédiaires (permettant de calculer l’opérateur suivant)
• Propagation exponentielle des erreurs (dans l’arbre d’exécution) ! 15%
Utilisation de statistiques re-calculés fréquemment. 20%
3. Qualité de l’administration
• Qualité des traces ou indicateurs générés par le système
• Qualité des outils d'aide à l'administration
• Qualité de l’administrateur !
191 192
Oracle : Automatic SQL Tuning Database Tunning Advisor (SQL Server 2005)
• Propriétés/Dispositifs à régler
DTA
• Les différentes contraintes
• Configuration partielle (du DBA) Conception physique
• Contrainte de stockage recommandée
• Contrainte de temps
Automatic Tuning Optimizer
Analyse des
Statistiques
SQL Profiling Analyse des
chemins d’accès
Analyse des
structures SQL
• La sortie
• Schéma physique recommandé + index et vues matérialisées
• Recommandation partitionnement des tables, vues, index…
193 194
195
2. Gestion de transactions Les propriétés ACID
199 200
Exécution sans contrôle Protocole de Verrouillage à 2 Phases
verrous
• Absence de contrôle Scénario 2 – Perte d’opérations T
• Perte d’opérations
T1 (Joe) T2 (banque) Lecture Ecriture
• Observation d’incohérence Lecture
• Introduction d’incohérence Begin temps Ecriture
• Lectures non reproductibles Lire CC x
Begin
Lire CC x • Règle 1 : verrouillage
• Mécanisme de verrouillage x = x + 500 • Avant d'accèder à une donnée D, une transaction doit acquérir un
• Verrou en lecture : partagé
Ecrire X CC verrou sur D. Si D est déjà verrouillé dans un mode non
Commit T2 compatible, la transaction attend.
• Verrou en écriture : exclusif x = x –200
Ecrire X CC
• Règle 2 : deux phases
Commit T1 • Dès qu'une transaction relâche un verrou, elle ne peut plus acquérir
• Protocole de verrouillage ? de nouveau verrou
• Verrouillage 2 phases stricts
temps
• Les verrous sont gardés jusqu’au commit
201 202
• L'objectif, en termes de performances, est de réduire : • Objectif: accroître le parallélisme en autorisant certaines
• les blocages : une transaction est bloquée en attente d’un verrou transactions à violer la règle d'isolation
• les inter-blocages : un ensemble de transactions s’attendent • Degrés standardisés SQL2 (Set Transaction Isolation Level)
mutuellement
• Degré 0 (Read Uncommitted)
T1 T2 • Lecture de données sales – Interdiction d’écrire.
• Ex. lecture sans verrouillage
• Degré 1 (Read Committed)
• Lecture de données propres – Ecritures autorisées
• Solutions existantes T3 T4 • Ex. Verrous court en lecture, long en écriture
• Degrés d’isolation
• Degré 2 (Repeatable Read)
• Protocoles multiversions • Pas de lecture non reproductible
• Modification des données / programmes • Ex. Verrous longs en lecture et en écriture
• Degré 3 (Serializable)
• Pas de requête non reproductible (fantôme)
203 204
Degrés d'isolation SQL : exemples Protocoles multiversions (Oracle)
T1(°0, Read uncommited) T2(°3,serializable) T1(°1, Read commited) T2(°3,serializable) • Objectif : faire cohabiter sans blocage des transactions
Begin Begin Begin Begin conflictuelles en les faisant travailler sur différentes
versions des données
Lit CC ( 100) Lit CC ( 100)
Lit CC ( 100) Lit CC ( 100)
Ecrire CC, CC+10 Ecrire CC, CC+10 T1(°1, Read commited) T2(°3,serializable) T1 (°3, serializable) T2(°3,serializable)
Lit CC ( 110) Lit CC ( bloque) Begin Begin Begin Begin
Ecrire CC, CC+20 Ecrire CC, CC+20 Lit CC ( 100)(V1) Lit CC ( 100)(V1)
Lit CC ( 130) Commit Lit CC ( 100)(v1) Lit CC ( 100)(v1)
Commit ( 130) Ecrire CC, CC+10 (V2) Ecrire CC, CC+10 (V2)
Lit CC ( 100)(V1) Lit CC ( 100)(V1)
Ecrire CC, CC+20 (V2) Ecrire CC, CC+20 (V2)
Commit Commit
T1(°2, Repeatable read) T2(°3,serializable) T1(°2, Repeatable read) T2(°3,serializable) Lit CC ( 130)(V2) Lit CC ( 100)(V1)
Begin
Begin Begin Select count(*) from Voit
T1 (°1 Read commited) T2(°3,serializable) T1 (°3, serializable) T2(°3,serializable)
Lit CC ( 100) where couleur="rouge"
Begin Begin Begin Begin
Lit CC ( 100) Begin
Lit CC ( 100)(V1) Lit CC ( 100)(V1)
Ecrire CC, CC+10 Insert into Voit
bloque Lit CC ( 100) (v1) Lit CC ( 100)(v1)
Lit CC ( 100) values (R4, "rouge")
Ecrire CC, CC+10 (V2) Ecrire CC, CC+10 (V2)
Commit
Ecrire CC, CC-50 (V?) Ecrire CC, CC-50 (V?)
Lit CC ( 100) Select count(*) from Voit bloque bloque
Ecrire CC, CC+20 (V2) Ecrire CC, CC+20 (V2)
Commit where couleur="rouge"
Commit Commit
Ecrire CC, CC+20 Commit
Eciture faite (CC = 80) Erreur !
205 206
• Scénario 4 : Les places de la finale de la coupe du • Scénario 1 : Compte Joe : lecture / écriture
monde sont mises en vente sur Internet le lundi à 8h Multiversion + degré Repeatable read ou Read Commited
• Une seule donnée Trop de conflits • Scénario 2 : Compte Joe : écriture / écriture
• Exemple de solution : Conflit inévitable quelque soit la méthode
• Idée : partitionner le stade : • Scénario 3 : lectures massives / écritures (supermarché)
• Chaque utilisateur se connectant est Multiversion + degré Read Commited (peu de versions)
aléatoirement dirigé vers 1 des partitions. • Scénario 4 : écritures massives (coupe du monde)
• Le degré de parallélisme est multiplié par le
Partitionnement du stade
nombre de partitions.
• Scénario 5 : réservations SNCF (lectures puis écritures)
Phase de choix en multiversion – Read Commited
• Scénario 5 : Réservation SNCF (choix puis achat)
Phase d’achat en multiversion – Repeatable read
• Si verrouillage dès le début, beaucoup de conflits
• Sinon, risque de perdre la place convoitée
Il est donc particulièrement important de maîtriser les
• C’est le deuxième choix qui est implanté …
degrés d’isolations et les notions transactionnelles.
207 208
3. Sécurité des BD, Droits d'accès
• Objectif :
3. Sécurité des BD, Droits d'accès • protéger les données de la base contre des accès non autorisés
• Mécanismes simples et puissants
• Connexion restreinte aux usagers répertoriés (mot de passe)
• Privilèges d'accès aux objets de la base (relation, vue, etc.)
• Repose sur la sécurité de l’architecture (de bout en bout)
BD
Serveur
Utilisateur BD
210
211 212
Besoins de confidentialité (3) ? Curious of someone life ?
213 21
4
« The data within the report is compiled from thousands of different sources
that include government, property, and other public record repositories. » 21 216
5
T1 : Identification/authentification Attaques du mécanisme d’authentification
217 218
BD BD
• Technologie éprouvée (ex: SSL) • Contrôle d’accès très sophistiqué dans les SGBD
• Assure la confidentialité des messages • Autorisations affectées à des utilisateurs, groupes ou rôles
• Techniques cryptographiques complémentaires • Peut porter sur des objets d’une granularité très variée : tables,
vues,
• Hachage unidirectionnel (ex: SHA) : intégrité des messages
procédures stockées …
• Signature (ex: via PKI) : authentification et non répudiation du
message • Ne résiste pas à une attaque sur les fichiers du serveur
ou à une attaque du DBA !
• Nécessaire mais clairement insuffisant !! • Nécessaire mais insuffisant !!
219 220
Droits d'accès : Syntaxe de base et rôles Droits d'accès : droits sur les vues
• Rôles (SQL3):
• Create role <nom_role> : Création d’un nouveau rôle
• Drop role <nom_role> : Suppression d’un rôle
Id-E Nom Prénom Poste Adresse Ville Salaire
• Les instructions Grant et Revoke s’appliquent sur des rôles Service des 1 Ricks Jim 5485 ………. Paris 230
• Grant <liste roles> to (<usager>*) : Affectation de rôles aux usagers ressources 2 Trock Jack 1254 ………. Versailles 120
221 222
223 224
Confidentialité via les vues Bases de données privées virtuelles (VPD)
Principe : Restreindre l'accès à la BD en distribuant Principe : Rajouter des conditions aux requêtes
es droits via des vues : utilisateur
Requête Q Requête Q
sur des vues
OK
Résultat Résultat
Vérification
des droits
OK Contexte
Requête Q’
Gestionnaire Requête Q’ Exécution Complétée en
de Vues sur les relations de procédure fonction du
de base contexte
Définition des Procédure de
Vues rajout de
+ condition
Droits Exécution de Exécution de
associés requête requête
225 226
227 228
Oracle Obfuscation Toolkit Protegrity Secure.Data
BD
• Fourniture d’un « package » permettant le chiffrement /
déchiffrement de données SGBD
Utilisateur +
Secure Clés
• Problèmes : Server Utilisateurs
Privilèges
• Gestion et partage de clés à la charge de l’application Secure
• Solution basée sur 2 modules :
• Système non résistant à un pirate administrateur Manager
• Secure.Manager : gestion des utilisateurs, droits et clés
• Les packages peuvent être substitués,
• Secure.Server : module de chiffrement intégré au noyau SGBD
• Les données apparaissent en clair lors de l’exécution des
• … et 2 personnes physiques différentes …
requêtes
• Database Administrator (DBA) / Security Administrator (SA)
229 230
231 23
2
Cryptography: the characters Passive attacks Active attacks
MARVIN MARVIN
Decryption
Encryption
– Marvin captures a message and sent it to Bob several times
Repudiation
– Alice sends a message to Bob and denies having sent this message
m c c m
ALICE BOB
Destruction
– Marvin destroys selectively some messages sent to Bob
Delays / reordering
– Marvin introduces communication delays or reorders messages
MARVIN
23 23
5 6
Kerckhoffs' principle
In 1883, the most famous work by Auguste Kerckhoffs was
published: La Cryptographie Militaire (military cryptography).
This book set forth desiderata for encryption systems…
23 23
7 8
Decryption
c = EK(m) m = DK(c)
= DK(EK(m))
MARVIN
23 24
9 0
Attacking a symmetric cipher (2) Attacking an simple alphabetic substitution
• Example : • Assume a random alphabetic substitution such as
Caesar cipher (used for military purposes by
Julius Caesar)
Plaintext: attackatonce
Ciphertext: exxegoexsrgi
Very easy to attack !
• Can we easily retrieve the
key (i.e., the table) knowing
a ciphertext ?
• Given the small number of possible
shifts (26), the key can be found in 13
operations, in average… (NB: French message)
24 24
1 2
In French In French
In French
Conclusion
24 24
3 4
(3) Using some common words (4) and more common words…
soulent L V
dommes D H
ehuipage H Q
aleatros E B
mompagnons M C
etc.
24 24
5 6
• Computational security
“A proposed technique is said to be computationally secure if the perceived
level of computation required to defeat it (using the best attack known)
exceeds, by a comfortable margin, the computational resources of the
hypothesized adversary.” [Menezes]
NO!
25 25
1 2
Encryption mode: Electronic Code Book-ECB Triple DES encryption with CBC mode …
EK (P1) EK (P2)
25 25
3 4
EK (IV ⊕ P1) EK (C1 ⊕ P2) EK (…) • Ex. The counter mode by tes
0 8 16
Cipher-text 1 (C1) Cipher-text 2 (C2) … Plain-text 1 (P1) Plain-text 2 (P2) …
+1 +2 +3
EK (IV+1) ⊕ P1 EK (IV+2) ⊕ P2
Public key Private key • Alice & Bob have the key • Alice uses the public key (Bob’s
KPub (bob) KPriv (bob) address) to send a message to Bob
• Alice use the key to deposit a
message into the safe • Bobs uses his private key (the
Encryption
Decryption
mailbox key) to retrieve the message
• Bob use the key to retrieve the
m c c m message from the safe
ALICE BOB
Only Alice & Bob can exchange Anyone can send a message to Bob
messages (his address being public)
c = EKPub(m) m = DKPriv(c)
Only Bob can retrieve the messages
= DKPriv(EKPub(m))
MARVIN 25 25
7 8
The RSA asymmetric cipher [Rivest - Shamir - Adleman 78] Hybrid encryption
• Security: difficulty of factoring large numbers • Combines the advantages of both encryption methods
Performance (symmetric)
• Algorithm No shared secret (asymmetric) – anyone can send a message to Bob !
Pick two large random primes p and q
Let N = p × q Public key Private key
Pick a large integer d relatively prime to (p-1)×(q-1) KPub (bob) KPriv (bob)
Find the integer e such that e*d = 1 (mod (p-1)×(q-1))
(Public) Encryption key is (e, N): C = M e (mod N)
Decryption key is (d, N): M = C d (mod N) – d must be kept secret!
RSA
RSA
• Performance Ks K’ s K’ s Ks
Much slower than symmetric algorithm
AES
AES
– (2-3 orders of magnitude)
Generally combined with symmetric algorithms
ALICE m c c m BOB
25 MARVIN 26
9 0
Cryptographic hash functions Cryptographic hash functions (2)
26 26
5 6
≈
Hash Hash Hi, Bob, I am Alice, here is my Public key, could you
Encrypt 1 send me yours such that we can discuss securely ?
c || h h 2
Hi Alice, I am Bob, here is my Public key and a session
key encrypted with your Public Key
Encrypt ALICE 3 Fine, Bob, here is my secret message encrypted with BOB
the session key….
26 26
7 8
(5) Authentication-2: attacking the simple protocol (5) Authentication-3: trusted party & public keys
• A “Man in the middle” attack can be conducted !!!
• Alice has been previously registered by Trent, showing identity proofs and has
sent her public key.
• She received in return, a certificate containing her public key, certified by Trent.
MARVIN
• Trent certificate is “well known” (certification hierarchy)
1 – Bobs asks Alice her certificate
ALICE BOB
2 – Alice sends her certificate to Bob, Bob checks its validity
Marvin intercepts Alice’s message and exchange her public key with a 3 – Bob sends Alice a session key encrypted with Alice public key TRENT
generated public key (Marvin knows the corresponding private key)
4 – Alice decrypts the session key and starts
Then, he intercepts Bob’s message, decrypt the session key, re-encrypt it
with Alice’s public key (kept from 1st message) and exchange Bob’s public communicating with Bob
key with another generated public key ion
t rat
Alice and Bob does not notice anything and Marvin intercepts all messages, SSL is based on this scheme Re
gis
can even create fake message ! (remark: Bob need not be registered)
• Need for a trusted party delivering
1
public keys (PKI)
2
or secret keys (e.g., Kerberos) 3
ALICE
4 BOB
26 27
9 0
(5) Authentication-4: trusted party & secret keys (5) Authentication-5: Secret vs Public
• Alice & Bob have been previously registered by Trent • Both need trusted third parties.
• During this registration, they exchanged a secret key only known by Trent/Alice
(TA) or Trent/Bob (TB)
1 - Alice contacts Trent, sending a nonce for a communication with Bob • Secret (Kerberos)
Distributes symmetric keys
2 - Trent sends the nonce and the session key, both encrypted with TA.
A ticket, including the session key encrypted TB key is also sent Operates on-line, when interaction takes place since it creates a new
symmetric key for each session
3 - Alice checks the nonce, decrypts the session key,
sends the Ticket to Bob TRENT
4 - Bob decrypts the Ticket, retrieve the • Public (SSL, Certification authority)
n 1
session key, and starts tio Distributes public keys (certificates)
tra
gis
communicating with Alice Re
Registration
3
4
ALICE BOB
27 27
1 2
(6) repudiation: Digital Signature-1 (6) Digital signature-2: Signing
• Digital Signatures can be used for
Proof of authorship
Non-repudiation by author
Guarantee of message integrity
Does not guarantee confidentiality (orthogonal)
– If confidentiality is needed, encryption of the message must be used
• Basic idea:
(1) Hash the message
(2) Encrypt the hashing with the sender private key
(3) Add to the message the sender public key and a certificate (for checking)
27 27
3 4
MS r
DBerve Statistical use
S
Delivered data
User
6-Usage
control
5-Audit
4-Database
encryption
7-Limited data
1-Authentication retention
27 27
5 6
(1) Authentication, (2) Communications (3) Authorizations-1: Access control
• Authentication 3-Authorizations • Basically: Discretionary Access Control (DAC)
2-Protection of
communications
Basic: Login + Password Subject: Authenticated users/processes
MS r Objects: Database objects to be protected
OS authentication can be used by the DBMS DBerve
S
DBMSs support most authentication protocols (SW & HW) Actions: Actions that are authorized (e.g., read, update)
Attacks: default passwords (600 available on the web)
User
Problems: Indirect authentication:
• Basic syntax
GRANT <Actions> ON <object> TO <Subject>
– The user is authenticated by the Application
REVOKE <Actions> ON <object> FROM <Subject>
– The application is authenticated by the DBMS
• Communications
• Role Base Access Control (RBAC)
1-Authentication
Roles are recipient of authorizations
Use of classical protocols (e.g. SSL)
Roles are assigned to users
A lot of known attacks on the Oracle Listener Service….
• Objects
Tables
Views
Stored procedures
etc.
27 27
7 8
VIEW
Select service, count(*) Nbpatients, sum(expense) Total_Exp
tables From Patients
Group By service
Query on
views
QUERY
Select Total_Exp
From Stats
Where service = "immuno"
Access control
View manager
QUERY
FINAL
Select sum(expense) Total_Exp
Rewrite query From Patients
View Where service = "immuno"
definition on base tables
27 28
9 0
(3) Authorizations-3: Access control with views (3) Authorizations-4: Virtual Private Database
Employees Statistician
Running the
procedure
Id-E LName FName Fone Address City Salary Contextual
Human 1 Ricks Jim 5485 ………. Paris 230 information
ressources 2 Trock Jack 1254 ………. Versailles 120
3 Lerich Zoe 5489 ………. Chartres 380 Procedure for Query with
4 Doe Joe 4049 ………. Paris 170 Adding added
conditions conditions
28 28
1 2
Do the ACTION
Specific code to execute (SQL, PLSQL, other languages)
• Oracle Obfuscation toolkit • Triggers allow recording who has modified what and when
• Same kind of tools for other DBMSs
• Protegrity Secure-Data
28 28
3 4
(6) Usage control, (7) Limited Data retention (8) Data Anonymization: on-going works
• Access control / Usage control:
Access control defines the rules for accessing the data
Usage control regulates the usage of delivered data
Limited data retention is one example of usage control
Digital Right Managements is usage control
– You can access a video, watch it, but not redistribute it
28 28
5 6
Bibliography
[MPO] Alfred Menezes, Paul van Oorschot, Scott Vanstone: Handbook of
Applied Cryptography.
Available online: http://www.cacr.math.uwaterloo.ca/hac/
[Sch] Bruce Schneier: Applied Cryptography: Protocols, Algorithms, and
Source Code in C
[KBL] Kifer, Bernstein, Lewis : Database Systems, an application oriented
[SL98]
approach (chapter 26)
Stefan Lucks: Attacking Triple Encryption, Fast Software Encryption
Le dictionnaire de données Oracle
1998, pp 239–253.
[AKS02] Agrawal R., Kiernan J., Srikant R., Xu Y., “Hippocratic Databases”,
VLDB , 2002.
[FBI] Computer Security Institute, "CSI/FBI Computer Crime and Security
Survey" http://www.gocsi.com/forms /fbi/pdf.html).
[Ora] Oracle Unbreakable
http://www.techtv.com/news/securityalert/story/0,24195,3364291,00.html
[Mat] U. Mattsson, Secure.Data Functional Overview, Protegity Technical
Paper TWP-0011,. (http://www.protegrity.com/White_Papers.html)
[Orab] Oracle Corp., “Advanced Security Administrator Guide”
TABLE_NAME COMMENTS
----------------------------------------------------------------
ALL_CONSTRAINTS Constraint definitions on accessible tables
DBA_CONSTRAINTS Constraint definitions on all tables
USER_CONSTRAINTS Constraint definitions on user's own tables
3 rows selected.
• La vue ‘DICTIONARY’ permet d’accéder aux noms/desc. des vues DBA, ALL, USER, V$...
291 292
Les vues dynamiques V$ (1) Les vues dynamiques V$ (2)
• Vues dont les informations sont «dynamiques» • Ex. V$SGA
– Evoluent du démarrage de l’instance jusqu’à son arrêt
– Décrivent l’activité de la DB et de l’instance
– Informations sur la «System Global Area» (SGA)
– Sont appelées «dynamiques» mais SQL> SELECT * FROM V$SGA;
NAME VALUE
• en fait, elle externalise l’état de variables internes à Oracle -------------------- ---------
Fixed Size 49152
• Usage de ces données Variable Size
Database Buffers
12906496
2048000
– Principalement pour l’amélioration des performances de la BD Redo Buffers 73728
• Ex. V$Session
SQL> SELECT sid, serial#, username, type, status
> FROM v$session;
• V$LOGFILE : détail des fichiers redo-log
SID SERIAL# USERNAME TYPE STATUS
----- -------- ------------ ---------- ------- SQL> SELECT * FROM v$logfile;
1 1 BACKGROUND ACTIVE GROUP# STATUS MEMBER
… ------ ------ ------------------------------
8 6 HEURTEL USER INACTIVE 1 STALE E:\ORANT\DATABASE\LOG4ORCL.ORA
2 STALE E:\ORANT\DATABASE\LOG3ORCL.ORA
3 STALE E:\ORANT\DATABASE\LOG2ORCL.ORA
4 E:\ORANT\DATABASE\LOG1ORCL.ORA
– Le DBA peut déconnecter les utilisateurs avec la commande suivante
293 294
295 296