TME Jointure Répartie

L'objectif de ce TME est de comprendre l'évaluation d'une requête de jointure entre 2 relations qui sont situées sur 2 sites distincts.

Scénario

On dispose de 2 SGBD : site 1 et site 2
Données: Le site 1 contient les Clubs (table C), le site 2 contient les Joueurs (table J)
La couche BDR est implémentée sur le site 1.

Installation

    @base3
    drop table J;
    desc J (doit répondre: "table inconnue")
    connect E1234567/E1234567@ora10  --(avec votre propre numéro d'étudiant)
    @base3
    drop table C cascade constraints;
    drop table F;
    connect E1234567/E1234567@ora11
    drop database link site2;
    create database link site2 connect to E1234567 identified by "E1234567" using 'ora10'; --(avec votre propre numéro d'étudiant)
    desc J@site2

ajouter un club dans une nouvelle ville. Ce club n'a que 10 joueurs ce qui permettra, par la suite, de poser une requête de jointure très sélective.

   insert into C values( 6000, 'petit club', 2, 'Combourg');

Construire le schéma global

   create view J as
      select *
      from j@site2;

Requêtes réparties

Pour chaque requête, répondre aux questions

  set timing on
  set autotrace trace explain stat

R1 : Jointure seule avec un transfert volumineux

Afficher les joueurs avec leur club

    select *
    from J, C
    where j.cnum = c.cnum;

R2 : jointure avec sélection

    select *
    from J, C
    where j.cnum = c.cnum
    and salaire > 59000

La sélection est-elle poussée sur le site 2 ?

R3 Jointure très sélective

    select *
    from J, C
    where j.cnum = c.cnum
    and ville = 'Combourg';
    select /*+ driving_site(j1) */ *
    from J j1, C c1
    where j1.cnum = c1.cnum
    and ville = 'Combourg';

LesTravauxDirigés, Accueil