name: inter-slide class: left, middle, inverse {{ content }} --- name: layout-general layout: true class: left, middle <style> .remark-slide-number { position: inherit; } .remark-slide-number .progress-bar-container { position: absolute; bottom: 0; height: 4px; display: block; left: 0; right: 0; } .remark-slide-number .progress-bar { height: 100%; background-color: red; } </style>
--- class: middle, left, inverse # Bases de Données : Introduction aux SGBD ### 2023-09-14 #### [Licence MIASHS et Mathématiques]() #### [Bases de Données](http://stephane-v-boucheron.fr/courses/bdd/) #### [Équipe BD](http://stephane-v-boucheron.fr) --- template: inter-slide ### Plan
- Données ? - Systèmes d'information - Bases de données et (autres) logiciels - Bases de données (relationnelles) - L'idée relationnelle - Autour : entrepôts, lacs, ... --- template: inter-slide ## Données ? --- ### Les données en Sciences Sociales Pourquoi ? -- De quoi sont faites les données ? -- Comment les accumuler ? -- Comment les interroger ? -- Comment les conserver ? les éditer ? ??? *Data humanities with R.* Arnold and Tilton *Quantitative tour at social sciences* Gelman and ? Humanités numériques - Constitution - Acquisition - Usage(s) - Maintenance --- ### Les données de l'entreprise/des administrations .fl.w-30.pa2[ - La comptabilité - Les stocks (ERP) - La clientèle (CRM) - ... ] .fl.w-70.pa2[ <iframe src="https://www.salesforce.com" width="504" height="400px" data-external="1"></iframe> ] ??? - CRM - ERP --- ### La vie des données - Saisie - Traitement(s) - Usage(s) - Archivage - Maintenance ??? --- ### Les enjeux --- ### Avant-hier .fl.w-40.pa2[ Les entreprises et les administrations ont toujours cultivé une mémoire sous forme de *fichiers* plus ou moins mécanisés et formattés. Ces collections de fichiers mécanisées répondaient à des exigences de *fiabilité*, de *convenance* (facilité de la recherche, de la maintenance) ] .fl.w-60.pa2[ <img src="./img/pexels-mike-1181772.jpg" style="display: block; margin: auto 0 auto auto;" /> ] --- ### Aujourd'hui Explosion des volumes Besoins **mixtes** --- template: inter-slide ## Systèmes d'information --- ### Systèmes d'information (SI) et Bases de Données (BD, SGBD, SGBDR) Au coeur des systèmes d'information (modernes) on trouve les **bases de données** ??? Une base de données peut être interrogée Une base de données peut être enrichie Une base de données peut être --- ### Des propriétés désirables (ACID) Quelle que soit la forme, on souhaite avoir : - **A**tomicité : chaque ajout/modification d'information doit former un tout cohérent. Si tout se passe correctement, les actions de la transaction sont toutes validées, sinon on retourne à l'état initial. L'unité de travail est indivisible. Une transaction ne peut être partiellement effectuée. - **C**ohérence : le contenu de la base de données doit rester conforme à des *contraintes* qui ont été définies lors de la *conception* de la base - **I**solation : la bases de données doit pouvoir être utilisée concurremment par plusieurs usagers - **D**urabilité : la vie d'une base de données s'étale sur plusieurs dizaines d'années --- template: inter-slide ## Bases de données et (autres) logiciels --- ### Bases de **données**
Qu'est-ce que c'est ? Ce sont des logiciels intermédiaires (*middleware*) entre : - Systèmes de gestion de fichiers/Systèmes d'exploitation - Applications (CRM, ERP, CMS, ...) -- Les bases de données ne sont pas (simplement) un *langage* (comme `JAVA`,
,
) ou un environnement de calcul (comme
,
) --- template: inter-slide ## Bases de données (relationnelles) --- Toutes les bases de données ne sont pas relationnelles Les **Bases de données relationnelles** forment un sous-ensemble important (et même prépondérant) des systèmes de gestion des bases de données en entreprise ??? Intermédiaire --- ### Collection de tables/`data frame`s Caricaturalement : > Une base de données relationnelle est une collection de *tables* Les tables s'incarnent de plusieurs façons en informatique `R`, `Pandas`, les tableurs (Excel ...), offrent un environnement interactif de manipulation de données et un environnement de définition de données --- ### Data frame (
) - Un `dataframe` est une *liste* de *vecteurs* (colonnes) - Les vecteurs (colonnes) d'un `dataframe` sont tous de même longueur - Les éléments d'un vecteur sont d'un même type de base - Chaque vecteur a un nom et son propre type --- ### Autres environments (`Excel`, `JAVA`,
...) - Les `spreadsheet` des tableurs - Les `Dataframes` de `Pandas` (
) - Les tableaux d'objets en `JAVA` permettent de représenter ce que les `dataframes` représentent en
--- ### Les SGBD vont au delà : Ils offrent: - **Persistance** > Entre deux *sessions* les données sont confiées au système de fichiers de l'ordinateur - **Intégrité** > Les données confiées au système de fichiers ne peuvent pas être altérées par d'autre logiciel - **Concurrence** Les données peuvent être manipulées/consultées/mises à jour de manière *concurrente* par plusieurs ou du moins par une grande quantité d' utilisateurs. --- ### Usages - Sites web dynamiques - Logiciels personnels Derrière certaines applications (gestion de photos, de carnet d'adresses, ...), on trouve des bases de données légères (`SQLITE`) - Partout - smartphones, tablettes, ... - web, réseaux sociaux - administrations (APOGEE, ...) - entreprises (Stocks Supply Chain, Customer Relationship Management, ...) - NSA --- template: inter-slide ## L'idée relationnelle --- ### L'idée clé (Codd, 1970) Organiser les informations en **tables** ou **relations** Développer et formaliser un langage de manipulation de tables : l'algèbre relationnelle} (langage SQL, Structured Query Language) - L'usager peut définir l'organisation des données - Il peut interroger celles-ci (par des requêtes) - Le langage est *déclaratif* : - On décrit ce que l'on veut obtenir (quoi mais pas comment) - Le système fait le reste... - L'évaluation de toutes les requêtes s'arrête (au moins en théorie : si on y met les moyens...) - L'algèbre relationnelle/SQL n'est pas un langage complet (différence avec `JAVA`, `C`, `Python`, etc) ??? --- ### Les lois des tables ![](../images/Moise-Michel-Ange.jpeg) --- ### Codd's Twelve Principles of Relational Databases: .f6[ 1. Information is represented logically in *tables* 2. Data must be *logically accessible* by table, primary key, and column. 3. *Null* values must be uniformly treated as “missing information,” not as empty strings, blanks, or zeros. 4. Metadata (data about the database) must be stored in the database just as regular data is 5. A single language must be able to define data, views, integrity constraints, *authorization*, *transactions*, and data manipulation 6. *Views* must show the updates of their *base tables* and vice versa 7. A single operation must be available to do each of the following operations: retrieve data, insert data, update data, or delete data 8. Batch and end-user operations are *logically separate* from physical storage and access methods 9. Batch and end-user operations can change the database schema without having to recreate it or the applications built upon it 10. *Integrity* constraints must be available and stored in the metadata, not in an application program 11. The data manipulation language of the relational system should not care where or how the physical data is distributed and should not require alteration if the physical data is centralized or distributed 12. Any *row processing* done in the system must obey the same *integrity rules* and *constraints* that set-processing operations do ] --- ### Quelques acteurs .fl.w-50.pa2[ **Serveurs** - [ORACLE (commercial)]() - [DB2 (IBM commercial)]() - [SQLSERVER (Microsoft commercial)]() - [MySQL (open source)]() - [**PostGres** (open source)](https://www.postgresql.org) - [Hana (commercial)]() ] .fl.w-50.pa2[ **Clients** - [`psql`]() - [`pgcli`]() - [`dbeaver`]() - [`PgAdmin4`]() - ... ] --- ### PostGres (PostgreSQL) - Un **serveur** : `etu-pgsql` - Un **catalogue** : `bd_2023-24` - Des **schémas**: `world, pagila, nycflights13, ...` --- ### Un exemple de schéma `world` Un schema Des schémas de table - `continent` : association nom de continent (texte)-code de continent (entier) - `country` : chaque tuple porte sur un état/territoire - `city` : chaque tuple porte sur une ville (déisgnée par `id`) qui appartient à un état/territoire désigné par `countrycode` - `countrylanguage` : chaque tuple indique la part de la population d'un état/territoire (désigné par `countrycode`) qui parle/connaît une langue (désignée par `language`) et précise si la langue est officielle dans cet état/territoire. --- ### Détails du schema `world` ![Image World](./img/world.png) Un schéma de table : la donnée des noms des colonnes et des types des colonnes --- ### Quelques questions et propriétés typiques - Extraire de l'information - - Assurer de la cohérence après modification - Faire en sorte que chaque état/territoire soit identifié par un numéro unique - Faire en sorte que chaque ville soit identifiée par un numéro unique - Ne pas proposer de données sur des villes/territoires/états qui n'existent pas - Propager l'information - Historiciser le schéma --- ### Objectifs du cours - Compétences d'un usager de BD relationnelles - Exprimer des requêtes en algèbre relationnelle et en SQL - SQL Définition, manipulation et contrôle des données - Concevoir un Modèle Conceptuel de Données (Entités/Associations) - Déterminer les dépendances fonctionnelles et normaliser une relation --- ### Plan du cours - Algèbre et calcul relationnels - SQL (algèbre relationnelle stricte) - SQL sous-requêtes - SQL agrégation - SQL requêtes paramétrées - Définition de données/Conception - Normalisation --- template: inter-slide ## Autour des bases de données --- ### Entrepôts de données (Fin des années 1980) (Datawarehouse) > Un Data Warehouse est une technologie qui regroupe des données *structurées* provenant d'une ou de plusieurs sources afin qu'elles puissent être comparées et analysées.
[Entrepôt_de_données sur Wikipedia](https://fr.wikipedia.org/wiki/Entrepôt_de_données) -- ### Lacs de données (2010) (Datalake) > Le concept de Data Lake a été évoqué pour la première fois, en 2010, par James Dixon, comme une solution pour le stockage de données sans pré-traitement et sans connaître précisément l'usage futur qui en sera fait. L'image du lac, permettant d'expliquer, que différentes sources peuvent l'alimenter de manière naturelle et brute, et que les utilisateurs peuvent y plonger pour l'explorer et en rapporter des échantillons à examiner --- ### Au delà du relationnel: No SQL .f6[ > Ce sont les grandes entreprises du web amenées à traiter des volumes de données très importants qui ont été les premières confrontées aux limitations intrinsèques des SGBD relationnels traditionnels. Ces systèmes fondés sur une application stricte des propriétés ACID et généralement conçus pour fonctionner sur des ordinateurs uniques ont rapidement posé des problèmes d'extensibilité. > Afin de répondre à ces limites, ces entreprises ont commencé à développer leurs propres systèmes de gestion de bases de données pouvant fonctionner sur des architectures matérielles distribuées et permettant de traiter des volumes de données importants. Les systèmes propriétaires qui en ont résulté, Google (BigTable), Amazon (Dynamo (en)), LinkedIn (Voldemort), Facebook (Cassandra puis HBase), SourceForge.net (MongoDB), Ubuntu One (CouchDB), Baidu (Hypertable) ont été les précurseurs du modèle NoSQL. > Les performances restent bonnes avec la montée en charge en multipliant simplement le nombre de serveurs, solution raisonnable avec la baisse des coûts, en particulier si les revenus croissent en même temps que l'activité5. Les systèmes géants sont les premiers concernés : énormes quantités de données6, structuration relationnelle faible (ou de moindre importance que la capacité d'accès très rapide, quitte à multiplier les serveurs). > Un modèle typique en NoSQL est le système clé-valeur, avec une base de données pouvant se résumer topologiquement à un simple tableau associatif unidimensionnel avec des millions — voire des milliards — d'entrées. Parmi les applications typiques, on retrouve des analyses temps-réel, statistiques, du stockage de logs (journaux), etc. ]
[](https://fr.wikipedia.org/wiki/NoSQL) --- ### Lire plus [Guy Harrison. Next Generation Databases. NoSQL, NewSQL, Big Data](https://scholar.google.com/scholar?hl=fr&as_sdt=0%2C5&q=harrison+next+generation+databases&oq=harrison+next+) <iframe src="http://guyharrison.squarespace.com/blog/tag/nosql" width="504" height="400px" data-external="1"></iframe> --- class: middle, center, inverse background-image: url('./img/pexels-cottonbro-3171837.jpg') background-size: cover # The End