Rappels des concepts fondamentaux - smis inria
Rappels des concepts fondamentaux - smis inria
Rappels des concepts fondamentaux - smis inria
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
MASTER COSY<br />
Module<br />
Bases de Données Avancées<br />
Année 2013/2014<br />
P. Pucheral et L. Yeh<br />
Module Bases de données Avancées<br />
<strong>Rappels</strong> <strong>des</strong> <strong>concepts</strong> de base (et perspectives)<br />
Modèles de stockage et d’indexation<br />
Evaluation et optimisation de requêtes<br />
Modèles et protocoles transactionnels<br />
Support d’objets complexes<br />
XML Schema<br />
XQuery et optimisation<br />
Indexation XML<br />
Médiation XML<br />
Systèmes Pair-à-Pair<br />
1<br />
2<br />
Eléments de bibliographie (1 ère partie)<br />
• Présents à la bibliothèque UVSQ<br />
− Gardarin G., "Bases de données", Ed. Eyrolles, 5 ème édition, 2003.<br />
−<br />
−<br />
Ozsu, T., Valduriez P., “Principles of Distributed Database Systems”, Prentice-Hall,<br />
2nd edition, 1999. Nouvelle édition 2011 (Springer)<br />
J. Besancenot, M. Cart, J. Ferrié, R. Guerraoui, P. Pucheral, B. Traverson, "Les<br />
systèmes transactionnels : <strong>concepts</strong>, normes et produits", Ed. Hermès, 1997.<br />
• Disponible sur le Web<br />
−<br />
Fundamentals of Database Systems, 6th Ed, Elmasri and Navathe, Addison Wesley,<br />
2011<br />
<strong>Rappels</strong> <strong>des</strong> <strong>concepts</strong><br />
<strong>fondamentaux</strong><br />
1. Objectifs <strong>des</strong> SGBD<br />
2. Principales fonctions d’un SGBD<br />
3. Architecture fonctionnelle de référence<br />
4. Le modèle relationnel<br />
5. Le langage SQL<br />
6. Architectures physiques de SGBD<br />
7. Orientations de recherche<br />
3
Un système d’information sans SGBD (1)<br />
Un système d’information sans SGBD (2)<br />
ComptaSoft<br />
Dupont<br />
Symptomes : y<br />
Turlututu : sqj<br />
Symptomes : y<br />
Turlututu : sdd<br />
Analyses : xxx<br />
Comptabilité<br />
ConsultSoft<br />
Duhpon<br />
Symptomes : yy<br />
Analyses : xxxx<br />
Symptomes : yy<br />
Consultations<br />
Dupond<br />
Turlututusqjsk<br />
Symptom: yyyy<br />
Analyses xxxx<br />
Turlututudhjsd<br />
Analyses :xx<br />
Duipont<br />
Turlututu : sq<br />
Symptomyyyy<br />
Analysesxxxx<br />
Turlututudhjsd<br />
ChiruSoft<br />
PsychiaSoft<br />
Chirurgie<br />
Psychiatrie<br />
Plusieurs applications<br />
plusieurs formats et langages<br />
difficulté de maintenance<br />
manque d’interopérabilité<br />
Redondance <strong>des</strong> données<br />
incohérence<br />
Pas de facilité d’interrogation<br />
toute question doit être prévue et<br />
programmée<br />
coût de développement élevé<br />
redondance de code<br />
difficulté d’évolution<br />
5<br />
ComptaSoft<br />
Dupont<br />
Symptomes : y<br />
Turlututu : sqj<br />
Symptomes : y<br />
Turlututu : sdd<br />
Analyses : xxx<br />
Comptabilité<br />
ConsultSoft<br />
Duhpon<br />
Symptomes : yy<br />
Analyses : xxxx<br />
Symptomes : yy<br />
Consultations<br />
Dupond<br />
Turlututusqjsk<br />
Symptom: yyyy<br />
Analyses xxxx<br />
Turlututudhjsd<br />
Analyses :xx<br />
Duipont<br />
Turlututu : sq<br />
Symptomyyyy<br />
Analysesxxxx<br />
Turlututudhjsd<br />
ChiruSoft<br />
PsychiaSoft<br />
Chirurgie<br />
Psychiatrie<br />
Gestion simpliste <strong>des</strong> droits<br />
violation de la confidentialité<br />
Gestion simpliste du<br />
parallélisme<br />
blocage du système ou bien<br />
incohérence en cas d ’accès simultanés<br />
Pas de tolérance aux fautes<br />
incohérence en cas de panne<br />
6<br />
L’approche Bases de données<br />
O1: Description canonique <strong>des</strong> données<br />
10 - Standards<br />
9 - Tolérance aux<br />
pannes<br />
8 - Concurrence<br />
d’accès<br />
1- Description<br />
canonique<br />
BD<br />
2- Indépendance<br />
Physique<br />
3- Indépendance<br />
Logique<br />
4 – Langage de<br />
manipulation<br />
Description cohérente, unique et centralisée <strong>des</strong> données<br />
manipulées par l’ensemble <strong>des</strong> applications constituant le<br />
système d’information.<br />
— Perception globale du système d'information<br />
=> augmentation du niveau d’informatisation<br />
=> nouveaux traitements (aide à la décision, analyse de données, …)<br />
— Factorisation de la <strong>des</strong>cription <strong>des</strong> données et de leur<br />
comportement (contraintes d’intégrité …)<br />
7 - Confidentialité<br />
<strong>des</strong> données<br />
6 - Intégrité <strong>des</strong><br />
données<br />
5 - Optimisation de<br />
requêtes<br />
— Elimination de la redondance<br />
=> redondance coûteuse en place et source d’incohérence<br />
=> redondance système reste nécessaire pour : fiabilité, performance de<br />
consultation, disponibilité en environnement réparti ou mobile<br />
7<br />
8
Réel<br />
Modèle conceptuel<br />
O2: indépendance physique<br />
Indépendance <strong>des</strong> programmes d'applications vis à vis <strong>des</strong><br />
structures de stockage <strong>des</strong> fichiers.<br />
Modèle<br />
conceptuel<br />
Modèle<br />
logique<br />
Modèle<br />
Physique<br />
•Indépendant du<br />
modèle de données<br />
•Indépendant du<br />
SGBD<br />
•Dépendant du<br />
modèle de données<br />
•Indépendant du<br />
SGBD<br />
•Dépendant du<br />
modèle de données<br />
•Dépendant du SGBD<br />
Médecin effectue Visite<br />
Codasyl Relationnel Objet XML<br />
• Organisation physique <strong>des</strong> données<br />
• Structures de stockage <strong>des</strong> données<br />
• Structures accélératrices (index)<br />
9<br />
— Description logique <strong>des</strong> données, en termes d'entités et<br />
d’association, donnant une vision conceptuelle <strong>des</strong><br />
données (séparation claire du monde réel et du monde<br />
informatique)<br />
— Possibilité de modifier les structures de stockage (fichiers,<br />
index, chemins d'accès, …) sans modifier les programmes;<br />
— Ecriture <strong>des</strong> applications par <strong>des</strong> non-spécialistes <strong>des</strong><br />
fichiers et <strong>des</strong> structures de stockage;<br />
— Meilleure portabilité <strong>des</strong> applications et indépendance vis<br />
à vis du matériel.<br />
10<br />
Réel<br />
Modèle physique<br />
O3: indépendance logique<br />
Possibilité de modifier la structure conceptuelle globale de<br />
la base sans modifier les vues particulières de chaque<br />
groupe d'utilisateurs.<br />
Modèle<br />
conceptuel<br />
Modèle<br />
logique<br />
•Indépendant du<br />
modèle de données<br />
•Indépendant du<br />
SGBD<br />
•Dépendant du<br />
modèle de données<br />
•Indépendant du<br />
SGBD<br />
Médecin effectue Visite<br />
Codasyl Relationnel Objet XML<br />
— Chaque application ou groupe d'applications désire utiliser<br />
ses propres structures logiques de données en fonction de<br />
ses propres besoins;<br />
— Chaque application établit une <strong>des</strong>cription <strong>des</strong> données<br />
qu'elle utilise:<br />
• Les données décrites restent virtuelles (vues);<br />
Modèle<br />
Physique<br />
•Dépendant du<br />
modèle de données<br />
•Dépendant du SGBD<br />
• Organisation physique <strong>des</strong> données<br />
• Structures de stockage <strong>des</strong> données<br />
• Structures accélératrices (index)<br />
11<br />
• Le SGBD se charge de leur faire correspondre <strong>des</strong><br />
données réelles.<br />
12
Id-D<br />
1<br />
2<br />
3<br />
… .<br />
Id-P<br />
1<br />
2<br />
3<br />
4<br />
… .<br />
D octeu r<br />
N om<br />
D upont<br />
D urand<br />
M asse<br />
… … ..<br />
Patients<br />
N om<br />
L ebeau<br />
T roger<br />
D oe<br />
Perry<br />
… … .<br />
P rénom<br />
Pierre<br />
Paul<br />
Jean<br />
… …<br />
P rénom<br />
Jacques<br />
Z oe<br />
John<br />
Paule<br />
… … .<br />
Id-D<br />
1<br />
1<br />
2<br />
2<br />
V isites<br />
Id-P<br />
2<br />
1<br />
2<br />
3<br />
Id-V<br />
1<br />
2<br />
3<br />
4<br />
D ate<br />
15 juin<br />
12 août<br />
13 juillet<br />
1 m ars<br />
Id-M<br />
1<br />
2<br />
3<br />
… .<br />
P rix<br />
250<br />
180<br />
350<br />
250<br />
Id-V<br />
1<br />
1<br />
2<br />
2<br />
2<br />
… .<br />
N om<br />
A spegic 1000<br />
Fluisédal<br />
M ucom yst<br />
… … ..<br />
Prescription<br />
L igne<br />
1<br />
2<br />
1<br />
2<br />
3<br />
… .<br />
M édicament<br />
Id-M<br />
12<br />
5<br />
8<br />
12<br />
3<br />
… .<br />
P osologie<br />
1 par jour<br />
10 gouttes<br />
2 par jour<br />
1 par jour<br />
2 gouttes<br />
… … … …<br />
D escription<br />
… … … … … … … … … … … ..<br />
… … … … … … … … … … … ..<br />
… … … … … … … … … … … ..<br />
… … … … … … … … … … … ..<br />
O3 – Exemples d’indépendance Logique<br />
Les applications peuvent définir <strong>des</strong> vues logiques de la BD<br />
Gestion <strong>des</strong> médicaments<br />
Cabinet du Dr. Masse<br />
Nombre_Médicaments<br />
Prescription<br />
Id -V<br />
Ligne<br />
Id -M<br />
Posologie<br />
Id-M Nom Description Nombre<br />
Visites<br />
1<br />
1<br />
12<br />
1 par jour<br />
Id -D<br />
Id -P<br />
Id -V<br />
Date<br />
Prix<br />
1<br />
2<br />
5<br />
10 gouttes<br />
1 Aspegic 1000 …………………………….. 30<br />
1<br />
2<br />
1<br />
15 juin<br />
250<br />
….<br />
….<br />
….<br />
…………<br />
2<br />
3<br />
4<br />
1 mars<br />
250<br />
2 Fluisédal …………………………….. 20<br />
Patients<br />
3 Mucomyst …………………………….. 230<br />
Id -P<br />
Nom<br />
Prénom<br />
Médicament<br />
1<br />
Lebeau<br />
Jacques<br />
Id -M<br />
Nom<br />
Description<br />
…. …….. …………………………….. …..<br />
2<br />
Troger<br />
Zoe<br />
1<br />
Aspegic 1000<br />
……………………………..<br />
….<br />
…….<br />
…….<br />
2<br />
Fluisédal<br />
……………………………..<br />
3<br />
Mucomyst<br />
……………………………..<br />
….<br />
……..<br />
……………………………..<br />
O4: Langage de manipulation<br />
• Les non-informaticiens doivent pouvoir manipuler les<br />
données à partir de la seule connaissance du monde réel<br />
et de la modélisation qui en est faite<br />
• Mais les non-informaticiens font-ils <strong>des</strong> requêtes SQL ?<br />
• La manipulation se fait via un langage déclaratif<br />
• La question déclare l’objectif sans décrire la méthode<br />
• Le langage suit une norme commune à tous les SGBD<br />
• SQL : Structured Query Langage<br />
• Exemple de requête SQL<br />
Retrouver le nom et le n° de téléphone de tous les pédiatres<br />
13<br />
Select Nom, Tel<br />
From Docteur<br />
Where Specialite = ‘Pédiatre’<br />
14<br />
O5: Optimisation de requêtes<br />
O6: Intégrité sémantique <strong>des</strong> données<br />
• Traduction automatique <strong>des</strong> requêtes déclaratives en<br />
programmes procéduraux (composition d’opérateurs<br />
élémentaires)<br />
• Optimisation automatique de ces programmes<br />
−<br />
−<br />
Exploitation <strong>des</strong> propriétés <strong>des</strong> opérateurs élémentaires<br />
Gestion centralisée <strong>des</strong> chemins d'accès (index, hachages, …)<br />
• Economie de l'astuce <strong>des</strong> programmeurs<br />
−<br />
milliers d'heures d'écriture et de maintenance de logiciels.<br />
• Course aux performances mesurées en transactions par<br />
seconde (TPS) sur <strong>des</strong> "benchmark" standardisés (TPC).<br />
15<br />
• Objectif : Détection automatique <strong>des</strong> mises à jour<br />
erronées<br />
• Contrôle sur les données élémentaires<br />
−<br />
Contrôle de types: Nom alphabétique<br />
− Contrôle de valeurs: Salaire mensuel entre 1 et 10k€<br />
• Contrôle sur les relations entre les données<br />
−<br />
−<br />
Relations entre données élémentaires : Prix de vente > Prix d'achat<br />
Relations entre objets : Un électeur est inscrit sur une seule liste<br />
électorale<br />
• Avantages<br />
− simplification du code <strong>des</strong> applications<br />
− sécurité renforcée par l'automatisation<br />
− mise en commun <strong>des</strong> contraintes<br />
16
O7: Confidentialité <strong>des</strong> données<br />
Confidentialité <strong>des</strong> données<br />
— Objectif : garantir la confidentialité de certaines<br />
informations et les protéger contre la dégradation<br />
− Dossier médical, procédé de fabrication, salaire <strong>des</strong> employés ...<br />
Service <strong>des</strong><br />
ressources<br />
humaines<br />
Employés<br />
(intranet)<br />
Public<br />
(internet)<br />
— Plusieurs niveaux :<br />
−<br />
−<br />
−<br />
Authentification <strong>des</strong> usagers<br />
Privilèges d'accès aux objets de la base<br />
Chiffrement et hachage crytographique <strong>des</strong> données<br />
Id-E<br />
1<br />
2<br />
3<br />
4<br />
Nom<br />
Ricks<br />
Trock<br />
Lerich<br />
Doe<br />
Prénom<br />
Jim<br />
Jack<br />
Zoe<br />
Joe<br />
Poste<br />
5485<br />
1254<br />
5489<br />
4049<br />
Nombre<br />
d’employés<br />
4<br />
Masse<br />
Salariale<br />
890<br />
— Usagers : utilisateurs, rôles<br />
— Objets : objet réel ou virtuel, procédure ...<br />
Id-E<br />
1<br />
2<br />
3<br />
Nom<br />
Ricks<br />
Trock<br />
Lerich<br />
Prénom<br />
Jim<br />
Jack<br />
Zoe<br />
Poste<br />
5485<br />
1254<br />
5489<br />
Adresse<br />
……….<br />
……….<br />
……….<br />
Ville<br />
Paris<br />
Versailles<br />
Chartres<br />
Salaire<br />
230<br />
120<br />
380<br />
4<br />
Doe<br />
Joe<br />
4049<br />
……….<br />
Paris<br />
160<br />
17<br />
18<br />
O8: Accès concurrents aux données<br />
— Objectif : assurer l’Isolation <strong>des</strong> transaction, c.à.d que<br />
différentes applications partageant les mêmes données<br />
doivent pouvoir s'ignorer et travailler de manière<br />
asynchrone.<br />
— Le SGBD garantit la sérialisabilité <strong>des</strong> accès: l'effet d'une<br />
exécution simultanée de transactions doit être le même<br />
que celui d'une exécution séquentielle.<br />
< T1 || T2 …|| Tn > ≡ < T1; T2; … Tn ><br />
— Les transactions exécutées en parallèle ne doivent pas<br />
entrer en conflit lecture-écriture ou écriture-écriture, afin<br />
d’éviter :<br />
• <strong>des</strong> pertes de mises à jour<br />
• <strong>des</strong> introductions d’incohérence<br />
• <strong>des</strong> lectures non reproductibles<br />
19<br />
O9: Tolérance aux pannes<br />
— Le SGBD doit assurer la pérennité et la cohérence <strong>des</strong><br />
données en présence de pannes multiples:<br />
−<br />
−<br />
−<br />
−<br />
Transaction Failure : Contraintes d'intégrité, Annulation<br />
System Failure : Panne de courant, Crash serveur …<br />
Media Failure : Perte du disque<br />
Communication Failure : Défaillance du réseau<br />
— Ceci implique l’Atomicité <strong>des</strong> transactions de mises à jour<br />
qui doivent être totalement exécutées ou pas du tout.<br />
— Ceci implique également <strong>des</strong> mécanismes de reprise<br />
assurant la Durabilité <strong>des</strong> effets <strong>des</strong> transactions validées.<br />
20
10 – Respect <strong>des</strong> standards<br />
3. Architecture de référence<br />
• L’approche bases de données est basée sur plusieurs<br />
standards<br />
− Langage de manipulation (SQL1, SQL2, SQL3)<br />
− Communication SQL CLI (ODBC / JDBC)<br />
− Transactions (X/Open DTP, OSI-TP)<br />
• Force <strong>des</strong> standards<br />
− Portabilité <strong>des</strong> applications<br />
− Interopérabilité <strong>des</strong> systèmes<br />
• De nombreuses architectures fonctionnelles ont été proposées<br />
• Ces architectures dépendent souvent du modèle de données<br />
utilisé<br />
• ANSI/X3/SPARC est une architecture de référence mais sa<br />
normalisation a échouée.<br />
• L'architecture ANSI/X3/SPARC repose sur un concept<br />
fondamental: la distinction de 3 niveaux de schémas<br />
21<br />
22<br />
Niveaux de schéma<br />
ANSI/X3/SPARC : principes<br />
Schéma Externe 1<br />
…<br />
Schéma Externe i<br />
…<br />
Schéma Externe n<br />
vision spécifique à une application<br />
Admin.<br />
BD<br />
Admin.<br />
Entreprise<br />
Processeur<br />
de schéma<br />
Conceptuel<br />
Admin.<br />
Application<br />
Construction<br />
de la BD<br />
SCHEMA CONCEPTUEL<br />
vision canonique globale exprimée en<br />
terme d'entités et d'associations<br />
Processeur<br />
de schéma<br />
Interne<br />
DICTIONNAIRE<br />
Processeur<br />
de schéma<br />
Externe<br />
SCHEMA INTERNE<br />
<strong>des</strong>cription physique <strong>des</strong> fichiers, <strong>des</strong> mo<strong>des</strong><br />
de stockage (séquentiel, trié, haché) et <strong>des</strong><br />
index<br />
Transformateur<br />
Conceptuel<br />
Interne<br />
Système<br />
d’E/S<br />
Transformateur<br />
Externe<br />
Conceptuel<br />
Programme<br />
d’application<br />
Programmeur.<br />
d’application<br />
Exploitation<br />
de la BD<br />
23<br />
Dictionnaire et Méta-base sont synonymes<br />
24
Architecture fonctionnelle d'un SGBD<br />
4. Le modèle relationnel<br />
META-BASE<br />
ANALYSEUR<br />
TRADUCTEUR<br />
OPTIMISEUR<br />
Analyse syntaxique<br />
Analyse sémantique<br />
Gestion <strong>des</strong> schémas<br />
Modification de requêtes<br />
Contrôle d'intégrité<br />
Contrôle d'autorisation<br />
Ordonnancement<br />
Optimisation<br />
Elaboration d'un plan<br />
• Concepts <strong>des</strong>criptifs<br />
– Domaine : caractérise un ensemble de valeurs<br />
– Relation : sous-ensemble du produit cartésien d'une<br />
liste de domaines<br />
– Tuple : ligne d'une relation<br />
– Attribut : colonne d'une relation<br />
EXECUTEUR<br />
Exécution du plan<br />
Métho<strong>des</strong> d'accès<br />
Gestion de transactions<br />
• Exemple de relation (ou Table)<br />
Patients<br />
Attribut variant sur le domaine Ville<br />
Id-P Nom Prénom Ville<br />
1 Lebeau Jacques Paris<br />
BD<br />
Tuple<br />
2 Troger Zoe Evry<br />
3 Doe John Paris<br />
25<br />
4 Perry Paule Valenton<br />
…. ……. ……. …….<br />
26<br />
Base de données relationnelle<br />
Clé, clé étrangère et schéma<br />
Docteurs<br />
Id-D Nom Prénom<br />
1 Dupont Pierre<br />
2 Durand Paul<br />
3 Masse Jean<br />
…. …….. ……<br />
Visites<br />
Id-D Id-P Id-V Date Prix<br />
1 2 1 15 juin 250<br />
1 1 2 12 août 180<br />
2 2 3 13 juillet 350<br />
2 3 4 1 mars 250<br />
Prescriptions<br />
Id-V Ligne Id-M Posologie<br />
1 1 12 1 par jour<br />
1 2 5 10 gouttes<br />
2 1 8 2 par jour<br />
2 2 12 1 par jour<br />
2 3 3 2 gouttes<br />
…. …. …. …………<br />
• Clé : groupe d'attributs minimum qui détermine un tuple unique dans<br />
une relation<br />
PATIENTS (IdP, NOM, PRENOM, VILLE)<br />
• Clé étrangère : groupe d'attributs apparaissant comme clé dans un autre<br />
relation<br />
Patients<br />
Id-P Nom Prénom Ville<br />
Médicaments<br />
VISITES (IdV, IdD, IdP, DATE, PRIX)<br />
1 Lebeau Jacques Paris<br />
2 Troger Zoe Evry<br />
3 Doe John Paris<br />
Id-M Nom Description<br />
1 Aspegic 1000 ……………………………..<br />
2 Fluisédal ……………………………..<br />
VISITES.IdD référence DOCTEURS.IdD<br />
VISITES.IdP référence PATIENTS.IdP<br />
4 Perry Paule Valenton<br />
3 Mucomyst ……………………………..<br />
…. ……. ……. …….<br />
…. …….. ……………………………..<br />
27<br />
28
Concepts manipulatoires<br />
Restriction<br />
• UN ENSEMBLE D'OPERATIONS DE BASE EST<br />
FORMALISE : L'ALGEBRE RELATIONNELLE<br />
• CES OPERATIONS PERMETTENT D'EXPRIMER<br />
TOUTES LES REQUETES SOUS FORME<br />
D'EXPRESSIONS ALGEBRIQUES<br />
Patients<br />
Id-P Nom Prénom Ville<br />
1 Lebeau Jacques Paris<br />
2 Troger Zoe Evry<br />
3 Doe John Paris<br />
4 Perry Paule Valenton<br />
σ<br />
Patients<br />
Id-P Nom Prénom Ville<br />
1 Lebeau Jacques Paris<br />
2 Troger Zoe Evry<br />
3 Doe John Paris<br />
4 Perry Paule Valenton<br />
• ELLES SONT LA BASE DU LANGAGE SQL<br />
Patients de la ville de Paris, noté en algèbre:<br />
σ Ville=‘Paris’ (Patients)<br />
29<br />
30<br />
Projection<br />
Jointure<br />
Patients<br />
Visites<br />
Patients<br />
Id-P Nom Prénom Ville<br />
1 Lebeau Jacques Paris<br />
2 Troger Zoe Evry<br />
π<br />
3 Doe John Paris<br />
Patients<br />
Id-P Nom Prénom Ville<br />
1 Lebeau Jacques Paris<br />
2 Troger Zoe Evry<br />
3 Doe John Paris<br />
Id-P Nom Prénom Ville<br />
1 Lebeau Jacques Paris<br />
2 Troger Zoe Evry<br />
3 Doe John Paris<br />
4 Perry Paule Valenton<br />
Id-D Id-P Id-V Date Prix<br />
1 2 1 15 juin 250<br />
1 1 2 12 août 180<br />
2 2 3 13 juillet 350<br />
2 3 4 1 mars 250<br />
4 Perry Paule Valenton<br />
4 Perry Paule Valenton<br />
Id-P Nom Prénom Ville Id-D Id-P Id-V Date Prix<br />
1 Lebeau Jacques Paris 1 1 2 12 août 180<br />
Nom et prénom <strong>des</strong> patients, noté en algèbre:<br />
Π Nom, Prénom (Patients)<br />
2 Troger Zoe Evry 1 2 1 15 juin 250<br />
2 Troger Zoe Evry 2 2 3 13 juillet 350<br />
3 Doe John Paris 2 3 4 1 mars 250<br />
Notation algébrique:<br />
Patients Id-P=Id-P<br />
Visites<br />
31<br />
Au fait, qu’appelle-t-on Jointure externe gauche (Left-Outer-Join) ?<br />
32
Union, Intersection, Différence<br />
Exemple de plan d’exécution<br />
• Relation X Relation --> Relation (notées: ∪, ∩ , -)<br />
• OPERATIONS ENSEMBLISTES S'APPLIQUANT A DES<br />
RELATIONS DE MEME SCHEMA<br />
Select Patients.Nom, Patients.Prénom<br />
From Patients, Visites<br />
Where Patients.Id-P = Visites.Id-P<br />
π<br />
and<br />
Patients.Ville = ’Paris’<br />
and Visites.Date = ’15 juin’ σ<br />
π<br />
σ<br />
π<br />
π<br />
σ<br />
Patients<br />
Visites<br />
• EXTENSION: Union externe (OUTER UNION)<br />
−<br />
−<br />
s'applique à <strong>des</strong> relations de schémas différents<br />
on ramène les deux relations au même schéma en ajoutant <strong>des</strong> valeurs<br />
nulles<br />
Patients<br />
Visites<br />
Optimisation<br />
33<br />
34<br />
5. Le langage SQL<br />
Le langage SQL (Structured Query Language) comprend trois<br />
parties :<br />
1. Le langage de définition de données (Tables, Vues, Droits,<br />
Intégrité)<br />
2. Le langage de manipulation de données (Sélections,<br />
Modifications, Insertions, Suppressions)<br />
3. L'intégration aux langages de programmation<br />
35<br />
Le standard SQL<br />
SQL est dérivé de l'algèbre relationnelle et de SEQUEL (SystemR 74).<br />
Le standard SQL évolue en permanence :<br />
- SQL1 86 version minimale<br />
- SQL1 89 addendum (intégrité)<br />
- SQL2 92 version étendue à trois niveaux de conformité<br />
(entry, intermediate, full)<br />
- SQL2 95 addendum (CLI : Call Level Interface)<br />
- SQL2 96 addendum (PSM : Persistent Stored Modules)<br />
- SQL3 extension aux objets complexes<br />
- SQL 99 contient les bases de SQL3<br />
- SQL 2006 intégration de XML<br />
36
EXEMPLE DE BASE DE DONNEES<br />
Création de table : syntaxe<br />
CREATE TABLE <br />
( * [*]) ;<br />
< def_colonne > ::= < type > [CONSTRAINT nom_contrainte <<br />
NOT NULL |<br />
UNIQUE |<br />
PRIMARY KEY |<br />
CHECK (condition) |<br />
REFERENCES nom_table (colonne) > ]<br />
< def_contrainte_table > ::= CONSTRAINT nom_contrainte <<br />
UNIQUE (liste_colonnes) |<br />
PRIMARY KEY (liste_colonnes) |<br />
CHECK (condition) |<br />
FOREIGN KEY (liste_colonnes) REFERENCES nom_table (liste_colonnes)><br />
37<br />
38<br />
Création de table : exemple<br />
CREATE TABLE RDV(<br />
NumRdv Integer PRIMARY KEY,<br />
DateRDV Date,<br />
NumDoc Integer,<br />
NumPat Integer,<br />
Motif Varchar(200),<br />
CONSTRAINT Référence_DOC FOREIGN KEY (NumDoc) REFERENCES DOC<br />
(NumDoc),<br />
CONSTRAINT Référence_PAT FOREIGN KEY (NumPat) REFERENCES PAT<br />
(NumPat);<br />
L'association d'un nom à une contrainte est optionnelle. Ce nom peut être utilisé<br />
pour référencer la contrainte (ex: messages d'erreurs).<br />
Insertion de données<br />
• Syntaxe :<br />
INSERT INTO < nom_table ><br />
• Exemples :<br />
−<br />
−<br />
−<br />
[( attribute [,attribute] … )]<br />
{VALUES ( [, ] … ) |<br />
} ;<br />
INSERT INTO DOC VALUES (1, ‘Dupont’, ‘Paris’);<br />
INSERT INTO DOC (NumDoc, NomDoc) VALUES (2, ‘Toto’);<br />
INSERT INTO PAT (NumPat, NomPat, VillePat)<br />
SELECT NumDoc, NomDoc, VilleDoc FROM DOC;<br />
39<br />
40
Suppression de données<br />
Modification de données<br />
SYNTAXE :<br />
DELETE FROM <br />
[WHERE ]<br />
EXEMPLES :<br />
Supprimer tous les docteurs<br />
DELETE FROM DOC<br />
Supprimer le docteur numéro 20<br />
DELETE FROM DOC WHERE NumDoc = 20<br />
Et celle-ci ?<br />
DELETE FROM DOC WHERE NumDoc NOT IN (SELECT NumDoc FROM ORD)<br />
SYNTAXE :<br />
UPDATE <br />
SET<br />
= value_expression<br />
[, = value_expression ] …<br />
[WHERE ];<br />
EXEMPLES :<br />
Modifier l’adresse du docteur nro 20<br />
UPDATE DOC<br />
SET VilleDoc = ‘Valenton’<br />
WHERE NumDoc = 20<br />
Augmenter de 10% le prix de tous les médicaments dont le nom contient ‘Antibio’<br />
UPDATE MED<br />
SET PRIX = PRIX*1.1<br />
WHERE NomMed = ‘%Antibio%’<br />
41<br />
42<br />
Manipulation de données<br />
SELECT: forme générale<br />
SYNTAXE ELEMENTAIRE<br />
SELECT <br />
FROM <br />
WHERE <br />
SEMANTIQUE<br />
PROJECTION Ai (<br />
RESTRICTION Ci (<br />
PRODUIT ( Rj ) )<br />
43<br />
SELECT [DISTINCT| ALL] { * | [, ]...}<br />
FROM relation [variable], relation [ variable]…<br />
[WHERE ]<br />
[GROUP BY [,]...]<br />
[HAVING ]<br />
[ORDER BY [.{ASC | DESC}] [,[.{ASC | DESC}] ]...]<br />
44
Forme de la condition de recherche<br />
Projections et restrictions simples<br />
::= [NOT]<br />
θ constante ⏐ <br />
LIKE <br />
IN <br />
θ (ALL ⏐ ANY ⏐ SOME) <br />
EXISTS <br />
UNIQUE <br />
MATCH [UNIQUE] <br />
BETWEEN constante AND constante<br />
AND ⏐ OR <br />
Liste <strong>des</strong> médicaments de plus de 50€ NomMed<br />
SELECT NomMed FROM MED WHERE Prix> 50 ;<br />
Liste <strong>des</strong> médicaments de plus de 50 € NomMed (prix stocké en FF)<br />
SELECT NomMed FROM MED WHERE Prix/6,55957 > 50 ;<br />
Nom <strong>des</strong> docteurs habitant ‘Florac’ NomDoc<br />
SELECT NomDoc FROM DOC WHERE VilleDoc = ‘Florac’<br />
Liste <strong>des</strong> motifs <strong>des</strong> consultations du 25/12/2006 Motif sans doublons<br />
SELECT DISTINCT Motif FROM RDV WHERE DateRDV = ‘25/12/2006’<br />
avec<br />
θ ::= < ⏐ = ⏐ > ⏐ ≥ ⏐≤ ⏐ <br />
Remarque: : peut être dynamiquement déterminée par une requête<br />
45<br />
46<br />
Restrictions complexes et jointures<br />
Requêtes imbriquées : IN et EXIST<br />
Liste <strong>des</strong> patients ayant un RDV avec le docteur ‘Dupont’ NomPat<br />
SELECT<br />
FROM<br />
WHERE<br />
PAT.NomPat<br />
PAT, RDV, DOC<br />
PAT.NumPat = RDV.NumPat and RDV.NumDoc = DOC.NumDoc<br />
and DOC.NomDoc like ‘Dupont’;<br />
Médicaments commençant par « ASPI » et prescrits en août 2008 NomMed<br />
SELECT<br />
FROM<br />
WHERE<br />
DISTINCT M.NomMed<br />
MED M, DET D, ORD O<br />
M.NumMed = D.NumMed and D.NumOrd = O.NumOrd<br />
and NomMed like ‘ASPI%’<br />
and O.Date BETWEEN ’01/08/2008’ and ’31/08/2008’;<br />
Docteurs ayant le même nom qu’un patient NomDoc<br />
SELECT<br />
D.NomDoc FROM PAT P, DOC D WHERE P.NomPat = D.NomDoc;<br />
Liste <strong>des</strong> patients ayant un RDV avec le docteur ‘Dupont’ NomPat<br />
SELECT DISTINCT P.NomPat<br />
FROM PAT P, RDV R, DOC D<br />
WHERE P.NumPat = R.NumPat and R.NumDoc = D.NumDoc and D.NomDoc = ‘Dupont’;<br />
Et celle-ci ?<br />
SELECT P.NomPat FROM PAT P WHERE P.NumPat in<br />
(SELECT R.NumPat FROM RDV R WHERE R.NumDoc in<br />
(SELECT D.NumDoc FROM DOC WHERE D.NomDoc = ‘Dupont’));<br />
Et celle-là ?<br />
SELECT P.NomPat FROM PAT P WHERE EXISTS<br />
(SELECT * FROM RDV R WHERE P.NumPat = R.NumPat and EXISTS<br />
(SELECT * FROM DOC D WHERE R.NumDoc=D.NumDoc and D.NomDoc = ‘Dupont’));<br />
L’imbrication est un moyen de décomposer<br />
une requête complexe en sous-requêtes plus simples<br />
47<br />
48
Calculs d'agrégats<br />
Les fonctions d’agrégation (Count, Sum, Avg, Min, Max) permettent de réaliser <strong>des</strong><br />
calculs sur <strong>des</strong> ensembles de données<br />
• Calcul de statistiques globaux<br />
− Nombre de patients : SELECT count(*) FROM PAT<br />
− Prix moyen <strong>des</strong> médicaments : SELECT avg(Prix) FROM MED<br />
• Calcul de statistiques par groupe<br />
− Nombre de patients par ville :<br />
SELECT VillePat, count(*) NbPatient FROM PAT GROUP BY VillePat<br />
− Et celle-ci ?<br />
SELECT VillePat FROM PAT, RDV<br />
WHERE PAT.NumPat = RDV.NumPat and Motif = ‘mal de tête’<br />
GROUP BY VillePat<br />
HAVING count(DISTINCT(NumPat)) > 10<br />
Union/Inter°/Diff. : exemples<br />
• Ensemble <strong>des</strong> personnes de la base médicale<br />
SELECT NomMed NomPers FROM MED<br />
UNION<br />
SELECT NomPat NomPers FROM PAT<br />
• Patients qui sont aussi médecins<br />
SELECT NomPat PatMed FROM PAT<br />
INTERSECT<br />
SELECT NomMed PatMed FROM MED<br />
• Patients qui ne sont pas médecins<br />
SELECT NomPat Patient FROM PAT<br />
EXCEPT<br />
SELECT NomMed Patient FROM MED<br />
49<br />
50<br />
Évaluation « sémantique » d’une requête SQL<br />
Vues relationnelles<br />
1. FROM<br />
Réalise le produit cartésien <strong>des</strong> relations<br />
2. WHERE<br />
Réalise restriction et jointures<br />
3. GROUP BY<br />
Constitue les partitions<br />
(e.g., tri sur l’intitulé du groupe)<br />
4. HAVING<br />
Restreint aux partitions désirées<br />
5. SELECT<br />
Réaliser les projections/calculs finaux<br />
6. ORDER BY<br />
Trier les tuples résultat<br />
AGG1<br />
AGG3<br />
AGG1<br />
AGG3<br />
XXX<br />
XXX<br />
YYY<br />
ZZZ<br />
XXX<br />
XXX<br />
YYY<br />
ZZZ<br />
XXX<br />
ZZZ<br />
ZZZ<br />
XXX<br />
51<br />
AGG1<br />
AGG2<br />
AGG3<br />
• Les vues permettent d’implémenter l’indépendance logique<br />
en créant <strong>des</strong> objets virtuels<br />
• Vue = Question SQL stockée<br />
• Le SGBD stocke la définition et non le résultat<br />
• Exemple : la vue <strong>des</strong> patients parisiens<br />
Create View Patients_Parisiens as (<br />
Select<br />
From<br />
Nom, Prénom<br />
Patients<br />
Where Patients.Ville = ’Paris’ )<br />
52
Les vues : <strong>des</strong> relations virtuelles !<br />
Le SGBD transforme la question sur les vues en question sur<br />
les relations de base<br />
Déclencheurs : Définition<br />
• Définition : Déclencheurs ou Triggers<br />
−<br />
Règle E – C – A : Événement – Condition – Action<br />
Question Q<br />
sur <strong>des</strong> vues<br />
Définition <strong>des</strong><br />
vues<br />
Gestionnaire<br />
de Vues<br />
Question Q’<br />
sur les relations<br />
de base<br />
Lorsque l’événement se produit<br />
−<br />
Insert / Update / Delete pour une relation donnée<br />
si la condition est remplie<br />
−<br />
Prédicat SQL optionnel<br />
alors exécuter l’action<br />
−<br />
−<br />
Code à exécuter (ex. PL/SQL sous Oracle)<br />
Pour chaque tuple concerné ou une fois par événement<br />
53<br />
54<br />
Déclencheurs : Syntaxe (dans Oracle)<br />
PROGRAMMATION SQL<br />
Create trigger <br />
before | after<br />
insert | delete | update [of ]<br />
on <br />
[referencing old as , new as ]<br />
for each row<br />
[when ]<br />
DECLARE<br />
BEGIN<br />
<br />
END<br />
permet d’indiquer quand le trigger va être exécuté<br />
Quel est l’événement déclencheur<br />
indique le nom de la table qui doit être surveillée<br />
en SQL3, Oracle utilise :new et :old<br />
Précise si l’action est exécutée 1 fois par tuple concerné ou pour toute la table<br />
permet d’indiquer une condition pour l’exécution du trigger<br />
Déclaration de variables pour le bloc PL/SQL<br />
Bloc PL/SQL contenant le code de l’action à exécuter<br />
Dans SLQ3, on peut indiquer une suite de commande SQL<br />
• La syntaxe diffère légèrement suivant le SGBD<br />
•SQL n’est pas un langage complet<br />
• Problématique de la connexion langage hôte/SQL<br />
• déclaratif/ensembliste vs. procédural<br />
• conversion de type<br />
• 3 approches<br />
• Embedded SQL (PRO*C, SQLJ …)<br />
• API de bas niveau (SQL-CLI, ODBC, JDBC …)<br />
• Langage dédié (PL/SQL, SQL/PSM …)<br />
55<br />
56
Exemple Embedded SQL<br />
Exemple JDBC<br />
EXEC SQL DECLARE C1 CURSOR FOR<br />
SELECT NumDoc, NomDoc<br />
FROM DOC<br />
WHERE VilleDoc = ‘Versailles’;<br />
import java.sql.*;<br />
...<br />
class JdbcTest {<br />
static String BD_URL = "jdbc:oracle:@nomBDRoute";<br />
main()<br />
{<br />
EXEC SQL BEGIN DECLARE SECTION<br />
char sqlstate[6], NomDoc[21], VilleDoc[31];<br />
int NumDoc;<br />
EXEC SQL END DECLARE SECTION<br />
}<br />
EXEC SQL OPEN C1 ;<br />
while (notEndofResult(sqlstate) {<br />
EXEC SQL FETCH C1 INTO :NumDoc, :NomDoc;<br />
...<br />
}<br />
EXEC SQL CLOSE C1 ;<br />
57<br />
public static void main (String args [])<br />
throws SQLException, ClassNotFoundException, IOException<br />
{<br />
}<br />
}<br />
Class.forName ("oracle.jdbc.OracleDriver");<br />
Connection BDRoute;<br />
BDRoute =DriverManager.getConnection(BD_URL, "MonNom", "MonPass");<br />
Statement Trajet = BDRoute.createStatement ();<br />
ResultSet ResTrajet = Trajet.executeQuery<br />
("SELECT * FROM Route WHERE Depart = ‘Paris’");<br />
while ( ResTrajet.next() )<br />
{ System.out.println (ResTrajet.getString ("Arrivee")); }<br />
ResTrajet.close();<br />
Trajet.close();<br />
BDRoute.close();<br />
58<br />
Exemple : Oracle PL/SQL<br />
Curseurs PL/SQL : exemple<br />
• Procédure Anonyme<br />
Client<br />
PL/SQL<br />
Moteur<br />
PL/SQL<br />
• Procédure stockée (invocation directe)<br />
Client<br />
RPC<br />
Moteur<br />
PL/SQL<br />
• Procédure stockée (invocation indirecte)<br />
Client<br />
Mise à jour SQL<br />
Moteur<br />
PL/SQL<br />
Serveur<br />
SQL<br />
Serveur<br />
SQL<br />
Serveur<br />
SQL<br />
BD<br />
BD<br />
BD<br />
PL/SQL<br />
trigger<br />
PL/SQL<br />
59<br />
DECLARE<br />
CURSOR Compta IS<br />
SELECT nom, salaire FROM Employe WHERE service = ‘comptabilité’;<br />
Emp Compta%ROWTYPE;<br />
BEGIN<br />
OPEN Compta;<br />
FETCH Compta INTO Emp;<br />
WHILE Compta%FOUND LOOP<br />
IF Emp.salaire IS NOT NULL AND Emp.Salaire < 30.000 THEN<br />
UPDATE Employe SET salaire = salaire * 1,05 WHERE nom = Emp.nom<br />
END IF;<br />
FETCH Compta INTO Emp;<br />
END LOOP;<br />
CLOSE C;<br />
END;<br />
60
Architecture physique <strong>des</strong> SGBD<br />
Architecture centralisée<br />
• Une floraison de vocabulaire et d’architectures<br />
−<br />
−<br />
−<br />
−<br />
−<br />
−<br />
−<br />
BD centralisée<br />
BD client/serveur<br />
BD 3-tiers<br />
BD répartie<br />
BD hétérogène<br />
BD sur le Cloud<br />
…<br />
Terminaux passifs<br />
réseau<br />
Appli 1 Appli 2 Appli n<br />
SGBD<br />
données<br />
• Des terminaux clients passifs<br />
• Un réseau<br />
• Un serveur central<br />
−<br />
−<br />
grande puissance (‘mainframe’)<br />
Maintient la base et les applications<br />
Mainframe<br />
61<br />
Exemple d’instance de cette architecture?<br />
le minitel, mais aussi Google ☺<br />
62<br />
Architecture client-serveur<br />
Appli 1<br />
Clients intelligents<br />
Appli 2<br />
Appli n<br />
• Des clients intelligents<br />
−<br />
Font tourner les applications<br />
• Un réseau<br />
• Un serveur de données<br />
−<br />
Maintient la base<br />
Architecture 3-tiers<br />
réseau<br />
• Des clients<br />
−<br />
Concentrés sur la présentation<br />
• Un réseau<br />
• Un serveur d’application<br />
−<br />
Exécute le code applicatif<br />
• Un serveur de données<br />
−<br />
−<br />
Maintient la base<br />
Sur la même machine ou <strong>des</strong> machines différentes<br />
réseau<br />
Serveur<br />
d’application<br />
Appli 1 Appli 2 Appli n<br />
serveur<br />
SGBD<br />
Serveur<br />
de données<br />
SGBD<br />
code<br />
données<br />
code<br />
données<br />
Exemple d’instance de cette architecture?<br />
Client messagerie<br />
63<br />
Exemple d’instance de cette architecture?<br />
Appli Web<br />
64
Architecture répartie<br />
Appli 1<br />
Appli 2<br />
Appli n<br />
• Des clients intelligents<br />
−<br />
−<br />
Font tourner l’application<br />
Interagissent avec ‘1 SGBD’<br />
(l’application ne voit pas que sa requête est réacheminée)<br />
• Un réseau<br />
• Des serveurs<br />
−<br />
Une même base<br />
−<br />
Gèrent chacun une partition<br />
Architecture hétérogène<br />
Appli 1 Appli 2 Appli n<br />
Médiateur<br />
• Des clients intelligents<br />
− Interagissent avec ‘1 médiateur’<br />
• Un médiateur<br />
− Interroge les sources<br />
− Nettoyage, intégration, etc.<br />
• Des sources de données<br />
− Données hétérogènes<br />
• Type, schéma, etc.<br />
− Gestion <strong>des</strong> données différente…<br />
code<br />
SGBD 1.1<br />
données<br />
code<br />
SGBD 1.2<br />
données<br />
code<br />
Source 1 :<br />
SGBD<br />
données<br />
code<br />
Source 2 :<br />
serveur Web<br />
données<br />
Exemple d’instance de cette architecture?<br />
Agences d’une société<br />
65<br />
Exemple d’instance de cette architecture?<br />
Kelkoo<br />
66<br />
Architecture en Cloud<br />
Applications traditionnelles <strong>des</strong> SGBD<br />
Terminaux<br />
réseau<br />
Appli 1 Appli 2 Appli n<br />
SGBD<br />
données<br />
• Virtualisation de l’approche<br />
centralisée avec mutualisation <strong>des</strong><br />
ressources matérielles et logicielles<br />
• Objectif = élasticité « Pay as you go »<br />
• DaaS: Database as a Service<br />
Mainframe<br />
• OLTP (On Line Transaction Processing)<br />
−<br />
Cible <strong>des</strong> SGBD depuis leur existence<br />
− Banques, réservation en ligne ...<br />
−<br />
−<br />
Très grand nombre de transactions en parallèle<br />
Transactions simples<br />
• OLAP (On Line Analytical Processing)<br />
−<br />
−<br />
−<br />
Entrepôts de données, DataCube, Data Mining …<br />
Faible nombre de transactions<br />
Transactions très complexes<br />
Exemple d’instance de cette architecture?<br />
Amazon EC2<br />
67<br />
68
Applications nouvelles …<br />
• DB in the (very) large<br />
−<br />
−<br />
NoSQL: sélections/màj simples sur tables géantes<br />
• ex: BigTable (Google), Cassandra (Facebook), Dynamo (Amazon) …<br />
• Performance/scalabilité au détriment de la cohérence<br />
Big Data: analyse de gigantesques volumes de données faiblement structurées<br />
• Parallélisation/distribution massive <strong>des</strong> traitements : map/reduce<br />
• DB in the (very) small<br />
−<br />
−<br />
−<br />
Réseaux de capteurs : calcul d’agrégats …<br />
Véhicules : recherche places libres, prédiction de traffic, alertes …<br />
BD personnelles : étu<strong>des</strong> épidémiologiques, enquêtes …<br />
• Nouvelles formes d’acquisition de données<br />
−<br />
−<br />
−<br />
Intelligence ambiante : acquisition automatique de flux de données, préservation<br />
de la vie privée<br />
BD participatives : (ex: Wikipedia), administration distribuée, data provenance,<br />
versions<br />
DB Crowdsourcing : multitude d’acteurs humains capturant <strong>des</strong> données<br />
cognitives (critères subjectifs) ou difficiles à accumuler de façon automatique<br />
69<br />
Orientations de recherche (1)<br />
• Gestion de données complexes<br />
−<br />
−<br />
−<br />
Semi-structurées : stockage, indexation, interrogation de docs XML<br />
Non structurées : recherche par le contenu, index multidimensionnels, relations<br />
spatio-temporelles<br />
Intégrer l’ensemble de ces données dans un ‘dataspace’ cohérent et en extraire de la<br />
connaissance<br />
• Masses de données distribuées<br />
−<br />
−<br />
−<br />
−<br />
Médiation de données : intégration de schémas, requêtes de médiation<br />
Médiation de programmes : construction de workflows, optimisation <strong>des</strong> flux,<br />
composition de services Web<br />
interrogation de masses de données : requêtes continues, personnalisation, critères<br />
approximatifs, publish/subscribe, etc<br />
BD en P2P, Content Delivery Networks : localisation <strong>des</strong> ressources/acheminement<br />
• Entrepôts de données et fouille<br />
−<br />
Recherche de règles associatives, de dépendances fonctionnelles, fouille de<br />
données spatio-temporelles …<br />
70<br />
Orientations de recherche (2)<br />
Orientations de recherche (3) : sécurité <strong>des</strong> BD<br />
• Mobilité<br />
−<br />
Requêtes spatio-temporelles, BD embarquées, cohérence <strong>des</strong> traitements<br />
déconnectés, réseaux de capteurs, réseaux de véhicules …<br />
• Architecture et performance (encore et toujours)<br />
−<br />
−<br />
−<br />
−<br />
−<br />
Évolutions matérielles : gran<strong>des</strong> mémoires, nouvelles mémoires<br />
persistantes, nouveaux processeurs …<br />
Parallélisme massif, Cloud computing<br />
SGBD auto-administrables<br />
Économie d’énergie<br />
Donc : indexation, optimisation de requêtes, réplication, transactions,<br />
benchmarks, etc …<br />
• Et bien sûr « Sécurité <strong>des</strong> bases de données » ☺<br />
−<br />
Cf. transparent suivant<br />
(liste non exhaustive)<br />
71<br />
2- Protection <strong>des</strong><br />
communications<br />
User<br />
1- Authentification<br />
9- Législation<br />
3- Autorisations 8- Anonymisation<br />
de données<br />
7- Rétention<br />
limitée <strong>des</strong><br />
données<br />
4- Chiffrement<br />
<strong>des</strong> données<br />
Extraction<br />
Requêtes<br />
5- Audit<br />
6- Contrôle<br />
d’usage<br />
72