TP gestion de la répartition sous Oracle – Gestion des vins

On dispose d'une base de données viticoles sur une base Oracle
située sur l'instance d'adresse oranet TANNA que l'on
veut répartir entre deux instances, l'une d'adresse oranet POAS et
l'autre d'adresse oranet CALCITE. La
base de données est décrite par le schéma suivant :

  • VIN(num, cru, année, degré)
  • PRODUCTEUR(num, nom, prénom, région)
  • RECOLTE(nprod, nvin, quantité)

Cette base existe de manière centralisée dans la base
defude/brunodu SGBD Oracle sur l'instance d'adresse oranet TANNA .

La répartition proposée pour les données est la suivante
:

  • relation PRODUCTEUR placée par fragmentation horizontale selon un
    prédicat portant sur la région :

PRODUCTEURPOAS = sélection(PRODUCTEUR, région IN
('Jura', 'Alsace', 'Bourgogne'))

PRODUCTEURCALCITE = sélection(PRODUCTEUR, région
NOT IN ('Jura','Alsace', 'Bourgogne'))

  • relation RECOLTE placée par voisinage de la relation PRODUCTEUR :

RECOLTEPOAS = semi-jointure(RECOLTE, PRODUCTEURPOAS)
RECOLTECALCITE = semi-jointure(RECOLTE, PRODUCTEURCALCITE)

  • relation VIN dupliquée sur les deux sites : VINPOAS = VINCALCITE =
    VIN

Travail à faire

1/ Création des relations PRODUCTEURPOAS, PRODUCTEURCALCITE, RECOLTEPOAS, RECOLTECALCITE
dans les bases correspondantes (création d'un "database
link" puis un create table ... as select ... puisque les relations
existent déjà sur la base defude/bruno de
TANNA),

2/ Créer des liens entre les différentes
instances pour pouvoir accéder aux relations distantes,

3/ Création des vues permettant de donner une vision globale de la base
de données,

4/ Test de la base ainsi obtenue par des requêtes d'interrogation,

5/ Test de mises à jour distantes (par exemple à partir de l'instance
POAS on insère un tuple dans une relation stockée dans CALCITE),

6/ Vérifier le comportement d'une transaction répartie (par exemple,
faire une insertion dans une relation locale à l'instance dans laquelle
on se trouve suivie d'une insertion dans une instance distante).
Il est plus parlant de faire une transaction qui échoue (le travail est
annulé) qu'une qui réussit. Par exemple faire une transaction qui fait
une première insertion qui marche suivie d'une deuxième qui échoue,

7/ Comparer le plan d'exécution (utiliser le bouton plan d'exécution) de trois requêtes réparties avec
la solution optimale (obtenue à la main).

Requêtes de test  (à titre d'exemple)

1- Donner la liste des producteurs de la région du Beaujolais,

2- Donner le nom des producteurs de vins de cru Morgon,

3- Donner le cru et la quantité des vins produits par le producteur de numéro 10,

4- Calculer la quantité totale de vin numéro 12 produite,

5- Donner pour chaque producteur (numéro) le nombre total de vins produits,

6- Donner pour chaque vin (numéro) la quantité totale récoltée.

Mise en oeuvre

Ce TP peut être mis en oeuvre à partir de cet environnement