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