ift187 - hiver 2019 cours 1: introductioninfo.usherbrooke.ca/mlafond/ift187/ift187-c1.pdf · 2019....

30
IFT187 - HIVER 2019 COURS 1: INTRODUCTION Manuel Lafond

Upload: others

Post on 22-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

IFT187 - HIVER 2019

COURS 1: INTRODUCTION

Manuel Lafond

Page 2: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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…

Page 3: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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

Page 4: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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

Page 5: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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

Page 6: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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

...

Page 7: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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]

Page 8: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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

...

Page 9: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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

...

Page 10: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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

...

Page 11: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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

...

Page 12: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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

...

Page 13: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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)

Page 14: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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)

Page 15: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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)

Page 16: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

La solution

• Système de gestion de base de données (SGBD)

SGBD

Page 17: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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.

Page 18: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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

Page 19: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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

• ...

Page 20: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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

Page 21: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

Utilisateurs

Programmes

Applications

...

Données

(et schéma)

SGBD

Page 22: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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

Page 23: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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, …)

Page 24: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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.

Page 25: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

Modèles de données

• Relationnel

• Clé-valeur

• Graphes

• Document

• Colonnes

• Hiérarchique

Page 26: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

Modèles de données

• Relationnel

• Clé-valeur

• Graphes

• Document

• Colonnes

• Hiérarchique

La plupart des SGDB

(SQL, et newSQL)

Page 27: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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)

Page 28: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

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

Page 29: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

• 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

Page 30: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant

• 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