7 Conception dans un contexte relationnel

Slides:



Advertisements
Présentations similaires
07/05/2015© Robert Godin. Tous droits réservés.1 13 Conception dans un contexte relationnel.
Advertisements

Evaluation de requêtes Quelques résultats préliminaires 1 Amin Mesmoudi.
Les ORMs ● Faire coexister le monde relationnel et objet.
Reformulation  L’AFPA promoteur du projet souhaite mettre en place une application WEB afin de remplacer une solution en Java. Pour ce projet 4 mandataires.
SQL : 4 fonctions d'exploitation de SGBD SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage informatique ayant pour.
Logiciel Assistant Gestion d’Événement Rémi Papillie (Chef d’équipe) Maxime Brodeur Xavier Pajani Gabriel Rolland David St-Jean.
SQL partie 1 Langage de Définition de Données. SQL est un langage de définition de données  SQL est un langage de définition de données (LDD), c'est-à-dire.
1 Gestion Electronique de documents (GED) ✔ Définition Efficacité d'une entreprise dépend de la capacité à traiter et consulter les informations qu'elle.
DIAGRAMME DE DEPLOIEMENT Exposé de: MBALLA MEKONGO Michèle MBOUNA FEUZE William SIEYADJEU Alex Lionel CHOPGWE Leonard NDUMATE Landry TIDJON Lionel.
Architecture Oracle 12c Pr. A. MESRAR
ARCHITECTURE MULTITENANT CONTAINER DATABASE ET PLUGGABLE DATABASES Pr. A. MESRAR
ARCHITECTURE RESEAUX.
Nouveautés Version 4.1 et mai 2017.
La technologie des mémoires
Présenté par M. Anis DIALLO
Google analytics.
Table passage en caisse
Séminaire Novembre 2006 Zephir : Déploiement et supervision des serveurs Eole.
Les Bases de données Définition Architecture d’un SGBD
Structured Query Language
MOT Éditeur de modèles de connaissances par objets typés
Initiation aux bases de données et à la programmation événementielle
Généralité sur les bases de données
JAVA et POO : Notion d'héritage
Master Réseaux et Systèmes Distribués (RSD) Algorithmique des systèmes
Technologies d’intelligence d’affaires
Notion De Gestion De Bases De Données
Création Et Modification De La Structure De La Base De Données
Direction commerciale
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
DATA WEARHOUSE 1ère année LA: Technologies systèmes d’information
Programmation Android Bases De Données, SQL-lite
13 Conception dans un contexte relationnel
9 Méthodes multidimentionnelles et représentation d'associations
6. PRODUCTION DU CODE DE LA BASE DE DONNEES
Développement d’applications interactives
Integrated Business intelligence
Diagrammes UML 420-KE2-LG.
2. CONCEPTS DES BASES DE DONNEES
Programmation Android Première application Android
6. CONCEPTION PHYSIQUE RELATIONNELLE
5 Analyse avec Designer d'Oracle
© Robert Godin. Tous droits réservés.
7 Gestion des données en mémoire secondaire
4 Méthodes multidimentionnelles et représentation d'associations
Approche réalisation d’un objet technique tout ou en partie
7 Contraintes d’intégrité en SQL
18 Bases de données parallèles et réparties
5 Introduction au modèle relationnel 5.1 Concepts de base
Semaine 3 Retour sur la semaine 2 Plan de séance
5 Interface entre SQL et un programme
© Robert Godin. Tous droits réservés.
Présenté par M. Anis DIALLO
03- Evaluation Access 2003 Cette évaluation comporte des QCM (1 seule réponse) et des Zones à déterminer dans des copies d’écran.
20 Données semi-structurées et XML
EPITECH 2009 UML EPITECH 2009
Un Mécanisme d‘Adaptation Guidé par le Contexte en Utilisant une Représentation par Objets Manuele Kirsch Pinheiro Laboratoire LSR – IMAG, Équipe SIGMA.
9 Méthodes multidimentionnelles et représentation d'associations
9 Méthodes multidimentionnelles et représentation d'associations
Daniel Leduc Lise Pouliot Sylvain Bourdeau
© Robert Godin. Tous droits réservés.
SQL Structured Query Language
© Robert Godin. Tous droits réservés.
Technologies d’intelligence d’affaires
Modélisation des SI et de la connaissance
UC : Diagramme des cas d’utilisation Req : Diagramme d’exigence
© Robert Godin. Tous droits réservés.
MOT Éditeur de modèles de connaissances par objets typés
Les données structurées et leur traitement
Séquence 1:Analyse du système d’information comptable
Transcription de la présentation:

7 Conception dans un contexte relationnel Pourquoi ? Quoi ? Comment ? 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Architecture Matériel centralisé, 2-tier, 3-tier, réparti, entrepôt de données,... plate-formes (parallélisme) réseau Logiciel couches Interface, Contrôle, Domaine, Persistance, Réseau,… partition par sous-domaine classes d ’implantation/modules Diagrammes de composantes UML répartition des composantes Diagrammes de déploiement UML 20/09/2018 © Robert Godin. Tous droits réservés.

Réutilisation de composantes Interface à l ’utilisateur X-Windows, Windows, SWING... Communication TCP/IP, CORBA, RMI, DCOM, ... Persistance ODBC, JDBC, SGBD,... 20/09/2018 © Robert Godin. Tous droits réservés.

Réalisation de la persistance Constantes du programme d ’application Fichiers (API du SGF) Librairies spécialisées SGBD souplesse, robustesse, intégrité,… approche privilégiée dans ce chapitre SGBD relationnel SQL centralisé 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Forces du relationnel Accessibilité large Maturité de la technologie Fondements théoriques solides Standard répandu (SQL) Support solide de l'intégrité Outils de développement 20/09/2018 © Robert Godin. Tous droits réservés.

7.1 Conception du schéma relationnel au niveau conceptuel Schéma relationnel : niveau conceptuel tables colonnes types, domaines, ... contraintes d ’intégrité clés primaires, étrangères, ... Input à la conception modèle conceptuel des données (persistantes) 20/09/2018 © Robert Godin. Tous droits réservés.

7.1.1 Première ébauche du schéma : une table par classe 20/09/2018 © Robert Godin. Tous droits réservés.

7.1.2 Traduction des attributs Attribut de la classe -> colonne de la table 20/09/2018 © Robert Godin. Tous droits réservés.

7.1.2.1 TRADUCTION DES CONTRAINTES D'IDENTIFICATION (UNIQUE) Contrainte UNIQUE -> clé candidate relationnelle clé primaire ? 20/09/2018 © Robert Godin. Tous droits réservés.

7.1.2.2 TRADUCTION DES TYPES DE DONNÉES 20/09/2018 © Robert Godin. Tous droits réservés.

Types de données déclarés Domaine pas toujours supporté par le dialecte SQL 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.1.2.3 TYPES ÉNUMÉRÉS Petit domaine invariant création d ’un domaine VARCHAR + CHECK 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Création d ’une table Gros domaine ou extensible création d ’une table à part utilisé comme liste de valeurs (LOV Designer) introduction d ’une clé primaire artificielle ? 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.1.2.4 TYPES COMPLEXES 1. Représentation explicite des attributs du type complexe 20/09/2018 © Robert Godin. Tous droits réservés.

2. Création d'une nouvelle table N.B. Pas de partage de la même adresse ! 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.1.2.5 QUALIFICATEUR Colonne dans la table du rôle opposé voir 7.1.3.2 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.1.2.6 DISCRIMINANT Redondant ? 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.1.2.7 ATTRIBUT MULTIVALUÉ Table à part clé étrangère + colonne pour l ’attribut Petit tableau de taille fixe n colonnes (valeurs nulles) Encodage invisible au SGBD Oracle8 VARRAY, NESTED TABLE 20/09/2018 © Robert Godin. Tous droits réservés.

7.1.2.8 COMPRESSION DES VALEURS DES ATTRIBUTS DE GRANDE TAILLE Supporté par le SGBD ? Multimédia 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.1.2.9 CRÉATION DE TABLES SUPPLÉMENTAIRES POUR LES ATTRIBUTS DE CLASSE 20/09/2018 © Robert Godin. Tous droits réservés.

7.1.3 Réalisation de l'identité par les clés primaires 20/09/2018 © Robert Godin. Tous droits réservés.

7.1.3.1 CRÉATION D'UNE CLÉ PRIMAIRE ARTIFICIELLE De manière systématique ? Mécanisme de SEQUENCE Oracle 20/09/2018 © Robert Godin. Tous droits réservés.

7.1.3.2 UTILISATION D'UN IDENTIFIANT NATUREL COMME CLÉ PRIMAIRE 1. Utilisation d'un identifiant naturel (UNIQUE) Si identifiant naturel trop lourd introduire clé primaire artificielle 20/09/2018 © Robert Godin. Tous droits réservés.

2. Utilisation du qualificateur 20/09/2018 © Robert Godin. Tous droits réservés.

7.1.3.3 IDENTIFIANT NATUREL POUR UNE SPÉCIALISATION Éviter de changer de clé primaire dans le contexte d ’une hiérarchie de généralisation Si la table du parent est omise considérer identifiant naturel de la spécialisation 20/09/2018 © Robert Godin. Tous droits réservés.

7.1.4 Traduction des associations 20/09/2018 © Robert Godin. Tous droits réservés.

7.1.4.1 CAS GÉNÉRAL : TRADUCTION D'UNE ASSOCIATION PAR UNE TABLE 20/09/2018 © Robert Godin. Tous droits réservés.

7.1.4.2 TRADUCTION D'UN RÔLE ORDONNÉ POUR UNE ASSOCIATION 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.1.4.3 CLASSE ASSOCIATIVE 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.1.4.4 CAS UN À PLUSIEURS 1. Traduction par une table ? 20/09/2018 © Robert Godin. Tous droits réservés.

2. Traduction par l'ajout d'une clé étrangère à privilégier Navigation plus performante 20/09/2018 © Robert Godin. Tous droits réservés.

Renommer la clé étrangère au besoin 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.1.4.5 CAS UN À UN 1. Une clé étrangère (du côté obligatoire) 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 2. Une nouvelle table 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 3. Fusion Cas 1-1 obligatoire 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.1.4.6 CAS DE L'AGRÉGATION Comme une association normale 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Composition Cas 1-1 ~ attribut complexe Mode SQL CASCADE Oracle8 VARRAY, NESTED TABLE 20/09/2018 © Robert Godin. Tous droits réservés.

7.1.5 Traduction des relations de généralisation/spécialisation Délégation Fusion Concaténation 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.1.5.1 DÉLÉGATION 20/09/2018 © Robert Godin. Tous droits réservés.

Changement de clé primaire ? Extraire le téléphone résidence d'un Membre possédant l'idUtilisateur 12345 20/09/2018 © Robert Godin. Tous droits réservés.

Traduction de la contrainte {disjointe, complète} 20/09/2018 © Robert Godin. Tous droits réservés.

7.1.5.1.1 Cas de la multi-classification et de l'héritage multiple 1. Créer une table de jointure 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Alternatives 2. Identité commune sans table de jointure 3. Identité séparée et redondance de données 20/09/2018 © Robert Godin. Tous droits réservés.

7.1.5.2 ANALOGIE AVEC UNE ASSOCIATION UN À UN Clé étrangère dans l ’enfant dans le parent ??? Approche Arc de Designer Fusion vers le parent (approche par fusion) vers l ’enfant (approche par concaténation) Nouvelle table ??? 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.1.5.3 FUSION 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.1.5.4 CONCATÉNATION Conserver une table pour le parent ? 20/09/2018 © Robert Godin. Tous droits réservés.

Cas d ’une référence au parent 20/09/2018 © Robert Godin. Tous droits réservés.

7.1.5.5 TRADUCTION DES GÉNÉRALISATIONS POUR SYLERAT 20/09/2018 © Robert Godin. Tous droits réservés.

7.1.6 Traduction des autres contraintes 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.1.7 Niveau de mise en œuvre des contraintes d'intégrité : client ou serveur de BD ? Robustesse Interactivité Performance 20/09/2018 © Robert Godin. Tous droits réservés.

7.1.8 Représentation des contraintes d'intégrité en SQL Voir chap.7, volume I Deux catégories Contrainte d'intégrité statique respectée pour chacun des états de la BD Contrainte d'intégrité dynamique contrainte sur changements d'états 20/09/2018 © Robert Godin. Tous droits réservés.

7.1.8.1 CONTRAINTES STATIQUES Mécanismes déclaratifs (à privilégier) PRIMARY KEY, UNIQUE, NOT NULL, DOMAIN, FOREIGN KEY, CHECK, ASSERTION Procédural TRIGGER (SQL3) plus complexe à coder plus sujet à erreur parfois plus performant parfois inévitables (limite des mécanismes déclaratifs) 20/09/2018 © Robert Godin. Tous droits réservés.

Contrainte sur le domaine d'une colonne 20/09/2018 © Robert Godin. Tous droits réservés.

Contrainte de clé primaire 20/09/2018 © Robert Godin. Tous droits réservés.

Contrainte de clé candidate 20/09/2018 © Robert Godin. Tous droits réservés.

Contrainte d'intégrité référentielle Politique NO ACTION par défaut 20/09/2018 © Robert Godin. Tous droits réservés.

Contrainte intra-ligne 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Autres cas CHECK complexes non supporté par Oracle ASSERTION TRIGGER 20/09/2018 © Robert Godin. Tous droits réservés.

{Un Editeur ne peut exister sans qu'un Livre y fasse référence} Ne peut être réalisée par TRIGGER seulement ! 20/09/2018 © Robert Godin. Tous droits réservés.

Exemple avec ASSERTION 20/09/2018 © Robert Godin. Tous droits réservés.

Réalisation avec TRIGGER 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 20/09/2018 © Robert Godin. Tous droits réservés.

Par TRIGGER : forcer le changement de statut 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. {CatégorieUtilisateur doit être cohérente avec la table d'appartenance} par TRIGGER 20/09/2018 © Robert Godin. Tous droits réservés.

{Exclusives et une des deux est nécessaire} par CHECK Impossible avec TRIGGER non DEFERRABLE 20/09/2018 © Robert Godin. Tous droits réservés.

7.1.8.2 CONTRAINTES DYNAMIQUES Interdit de faire un prêt à un Membre qui possède un retard 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. {le statut de l'Exemplaire doit être disponible avant qu'un prêt ne soit effectué} 20/09/2018 © Robert Godin. Tous droits réservés.

Archivage des prêts lors d'un retour 20/09/2018 © Robert Godin. Tous droits réservés.

7.1.9 Exemple de schéma SQL pour SyLeRat Eviter la circularité des définitions 20/09/2018 © Robert Godin. Tous droits réservés.

Utilisation du ALTER TABLE 20/09/2018 © Robert Godin. Tous droits réservés.

Combinaison de TRIGGER Contrôler l'ordre d'exécution Améliorer la performance 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Une seule fois ! N.B. Contrôle plus fin avec PL/SQL 20/09/2018 © Robert Godin. Tous droits réservés.

7.2 Conception du schéma relationnel au niveau externe Ce que l ’utilisateur voit Sécurité utilisateurs, rôles, privilèges partir des cas d ’utilisation Tables virtuelles 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.2.1 Tables virtuelles Mécanisme d ’encapsulation isoler l ’utilisateur des détails du schéma indépendance logique des données Mécanisme de sécurité privilège d ’accès à la table virtuelle seulement 20/09/2018 © Robert Godin. Tous droits réservés.

Exemple d ’encapsulation 20/09/2018 © Robert Godin. Tous droits réservés.

Exemple de mécanisme de sécurité 20/09/2018 © Robert Godin. Tous droits réservés.

7.2.2 Réalisation des contraintes de sécurité Acteur (cas d ’utilisation) : ROLE SQL ROLE RôleAdministrateurSystème accès à tout ROLE RôleCommisAuPrêt tout en lecture (SELECT) Membre, Utilisateur, PrêtEnCours, PrêtArchivé, Exemplaire en écriture (INSERT, DELETE, UPDATE) ROLE RôleMembre ... GRANT ROLE xxx to authorizationID 20/09/2018 © Robert Godin. Tous droits réservés.

Utilisation de TRIGGER Le prêt est interdit 1h00 et 7h00 20/09/2018 © Robert Godin. Tous droits réservés.

7.3 Niveau interne du schéma relationnel : conception physique Input schéma (niveau conceptuel) initial estimations des volumes de données architecture contraintes SGBD contraintes plate-forme charge de travail exigences de performance Output le « meilleur » schéma interne solution approchée 20/09/2018 © Robert Godin. Tous droits réservés.

7.3.1 Conception physique dans un contexte centralisé Organisations primaires Organisations secondaires 20/09/2018 © Robert Godin. Tous droits réservés.

Organisation primaire Fichiers et paramètres d'allocation d'espace quel disque/site architectures RAID taille de bloc taille de fichier fixe allocation dynamique taille des granules 20/09/2018 © Robert Godin. Tous droits réservés.

Organisation primaire (suite) Paramètres d'allocation d'espace aux tables quels fichiers ? taille des granules homogène / hétérogène colonne externe ? (multimédia) chemin vers fichier externe URL 20/09/2018 © Robert Godin. Tous droits réservés.

Organisation primaire (suite) Paramètres du mécanisme d'allocation d'espace aux lignes position dans le fichier allocation sérielle, grappe, index primaire, hachage réservation d ’espace paramètres spécifiques à l ’organisation enregistrements taille fixe/variable chevauchant ou non compression cryptage gestion des identifiants d ’enregistrement (IDE) 20/09/2018 © Robert Godin. Tous droits réservés.

Organisations secondaires Chemins d ’accès supplémentaires référence par IDE Index secondaire Organisation multidimensionnelle Listes SGBD réseau Collections de références SGBD objet 20/09/2018 © Robert Godin. Tous droits réservés.

7.3.2 Le processus de conception Intrants schéma relationnel au niveau conceptuel volume des tables estimation difficile charge de travail partir des cas d ’utilisation Sortie schéma interne « optimal » 20/09/2018 © Robert Godin. Tous droits réservés.

Problème d ’optimisation complexe Enjeux conflictuels lecture/écriture, espace/temps Grande quantité de paramètres Mesures approximatives Evolution des paramètres Solution approchée heuristiques Surveillance et mise au point 20/09/2018 © Robert Godin. Tous droits réservés.

7.3.3 Heuristiques de conception Sous-ensemble des opérations en ordre d ’ importance Négliger le coût des mises à jour Négliger le coût en espace mémoire Méthode gloutonne 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Méthode gloutonne Initialiser schémaInterne e.g. organisation sérielle pour chacune des tables Pour chacune des opérationi (en ordre de priorité) trouver meilleur plan P pour opérationi selon schémaInterne chercher amélioration de schémaInterne qui permet de produire un meilleur plan P ’ sans pénaliser opération1 … opérationi-1 si P ’ meilleur que P schémaInterne := schémaInterne amélioré Comment améliorer ? heuristiques d ’amélioration 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.3.4 Sélection par égalité SELECT ... FROM T WHERE X = uneValeurDeX Heuristique Si bonne sélectivité de X volume de données suffisant 1. Hachage sur X 2. Index primaire ou index groupant sur X 3. Index secondaire sur X N.B. Conditions particulières 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Exemple glouton >>> sélectivité de ISBN >>> volume de données TempsES (S=H) = 11ms volume assez stable TempsES (S=IP) = 44ms sélection par intervalle non pertinente TempsES (S=IS) = 55ms 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Exemple Meilleur plan P avec schéma interne précédent TempsES (BAL) > 50 010ms (meilleur cas) sélectivité de code = 1/4000 volume de données suffisant TempsES (S=H) = 143ms conflit avec hachage sur ISBN TempsES (S=IP) = 242ms conflit ... TempsES (S=IS) = 2827ms seule possibilité pour éviter de pénaliser 1 20/09/2018 © Robert Godin. Tous droits réservés.

Glouton : temps moyen sous-optimal Hypothèse sélection par ISBN : 50 fois par jour sélection par code : 30 fois par jour moyenne : (50*11 + 30*2827)/80 = 1067ms Pénaliser un peu opération 1… moyenne : (50*55 + 30*143)/80 = 88ms 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Meilleur plan P avec schéma interne précédent TempsES (S=IS sur code) = 2827ms TempsES (S=IS sur la clé composée {code, annéeParution} ) = 99ms N.B. Index sur {code, annéeParution} utilisé pour : 20/09/2018 © Robert Godin. Tous droits réservés.

Indexer les colonnes individuelles ? TempsES(S) = 3 509ms 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Meilleur plan P avec schéma interne précédent TempsES (BAL) > 50 010ms (meilleur cas) TempsES (S=IS sur annéeParution ) = 223 377 ms 20/09/2018 © Robert Godin. Tous droits réservés.

Méthode d ’accès multidimensionnelle Ex: accès par titre, code, annéeParution et nomEditeur seule ou en combinaison Indexer toutes les combinaisons ? Un index pour chacune des colonnes Organisation multidimensionnelle 20/09/2018 © Robert Godin. Tous droits réservés.

Maintenance des contraintes d ’intégrité Contrainte PRIMARY KEY(ISBN) hachage ou indexage sur ISBN Heuristique hachage ou indexage sur PRIMARY KEY et UNIQUE Oracle : index secondaire automatique 20/09/2018 © Robert Godin. Tous droits réservés.

7.3.5 Sélection par intervalle Index sur titre Préfixe ~ intervalle 20/09/2018 © Robert Godin. Tous droits réservés.

7.3.6 Tri du résultat (ORDER BY) Index primaire sur datePrêt Index secondaire inutile dans ce cas 20/09/2018 © Robert Godin. Tous droits réservés.

7.3.7 Calcul du minimum (MIN) et du maximum (MAX) Index sur noSequence 20/09/2018 © Robert Godin. Tous droits réservés.

7.3.8 Calcul d'agrégat (GROUP BY) Index primaire, grappe ou hachage sur idUtilisateur 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.3.9 Jointure par égalité Jointure sur la clé de jointure X bonne sélectivité de X volume de données suffisant Heuristique 1. Organisation hétérogène sur X grappe, hachage ou index primaire (pré-jointure) 2. Organisation homogène sur X table interne ( boucle imbriquée ) 20/09/2018 © Robert Godin. Tous droits réservés.

Organisation hétérogène TempsES (PJ) = TempsES (BALLivre) + TempsES (BALCatégorie) = 50 120 ms Pénalise TempsES (BAL pour Catégorie) 20/09/2018 © Robert Godin. Tous droits réservés.

Organisation homogène Livre ou Catégorie ? organisation sur code pour Livre ne pénalise pas TempsES (BAL pour Catégorie) organisation sur code pour Catégorie faible sélectivité de la jointure... 20/09/2018 © Robert Godin. Tous droits réservés.

Cas d ’une jointure sélective Organisation hétérogène à éviter jointure sélective pour Exemplaire 20/09/2018 © Robert Godin. Tous droits réservés.

7.3.10 Impact du plan d'exécution de l'optimiseur de requête Heuristiques précédentes pas toujours pertinentes Cas de requêtes complexes plusieurs sélections, jointures, ... Tenter de prévoir le plan d ’exécution utiliser modèles de coût 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Exemple Heuristique : index primaire sur datePrêt ? 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Exemple Ne peut faire mieux que BIM avec organisation homogène voir estimations 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Schéma 1 (privilégie sélection) Organisation sur code de Livre ??? 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Schéma 2 (privilégie jointure) 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Schéma 3 (index secondaires seulement) 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Cas complexe 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Plan générique 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Schéma 1 Variante : index secondaires 20/09/2018 © Robert Godin. Tous droits réservés.

Plan correspondant au schéma 1 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Raffinement Organisation hétérogène 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Autre possibilité 20/09/2018 © Robert Godin. Tous droits réservés.

7.3.11 Techniques sophistiquées de conception et mise au point Enjeu important Simulation Banc d ’essais Dernier recours surveillance mise au point 20/09/2018 © Robert Godin. Tous droits réservés.

7.3.12 Modification du schéma conceptuel Dernier recours Introduction de redondance dénormaliser introduction d ’éléments dérivés Favoriser lecture (SELECT) Pénaliser écriture traitements de maintien de la cohérence 20/09/2018 © Robert Godin. Tous droits réservés.

7.3.12.1 ALTERNATIVES DE TRADUCTION Attributs multivalués Associations Généralisations ... 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 7.3.12.2 DÉNORMALISATION Inclure Editeur dans Livre Évite jointure coûteuse Maintien de la cohérence nomEditeur  ville dans Livre (modifiée) ajout de TRIGGER 20/09/2018 © Robert Godin. Tous droits réservés.

7.3.12.3 INTRODUCTION D'ÉLÉMENTS DÉRIVÉS Index sur noSequence Nouvelle table PrêtEnCoursGénéral(maxNoSequence) 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Oracle et Designer Code Control Sequence de Designer maximum dans une table Code Control blocage du au verrouillage SEQUENCE Oracle CREATE SEQUENCE nomSequence ... INSERT INTO …(nomSequence.NEXTVAL,…) série de valeurs en antémémoire pas de blocage problème de trous dans la SEQUENCE 20/09/2018 © Robert Godin. Tous droits réservés.

7.3.12.4 FRAGMENTATION HORIZONTALE Cas des données archivées table pour données récentes (e.g. PrêtEnCours) table pour historique (e.g. PrêtArchivé) VIEW pour cacher la fragmentation Oracle8 fragmentation transparente de table clause PARTITION fragmentation d ’index 20/09/2018 © Robert Godin. Tous droits réservés.

7.3.12.5 FRAGMENTATION VERTICALE Cas des colonnes volumineuses (LOB) 20/09/2018 © Robert Godin. Tous droits réservés.

7.3.12.6 CONCEPTION D'UN ENTREPÔT DE DONNÉES 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Caractéristiques Entrepôt de données = redondance contrôlée Requêtes d ’analyse de données (OLAP) complexes imprévisibles grand volume Relational OLAP - ROLAP schéma en étoile Multidimensional OLAP -MOLAP cube de données Table virtuelle matérialisée Parallélisme Organisations multidimensionnelles 20/09/2018 © Robert Godin. Tous droits réservés.

Schéma en étoile (star schema) Table de faits Dimensions : cube de données Tables de dimensions : hiérarchie de granularité 20/09/2018 © Robert Godin. Tous droits réservés.

7.4 Paramètres du mécanisme d'allocation d'espace : cas de Oracle DATABASE fichiers de données (DATAFILE) fichiers de journalisation (REDO LOG) fichiers de contrôle (control file) utilisé par un serveur (instance) 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Démarrage du serveur Installation d'un serveur Oracle DATABASE automatiquement créée Démarrage d ’un serveur Oracle ouvre fichier de configuration e.g. C:\orawin\DATABASE\initorcl.ora (si SID = orcl) ouvre fichier de contrôle e.g. C:\orawin\DATABASE\ctl1orcl.ora ouvre fichiers de données/journal la DATABASE est montée (mounted) 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. TABLESPACE DATABASE = ensemble de TABLESPACE minimum 1 (SYSTEM TABLESPACE) contient le dictionnaire de données peut ajouter des TABLESPACE TABLESPACE espace pour TABLE (et autres objets) = ensemble de DATAFILE 20/09/2018 © Robert Godin. Tous droits réservés.

Clauses TABLESPACE et STORAGE Taille des EXTENTS 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. EXTENT, SEGMENT EXTENT granule d'allocation d'espace ensemble de blocs contigus dans un DATAFILE du TABLESPACE Clause STORAGE de défaut niveau TABLESPACE niveau DATABASE SEGMENT ensemble de EXTENT d ’un objet (DATA, INDEX, ROLLBACK, TEMPORARY SEGMENTS) 20/09/2018 © Robert Godin. Tous droits réservés.

Conception des TABLESPACE 1. Unité de base de prise de copie 2. Sélectivement désactivés (offline) 3. TABLESPACE sur des disques différents réduire congestion 4. EXTENT de même taille ensemble 5. Limiter fragmentation TABLESPACE de défaut associé au authorizationID 20/09/2018 © Robert Godin. Tous droits réservés.

Allocation sérielle par défaut Enregistrements de taille variable adressage structuré par bloc ROWID gestion des débordements par chaînage voir volume 1, chap.2 PCTFREE réservé pour UPDATE PCTUSED seuil pour retour dans FREE LIST INITRANS entrée de transaction MAXTRANS 20/09/2018 © Robert Godin. Tous droits réservés.

Organisation par grappe (CLUSTER INDEX ou HASH) Homogène ou hétérogène Clé de grappe (CLUSTER KEY) INDEX index groupant HASH hachage satique 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. CLUSTER INDEX Allocation sérielle + index Réservation d ’espace (SIZE) 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. CLUSTER HASH SIZE taille d ’un paquet HASHKEYS nombre minimal de paquets h(clé) = expression contenant la clé MOD HASHKEYS arrondi à nombre premier HASH IS fonction de hachage 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Index BITMAP Version 7.3 et + petit domaine données peu volatiles DATAWHAREHOUSE 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Index primaire Version 8 Interdit index secondaire 20/09/2018 © Robert Godin. Tous droits réservés.

Partition des tables et des index Fragmentation horizontale Clé de partition Clause PARTITION BY RANGE (clé) partie->TABLESPACE Partition d ’un index secondaire 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Index secondaire Arbre-B+ secondaire variante B* pour division Entrée d ’une feuille clé, ROWID clés non uniques répétées PCTFREE taux de remplissage au chargement PCTUSED non applicable INITRANS, MAXTRANS idem table La table peut contenir des données au moment du CREATE INDEX 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Exemple 20/09/2018 © Robert Godin. Tous droits réservés.

7.5 Mise au point de la configuration du SGBD : cas de Oracle Espace RAM Processus SGBD Journal Option parallèle plusieurs instances 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Organisation RAM System Global Area espace mémoire partagé Paramètres du fichier de configuration INITxxxx.ORA Database Buffer Cache Redo Log Buffer Dictionary Cache Shared Pool un shared SQL area par opération SQL 20/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Processus du SGBD Processus serveur (dédié-Snnn ou multi-fils) Database Writer (DBWn) Log Writer (LGWR) Checkpoint (CKPT) System Monitor (SMON) Process Monitor (PMON) Archiver (ARCH) Recoverer (RECO) Dispatcher (Dnnn) Lock (LCKn) Job Queue (SNPn) 20/09/2018 © Robert Godin. Tous droits réservés.

Configuration du journal ROLLBACK SEGMENTS portion défaire répartition cyclique dans n SEGMENT problème des longues transactions BEGIN_DISCRETE_TRANSACTION pas de défaire REDO LOG écriture circulaire dans n fichiers archivage (MODE ARCHIVELOG) point de synchronisation duplication (MIRRORED) pour meilleure fiabilité 20/09/2018 © Robert Godin. Tous droits réservés.