Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
IFT187 - HIVER 2019
COURS 1: INTRODUCTION
Manuel Lafond
Base de données (BD)
• Collection de données inter-reliées servant à
modéliser des aspects du monde réel.
• Les bases de données sont centrales à une
multitude d’applications informatiques.
• Sites web
• Santé (ex: le GRIIS)
• Gestion des entreprises
• Systèmes universitaires
• Bioinformatique
• Et beaucoup, beaucoup plus…
Exemple de BD
• Modélisation d’un magasin de musique digitale
• Données à entreposer
• Informations sur les Artistes (ou groupes)
• Albums disponibles
• Chansons apparaissant sur un album
Exemple de BD
• Données à entreposer
• Informations sur les Artistes (ou groupes)
• Nom, pays, année d’émergence
• Albums disponibles
• Nom, année de parution
• Chansons apparaissant sur un album
• Titre, no
Exemple de BD
• Données à entreposer
• Informations sur les Artistes (ou groupes)
• Nom, pays, année d’émergence
• Albums disponibles
• Nom, année de parution
• Chansons apparaissant sur un album
• Titre, no
• Un Album a un ou plusieurs artistes
• Un Album contient plusieurs Chansons
• Une Chanson n’apparaît que sur un Album
Comment entreposer?
• Première idée: fichiers CSV
• Un fichier par entité
• Une ligne par élément, représenté
par un n-uplet d’attributs
• Séparés par des “,”
• n-uplet = tuple en Anglais
• Plusieurs problématiques!
Artiste.csvnom, pays, annee_depart
“Eminem”, “USA”, 1996
“Drake”, “USA”, 2008
“Nicki Minaj”,“USA”,2010
...
Album.csvnom, annee
“Infinite”, 1996
“Kamikaze”, 2018
“Thanks me later”, 2010
...
Chanson.csv
...
Comment entreposer?
• Le programme doit souvent
traiter tout le fichier pour
lire/écrire de l’information.
• Exemple:
• En quelle année Nicki Minaj a-t-elle
sorti son premier album?
Artiste.csvnom, pays, annee_depart
“Eminem”, “USA”, 1996
“Drake”, “USA”, 2008
“Nicki Minaj”,“USA”,2010
...
for ligne in file:
attributs = parse(ligne)
if attributs[0] == “Nicki Minaj”:
return attributs[2]
Comment entreposer?
• Comment associer les
éléments entre eux?
Artiste.csvnom, pays, annee_depart
“Eminem”, “USA”, 1996
“Drake”, “USA”, 2008
“Nicki Minaj”,“USA”,2010
...
Album.csvnom, annee
“Infinite”, 1996
“Kamikaze”, 2018
“Thanks me later”, 2010
...
Comment entreposer?
• Comment associer les
éléments entre eux?
Artiste.csvnom, pays, annee_depart
“Eminem”, “USA”, 1996
“Drake”, “USA”, 2008
“Nicki Minaj”,“USA”,2010
...
Album.csvartiste, nom, annee
“Eminem”,“Infinite”,1996
“Eninem”,“Kamikaze”,2018
“Drake”,“Thanks me
later”, 2010
...
Comment entreposer?
• Comment associer les
éléments entre eux?
• Comment garantir l’intégrité
des associations?
Artiste.csvnom, pays, annee_depart
“Eminem”, “USA”, 1996
“Drake”, “USA”, 2008
“Nicki Minaj”,“USA”,2010
...
Album.csvartiste, nom, annee
“Eminem”,“Infinite”,1996
“Eninem”,“Kamikaze”,2018
“Drake”,“Thanks me
later”, 2O10
...
Comment entreposer?
• Comment garantir que toutes
les données sont dans le bon
format
• ex: le domaine des années = les
entiers
Artiste.csvnom, pays, annee_depart
“Eminem”, “USA”, 1996
“Drake”, “USA”, 2008
“Nicki Minaj”,“USA”,2010
...
Album.csvartiste, nom, annee
“Eminem”,“Infinite”,1996
“Eninem”,“Kamikaze”,2018
“Drake”,“Thanks me
later”, 2O10
...
Comment entreposer?
• Que faire si un album a
plusieurs artistes?
Artiste.csvnom, pays, annee_depart
“Eminem”, “USA”, 1996
“Drake”, “USA”, 2008
“Nicki Minaj”,“USA”,2010
...
Album.csvartiste, nom, annee
“Eminem”,“Infinite”,1996
“Eninem”,“Kamikaze”,2018
“Drake”,“Thanks me
later”, 2O10
...
Comment entreposer?
• Et si plusieurs applications différentes
ont besoin d’accéder à notre base de
données?
App Visiteur
(html/php)App Admin
(C++)
App Artiste
(python)
Comment entreposer?
• Et si plusieurs applications différentes
ont besoin d’accéder à notre base de
données?
• Comment gérer les accès concurrents?
App Visiteur
(html/php)App Admin
(C++)
App Artiste
(python)
Comment entreposer?
• Que faire s’il y a un crash au milieu d’un opération
d’écriture?
App Visiteur
(html/php)App Admin
(C++)
App Artiste
(python)
La solution
• Système de gestion de base de données (SGBD)
SGBD
La solution
• Système de gestion de base de données (SGBD)
• Logiciel servant à stocker, à manipuler et à partager des
informations dans une base de données
• En garantissant la qualité, la pérennité et la
confidentialité des informations, tout en cachant la
complexité des opérations.
La solution
• Système de gestion de base de données (SGBD)
• Logiciel servant à stocker, à manipuler et à partager des
informations dans une base de données
• En garantissant la qualité, la pérennité et la
confidentialité des informations, tout en cachant la
complexité des opérations.
• Propriétés ACID: Atomicité, Cohérence, Isolation, Durabilité
• Voir https://fr.wikipedia.org/wiki/Propri%C3%A9t%C3%A9s_ACID
Quelques avantages des SGBD
• 1) Séparation Application-Données
• Abstraction des mécanismes d’entreposage
• 2) Traitement efficace de requêtes
• Interrogation, ajout/modif/suppression
• 3) Vérification de contraintes d’intégrité
• 4) Auto-descriptivité
• Accès aux meta-données qui décrivent la structure de la BD.
• 5) Gestion de la concurrence (accès simultanés)
• 6) Gestion d’erreurs
• 7) Gestion des accès et des permissions
• ...
Quelques avantages des SGBD
• 1) Séparation Application-Données
• Abstraction des mécanismes d’entreposage
• 2) Traitement efficace de requêtes
• Interrogation, ajout/modif/suppression
• 3) Vérification de contraintes d’intégrité
• 4) Auto-descriptivité
• Accès aux meta-données qui décrivent la structure de la BD.
• 5) Gestion de la concurrence (accès simultanés)
• 6) Gestion d’erreurs
• 7) Gestion des accès et des permissions
• ...
COMMENT?
Prenez IGE487
Utilisateurs
Programmes
Applications
...
Données
(et schéma)
SGBD
Types d'utilisateurs
• Administrateurs de DB (ADB, ou DBA en anglais)
• Concepteurs de BD
• Utilisateurs
• Divers niveaux de sophistication:
• Accès logicel (interface graphique, ligne de commande, …)
• Accès programmeur
• Accès direct à la BD
Quand ne PAS utiliser un SGBD
• Application simple et données peu redondantes et peu
variables
• Attention au futur!
• Applications en temps réel
• (ex: analyse de signaux, jeux vidéo, quoique…)
• Systèmes embarqués avec espace disque/mémoire
restreint
• Utilisateur unique
• Requêtes sur objets complexes (image, vidéo, …)
Modèles de données
• Un modèle de données est une description abstraite de
la représentation des données dans une BD.
• Un schéma sert à décrire un ensemble particulier de
données dans le modèle choisi.
Modèles de données
• Relationnel
• Clé-valeur
• Graphes
• Document
• Colonnes
• Hiérarchique
Modèles de données
• Relationnel
• Clé-valeur
• Graphes
• Document
• Colonnes
• Hiérarchique
La plupart des SGDB
(SQL, et newSQL)
Modèles de données
• Relationnel
• Clé-valeur
• Graphes
• Document
• Colonnes
• Hiérarchique
NoSQL
(not only SQL)
AmazonS3,
Neo4J,
MongoDB,
Hbase,
…
La plupart des SGDB
(SQL, et newSQL)
Le modèle relationnel
• Edgar F Codd
• Inventeur du modèle relationnel
• "A Relational Model of Data for
Large Shared Data Banks",
Communications of the ACM, 1970
• Prix Turing, 1981
• Téléchargement de PostgreSQL (inclut pgAdmin4)
• https://www.postgresql.org/download/
• Comment utiliser pgAdmin4
• https://www.usherbrooke.ca/informatique/intranet/ressources-et-
documentation/logiciels-services-outils/postgresql/
• Hôte: bd-info3.dinf.usherbrooke.ca
• Port: 5432
• Quelques particularités du type SERIAL
• https://stackoverflow.com/questions/787722/postgresql-
autoincrement
• Tables inexistantes à cause des guillemets:
• https://stackoverflow.com/questions/6331504/omitting-the-double-
quote-to-do-query-on-postgresql
• Solution: pas de majuscules dans vos noms de table