29.10.2014 Views

Rappels des concepts fondamentaux - smis inria

Rappels des concepts fondamentaux - smis inria

Rappels des concepts fondamentaux - smis inria

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!