les serveurs de bases de données

76
Section 4: Les serveurs de bases de données 1 Les serveurs de bases de données Pourquoi un SGBD? Le modèle relationnel Le langage SQL Java Database Connectivity • JDBC

Upload: paloma-fields

Post on 02-Jan-2016

51 views

Category:

Documents


2 download

DESCRIPTION

Les serveurs de bases de données. Pourquoi un SGBD? Le modèle relationnel Le langage SQL Java Database Connectivity JDBC. Introduction. Définitions Une Base de Données (BD) est une grande quantité de données, - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 1

Les serveurs de bases de données

• Pourquoi un SGBD?• Le modèle relationnel • Le langage SQL• Java Database Connectivity

• JDBC

Page 2: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 2

Introduction

• Définitions• Une Base de Données (BD) est

• une grande quantité de données, • centralisées ou non, servant pour les besoins

d'une ou plusieurs applications, interrogeables et modifiables par un groupe d'utilisateurs travaillant en parallèle.

• exhaustif, • non redondant, • structuré, • persistant.

Page 3: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 3

Définitions, suite

• Un Système de Gestion de Bases de Données (SGBD),

• il peut être vu comme le logiciel qui prend en charge

• la structuration, • le stockage, • la mise à jour et la maintenance des données ;

– Permet de• décrire, • modifier, • interroger, • administrer

Page 4: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 4

Pourquoi?

• Les limites à l'utilisation des fichiers. De telles applications sont :

• rigides, • contraignantes, • longues et coûteuses à mettre en oeuvre.

• Les données associées dans les applications fichiers sont :

• mal définies et mal désignées, • redondantes, • peu accessibles de manière ponctuelle, • peu fiables.

Page 5: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 5

Objectifs des SGBD

• Indépendance physique• Utilisation du matériel cachée

• Indépendance logique• Plusieurs vue logiques sont possibles

• Manipulations des données par des non informaticiens • Efficacité des accès aux données

Page 6: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 6

Objectifs, suite

• Administration centralisée des données • Non redondance des données • Cohérence des données• Partageabilité des données

• permettre à deux (ou plus) utilisateurs de modifier la même donnée "en même temps" ;

• assurer un résultat d'interrogation cohérent pour un utilisateur consultant une table pendant qu'un autre la modifie.

Page 7: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 7

Objectifs, suite

• Sécurité des données • Les données doivent pouvoir être protégées contre les accès non

autorisés. Pour cela, il faut pouvoir associer à chaque utilisateur des droits d'accès aux données.

• Résistance aux pannes • Que se passe-t-il si une panne survient au milieu d'une

modification, si certains fichiers contenant les données deviennent illisibles? Les pannes, bien qu'étant assez rares, se produisent quand même de temps en temps. Il faut pouvoir, lorsque l'une d'elles arrive, récupérer une base dans un état "sain". Ainsi, après une panne intervenant au milieu d'une modification deux solutions sont possibles : soit récupérer les données dans l'état dans lequel elles étaient avant la modification, soit terminer l'opération interrompue.

Page 8: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 8

Concepts de base

• Niveau interne • Description du stockage des données au niveau des unités

de stockage, des fichiers, ... On appelle cette description le schéma interne.

• Niveau conceptuel • Description de la structure de toutes les données qui

existent dans la base, description de leurs propriétés (relations qui existent entre elles) c'est-à-dire de leur sémantique inhérente, sans soucis d'implémentation physique ni de la façon dont chaque groupe de travail voudra s'en servir. On appelle cette description le schéma conceptuel.

• Niveau externe • Description pour chaque utilisateur de sa perception des

données. On appelle cette description le schéma externe ou vue.

Page 9: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 9

Composants des systèmes de

gestion de bases de données

• La description des données

• L’interrogation des données

• La sauvegarde et la récupération après pannes

• Les accès concurrents aux données

Page 10: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 10

Le modèle relationnel

• Les objectifs du modèle relationnel : • proposer des schémas de données faciles à utiliser, • améliorer l'indépendance logique et physique, • mettre à la disposition des utilisateurs des langages

de haut niveau pouvant éventuellement être utilisés par des non informaticiens,

• optimiser les accès à la base de données, • améliorer l'intégrité et la confidentialité, • fournir une approche méthodologique dans la

construction des schémas.

Page 11: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 11

Présentation simple du modèle relationnel

• Les données sont organisées sous forme de tables à deux dimensions, encore appelées relations et chaque ligne un tuple

• les données sont manipulées par des opérateurs de l'algèbre relationnelle

• l'état cohérent de la base est défini par un ensemble de contraintes d'intégrité.

Page 12: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 12

Définitions

• Domaine• Ensemble de valeurs.

• Relation• Sous-ensemble du produit cartésien d'une liste de

domaines caractérisé par un nom. En d'autres termes, une relation n'est ni plus ni moins qu'une table dans laquelle chaque colonne correspond à un domaine et porte un nom ce qui rend leur ordre sans aucune importance.

• Attribut• Colonne d'une relation caractérisée par un nom.

Page 13: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 13

Clé d’une relation

• Une clé de relation est un sous-ensemble d'attributs qui permet de caractériser tout enregistrement d'une relation.

• Par définition, une relation est un ensemble de enregistrements et il ne peut donc pas y avoir deux enregistrements strictement identiques dans la même relation.

Page 14: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 14

Définitions, suite

• Schéma de relation• Nom de la relation, suivi de la liste des attributs avec leurs

domaines. • Base de données relationnelles

• Base de données dont le schéma est un ensemble de schémas de relations et dont les occurrences sont les tuples de ces relations.

• Système de gestion de bases de données relationnel • C'est un logiciel supportant le modèle relationnel, et qui

peut manipuler les données avec des opérateurs relationnels.

Page 15: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 15

Opérateurs relationnels

• Projection  • Opération qui consiste à supprimer des attributs d'une relation et à éliminer

les tuples en double apparaissant dans la nouvelle relation. • Restriction  

• Opération qui consiste à supprimer les tuples d'une relation ne satisfaisant pas la condition précisée.

• Jointure  • Opération qui consiste à faire le produit cartésien de deux relations, puis à

supprimer les tuples ne satisfaisant pas une condition portant sur un attribut de la première relation et sur un attribut de la seconde.

• Union  • Opération portant sur deux relations ayant le même schéma et construisant

une troisième relation constituée des tuples appartenant à chaque relation. Les tuples en double sont éliminés.

• Différence relationnelle • Opération portant sur deux relations ayant le même schéma et

construisant une troisième relation dont les tuples sont constitués de ceux ne se trouvant que dans une seule relation.

Page 16: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 16

• Intersection:   • Opération portant sur deux relations ayant le même

schéma et construisant une troisième relation dont les tuples sont constitués de ceux appartenant aux deux relations.

Page 17: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 17

Formes normales

• Première forme normale :   • tout attribut contient une valeur atomique.

• Deuxième forme normale :  • 1 + tout attribut n'appartenant pas à une clé ne

dépend pas que d'une partie de cette clé. • Troisième forme normale :  

• 2 + tout attribut n'appartenant pas à une clé ne dépend pas d'un attribut non clé.

• Forme normale de BOYCE-CODD :  • Une relation est en Forme normale de BOYCE-CODD

(BCNF) si, et seulement si, les seules dépendances fonctionnelles sont celles dans lesquelles une clé détermine un attribut.

Page 18: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 18

Exemple

• Tables non normalisées• Un champ contenant <Prénom Nom>

• Non respect de 1

• Un champ adresse contenant 2 attributs• <Prénom Nom>• <adresse civique, ville, pays, code postal>• Non respect de 1

• <code produit>, <description du produit>, <code couleur>, <description de la couleur en anglais>

• Non respect de 3

Page 19: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 19

• Un magasin entrepôt• Shipping and keeping unit-sku

• Produit sur une tablette ou en entrepôt

• Code de type de produit: • téléviseur

• <Code de type de produit>, <numéro sku>, <code couleur>, <description du produit>, <description de la couleur>

• La colonne <description de la couleur> dépend de l’attribut non clef <code couleur>

Page 20: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 20

Tables normalisées

• <sku>, <code produit>, <code couleur>

• <code produit>, <description du produit>

• <code couleur>, <description de la couleur en anglais>

Page 21: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 21

Les serveurs de bases de données

• Existent depuis longtemps déjà• Joue un rôle majeur dans les

systèmes de commerce électronique

• Presque tous basés sur le modèle relationnel

Page 22: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 22

Tables relationnelles

ItemId Item NoInStock

Aw222 Washer A 300

Ntr444 Nut A 2009

Edt666 Spanner S 802

Bt555qw Bolt B 200

ClefChaque ligne contient des données associées

Page 23: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 23

SQL

• « Structured Query Language »• En existence depuis longtemps• Utilisé pour créer, modifier,

retrouver les données des tables relationnelles

• Standard

Page 24: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 24

Un exemple

Select EmployeeName, Salary From Employees WHERE Salary>3500

Noms des colonnes

Nom de la table

Condition

Page 25: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 25

SQL

Le langage sql (Structured Query Language) comprend à lui seul l'ensemble des instructions nécessaires à la spécification et à l'utilisation d'une base de données relationnelle.

C'est un langage de type déclaratif c'est-à-dire que l'on spécifie les propriétés des données que l'on recherche et pas, comme dans un langage impératif, comment les retrouver.

Page 26: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 26

Normalisation

• Le langage ANSI-sql est un langage normalisé, 3 versions• SQL89 (SQL1)• SQL92 (SQL2)• SQL99 (SQL3)

• la version de la norme la plus connue est la deuxième, sql-92.

• La troisième version de la norme intégre, entre autres, la notion de types abstraits algébriques; on la désigne sous le nom de sql3.

Page 27: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 27

SQL: C'est à la fois :

un langage d'interrogation de données (LID) : SELECT ;

un langage de manipulation de données (LMD) : UPDATE, INSERT, DELETE ;

un langage de definition des données (LDD) : ALTER, CREATE, DROP;

un langage de contrôle des données et des utilisateurs (LCD) : GRANT, REVOKE.

Page 28: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 28

Remarques

• Beaucoup de systèmes de gestion de données (et non pas de gestion de bases de données ) sont vendus comme étant relationnels, souvent parce qu'ils présentent les données sous forme de tables.

• Un système est dit minimalement relationnel s'il satisfait aux conditions suivantes : • toute information dans la base est représentée par des

valeurs dans des tables, • il n'y a pas de pointeurs visibles par l'utilisateur entre les

tables, • le système doit supporter au moins les opérateurs

relationnels de restriction, projection, jointure naturelle.

Page 29: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 29

Un système est dit complètement relationnel

• s'il satisfait, en plus, aux conditions suivantes : • il supporte tous les opérateurs de l'algèbre relationnelle, • il supporte la contrainte d'unicité de clé d'une relation, • il supporte les contraintes référentielles qui permettent de

s'assurer que la valeur d'une donnée d'une relation existe dans une autre relation (notion de foreign key).

Page 30: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 30

Limite du modèle

• En dépit de sa simplicité et de son élégance le modèle relationnel n'apporte pas une réponse satisfaisante à tous les problèmes des applications. Il faut : • Pouvoir prendre en compte des "objets" structurés ainsi

que les opérations qui leur sont associées (bases de données orientées objet).

• Prendre en compte des données peu structurées : textes, sons, images, graphiques (bases de données multi-média).

• Faire le pont avec l'intelligence artificielle afin de pouvoir déduire de nouvelles données à partir de celles existant

déjà (bases de données déductives)

Page 31: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 31

Le langage SQL

• Ce chapitre expose la partie du langage SQL permettant de retrouver des informations stockées dans une base de données. • Il s'agit, comme cela a déjà été dit, d'un langage déclaratif

dont la syntaxe est très simple (comme beaucoup de langages de ce type) ce qui permet de se concentrer sur le problème à résoudre.

• Ces exemples sont bâtis sur une base de données composée des deux relations suivantes : • emp (nom, num, fonction, n_sup, embauche, salaire,

comm, n_dept) • dept(n_dept, nom,lieu)

Page 32: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 32

Table emp

• NOM NUM FONCTION N_SUP EMBAUCHE SALAIRE COMM N_DEPT • MARTIN 16712 Directeur 25717 23-MAY-90 40000 30 • DUPONT 17574 administratif 16712 3-MAY-95 9000 30 • DUPOND 26691 commercial 27047 04-APR-88 25000 20 • LAMBERT 25012 administratif 27047 14-APR-91 12000

20 • JOUBERT 25717 president 10-OCT-82 50000 30 • LEBRETON 16034 Commercial 27047 01-JUN-91 15000 20 • MARTIN 17147 commercial 27047 10-DEC-93 20000 500 20 • PAQUEL 27546 commercial 27047 03-SEP-83 22000 2000 20 • LEFEBVRE 25935 commercial 27047 11-JAN-84 23500 1500 20 • GARDARIN 15155 ingénieur 24533 22-MAR-85 24000 10 • SIMON 26834 ingénieur 24533 04-OCT-88 20000 10 • DELOBEL 16278 ingénieur 24533 16-NOV-94 21000 10 • ADIBA 25067 ingénieur 24533 05-OCT-87 30000 10 • CODD 24533 directeur 25717 12-SEP-75 55000 10 • LAMERE 27047 directeur 25717 07-SEP-89 45000 20 • BALIN 17232 administratif 24533 03-OCT-87 13500 10

Page 33: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 33

Table dept

• N_DEPT NOM LIEU • 10 recherche Rennes • 20 vente Metz • 30 direction Gif • 40 fabrication Toulon

Page 34: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 34

SELECT

• La commande SELECT constitue, à elle seule, le langage permettant d'interroger une base de données.

• Elle permet : • de sélectionner certaines colonnes d'une table : c'est l'opération de

projection ; • de sélectionner certaines lignes d'une table en fonction de leur contenu :

c'est l'opération de restriction ; • de combiner des informations venant de plusieurs tables : ce sont les

opérations de jointure, union, intersection,différence relationnelle ; • de combiner entre elles ces différentes opérations.

Page 35: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 35

Une requête,

• Ou une interrogation, • est une combinaison d'opérations portant sur des tables (relations)

et dont le résultat est lui-même une table dont l'existence est éphémère (le temps de la requête).

Page 36: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 36

Interroger simplement une base

• Sélection de colonnes ou projection• La commande SELECT la plus simple a la

syntaxe suivante : • SELECT * FROM nom_table ;

• Dans laquelle : • nom_table

est le nom de la table sur laquelle porte la sélection. • *

signifie que toutes les colonnes de la table sont sélectionnées.

• Par défaut toutes les lignes sont sélectionnées.

Page 37: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 37

SELECT, suite

• On peut limiter la sélection à certaines colonnes, en indiquant une liste de noms de colonnes à la place de l'astérisque.

• SELECT nom_col1, nom_col2, ... FROM nom_table ;

• Exemple : Donner le nom et la fonction de chaque employé.

• La clause DISTINCT ajoutée derrière la commande SELECT permet d'éliminer les duplications.

Page 38: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 38

Sélection de lignes ou restriction

• La clause WHERE permet de spécifier quelles sont les lignes à sélectionner.

• Elle est suivie d'un prédicat qui sera évalué pour chaque ligne de la table. Les lignes pour lesquelles le prédicat est vrai seront sélectionnées.

• La syntaxe est la suivante : SELECT * FROM nom_table WHERE predicat ;

• Un prédicat n'est ni plus ni moins que la façon dont on exprime une propriété. Les prédicats, qu'ils soient simples ou composés, sont constitués à partir d'expressions que l'on compare entre elles.

Page 39: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 39

Expression simple

• Une expression simple peut être : • une variable désignée par un nom de

colonne, • une constante.

• Les expressions peuvent être de plusieurs types :• numérique, • chaîne de caractères• date• Autres (monétaire)

Page 40: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 40

Type de données de base en SQL

• SMALLINT, INTEGER, • DECIMAL, FLOAT, DOUBLE,• DATE, TIME, TIMESTAMP (en

milliseconde)• CHAR, VARCHAR • Non défini dans le standard

• Objet binaire (musique, image, autre)

Page 41: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 41

Format de constante

• Constante numérique • nombre contenant éventuellement un signe, un point décimal et

une puissance de dix. Ex : -10, 2.5, 1.2 E-10 • Constante chaîne de caractères

• une chaîne de caractères entre apostrophes.• Ex :'MARTIN' (Attention, une lettre en majuscules n'est pas

considérée comme égale à la même lettre en minuscule). • Constante date

• une chaîne de caractères entre apostrophes au format suivant :• jour-mois-année

• le jour est sur deux chiffres, • le mois est désigné par les trois premières lettres de son

nom en anglais, • l'année est sur deux chiffres. • Ex : '01-FEB-85'

Page 42: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 42

Expressions

• On peut, en SQL, exprimer des expressions plus complexes en utilisant des opérateurs et des fonctions

Page 43: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 43

Prédicat simple (i)

• Un prédicat simple est le résultat de la comparaison de deux expressions au moyen d'un opérateur de comparaison qui peut être : • =   égale • != différent • <   inférieur • <= inférieur ou égal • >   supérieur • >= supérieur ou égal

• Les trois types d'expressions peuvent être comparés au moyen de ces opérateurs : • Pour les types date,

• la relation d'ordre est l'ordre chronologique. • Pour les types caractère,

• la relation d'ordre est l'ordre alphabétique.

Page 44: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 44

Prédicat simple (ii)

• Il faut ajouter à ces opérateurs arithmétiques classiques les opérateurs suivants :

• expr1 BETWEEN expr2 AND expr3 • vrai si expr1 est compris entre expr2 et expr3, bornes

incluses • expr1 IN (expr2, expr3, ...)

• vrai si expr1 est égale à l'une des expressions de la liste entre parenthèses

• expr LIKE chaine • où chaine est une chaîne de caractères pouvant contenir

l'un des caractères jokers : • _   remplace exactement 1 caractère • % remplace une chaîne de caractères de longueur

quelconque, y compris de longueur nulle.

Page 45: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 45

Classer le résultat d'une interrogation

• Les lignes constituant le résultat d'un SELECT sont obtenues dans un ordre indéterminé.

• On peut, dans un SELECT, demander que le résultat soit classé• un ordre ascendant ou descendant, en fonction

du contenu d'une ou plusieurs colonnes (jusqu'à 16 critères de classement possibles).

• Les critères de classement sont spécifiés dans une clause ORDER BY dont la syntaxe est la suivante : • ORDER BY {nom_col1 | num_col1 [DESC] [,

nom_col2 | num_col2 [DESC],...]}

Page 46: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 46

Classement, suite

• Le classement se fait d'abord selon la première colonne spécifiée dans l'ORDER BY puis les lignes ayant la même valeur dans la première colonne sont classées selon la deuxième colonne de l'ORDER BY, etc...

• Pour chaque colonne, le classement peut être ascendant (par défaut) ou descendant (DESC).

• Exemple : Donner tous les employés classés par fonction, et pour chaque fonction classés par salaire décroissant

• Remarque : Dans un classement les valeurs NULL sont toujours en tête quel que soit l'ordre du classement (ascendant ou descendant).

Page 47: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 47

Une configuration typique

Serveur Web Serveur de données

Clients

Page 48: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 48

Fonctions d’un serveur de base de données

• Interprèter les instructions SQL et les exécutent

• Optimiser les requêtes• Prévenir les erreurs d’accès

concurrents• Prévenir les étreintes fatales• Administrer la sécurité• Gérer les copies de sauvegarde

Page 49: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 49

Les procédures SQL

• En fait des procédures• Conserver au serveur SQL• Une alternative efficace à l’envoie

d’un grand nombre d’instructions SQL sur le réseau

Page 50: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 50

Les procédures SQL: le pour et le contre

Pour• Plus efficaces dans le temps de traitement• Réduisent le trafic réseau• Garde le code des données proche de la base

de données

Contre• Elles sont non standard• L’optimisation doit être refaites quand les

données et leur accès changent

Page 51: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 51

L’intégrité référentielle (i)

• Les tables dans une base de données doivent être consistantes entre elles

• Exemple• Dans une commande:

• le numéro client• Ce numéro doit exister dans la table des

clients

Page 52: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 52

L’intégrité référentielle (ii)

• Associée avec les règles d’affaires• Deux façons de réaliser l’intégrité

référentielle• Par déclaration dans les schémas de la base

de données• Par des procédures activées par des

événements• Ajout, modification d’un enregistrement

Page 53: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 53

Implémentation

• L’intégrité référentielle déclarative est maintenue par les déclarations dans les schémas de la base de données

• L’intégrité référentielle procédurale est maintenue par le code des procédures SQL

Page 54: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 54

Le pour et le contre

Procédurale• Non-standard• Les procédures sont

éparpillées au travers du système

• Des implémentations ont des limites sur le nombre de procédures

Déclarative• Auto-documentée• Standard

Page 55: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 55

Serveur Relationnel

LogicielServeur

LogicielServeur

Clients

Base de donnéesBase de données

SQL API

Pilote

CommunicationsProtocoles

Page 56: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 56

Les composantes

• L’API fournit l’environnement de travail au programmeur

• Le pilote communique les énoncés SQL au logiciel serveur

• Le logiciel de communication gère les protocoles du côté serveur

• L’interprête SQL traduit les requêtes SQL en logique serveur

• Le serveur exécute les requêtes

Page 57: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 57

Base de données distribuées

• Les bases de données sont réparties sur plusieurs serveurs dans un système distribué

• Les bases de données sont distribuées • Pour des raisons de performance

• Conserver les données proches des clients

• Pour la fiabilité• Conserver une copie des données

• Pour l’héritage des développements passés• Les systèmes ont été développés en succession ou en

parallèle

Page 58: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 58

Problème des systèmes distribués

• Conserver les données dupliquées à jour• S’assurer que les accès concurrents

conservent une base de données distribués dans un état correct

• L’accès sécurisé aux données• Plusieurs points d’accès• Plusieurs fuites possibles

• La fiabilité• Une seule des copies en panne fait arrêter tout le

système• La synchronisation de l’horloge

Page 59: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 59

Modèles de distribution

• Photocopie (Snapshot)• Périodiquement écrire les données à une

base de données distante

• Copie vivante• Conserver des jeux de données identiques

en synchronisme

• Fragmentation• Partager des données entre plusieurs sites

Page 60: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 60

Type de fragmentation (i)

• Fragmentation horizontale• Les tables distribuées ont les mêmes

colonnes que la table originale (la table logique)

• Les enregistrements d’une table logique sont partagées entre plusieurs machines

• Souvent séparés logiquement, par valeur d’attribut

• Données d’une succursale dans le serveur de la succursale

Page 61: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 61

Type de fragmentation (ii)

• Fragmentation verticale• Les colonnes d’un même

enregistrement logique sont séparées• Sémantiquement

• Les tables sont distribuées selon leur domaine

Page 62: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 62

Java Database Connectivity (i)

• Aussi appelé JDBC• Driver

• Pilote, • utilisé du côté client pour communiquer avec

une base de données relationnelles• Statement

• Un énoncé SQL• PreparedStatement

• Un énoncé SQL compilé

• CallableStatement• Une procédure exécutable

Page 63: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 63

Java Database Connectivity (ii)

• Connection• Pour gérer la connexion à une base de

données• ResultSet

• Collection de données résultat d’une requête• DatabaseMetaData

• Meta-données, Données sur une base de données

• DriverManager• Gère les connexions à une base de données

Page 64: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 64

Étape d’un code

• Charger le bon pilote• Établir/Réutiliser une connexion à une

base de données• Associer un énoncé SQL avec cette

connexion• Exécuter cet énoncé• Traiter le résultat de cette requête• Fermer la connexion

Page 65: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 65

Charger le pilote

//Set the name of the file that is to be accessed//and the name of the driverString fileURL = “...”;String driverName = “...”;try{ // Load in the driver programmatically

Class.forName(driverName);}catch (ClassNotFoundException cfn){

//Problem with driver, display error message and //return to operating system with status value 1 System.out.println(“Problem loading driver”); System.exit(1);}

Page 66: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 66

Établir la connexion

try{ //Establish a connection to the database, second //argument is the name of the user and the third //argument is a password (blank) Connection con = DriverManager.getConnection(fileURL, “Darrel”,””);

Page 67: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 67

Créer et exécuter un énoncé SQL

// Create a statement objectStatement selectStatement = con.createStatement();// Execute the SQL select statementResultSet rs = selectStatement.executeQuery (“SELECT name, salary FROM employees WHERE salary >35000");

Page 68: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 68

Traiter le résultat

String employeeName;int employeeSalary;while(rs.next()){ employeeName = rs.getString(1); employeeSalary = rs.getInt(2); System.out.println(“Name = “+ employeeName + “Salary = “+ employeeSalary);}

Page 69: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 69

Fermer

//Close down the database connection, result set//and the SELECT statementselectStatement.close();con.close();rs.close();

Page 70: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 70

Meta données

• Données à propos des données• Peut être des données sur la base

de données, un résultat, ou un pilote

• Java contient des classes qui facilite l’extraction et la manipulation de ces données

Page 71: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 71

Un exemple

Connection c;// Code to establish a connectionDatabaseMetaData dmd = c.getMetaData();System.out.println(“Driver is ”+ dmd.getDriverName() +

“ Version number = “+dmd.getDriverVersion());

Obtenir les données sur le pilote:Son nom et son numéro de version

Page 72: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 72

Modèle trois tier avec une base de données

Clients

Objets d’affaire

Base de données relationnelle

Traduction

Page 73: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 73

Traduction Java et table SQL

• Classes• Traduites en tables

• Instance• Traduite en un enregistrement

• Variables d’instance, ou attributs• Traduites en colonnes

Page 74: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 74

Exemple de traduction prédéfinie

• CHARACTER, VARCHAR, LONGVARCHAR   en objet Java String

• INTEGER en int• NUMERIC   en objet

java.math.BigDecimal • DATE, TIME, TIMESTAMP en objet

java.sql.Date, Time et Timestamp

Page 75: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 75

Références, en français

• Voir Association d'entraide des développeurs francophone - Cours SQBD et SQL• http://www.developpez.com/sgbd/cours.htm

• Voir BD et SGBD – SQL• http://wwwlsi.supelec.fr/www/yb/poly_bd/sql/tdm_sql.html

Page 76: Les serveurs de bases de données

Section 4: Les serveurs de bases de données 76

Références, en anglais

• SQL Tutorial• http://www.1keydata.com/sql/sql.html

• JDBC Tutorial• http://java.sun.com/docs/books/tutorial/jdbc/• http://java.sun.com/products/jdk/1.1/docs/guide/jdbc/

getstart/mapping.doc.html#1008141