Applications orientées données (NSY135)



Documents pareils
Bases de données documentaires et distribuées Cours NFE04

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Langage SQL : créer et interroger une base

Évaluation et optimisation de requêtes

Le langage SQL Rappels

Table des matières L INTEGRATION DE SAS AVEC JMP. Les échanges de données entre SAS et JMP, en mode déconnecté. Dans JMP

Bases de données documentaires et distribuées Cours NFE04

Encryptions, compression et partitionnement des données

1 Modélisation d une base de données pour une société de bourse

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

Session S12 Les bases de l optimisation SQL avec DB2 for i

COMPRENDRE LES DIFFERENTS TYPES DE CONNEXION LORS DE LA

Plan de formation : Certification OCA Oracle 11g. Les administrateurs de base de données (DBA) Oracle gèrent les systèmes informatiques

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

Réglages du portail de P&WC

Bases de données documentaires et distribuées Cours NFE04

Cours: Les Jointures 1

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Les bases de l optimisation SQL avec DB2 for i

Les bases de données

Business Intelligence

1 Introduction et installation

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

SQL Serveur Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

Du 10 Fév. au 14 Mars 2014

Applications orientées données

Whitepaper. Méthodologie de création de rapports personnalisés SQL Server Reporting Services

MODE OPERATOIRE OPENOFFICE BASE

CREATION WEB DYNAMIQUE

FEN FICHE EMPLOIS NUISANCES

TP Bases de données réparties

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

SQL Historique

INTRODUCTION AU DATA MINING

Attaques applicatives

Libérez votre intuition

Resolution limit in community detection

Bases de données avancées Introduction

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

E-documents Simple, sûr et écologique

Créer et partager des fichiers

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

TD n 10 : Ma première Base de Données

Business Intelligence avec Excel, Power BI et Office 365

Créer le schéma relationnel d une base de données ACCESS

Introduction aux Bases de Données 2004/2005

Le Langage De Description De Données(LDD)

Bases de Données. Plan

Cours de bases de données. Philippe Rigaux

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

ORACLE TUNING PACK 11G

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

Sybase Adaptive Server Enterprise 15

Objectif. Participant. Prérequis. Oracle BI Suite EE 10g R3 - Développer des référentiels. 5 Jours [35 Heures]

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Informatique. Les réponses doivent être données en cochant les cases sur la dernière feuille du sujet, intitulée feuille de réponse

environnements SQL Server?

Présentation du module Base de données spatio-temporelles

Thème : Gestion commerciale

TP2_1 DE BUSINESS INTELLIGENCE ISIMA ZZ3 F3

Administration de Bases de Données : Optimisation

Optimisation SQL. Quelques règles de bases

Tutorial pour l installation et l utilisation de CREO et de Windchill

16H Cours / 18H TD / 20H TP

Introduction à la B.I. Avec SQL Server 2008

KIELA CONSULTING. Microsoft Office Open Office Windows - Internet. Formation sur mesure

Bases de données documentaires et distribuées Cours NFE04

Bases de données documentaires et distribuées Cours NFE04

SUGARCRM MODULE RAPPORTS

1. SAS FEDERATION SERVER - POINT D'ACCES UNIQUE ET SECURISE AUX DONNEES DE L'ENTREPRISE

BTS/CGO P10 SYSTEME INFORMATION Année

archives.numerisees.calvados.fr

Mandataires, caches et filtres

4D v11 SQL Release 5 (11.5) ADDENDUM

Bases de données et sites WEB Licence d informatique LI345

Bases de données et sites WEB

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

Manuel d utilisation du logiciel RÉSULTATS. Édition destinée aux départements

Air Transat. Contexte. Buts. Défis. Solution. Industry Travelling, Transport

La gestion des correctifs de sécurité avec WinReporter et RemoteExec

Introduction : présentation de la Business Intelligence

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

06/11/2014 Hyperviseurs et. Infrastructure. Formation. Pierre Derouet

Jean-François Boulicaut & Mohand-Saïd Hacid

Introduction aux SGBDR

RECUPEREZ DES FICHIERS SUPPRIMES AVEC RECUVA

INTRODUCTION À LA GESTION DE PROJET AGILE (BACKLOG, TABLEAUX DE BORD, BURNDOWN, PLANIFICATION D ITERATIONS)

Techniques d interaction dans la visualisation de l information Séminaire DIVA

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Systèmes de Gestion de Bases de Données

3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures

SUPPORT DE COURS / PHP PARTIE 3

Master Informatique et Systèmes. Architecture des Systèmes d Information. 03 Architecture Logicielle et Technique

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Dossier I Découverte de Base d Open Office

Soutien technique en informatique

Oracle 11g Optimisez vos bases de données en production (ressources matérielles, stockage, mémoire, requêtes)

PLATEFORME MÉTIER DÉDIÉE À LA PERFORMANCE DES INSTALLATIONS DE PRODUCTION

Transcription:

Applications orientées données (NSY135) 12 Optimisation des lectures Auteurs: Raphaël Fournier-S niehotta et Philippe Rigaux (philippe.rigaux@cnam.fr,fournier@cnam.fr) Département d informatique Conservatoire National des Arts & Métiers, Paris, France

Charger un sous-graphe avec HQL 1 / 9 Plan du cours 3 Charger un sous-graphe avec HQL L option fetch Combiner requêtes de chargement et de sélection Résoudre les 1+n requêtes avec HQL 4 Résumé : savoir et retenir

Charger un sous-graphe avec HQL 2 / 9 Introduction Nous avons étudié HQL dans une optique de sélection de données à matérialiser. Dans cette section nous abordons l option fetch qui indique que l on veut charger les objets associés dans le cache. Si, par exemple, on sait à l avance que l on va traiter un film, son metteur en scène et ses acteurs, on peut décider de charger par une seule requête tout ce sous-graphe.

Charger un sous-graphe avec HQL L option fetch 3 / 9 L option fetch On ne peut pas utiliser fetch sans left join. Le fetch indique que les objets de la table associée doivent être placés dans le cache. select film from Film as film left join fetch film.roles as role Pour chaque film placé dans le cache, on initialise donc la collection des rôles.

Charger un sous-graphe avec HQL Combiner requêtes de chargement et de sélection 4 / 9 Combiner requêtes de chargement et de sélection Attention à ne pas combiner sans précaution une requête de chargement (avec fetch) et de sélection (avec where). Prenons la requête suivante : on veut les films dont un des rôles est "McClane". On l exprime de la manière suivante : select film from Film as film left join fetch film.roles as role where role.nom= 'McClane' Le fetch indique que l on veut charger dans le cache le graphe Film-Role pour les lignes sélectionnées dans la base. Mais ici nous avons un problème : comme nous avons exprimé une restriction avec la clause where sur les rôles, seuls les rôles dont le nom est McClane seront chargés. La mauvaise surprise est que quand nous naviguerons du film vers ses rôles, nous n en trouverons qu un, ce qui n était pas l objectif initial.

Charger un sous-graphe avec HQL Combiner requêtes de chargement et de sélection 5 / 9 Combiner requêtes de chargement et de sélection La solution est d utiliser deux fois la table Role. La première occurence, sans restriction, apparaît dans le left join fetch, la seconde dans le where. Voici une expression qui me semble claire (d autres sont possibles) : from Film as film left join fetch film.roles as role where film in (select r2.pk.film from Role as r2 where nom= 'McClane') Ce n est pas très élégant, mais cela correspond à la satisfaction de deux besoins différents : sélectionner des données et les charger sous forme d objet.

Charger un sous-graphe avec HQL Résoudre les 1+n requêtes avec HQL 6 / 9 1+n requêtes et HQL Reprenons le problème des 1+n requêtes. Il serait préférable d effectuer la jointure suivante en lieu et place de la requête SQL qui sélectionne simplement les films : select * from Film as film, Notation as note where film.id=note.id_film Nous savons maintenant obtenir cette jointure et le chargement du sous-graphe Film-Notation avec la requête HQL suivante : select distinct film from Film as film left join fetch film.notations

Charger un sous-graphe avec HQL Résoudre les 1+n requêtes avec HQL 7 / 9 1+n requêtes et HQL En utilisant cette expression HQL, les notations seront placées dans le cache, et la navigation sur les notations pour chaque film ne nécessitera plus de l exécution de la seconde requête SQL : // On recherche les films Set<Film> films = session.createquery ("select distinct film from Film as film " + "left join fetch film.notations"); for (Film film: films) { // Pour chaque film on traite les notes for (Notation notation: films.getnotation()) { // Faire qq chose avec la notation } }

Résumé : savoir et retenir 7 / 9 Plan du cours 3 Charger un sous-graphe avec HQL L option fetch Combiner requêtes de chargement et de sélection Résoudre les 1+n requêtes avec HQL 4 Résumé : savoir et retenir

Résumé : savoir et retenir 8 / 9 Résumé La question du chargement des objets par des requêtes SQL est importante et malheureusement assez complexe pour des raisons déjà évoquées : changements d une version à une autre, confusion de la documentation, différences JPA/Hibernate, complexité des options disponibles. On a essayé de dissimuler certains aspects (les proxy, les wrappers) dont le rôle est peu clair et ne sont sans doute pas indispensables à la bonne gestion du problème Le bon réglage des requêtes SQL est un art qui implique une très bonne compréhension de l exécution des requêtes dans un système relationnel, l utilisation des index, des algorithmes de jointure, de tri, des ressources mémoire, etc. Si vous n êtes pas spécialiste, l aide d un DBA pour optimiser votre application peut s avérer nécessaire.

Résumé : savoir et retenir 9 / 9 Recommandations Dans la configuration, déclarez toutes vos associations en Lazy. Configurez la session pour produire l affichage des requêtes SQL. Explorez votre application systématiquement pour analyzer les requêtes SQL qui sont produites; dans une application MVC c est assez simple : exécutez chaque action et regardez quelle(s) requête(s) SQL est/sont produite(s). Si vous constatez trop de requêtes : remplacez les opérations de navigation par une requête HQL initiale qui charge les objets auxquels l action va accéder; si possible réduisez à une seule requête SQL produite par action. Si vous constatez qu une ou plusieurs requêtes SQL paraîssent trop complexes, produisez son plan d exécution, et modifiez éventuellement vos expressions HQL pour la décomposer.