Tutoriel de Bases de Données Relationnelles

Tutoriel de Bases de Données Relationnelles

Accueil  > Supports pédagogiques > TP et projets > TP répartition

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

[fil RSS du site]
Dernière mise à jour : 10/09/2009