Système de Gestion de Bases de Données - Vincent Mazenod

publicité
SGBD
Système de Gestion de Bases de
Données
Vincent Mazenod
 Ingénieur d'Etudes au CNRS
Développeur web
En poste au LIMOS Bureau A115
 Expert SSI à la CRSSI DR7 CNRS
 [email protected]
 mazenovi
 mazenovi
 mazenovi ­ gist
 mazenovi
Business today is data ...
... and research too ...
.. indeed data is everywhere ...
utilisées partout où il y a traitement d’informations
réseaux sociaux:  facebook,  twitter, le réseau EDeN
moteur de recherche et "services":  Google
recherche scientifique: génétique, astronomie,
climatologie
insee, sécurité sociale
http://www.legifrance.gouv.fr/
système de réservation
e­commerce :  amazon
intimement liées aux problèmatiques de SI
SI Système d’Information
Système de Gestion de Bases de
Données SGBD
Outil permettant le stockage persistant des données
insérer (Create)
modifier (Update)
supprimer (Delete)
de rechercher (Read) efficacement des données spécifiques dans une
grande masse d’informations
L’utilisateur doit pouvoir affiner ses recherches en spécifiant des
contraintes
Les résultats doivent pouvoir être classés selon des critères
Gestion de gros volumes de données
Différentes Approches
fichiers de type Excel 
chaque colonne représente un champs distinct (nom, prénom, mail,
…)
chaque ligne est un vecteur de valeurs pour chaque champs
 NB Excel ne gère pas les bases de données!
format CSV (Comma Separated Values) fichier texte simple
approche key­value performantes pour les gros volumes
bases de données ­ NoSQL ­ Not Only SQL (2009)
 Google Cloud BigTable
 Amazon DynamoDB
 facebook Cassandra utilisé par  twitter, Netflix,  digg.com
 problématiques
redondance
gestion des accès concurrentiels
inefficient pour les modèles complexes
coût de recherche élevé
organisation sur le disque inadéquate
sécurité hasardeuse
Approche relationelle
Un exemple ...
... de schéma relationel
Exemples de moteur de bases de
données
 Open source, voir
libre
SQLite
MySQL, MariaDB
PostgreSQL
 Propriétaires
FileMaker Pro
Microsoft Access
Informix, Progress
Oracle Database
SGBD Relationnel
Les données sont représentées en tables
Les tables sont liées entre elles (algèbre relationnelle)
Propose un langage déclaratif (SQL ou dérivé)
Les transactions (réservation, achat, paiement, …) doivent être
ACID
Atomique, Cohérente, Isolée et Durable
ACID
on parle de transaction ACID
Atomicité une transaction doit s’effectuer en tout ou rien, c’est­à­dire
complètement ou pas du tout
Cohérence en cas d’erreur les données doivent toutes être restaurées
à leur état initial
Isolation les données sont verrouillées pendant le traitement mais
l’état antérieur reste accessible aux autres transactions (contexte)
Durabilité lorsque la transaction est achevée, le système est dans un
état stable, durable soit après succès de la transaction, soit après son
échec
Indépendance physique
Les disques, la machine, les méthodes d’accès, les modes de placement,
les méthodes, le codage des données peuvent varier
Le SGBD offre une structure canonique permettant la représentation des
données réelles sans se soucier de l’aspect matériel
 Indépendance logique
Chaque utilisateur doit pouvoir se concentrer sur ce qui l’intéresse
uniquement
L’administrateur du SGBD doit pouvoir faire évoluer le système
d’informations sans remettre en cause la vue de chaque utilisateur
Facilité de manipulation
Le SGBD doit permettre d’obtenir les données par des langages
d’interrogation simples
Doit permettre également un degré élevé de précision, dans le tri des
données par critères
Rapidité des accès
Le système doit pouvoir fournir les réponses aux requêtes le plus
rapidement possible
Cela implique des algorithmes de recherche rapides
NB  sur des grands volumes de données et / ou des requêtes
complexes ce peut être un exercice difficile
Administration centralisée
Le SGBD doit permettre à
l’administrateur
De pouvoir manipuler les données
Insérer des éléments
Vérifier son intégrité
… De façon centralisée!
Non redondance des données
Le SGBD doit permettre d’éviter la duplication d’informations qui:
Consomme inutilement de la place en mémoire
Demande des moyens humains importants pour saisir et maintenir à
jour plusieurs fois la même donnée
La redondance nuit gravement à la cohérence & aux performances
Cohérence des données
Cette cohérence est obtenue par la vérification de contraintes d’intégrité
déclarées au niveau du schéma de base de données
Une contrainte d’intégrité est une contrainte sur les données de la
base, qui doit toujours être vérifiée
Par exemple lorsque des éléments font référence à d’autres, ces
derniers doivent être présents (clé étrangère)
Partage des données
Le SGBD doit permettre à plusieurs personnes ou applications d’accéder
simultanément aux données tout en conservant l’intégrité de la base et la
précédence des opérations
Chacun doit avoir l’impression qu’il est le seul à utiliser les données
Tolérance aux pannes
Si une coupure de courant survient pendant l’exécution d’une opération
sur la base, le SGBD doit être capable de revenir à un état opérationnel
Sécurité des données
Les données doivent être protégées des accès non autorisés ou mal
intentionnés
Il doit exister des mécanismes permettant d’autoriser, contrôler et
enlever des droits d’accès à certaines informations pour n’importe quel
usage
Représentation d’une base de
données
Une base de données est un ensemble de tables (ou relations)
chaque table à un nom unique
Chaque colonne (ou attribut ou champs) est caractérisée par
un nom unique au sein de la table
un type de données
Chaque ligne (ou tuple ou enregistrement) est un vecteur de valeur pour
chaque colonne
Chaque valeur respecte les contraintes de la colonne associée
Représentation d’une table de base
de données
Base de données
entreprise
Table personne
id nom
prenom adresse
salaire fonction
1
Dupont Pierre
13 rue des lilas
2
Durand Martin
17 Bd Clémenceau 1500
3
Martin
Jacques 117 Bd Lafayette
1200
3000
technicien
ingénieur junior
directeur
Interrogation
Permet d’interroger les tables de manière plus ou moins
complexe
Syntaxe générale
SELECT attribut 1, …, attribut n
FROM table 1, …, table n
WHERE condition 1, …, condition n
Interrogation
Projection = sélection d’une liste
d’attribut
SELECT Nom, Prenom
FROM Personne
nom
prenom
Dupont Pierre
Durand Martin
Martin
Jacques
Interrogation
Sélection = sélection d’enregistrements vérifiant une ou plusieurs
conditions sur des attributs
SELECT Prenom
FROM Personne
WHERE Nom='Martin'
nom
prenom
Martin Jacques
Interrogation
matérialiser la notion de lien entre
tables
Base de données entreprise
Table personne
id nom
prenom adresse
salaire service_id fonction
1
Dupont Pierre
13 rue des lilas
1200
1
technicien
2
Durand Martin
17 Bd
Clémenceau
1500
1
ingénieur
junior
3
Martin
Jacques 117 Bd Lafayette 3000
2
Directeur
Table
service
id nom
1
R&D
2
Comptabilité
Interrogation
Jointure = sélection d’enregistrements de plusieurs tables en prenant
come pivot un ou plusieurs attributs
SELECT personne.nom, prenom, service.nom
FROM personne, service
WHERE personne.service_id = service.id
personne.nom prenom service.nom
Dupont
Pierre
R&D
Durand
Martin
R&D
Martin
Jacques Comptabilité
Contraintes d'intégrité
Clé primaire
Contrainte d'unicité
Clé étrangère
Contrainte d'intégrité référentielle
Type d'attribut
Contrôle des valeurs insérées dans la table
Optimisation de la taille des tables
Opérateurs surchargés selon le type de l’attribut dans les
conditions
Types principaux
Entiers
Réels
Booléens
Chaînes de caractères
Date
Téléchargement