WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Bases de données réparties sous Oracle

( Télécharger le fichier original )
par Dave Odilon DJAMOU YIKAM
Ecole supérieur de management commerce et informatique, Maroc - Ingéniérie en informatique 2008
  

Disponible en mode multipage

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

j4 S7vtj4 qj4S7vtIJiJiE

AVANT PROPOS

Au cours des deux dernières années, nous avons étudié à l'Ecole Supérieure Sup'Management à Fès au Maroc, précisément dans la filière ingénierie informatique.

Au terme de ce cycle, il nous est demandé de traiter d'un sujet de recherche, pour l'obtention du diplôme bac+4 d'ingénieur en informatique. C'est à ce titre que vous est rédigé le présent rapport qui essaye d'une façon précise et concise, de souligner les principaux points que nous avons abordés. Aussi, afin de joindre la pratique à la théorie, nous avons réalisé notre travail dans un cadre professionnel au cours du stage académique effectué de juillet à septembre 2008 à la société Call In Out de Fès !

Nous espérons que le contenu ci-après présenté comblera vos attentes et posera à sa manière, une pierre solide à l'édification du monde informatique.

REMERCIEMENTS

Je souhaite remercier toutes les personnes et organes qui m'ont aidé d'une façon directe ou indirecte à la réalisation de ce rapport. Entre autres je peux citer :

> La société Call In Out à travers son directeur général M Khalid Cohen qui nous accepté en stage,

> Le directeur de production de la société M Andre Mbeka,

> La cellule Informatique, dont certains membres devenus des amis,

m'ont particulièrement marqués : M Alain NGOKO, Thierry

MUKENDI, Ouakor SIDI MOHAMED et Hind LAZRAK,

> L'école Sup'Management à travers son président fondateur

M Abdesselam Erkik

> Mon encadreur académique M Khalid El FAZAZY

> Tous mes enseignants,

> Tous mes camarades de classe et amis,

> Mes colocataires et amis Seraphin ESSONO et Eustache ANTALI > Mes frères et soeurs de l'Eglise de FES,

> Sans oublier le Maroc tout entier, qui est mon pays d'accueil !

Aussi, de chaleureux remerciements à ma famille restée dans mon pays le Cameroun, et toujours soucieuse de mon bien être et, une reconnaissance particulière à Monsieur Jérémie et Madame Julienne YIKAM, qui en plus d'être mes parents géniteurs, sont de véritables amis, conseillés et appuis.

Enfin, je tiens à rendre grâce à Dieu, qui est pour moi un soutien et un refuge. A lui soit la Gloire et l'Adoration pour toujours !

TABLE DES MATIÈRES

Introduction 9

PARTIE I. Bases de données réparties 10

I. Problématique et Avantages 11

I.1. Problematique 11

I.2. Avantages 11

II. Les différentes architectures 12

II.1. L'architecture Client-Serveur 12

II.2. L'architecture serveur-serveur 12

III. Conception d'une base de données reparties 14

III.1. La conception ascendante ou bottum up design 14

III.2. La conception descendante ou top down design 14

III.3. La fragmentation 14

III.3.A. La fragmentation horizontale 14

III.3.B. La fragmentation verticale 15

III.3.C. Les trois regles de la fragmentation 15

III.4. L'allocation 15

IV. Les transactions réparties 16

IV.1. Definitions 16

IV.2. Contrôle de concurrence 17

IV.3. Mecanismes utilisés 17

IV.3.A. Verrouillage 17

IV.3.B. Estampilles 17

IV.4. Interblocages 17

IV.5. Transactions reparties 18

V. La replication 19

VI. Les requetes reparties 20

VI.1. Definition 20

VI.2. Optimisation 20

VI.2.A. Decomposition de la requete 20

VI.2.B. Repartition de la requete 22

VI.2.C. Schema general de l'optimisation 23

VII. Les objectifs d'une base de données répartie 24

VII. 1. L'autonomie locale 24

VII.2. Ne pas se reposer sur un site unique 25

VII.3. Opération en continu 25

VII.4. Transparence vis à vis de la localisation 25

VII.5. Independance vis à vis de la fragmentation 25

VII.6. Indépendance vis à vis de la réplication 25

VII.7. Traitement des requêtes distribuées 25

VII.8. Gestion répartie des transactions 26

VII.9. Une indépendance vis à vis du matériel 26

VII. 10. Une indépendance vis à vis du système d'exploitation 26

VII. 11. Une indépendance vis à vis du réseau 26

VII.12. Une indépendance vis à vis du type de la base de données relationnelle 26

PARTIE II. Bases de donnees reparties sous oracle 27

I. Presentation de oracle net 28

I.1. Architectures 29

I.1 .A. Architecture monoposte 29

I.1 .B. Architecture client - serveur (A) 29

I.1 .C. Architecture client - serveur (B) 30

I.1.D. Architecture serveur - serveur 30

I.2. Installation et configuration 31

I.2.A. Parametres de configuration 31

I.2.B. Outils de configuration 32

I.2.C. Fichiers de configuration 34

II. Referencement dans un systeme distribue 35

II.1. Nom global 35

II.2. Les data base links 35

II.3. Les synonymes 36

III. Le mecanisme de replication 37

III.1. La commande copy 37

III.2. Les snapshots 37

III.2.A. Types de snapshots 38

III.2.B. Raffraichissements 39

III.3. Vues materialisees 40

III.4. La replication avancee 40

IV. Optimisation des requetes reparties 41

PARTIE III. Le cas pratique de la societe call in out 42

I. Presentation de la societe call in out 43

II. Analyse du besoin 44

II.1. Fonctionnement de la societe 44

II.2. Presentation de la campagne X 45

II.3. Specification du besoin 45

II.4. Solution proposee 46

III. Conception de la solution 46

III.1. Diagramme de cas d'utilisation 47

III.1 .A. Les cas d'utilisation 47

III.1.B. Les acteurs 47

III.1.C. Diagramme 48

III.2. Diagrammes de sequences 48

III.2.A. Diagramme de sequence « saisir donnees» 49

III.2.B. Diagramme de sequence « superviser » 50

III.2.C. Diagramme de sequence « gerer compte » 51

III.3. Diagramme de classes 52

III.3.A. Differentes classes ou tables 52

III.3.B. Diagramme 53

IV. Repartition de la base de donnees 54

IV. 1. Fragmentation et localisation 54

IV.2. Replication 55

V. Implementation 55

V. 1. Installation de oracle et creation de la base de donnees 55

V.2. Migration de la base access à la base oracle 56

V.3. Configuration de oracle net 57

V.4. Creation des data links 57

V.5. Mise en place de la replication 58
V.5.A. Replication des données des tables operateurs et datacode 58

V.5.B. Replication de la table rdv 60

V.5.C. Création des vues 61

V.6. Modification de l'application de l'entreprise 61

V.7. Mise en service 62

Conclusion 64

Annexes 65

Annexe 1 : Table des illustrations 66

Annexe 2 : Références 67

Annexe 3 : quelques Vues utilisées par l'administration oracle 68

INTRODUCTION

Les Bases de données désignent des ensembles structurés de données. Elles ont pour principal but de recevoir, conserver et restituer les données d'une application. Ceci dit, elles sont d'une importance capitale pour le développement d'un logiciel car celle-ci divisée en 2 grandes parties : La partie traitements et la partie données.

Les bases de données réparties quant à elles, insistent en plus sur l'aspect réparti d'une base de données. C'est-à-dire sur la distribution des données de l'application sur plusieurs sites.

Dans le cadre de notre travail de fin d'étude effectué au cours de notre stage académique à la société CALLINOUT, nous avons tenu à étudier en profondeur ce concept. Ainsi, tour à tour dans ce rapport, nous présenterons le concept de base de données réparties, sa modélisation dans le SGBD réparti ORACLE, et le cas pratique réalisée à CALLINOUT.

PARTIE I. BASES DE DONNEES REPARTIES

I. PROBLEMATIQUE ET AVANTAGES

I.1. PROBLEMATIQUE

Comme nous l'avons mentionné à l'introduction, les BDR (Bases de données réparties) sont d'abords des bases de données normales. En fait, elles sont issues de l'évolution de ces dernières.

En effet, la gestion de bases de données avec le temps, s'est confrontée à divers problèmes qui sont :

> L'augmentation du volume de données

> l'augmentation du volume de traitements

> l'augmentation du volume de transactions

> etc.

Cela a entraîné la lenteur des applications, car les périphériques de stockage submergés, ne répondant pas assez vite. Aussi, il a été noté que les débits des liaisons réseaux évoluaient beaucoup plus vite que les capacités des périphériques de stockage.

Ainsi, l'idée est venue de multiplier les sources de données et les faire communiquer par réseau, afin de bénéficier de traitements parallèles, minimisant ainsi les temps de réponses. Aujourd'hui, les BDRs sont de plus en plus répandus, et comblent largement les lacunes des bases de données classiques.

I.2. AVANTAGES

Les avantages d'une base de données sont nombreux. On peut citer comme principaux :

> Le gain en performances : les traitements se font en parallèles

> La fiabilité : Si un site a une panne, un autre peut le remplacer valablement.

> La transparence des données : les développeurs et les utilisateurs n'ont pas à se préoccuper de la localisation des données qu'ils utilisent.

II. LES DIFFERENTES ARCHITECTURES

Dans un environnement de bases de données réparties, il existe 2 principaux types d'architectures :

II.1. L'ARCHITECTURE CLIENT-SERVEUR

Figure 1: Architecture Client-Serveur

Dans cette architecture, l'application client se connecte au serveur de base de données (ici Oracle). Ce dernier à son tour, leur renvoie des réponses en fonction de leurs requêtes.

II.2. L'ARCHITECTURE SERVEUR-SERVEUR

Dans un système de bases de données réparties, il existe en général plusieurs serveurs de données qui fonctionnent selon l'architecture suivante :

Figure 2 :Architecture serveur-serveur

Chaque serveur gère sa base de données et échange les informations avec les autres. Le tout est vu comme une seule base de données logique.

De façon globale voici comment fonctionne un système de base de données réparties :

Figure 3 Architecture générale

Les clients se connectent à leurs serveurs respectifs, et ces derniers s'échangent les informations si nécessaires.

III. CONCEPTION D'UNE BASE DE DONNEES REPARTIES

Comme dans tous les mécanismes, la phase de conception est la plus importante et déterminante dans la mise en place d'une base de données reparties. Le rôle du concepteur est de définir les différents fragments de la base et, leurs localisations ; d'évaluer les différents coûts de stockage et de transfert, et les priorités à respecter. On distingue deux principaux types de conception : la conception ascendante et la conception descendante.

III.1. LA CONCEPTION ASCENDANTE OU BOTTUM UP DESIGN

Dans ce cas de figure, il existe plusieurs bases de données disjointes qu'il faut réunir en une seule base de données reparties et cohérente avec un schéma de conception global.

III.2. LA CONCEPTION DESCENDANTE OU TOP DOWN DESIGN

Ici, on a au départ une seule base de données qu'il faut fragmenter et allouer les fragments aux différents sites. On va donc d'un schéma global de conception a des sous schémas locaux.

III.3. LA FRAGMENTATION

La fragmentation désigne le découpage de la base globale en sous bases selon les critères d'analyse. Le concepteur choisi entre un découpage horizontal, vertical ou mixte.

III.3.A. LA FRAGMENTATION HORIZONTALE

Cette fragmentation consiste à faire une séparation selon les enregistrements. On définit le critère de sélection suivant les valeurs d'un ou plusieurs champs et la division est faite. Par exemple dans le cas d'une gestion de contrats, on peut séparer les contrats signés à Rabat de ceux signés à Casablanca.

III.3.B. LA FRAGMENTATION VERTICALE

Ici, la division est faite non au niveau des données, mais de la structure même de la base. Certains champs sont envoyés dans un fragments et d'autres ailleurs. En continuant avec l'exemple des contrats, on peut avoir d'une part le numéro du client , son nom et prénom, et d'autre part le numéro du client, le lieu d'habitation, et lieu du contrat.

La fragmentation mixte consiste à utiliser conjointement les deux méthodes citées ci-dessus.

III.3.C. LES TROIS REGLES DE LA FRAGMENTATION

La fragmentation doit respecter trois principales règles.

· Pour toute donnée de la relation originale R il doit avoir une sous relation Ri la contenant.

· Pour toute fragmentation de la relation R en plusieurs sous relations Ri il doit avoir un procédé inverse de reconstitution de la relation principale R.

· Aucune donnée ne doit se trouver dans plus d'un fragment sauf dans le cas d'une fragmentation verticale ou la clé primaire doit être présente partout.

III.4. L'ALLOCATION

Lorsque le concepteur a fini de fragmenter sa base, il lui faut ensuite allouer chaque fragment sur son site correspondant. Cette phase est appelée Allocation. L'allocation peut être faite de plusieurs façons :

> La réplication totale des données

Pour des raisons de fiabilité on peut décider de répliquer toutes les données sur tous les sites. Ainsi, si un site est temporairement ou définitivement défaillant, on utilise simplement un autre. Mais cette méthode n'est pas très efficace lorsque les données sont régulièrement mises à jour car il se pose le problème de cohérence de données

Rapport de fin de cycle Ingénierie Informatique

> L'absence de réplication

On peut aussi choisir de ne rien répliquer afin d'assurer une meilleur cohérence de données. Ici, chaque donnée est mise à jour sur un seul site. Cette méthode est plus efficace quand les données sont beaucoup plus modifiées que lues.

> La méthode hybride

Afin de bénéficier des deux méthodes citées à la fois, celle hybride peut être utilisé. Ainsi les données en Read Only peuvent être répliquées et les données en Read Write pas du tout.

IV. LES TRANSACTIONS REPARTIES

IV.1. DEFINITIONS

Une transaction désigne un ensemble d'opérations effectuées de manière indivisible sur une base de données.

Elle est soit validée par un Commit, soit annulé par un rollback soit interrompue par un abort. Afin de garantir la stabilité du système, une transaction doit validée quatre propriétés indispensables :

> L'Atomicité

Cette propriété signifie que toutes les opérations d'une transaction sont menées de façon indivisible ; toutes le opérations doivent être validées, si non tout est annulé.

> La cohérence

La transaction doit amener le système d'un état cohérent vers un état cohérent, telles que toutes les contraintes d'intégrités soient respectées.

> L'isolation

Une transaction en cours ne peut révéler ses résultats à d'autres transactions si toutes ces opérations n'ont pas été validées.

> La durabilité

Tout résultat produit par une transaction doit être permanent et ne doit souffrir d'aucune altération, quelques soient les pannes du système.

IV.2. CONTROLE DE CONCURRENCE

Afin d'améliorer les performances dans les traitements de bases de données, il est utile de mener en parallèles plusieurs transactions. Dans ce cas, des mécanismes sont mis en place pour gérer leurs accès concurrents aux données.

IV.3. MECANISMES UTILISES

IV.3 .A. VERROUILLAGE

La méthode la plus utilisée pour gérer des accès concurrents est bien sûr celle des verrouillages. Elle consiste pour chaque transaction avant de débuter de s'assurer de la disponibilité des données requises en y plaçant des verrous : c'est la phase de croissance. Si un objet est déjà verrouillé, la transaction ne peut débuter. Dans la phase de diminution, les verrous sont enlevés. Cette méthode est appelée verrouillage à 2 phases.

IV.3 .B. ESTAMPILLES

L'autre méthode de contrôle de concurrence est la méthode des estampilles. Ici, à chaque transaction est attribuée un numéro par un compteur. Les transactions s'exécutent par ordre croissant. Dans le cas de systèmes distribués, l'ordre global est partiel, mais total sur chaque site. En effet chaque site a son compteur. L'ordre global peut devenir total si à chaque site est attribué aussi un numéro.

IV.4. INTERBLOCAGES

Lorsqu'on applique un système de verrouillage, on doit toujours penser au problème d'interblocage. En effet supposons qu'une transaction a mi un verrou sur un objet A et attend un objet B verrouillé par un autre qui a son tour

attends de verrouiller l'objet A. Dans ce cas de figure, il est clair que les deux transactions vont s'attendrent indéfiniment : c'est l'interblocage.

Afin de gérer les interblocages trois principales actions peuvent être effectuées :

· Détecter les interblocages et les résoudre

· Prévenir les interblocages avant qu'ils n'apparaissent !

· Eviter les interblocages, par la façon d'allouer les ressources.

La méthode la plus utilisée est la première, qui consiste à attendre que les interblocages arrivent, les détecter, et décanter la situation. Pour cela, il est utilisé un graphe qui représente l'état d'attente des transactions : c'est le WFG (Wait For Graph) (voir fig 4). Chaque noeud représente une transaction en cours. Et les arcs entre les noeuds sont les attentes d'une transaction par rapport à l'autre. Lorsque un cycle est détecté, on a un interblocage. La solution consiste à retirer (abort) une transaction, afin de libérer ses ressources. Encore faudrait-il faire le meilleur choix, qui génère moins de coûts.

Figure 4 : Graphe d'attentes

IV.5. TRANSACTIONS REPARTIES

Dans le cadre de systèmes répartis, les algorithmes cités ci-dessus sont aussi valables. La différence est qu'ici, une transaction peut être en attente pas seulement para rapport à une transaction locale, mais située sur autre site. La gestion en est donc un peu plus compliquée. Aussi, on peut avoir le cas de

transaction répartie ; c'est-à-dire une transaction constituée de plusieurs transactions locales. Dans ce cas, on utilise un protocole de validation à 2 phases. Dans la première phase dite phase de préparation, le site coordonnateur demande aux sites participants de se préparer à la validation. Lorsqu'il reçoit les notifications positives il lance alors la phase de validation en donnant l'ordre correspondant aux sites. Dans le cas contraire il donne l'ordre d'interrompre les transactions.

Figure 5 : Validation à deux phases

V. LA REPLICATION

La réplication désigne la reproduction identique de données d'un site à un autre. Elle a pour but d'assurer la fiabilité du système et diminuer les trafics réseaux, dans le cadre de systèmes distribués. Ainsi, si un site est momentanément inaccessible, un autre peut valablement le remplacer sans que les utilisateurs ne s'en aperçoivent. Aussi, au lieu de faire des requêtes réparties, qui occupent la bande passante, les requêtes se font au niveau local.

Le mode le plus courant de la réplication dans les bases de données est la notion de clichés en anglais snapshots.

Un cliché est une photo de la base de données partiellement ou totalement à un instant donné. Afin de garder une certaine cohérence de la base, les clichés

doivent régulièrement êtres mis à jour. Ainsi, plus le cliché est récent, plus il est fiable.

VI. LES REQUETES REPARTIES

VI.1. DEFINITION

Une requête répartie est une requête s'effectuant sur une base de données répartie. Comme une requête normale, elle se base sur les relations de la base et leurs champs, en utilisant l'algèbre relationnel. Mais elle doit tenir compte en plus de certains paramètres essentiels de fragmentation, de localisation afin d'optimiser le temps de réponse global de la requête.

Dans le cadre d'une base de données locale, 2 principaux paramètres sont considérés pour l'optimisation des résultats à savoir : les coûts d'accès aux entrées sorties et les capacités de traitement du CPU. Pour une base de donnée distribuée, en plus de ces indices, il faut aussi tenir compte des coûts de communication réseaux.

VI.2. OPTIMISATION

Optimisation consiste à choisir parmi de nombreuses possibles, une stratégie d'exécution de requête tant efficace que efficiente. En effet, lorsque l'utilisateur soumet une requête au SGBD, le composant appelé le Query Processor entre en action pour récrire la requête sous une forme plus simple, et optimale.

L'optimisation d'une requête intervient à deux principaux niveaux :

VI.2.A. DECOMPOSITION DE LA REQUETE

VI.2.A.a. Normalisation

La normalisation consiste à écrire la partie critère (contenu dans la clause WHERE) sous forme d'une conjonction de coordination ou disjonction de conjonction de prédicats.

WHERE (a et b) ou (c et d).

Ceci afin de simplifier la clause et faciliter ainsi l'analyse et l'optimisation.

VI.2.A.b. Analyse

Après la normalisation, il est question d'analyser la requête afin de détecter et éliminer les erreurs. Parmi elles on peut citer, la présence de champs ou relations inexistants, l'incohérence des valeurs données avec les types réels des champs, etc.

VI.2.A.c. Elimination des redondances

Ensuite, la requête est simplifiée en éliminant les redondances. En effet dans certains cas, plusieurs formules identiques peuvent se retrouver au sein de la même requête.

Exemple : NON (NON A) == A

A ET A == A

A OU A ==A

Ainsi lorsque de tels cas sont détectés, le Query processor les simplifie et obtient une formule finale plus claire.

VI.2.A.d. Réécriture

La dernière phase de cette première partie consiste à réécrire la requête en une forme qui améliore ou optimise le temps de traitement global. En effet, les opérations de l'algèbre relationnel à savoir : l'Union, la Sélection, la Projection, la Différence, la jointure, le Produit cartésien n'ont pas les mêmes complexités (voir tableau1). Alors il est plus avantageux d'exécuter de les exécuter dans l'ordre de complexités croissantes.

Opérations

Complexité en nombre de

données

Sélection

Projection (sans élimination des doublons)

O (n)

Opérations

Complexité en nombre de

données

Projection (avec élimination

des doublons) Union

Jointure

Semi-j ointure Quotient

Opérations de mises à jour

O (n*log n)

Produit Cartésien

O (n2)

Tableau 1 :Tableau des complexités des opérations

Ainsi, le Query Processor reformule la requête dans ce sens, en appliquant les règles logiques de commutativité, associativités, distributions, idem potence, etc ...

VI.2.B. REPARTITION DE LA REQUETE

Après la première partie citée ci-dessus, il faut tenir compte de la répartition des données : c'est-à-dire de la fragmentation et de la localisation. En effet, il faut décomposer la requête globale en requêtes sur les fragments. Ainsi des reconstructions sont encore faites afin d'annuler les formules dont les conditions ne respectent pas les restrictions des fragments aux quelles elles font référence. Dans certains cas aussi, on peut remplacer certaines opérations par d'autres, comme la jointure par la sémi - jointure car moins coûteuse.

Selon la localisation de chaque fragment et l'existence ou non de relations répliquées, une stratégie d'exécution est mise en place afin de minimiser au maximum les trafics réseaux et bénéficier de rapides accès aux données et traitements du CPU. Ainsi, en fonction de la topologie du réseau et de son

architecture il peut être plus avantageux d'exécuter tel fragment de requête sur tel site et pas sur un autre. Par exemple dans le cas d'une architecture client Serveur, il faut choisir quels fragments s'exécutera sur le client et quel autres sur le serveur. Aussi les coûts de communication n'étant pas les mêmes sur un LAN que sur un WAN, les stratégies utilisées dans ces cas peuvent être différentes.

VI.2.C. SCHEMA GENERAL DE L'OPTIMISATION

Maintenant, nous allons récapituler tout ce qui a été dit pus haut dans un schéma général d'optimisation. Tout d'abord, il est important de mentionner que dans un système distribué, l'optimisation peut se faire de trois manières principales :

· Une optimisation centralisée où un site central détermine la stratégie d'exécution sur tous les autres sites. Dans ce cas, l'optimisation est plus facile mais souvent peu efficace car il faudrait connaître exactement les indices de chaque site, ce qui n'est pas évident.

· Une optimisation distribuée où chaque site a sa propre stratégie d'optimisation

· Enfin on peut joindre les deux première méthodes pour en faire une hybride. Ainsi, dans un premier temps, un site décide de l'optimisation globale et ensuite chaque site optimise à son tour, à son niveau. C'est cette dernière possibilité que nous illustrons dans le schéma suivant.

Figure 6 : Schéma général de l`optimisation

VII. LES OBJECTIFS D'UNE BASE DE DONNEES REPARTIE

En conclusion de cette première partie sur la notion de base de donnée répartie, nous allons donner les principaux objectifs à respecter par un système réparti, suivant les 12 points définis par C.J Date.

VII.1. L'AUTONOMIE LOCALE

L'autonomie locale implique que chaque site doit fonctionner indépendamment des autres, même si ces derniers venaient à avoir des pannes.

Aussi, chaque site est responsable de l'intégrité, la sécurité et la gestion de sa base de données.

VII.2. NE PAS SE REPOSER SUR UN SITE UNIQUE

Cet objectif vise à éviter des arrêts de production lorsqu'un site tombe en panne. Pour cela on peut soit penser à ce que Oracle appelle la réplication avancée ou les données sont entièrement répliquées d'un site à l'autre.

On peut aussi utiliser Oracle Parallele Server qui est une architecture composée de plusieurs SGBD utilisant une même base de données. Ainsi, si le SGBD d'un site tombe en panne, celui de l'autre prend la relève.

VII.3. OPERATION EN CONTINU

Ici, il est question d'assurer le fonctionnement continu du système réparti par des mises à jour et maintenances effectuées.

VII.4. TRANSPARENCE VIS A VIS DE LA LOCALISATION

Cet objectif a pour but de rendre l'accès aux données transparentes sur tout le réseau. En effet, ni les applications, ni les utilisateurs ne doivent savoir la localisation des informations qu'ils utilisent. Pour cela on peut utiliser les liens de base de données et les synonymes dont nous parlerons plus amplement dans la deuxième partie.

VII.5. INDEPENDANCE VIS A VIS DE LA FRAGMENTATION

La fragmentation doit être réelle et respectée sur chaque site, indépendamment.

VII.6. INDEPENDANCE VIS A VIS DE LA REPLICATION

De même chaque site doit bien gérer ses réplications.

VII.7. TRAITEMENT DES REQUETES DISTRIBUEES Chaque site doit avoir des outils et stratégies d'optimisation.

VII.8. GESTION REPARTIE DES TRANSACTIONS

Généralement les SGBD utilisent des protocoles de validation à 2 phases.

VII.9. UNE INDEPENDANCE VIS A VIS DU MATERIEL

Le SGBD ne doit dépendre du matériel

VII.10. UNE INDEPENDANCE VIS A VIS DU SYSTEME D'EXPLOITATION

Il est important que les SGBD utilisés soient utilisables sur plusieurs systèmes d'Exploitation.

VII. 11. UNE INDEPENDANCE VIS A VIS DU RES EAU

L'idéal serait que chaque SGBD réparti est son propre protocole réseau comme Oracle, pour faire communiquer les différentes instances.

VII.12. UNE INDEPENDANCE VIS A VIS DU TYPE DE LA BASE DE DONNEES RELATIONNELLE

De plus en plus, il est possible d'interconnecter des SGBD de types différents, au moyen des standards tels que ODBC, JDBC et des middlewares fournis par les constructeurs eux-mêmes.

Ainsi se termine cette première partie basée sur la présentation générale de la notion de base de données répartie et ses principales caractéristiques. Dans la suite, nous parlerons du cas particulier de Oracle qui est le SGBD le plus utilisé au monde dans la répartition et de loin le plus efficace.

PARTIE II. BASES DE DONNEES REPARTIES

SOUS ORACLE

Dans le cadre de notre travail, nous avons utilisé le SGBD réparti Oracle 10 g (grid). Comme tout SGBD, il a pour rôle de gérer l'accès au bases de données qu'il stocke et restitue à volonté. Oracle 10 g se démarque des autres gestionnaires de bases de données par son côté administration très développé (Gestion des utilisateurs, des profils, des rôles et privilèges, des tablespaces) et aussi de part son architecture complexe qui repose sur la notion d'instance et qui assure un traitement rapide, sécurisé, efficace des données. Aussi, Oracle possède son propre langage de définition de procédures SQL (Structured Query Langage), le PL/SQL qui est assez simple a utilisé.

Dans la suite, nous parlerons des caractéristiques d'Oracle 10 g dans la répartition des données, qui sont légèrement évoluées par rapport aux versions précédentes (9i,8i)

I. PRESENTATION DE ORACLE NET

Afin de communiquer avec une base de donnée Oracle 10g, plusieurs logiciels ou middleware peuvent être utilisés, selon les besoins. Pour ce qui est de la connexion à une base de donnée distante, l'outil Oracle Net est employé pour gérer différents modes d'accès aux serveurs. Ses prédécesseurs sont respectivement Net8, Sql *Net pour les versions antérieures à la 10g.

Oracle Net permet de spécifier pour le client, une liste de services oracle qu'il peut atteindre, et pour chaque serveur, la liste des services oracle qu'il gère et les clients qui peuvent s'y connecter. Bref il est utilisé comme middleware ou passerelle entre le client et le serveur, selon les différentes architectures ci- dessous présentées.

I.1. ARCHITECTURES

I.1.A. ARCHITECTURE MONOPOSTE

Figure 7 : Architecture Monoposte

I.1.B. ARCHITECTURE CLIENT - SERVEUR (A)

Figure 8 : Architecture Client - Serveur A

I.1.C. ARCHITECTURE CLIENT - SERVEUR (B)

Figure 9 : Architecture Client - Serveur B

I.1.D. ARCHITECTURE SERVEUR - SERVEUR

Figure 10 : Architecture Serveur- Serveur

I.2. INSTALLATION ET CONFIGURATION

I.2.A. PARAMETRES DE CONFIGURATION

Pour se connecter à Oracle, il faut fournir trois paramètres :

· Le nom d'utilisateur

· Le mot de passe

· L'alias

L'Alias renseigne sur plusieurs données à la fois :

· le protocole réseau utilisé pour accéder à la machine cible (TCP/IP),

· le nom ou l'adresse de la machine cible sur laquelle se situe le serveur,

· le SID cible (la machine distante peut héberger plusieurs bases) ou le nom global de la base,

· le port d'écoute du serveur

· d'autres paramètres dépendants du protocole réseau utilisé. Afin d'accéder à un serveur distant, l'application cliente doit pouvoir déterminer ses 3 indications, et pour cela il utilise Oracle Net. En effet, ce dernier permet de définir 3 principaux paramètres utilisés pour la connexion à distance :

> Le listener

Le Listener est le processus d'écoute qui s'exécute sur le serveur. Il faut le configurer en indiquant par exemple le port d'écoute (par défaut le 1521)

> Les méthodes de résolution de nom

Pour se connecter à un serveur Oracle, on peut utiliser plusieurs méthodes :

· La résolution locale de noms

Cette méthode consiste à indiquer que des noms locaux ou Alias seront utilisés pour désigner des services Oracle distants.

Connexion : Nom _utilisateur/mot_de_passe@alias

· La résolution de noms Easy connect

Encore appelée méthode Basic, elle permet d'indiquer qu'à la place d'alias, on aura une nomination complète sous la forme

Nom _utilisateur/m ot _de_passe@nom_du _serveur:port _ecoute/nom _du _service

· La résolution de noms d'annuaire (LDAP)

Ici, on précise qu'on utilisera un service d'annuaire pour identifier le service Oracle à joindre. Le service d'annuaire peut être Oracle Internet Directory ou Active Directory.

Connexion : Nom _utilisateur/mot_de_passe@alias

· Etc.

> Les noms de services locaux

Un nom de service local est un Alias, défini plus haut. Il permet de réunir plusieurs paramètres de connexion en une seule appellation unique.

> Les noms d'annuaire

Si on prévoit utiliser la méthode de résolution de nom d'annuaire, il faut créer des noms d'annuaire sur un serveur LDAP.

Voilà les principaux paramètres à configurer pour Oracle Net.

I.2.B. OUTILS DE CONFIGURATION

Oracle met à la disposition des DBA (Data Base Administrators) deux outils principaux JAVA pour faire la configuration de Oracle Net, afin d'indiquer les paramètres cités plus haut Il s'agit de :

· netca (Oracle Net Configuration Assistant) : simple, l'utilisateur est guidé pas à pas pour entrer les paramètres nécessaires à une configuration,

Figure 11 : netca


· netmgr (Oracle Net Manager) : plus complet, il permet d'accéder à l'ensemble des paramètres qui peuvent figurer dans les fichiers de configuration Oracle Net.

Figure 12: netmgr

I.2.C. FICHIERS DE CONFIGURATION

Oracle Net utilise 3 principaux fichiers de configuration se trouvant dans $ORA CLE_HOME/network/admin :

> Listener.ora

Ce fichier détermine les paramètres du Listener sur le serveur

Figure 13: listener.ora

> Sqlnet.ora

Ici est précisé l'ordre des méthodes de résolution de noms à utiliser

Figure 14: sqlnet.ora

> Tnsnames.ora

Ce dernier contient tous les noms locaux de services ou alias avec leurs paramètres.

Figure 15 : tnsnames.ora

II. REFERENCEMENT DANS UN SYSTEME DISTRIBUE

II.1. NOM GLOBAL

Dans une architecture distribuée, un système d'identification unique des bases doit exister ; car, si plusieurs bases ont le même nom le référencement sera ambigu et donc impossible. Oracle utilise donc le concept de nom global (global_name) constitué de :

> Le nom de domaine : domain_ name

> Le nom de la base (SID): db_name

Pour le définir, on peut le faire à la création de la base avec l'utilitaire de création de base de données dbca, ou modifier le fichier d'initialisation de la base init.ora de la façon suivante :

global_names = true

domain_name = nom_domaine

db_name = nom_base

Ainsi Oracle considèrera comme nom global de la base nom_base.nom_domaine

II.2. LES DATA BASE LINKS

Pour interroger une BD distante, il faut créer un lien de base de données. Un lien de base de données est un chemin unidirectionnel d'un serveur à un autre. En effet, un client connecté à une BD A, peut utiliser un lien stocké dans la BD A pour accéder à la BD distante B et vice versa.

Lorsqu'un lien est référencé par une instruction SQL, Oracle ouvre une session dans la base distante et y exécute l'instruction. La session demeure ouverte au cas où elle serait de nouveau nécessaire.

En créant un lien de BD, on doit indiquer le nom du compte auquel on se connecte, le mot de passe de ce compte, et le nom de service associé à la base distante. En l'absence d'un nom de compte, Oracle utilise le nom et le mot de passe du compte local pour la connexion à la base distante.

Un lien est soit privé ou public. Seul l'utilisateur qui a crée un lien privé peut l'utiliser, alors qu'un lien public est utilisé par tous les utilisateurs de la base de données.

Instruction SQL :

CREATE [SHARED|PUBLIC|PRIVATE] DATABASE LINK NomLien CONNECT TO

CURRENT_USER

User IDENTIFIED BY password

USING connect_string

CURRENT_USER : Oracle utilise l'utilisateur courant pour ouvrir la session distante

SHARED : Lien partagé

connect_string: le nom du service représentant la base à laquelle on veut se connecter

Si on utilise l'option connect to user identified by password, l'utilisateur doit exister sur la base distante.

Exemple d'utilisation de Data Base Link :

Select * from scott.employe@db~link

Employe = objet de la base de données référencée par db_link

N.B : Les Data Base Link peuvent fonctionner sans système de nom global, mais si ce dernier existe, alors, les deux doivent être identiques, si non une erreur sera générée.

II.3. LES SYNONYMES

Pour référencer une base de données dans un système distribué, on utilise le nom global ou le lien de base de données. Pour référencer un objet (table, trigger, procédure, etc) on ajoute y ajoute le nom de l'objet comme mentionné dans l'exemple précédent. Mais afin de converger plus vers l'un des objectifs de la répartition des bases de données (voir IV-4) qui est la transparence vis-à-vis

de la localisation, Oracle utilise des synonymes qui masquent le nom du lien de base de données. Exemple : nom_synonyme =====scott.employe@db link Instruction SQL : create synonym for scott.employe@db_link

III. LE MECANISME DE REPLICATION

III.1. LA COMMANDE COPY

La première option consiste à répliquer régulièrement les données sur le serveur local au moyen de la commande COPY de SQL*Plus.

Exemple:

COPY FROM user1/password1@db_link1 TO user2/password2@db_link2

CREATE table _2

USING

SELECT * FROM table_1

WHERE `condition' ;

Ici, la copie est faite du site référencé par db_link1 à db_link2

La clause FROM ou TO peut être émise si l'origine ou la destination est le site courant.

Aussi, en plus de la clause CREATE, on peut utiliser les clauses REPLACE (remplacer une table existante), INSERT INTO (ajout de tuples).

III.2. LES SNAPSHOTS

Afin de répliquer les données d'une table à l'autre, Oracle utilise le concept de SNAPSHOT ou clichés.

Un snapshot est une copie conforme d'une table située sur une base de donnée du système distribué. Il permet de diminuer les coûts réseau, en rendant local les données situées à distance. Afin d'assurer la cohérence de données, une mise à jour régulière et automatique est effectuée à partir du site d'origine ou MASTER.

III.2.A. TYPES DE SNAPSHOTS

On distingue deux principaux types de snapshots :

> Les read-only snapshots

Ce sont les snapshots non modifiables à partir du site esclave, ils ne sont accessibles qu'en lecture.

Création de read only snapshots :

CREA TE SNAPSHOT nom_snapshot REFRESH FAST

STAR T with SysDate

NEXT SysDate+ 7

AS SELECT * FROM Employes@db_link;

Cette instruction crée un snapshot appelé nom_snapshot pour la table Employes avec un système de rafraîchissement rapide qui commence au moment courant et se reproduira chaque 7 jours.

> Les updateable snapshots

Les updateables snapshots ou snapshots de mise à jour peuvent être directement modifiés. Dans ce cas, les données mises à jour à leur niveau sont répliquées vers le site Master lors du processus de rafraîchissement.

Création de updateable snapshot

CREA TE SNAPSHOT nom_snapshot REFRESH FAST

START with SysDate

NEXT SysDate+ 7

FOR update query rewrite

AS SELECT * FROM Employes@db_link;

Deux types de snapshots peuvent également être considérés : simples et complexes. Un snapshot simple ne contient pas de clause distinct, group by, connect by, de jointure multitables ou d'opérations set.

III.2.B. RAFFRAICHISSEMENTS

III.2.B.a. Mode de rafraîchissements

On distingue trois principaux modes de rafraîchissement pour un snapshot :

> Rapide

Le mode rapide indiqué par la clause FAST permet de faire un rafraîchissement en tenant compte seulement des mises à jour effectuées sur le site Maître. Dans ce cas, un SNAPSHOT LOG doit être crée pour la table Maître afin de noter les différents changements subvenus qui seront répercutés sur le snaphot.

> Complet

Ici, à chaque rafraîchissement, toute la table est transférée. Ce mode est obligatoire pour les snapshots complexes et est indiqué par COMPLETE

> Forcé

Dans le mode FORCE, un rafraîchissement rapide est d'abords tenté ; s'il ne marche pas le rafraîchissement complet est effectué.

III.2.B.b. Temps de rafraîchissements

Le rafraîchissement peut se déclencher de plusieurs manières : > Sur demande : ON DEMAND

> Sur validation : ON COMMIT

> De façon périodique : START WITH sysdate NEXT sysdate+n

III.3. VUES MATERIALISEES

Une vue matérialisée est comme son nom l'indique, une vue réelle d'une ou de plusieurs tables. C'est-à-dire Oracle crée une représentation physique de la vue. Ce terme est aussi utilisé dans la réplication, comme cliché et possède toutes les spécifications citées plus haut pour les snapshots. Mais il est beaucoup plus souple et permet à l'optimiseur de requête de travailler de façon plus performante. Aussi, à l'avenir le concept de snapshot va disparaître et lui laisser la place.

Création d'une vue matérialisée :

CREA TE MA TERIALIZED VIE W nom_vue_m aterialisée REFRESH FAST

START WITH sysdate

NEXT sysdate+ 1

AS SELECT * from Employes@db_link

III.4. LA REPLICATION AVANCEE

Oracle utilise le concept de réplication avancée pour désigner une réplication qui se fait dans les deux sens entre deux ou plusieurs serveurs de bases de données. Elle est encore appelée réplication multi-maitre (Replication Multi Master). Dans une telle implémentation, il faut aussi définir un système de gestion de conflits afin de respecter la cohérence des données sur tout le système.

Oracle a mis en place tout un ensemble de concepts permettant de mettre sur pieds une réplication avancée appelée replication advanced tools dont nous parlerons à une prochaine occasion

IV. OPTIMISATION DES REQUETES REPARTIES

L'optimisation des requêtes distribuées est un outil par défaut d'Oracle. Son principe de fonctionnement est de réduire le volume des données transférées entre les sites, lorsqu'on récupère des données distantes.

Oracle utilise une méthode basée sur le calcul de coût pour trouver et générer la requête SQL qui extrait uniquement les données nécessaires des tables distantes. Les données subissent un premier traitement sur le site distant, puis le site distant envoie le résultat au site local (qui a lancé la requête) pour le traitement final. Les tables complètes ne sont donc pas transférées.

Pour l'optimisation des requêtes, Oracle utilise des « Collocated Inline Views », c'est à dire des vues de plusieurs tables distantes et « en lignes » (en direct) afin de forcer les restrictions sur les sites distants.

Oracle permet également, pour améliorer l'optimisation, de collecter des statistiques sur les différentes tables du système. Oracle peut ainsi faire une optimisation par calcul de coût par trois méthodes différentes :

· Réaliser des estimations sur des jeux de données pris au hasard

· Faire les calculs exacts

· Utiliser des méthodes statistiques définies par les utilisateurs. Oracle permet de régler l'optimisation en fonction des objectifs que l'on veut atteindre :

· Des débits importants (utiles par exemple pour des applications de type reporting, Business Intelligence).

· Un temps de réponse performant (utile pour toutes les applications utilisateurs pour lesquelles l'apparition des premières lignes est importante).

PARTIE III. LE CAS PRATIQUE DE LA SOCIETE

CALL IN OUT

I. PRESENTATION DE LA SOCIETE CALL IN OUT

CALL IN OUT est un centre d'appel, qui assure la mise en place d'un point d'entrée dédié à l'ensemble des contacts clients :

· Emission et réception d'appels

· Web

· Fax

· Chatting

· Mailing

· E-mailing

· SMS

· Etc.

La cellule Pan-Européan et Middle East accueille les clients dans leur langue d'origine.

CALL IN OUT couvre le spectre linguistique suivant :

· Français

· Anglais

· Néerlandais

· Allemand

· Espagnol

· Italien

· Portugais

· Arabe

La société est constitué de :

· Un centre de formation

· Un centre de qualité

· Un centre de saisie

· Des métiers

· Plateaux de production

La société est également divisée en deux établissements : > CALL IN OUT (la principale)

> LIGHT CLICK (la secondaire)

Les deux sont réparties sur les deux étages que comporte la société. Site web : www.callinout.com

II. ANALYSE DU BESOIN

II.1. FONCTIONNEMENT DE LA SOCIETE

La société CALL IN OUT reçoit des projets ou des campagnes de ses clients. Les différents projets qui peuvent lui être confiés sont par exemple :

· La vente d'un produit ou service par téléphone

· Le marketing par téléphone

· Des enquêtes d'opinions,

· Etc.

Le projet lorsqu'il est reçu, passe par plusieurs phases avant d'être lancé. En effet, il est d'abords modelé par les superviseurs de campagnes, ensuite informatisé par la cellule informatique afin d'avoir de meilleurs performances, puis validé par les superviseurs, et enfin attribué à des agents qui se chargerons des appels ou réceptions.

Lorsque le projet ou campagne est en production (lancée), tous les évènements le concernant (tous les appels, conversations, résultats, heures de production) sont enregistrées par des programmes informatiques sur des serveurs de base de données et de fichiers. Ces données servent plus tard à effectuer des statistiques, des contrôles, garder des traces, et à des exigences d'ordre commercial et juridique.

Les programmes informatiques qui sont utilisés pour la production proviennent conjointement d'internationaux producteurs de Solution pour

Centres d'appel comme VOCALCOM, AXTERIX et de la cellule informatique de l'entreprise qui dispose également d'un pôle de développement d'applications internes.

Dans la suite nous parlerons d'une campagne spéciale sur laquelle nous avons travaillé et dont pour des raisons de confidentialité nous appèlerons la campagne X.

II.2. PRESENTATION DE LA CAMPAGNE X

La campagne X est une campagne très rentable pour l'entreprise. Elle a été confiée par un client fidèle de la boîte et nécessite donc toute l'attention possible. Elle a pour but de vendre des services par téléphone aux différents usagers. A cette fin, la société lui a alloué d'énormes ressources tant humaines, matérielles, qu'informatiques. En effet, en plus du logiciel d'appel qui est utilisé, il a été développé en interne, une application qui se charge de la gérer de façon différente des autres campagnes. Il s'agit d'une application (vb6 -access) qui permet à chaque agent de noter sa vente après l'avoir effectuée. En fait le logiciel d'appel le fait aussi mais il y'a des paramètres et traitements qui n'y sont pas pris en compte. Aussi, vue la valeur de la campagne comme précisée plus haut, elle est effectuée aussi bien sur le site du haut (CALL IN OUT) que sur le site du bas (LIGHT CLICK). Elle est la seule dans ce cas.

II.3. SPECIFICATION DU BESOIN

Venons en à la problématique du sujet. En fait comme nous l'avons dit plus haut, après chaque vente, l'agent doit la saisir. Or il se trouve que les deux sites ne communiquent pas car ayant chacun son réseau local. Ainsi, afin de garder une cohérence des données, un seul site est utilisée pour la saisie de données : le site LIGH CLICK. Alors lorsqu'un agent du site du haut fait une vente, il est obligé de descendre d'un étage pour faire la saisie et remonter ensuite. Ce qui génère une perte de temps grandiose.

Aussi, l'application utilise la même base de données qu'une autre application interne qui se charge de faire les statistiques de production de chaque site. En fin de mois, pour le calcul de primes, cette base de données est utilisée. L'informaticien chargé des primes copie sur une clé les résultats de ventes du réseau de LIGHT CLICK et insère les résultats de la clé sur le site principal CALL IN OUT. C'est juste après ça qu'il peut faire le calcul de primes de chaque agent ; car un agent peut être à volonté muté d'un site à l'autre. A ce niveau donc aussi il y'a un problème d'utilisation de support intermédiaire. L'idéal serait que les deux bases de données communiquent directement sans avoir besoin de support intermédiaire ou de traitement particulier au niveau de l'application.

Ainsi, nous avons deux problèmes à résoudre :

· Le déplacement des téléopérateurs

· L'utilisation de clés pour faire communiquer les bases.

II.4. SOLUTION PROPOSEE

La solution adoptée pour palier à ces problèmes est la mise en place d'une base de données reparties sur les deux sites à travers internet, afin de les faire communiquer sans problèmes. Ainsi chaque site aura sa base de donnée indépendante et toute donnée enregistrée sur un site pourra être connu de l'autre sans aucun déplacement ou manipulation humaine.

III. CONCEPTION DE LA SOLUTION

Dans le but d'agir avec efficacité et rapidité, sans oublier concision et précision, nous avons pris une grande partie de notre temps pour la conception de la solution. Cette partie est présentée ci-après par des modèles du langage UML dans sa version 2.

III.1. DIAGRAMME DE CAS D'UTILISATION

Le diagramme de cas d'utilisations nous présente les principales fonctions ou cas d'utilisation du système, ainsi que les acteurs qui y interviennent.

III.1.A. LES CAS D'UTILISATION

Un cas d'utilisation est une fonctionnalité du système. Dans notre travail, nous en avons répertorié trois principales :

> Saisir données

Action de saisir les ventes effectuées dans le système

> Superviser

Action d'interroger le système pour savoir l'état des vantes

> Gérer comptes

Action de créer, supprimer ou modifier les comptes d'opérateurs. III.1.B. LES ACTEURS

Nous avons trois principaux acteurs :

> L'opérateur

C'est lui qui se charge d'effectuer les ventes

> Le superviseur

Il a pour rôle de contrôler l'activité des téléopérateurs

> L'administrateur

Il se charge de créer des comptes

Etant donné que certaines tâches peuvent être effectuées par tous les Utilisateurs, un utilisateur générique englobant tous les autres a été crée sous le nom de Utilisateur.

III.1.C. DIAGRAMME

Figure 16 : diagramme de cas d'utilisation

Les acteurs Administrateur, Opérateur, et Superviseur héritent de l'acteur Utilisateur.

III.2. DIAGRAMMES DE SEQUENCES

Les diagrammes de séquences permettent de détailler le processus d'exécution d'un cas d'utilisation. Nous en avons définis 3 pour les principaux cas d'utilisation que nous avons. Une classe est utilisée : la classe SYSTEM qui

Figure 17 : SD Saisir Données

représente l'un des deux sites de la société. Elle a dons deux objets : LC (LIGHT CLICK) et CIO (Call In Out).

III.2.A. DIAGRAMME DE SEQUENCE « SAISIR DONNEES»

III.2.B. DIAGRAMME DE SEQUENCE « SUPERVISER »

Figure 18 : SD Superviser

III.2.C. DIAGRAMME DE SEQUENCE « GERER

COMPTE »

Figure 19 : SD Gérer comptes

III.3. DIAGRAMME DE CLASSES

Le diagramme de classes représente la modélisation des données utilisée dans le système, avec les liens qui existent entre eux. L'application que nous avons trouvée sur place a une grande base de données de plusieurs tables. Nous allons nous intéresser seulement aux tables qui interviennent dans le mécanisme de répartition de la base de données et dont les noms suivent.

III.3.A. DIFFERENTES CLASSES OU TABLES

> OPERATEUR

Cette table contient les comptes de toutes les personnes autorisées à se connecter au système, principalement les téléopérateurs.

> DATACODE

Cette table contient les comptes et mots de passe des utilisateurs, ainsi que les temps de connexion.

> TELE

Cette table contient toutes les ventes effectuées par les téléopérateurs de la campagne X.

> RDV

Cette table contient toutes les statistiques de ventes pour toutes les campagnes du site.

> PRIMES

Elle contient les données relatives aux primes des utilisateurs

III.3.B. DIAGRAMME

Figure 20 : Diagramme de classes

IV. REPARTITION DE LA BASE DE DONNEES

IV.1. FRAGMENTATION ET LOCALISATION

Comme nous l'avons dit dans la première partie du document, la fragmentation et la localisation constituent la principale phase de la conception d'une base de données répartie. Dans notre cas, il est question de dire quelles sont les tables et données qui seront logées sur le site Call In Out (site du haut) et lesquelles seront sur le site LIGHT CLICK (site du bas). Pour cela, tout d'abords nous rappellerons les contraintes à respecter, puis nous donnerons l'architecture de répartition choisie.

Les contraintes à respecter pour la répartition sont les suivantes :

· Chaque site doit être indépendant et avoir ses propres données

· Chaque site doit pouvoir accéder aux données de l'autre

· Chaque opérateur doit pouvoir se connecter sur un site comme sur l'autre.

· Les données de la table RDV qui est très importante du fait qu'elle gère les ventes et permet de calculer les primes des opérateurs, doivent être régulièrement copiées sur le site Call in out , pour une meilleure sécurité.

· Les primes des opérateurs sont calculées sur le site Call In Out.

Face à ces contraintes, nous avons adopté l'architecture suivante :

· Chaque site aura toutes les tables sauf la table PRIME du système

· La table PRIME sera uniquement sur le site Call In Out !

· Certaines données seront répliquées d'un site à l'autre

IV.2. REPLICATION

La réplication nous permettra de transférer certaines données d'un site à l'autre selon la description ci-après :

· Tout d'abords, la gestion des opérateurs est contrôlée par le site LC. Tout nouvel enregistrement ou modification effectué sur un opérateur du site LC (le site Maitre), sera automatiquement propagé sur l'autre site ; c'est-à-dire un nouvel opérateur crée sur ce site, sera automatiquement crée sur l'autre site. Cette réplication concerne les tables OPERATEUR (comptes opérateurs) et DATACODE (mots de passe opérateurs)

· La table RDV du site LIGHT CLICK sera automatiquement répliquée sur le site Call In Out en fin de journée.

Les données qui ne seront pas répliquées pourront être consultées à distance au moyen de requêtes réparties.

V. IMPLEMENTATION

Dans cette nouvelle phase, il est question de réaliser la solution proprement dite. Toutes les indications de la conception seront prises en compte en veillant aussi bien sur à la bonne migration de l'ancien système au nouveau.

Aussi n'oublions pas de mentionner que les deux sites : CIO (Call In Out) et LC (LIGHT CLICK) seront accessibles à travers Internet.

V.1. INSTALLATION DE ORACLE ET CREATION DE LA BASE DE DONNEES

La première phase de l'implémentation a consisté à installer Oracle 10g R 1.5 sur les deux serveurs de l'entreprise.

Ensuite, nous avons crée la base de donnée BTELE sur chaque site, utilisant l'utilitaire Assistant de configuration de base de données, fourni avec ORACLE 10g.

V.2. MIGRATION DE LA BASE ACCESS A LA BASE ORACLE

Etant donné que la base était gérée par le SGBD ACCESS, il a fallu faire une migration de ACCESS vers ORACLE. Ce dernier fourni un utilitaire très efficace de manipulations de bases de données ACCESS, SQL SERVER et ORACLE, ainsi que de migration d'une plate forme à l'autre. Cet outil qui fait vaillamment concurrence à TOAD et pourtant gratuit se nomme SQL DEVELOPPER et à été notre principal outil de travail. La migration s'est faite en 6 principales phases :

· Le choix de la base ACCESS et celle de ORACLE

· L'extraction de la structure de la table ACCESS

· Le mappage des types des deux SGBD

· La génération du code ORACLE de création de ladite structure.

· La création de la structure dans ORACLE (tables, utilisateurs, procédures, triggers,etc)

· L'importation des données

La migration de données s'est bien effectuée, bien qu'ayant rencontré quelques difficultés à savoir :

· Certains champs avaient pour nom des mots réservés de ORACLE comme DATE par exemple. Ces champs ont été renommés automatiquement durant le processus de migration en y ajoutant à la fin le caractère `_'. Donc DATE a donné DATE_

· Le caractère ° n'était pas pris en charge et devait être remplacé avant la migration

· Etc.

A la fin de la migration, toute la base est désormais présente sur ORACLE l'utilisateur BTELE est crée.

V.3. CONFIGURATION DE ORACLE NET

Oracle Net a été configuré selon les critères définis dans la partie II, en utilisant l'outil netca (Oracle Net Configuration Assistant).

· Le processus d'écoute est le Listener avec comme port d'écoute le 5560, port par défaut.

· Les méthodes de résolutions de noms sont dans l'ordre : la
résolution par noms locaux de services, la méthode Easy Connect.

· Deux noms locaux de services ont été crées : BTELE_LC (représentant la base BTELE du site LIGHT CLICK) et BTELE_CIO pour le site Call In Out.

Aussi, pour que les processus d'écoutes soient accessibles à travers Internet, il a fallut :

· Créer des exceptions pour le port 5560 dans les firewalls

· Faire la redirection des ports au niveau des routeurs

V.4. CREATION DES DATA LINKS

Afin d'accéder grâce à une requête à une base à partir d'une autre, nous avons crée les liens de base de données ou data links. Les requètes suivants présentent leurs codes de créations.

Sur le site CIO :

Create data base link dbl_lc

Connect to current user

Using btele_lc

Sur le site LC

Create data base link dbl_lc Connect to current user Using btele_lc

V.5. MISE EN PLACE DE LA REPLICATION

La réplication nous permettra de rendre les tables liées aux opérateurs (table Opérateur et table datacode), identiques, afin qu'un opérateur puisse se connecter indépendamment sur un site ou sur un autre. Elle nous permettra également de répliquer les statistiques de ventes régulièrement sur le site principal.

V.5.A. REPLICATION DES DONNEES DES TABLES

OPERATEURS ET DATACODE

Pour la réplication de ces deux tables, nous avons utilisé des vues matérialisées Le principe est le suivant : chaque fois qu'il y'a une modification sur la table operateur ou datacode (insertion, mise à jour ou suppression) sur le site maître, la modification est directement transmise sur le site esclave. Ainsi pas besoin de déplacement pour la mise à jour. Pour la gestion des opérateurs, le site LC considéré comme maître (dans ce cas) est le seul a faire des changements qui sont donc ensuite répercutés sur le site CIO.

Nous avons utilisé à cet effet, des vues matérialisées simples, avec rafraîchissement rapide et synchrone, sur validation. Les instructions suivantes décrivent les vues matérialisées définies pour les tables operateur et datacode.

V.5.A.a. Table operateur

> Première étape, création du fichier log de la vue materialisée (car le mode de rafraîchissement est rapide) sur le site LC

CREATE MATERIALIZED VIE W LOG ON OPERATEUR WITH PRIMAR Y KEY ;

 

> Deuxième étape, définition de la vue matérialisée proprement dite sur le site CIO

CREA TE MA TERIALIZED VIEW OPERATEUR REFRESH FAST

WITH PRIMARY KEY

ON COMMIT

as SELECT * FROM OPERATEUR@dbl_lc;

 

V.5.A.b. Table datacode

> Première étape, création du fichier log de la vue materialisée (car le mode de rafraîchissement est rapide) sur le site LC

CREATE MA TERIALIZED VIE W LOG ON DA TA CODE WITH PRIMAR Y KEY ;

 

> Deuxième étape, définition de la vue matérialisée proprement dite sur le site CIO

CREA TE MA TERIALIZED VIE W DA TA CODE REFRESH FAST

WITH PRIMARY KEY

ON COMMIT

as SELECT * FROM DATACODE@dbl_lc;

 

V.5.B. REPLICATION DE LA TABLE RDV

Comme nous l'avons dit plus haut, la table RDV très importante pour l'entreprise, doit être répliquée régulièrement, sur le site CIO sur lequel les prîmes mensuelles sont calculées. Pour cela, nous avons utilisé le concept de JOB.

Un Job Oracle est une procédure spéciale programmée pour s'exécuter au cours d'un temps défini et selon une régularité aussi définie. C'est l'équivalent de tâche planifiée dans Windows et crontab sur UNIX.

Ainsi, dans notre cas, nous allons définir un job qui copie grâce à l'instruction « insert select » (joue le même rôle que copy) tous les enregistrements journaliers effectués sur la table RD V de LC sur la table RD V de CIO, chaque jour à 23h00. En voici le code :

DECLARE jobno number;

begin

dbmsjob.submit(jobno, 'insert into btele.rdv@dbl _cio select * from btele.rdv where date_ = to_date(sysdate);Çtrunc(sysdate) +1+ 23/24, 'trunc(sysdate) + 1 + 23/24');

commit ;

dbmsjob. run(jobno);

end;

 

Le package utilisé pour cela est dbmsjob appartenant à l'utilisateur SYS. Les trois procédures les plus utilisées pour ce package sont :

> Dbmsjob.submit(Entier numerojob, chaine

code_a_excecuter, date date_prochaine_execution, chaine temps_interval)

Cette procedure permet de definer le job !

> Dbms_run(entier numerojob)

Celle-ci permet de declencher un job.

Rapport de fin de cycle Ingénierie Informatique

> Dbms_remove(entier numerojob)

Cette dernière permet de retirer un job programmé.

V.5.C. CREATION DES VUES

Dans un environnement reparti, il est important d'avoir des vues générales sur certaines tables ayant subi des fragmentations horizontales. Cela facilite la consultation desdites données. Dans notre cas, on a crée une vue des 2 tables tele des deux sites.

> Sur le site CIO

CREATE VIEW VIE W_TELE

AS SELECT * FROM TELE@dbl_lc
UNION SELECT * FROM TELE

 

> Sur le site LC

CREATE VIEW VIE W_TELE

AS SELECT * FROM TELE

UNION SELECT * FROM TELE@dbl_cio

 

Ainsi, chacune de ses vues nous donne l'ensemble des ventes des deux

sites.

V.6. MODIFICATION DE L'APPLICATION DE L'ENTREPRISE

L'architecture répartie est donc mise en place. La communication serveur à serveur est assurée par les data base links et les différents mécanismes de réplication. Il ne reste plus qu'à implémenter la communication client-serveur. Cela revient à :

· Définir les outils ou API qui serviront à l'application de l'entreprise de se connecter au serveur. La société Call In Out utilise un programme VB 6 pour gérer la campagne X avec la méthode d'accès aux données ADODB. Ainsi, le driver à utiliser doit servir de middleware entre Visual Basic et Oracle. Il s'agit de :

« Microsoft ODBC for Oracle », fournit par Microsoft et présente par défaut dans les machines Windows. Ce driver permet d'indiquer la chaîne de connexion de l'objet ADODB.connection qui permettra de se connecter à la base de données, comme indiqué ci-dessous :

.ConnectionString = "UID= " & uid & ";PWD=" & pwd &

";DRI VER = {Microsoft ODBC For Oracle}; "SER VER=" & dBase & ";"

· Modifier certaines requêtes : les requêtes d'insertion, modification, suppression des tables operateur et datacode ; on y ajoute l'instruction `commit ;' pour la validation du rafraîchissement des vues matérialisées.

· Ajouter des options pour faire de la supervision locale, à distance, ou générale du système, en utilisant les vues créées et les data base links.

· Renommer les noms d'objets et d'attributs changés au cours de la migration de MS Access vers oracle.

V.7. MISE EN SERVICE

La mise en service a consisté à installer le client oracle windows sur tous les postes ou s'exécutent l'application. Pour cela on a utilisé l'outil 10g_win32_client.zip fourni par oracle et téléchargeable sur son site à l'adresse :

http://www.oracle.com/technology/software/products/database/oracle10g/index. html. , après s'être enregistré. Il contient les composants ORACLE NET, ODBC, OLEDB, ODP.NET, NET MANAGER, SQLPlus ,etc.

Le programme client est indispensable pour la connexion à la base de données. La capture d'écran suivante nous présente une étape de son installation :

Figure 21 : Client Oracle 10 g

Après l'installation de Oracle Client, il faut faire la configuration de Oracle Net grâce à Oracle Net Configuration Assistant, et au cours de laquelle on précise pour chaque poste le service (BTELE_LC ou BTLE_CIO) auquel il va se connecter.

Et le tour est joué !!

CONCLUSION

Ainsi s'achève notre travail à la société Call In Out ! En résumé, il a été question pour nous d'implémenter un système de bases de données reparties Oracle sur les deux sites que possède l'entreprise, en dotant chacun d'une base de données indépendante mais qui communique avec l'autre. Les concepts de Oracle Net, vues matérialisées, lien de base de données, requêtes réparties, jobs ont été au centre de la mise en place de cette architecture à la fois client-serveur et serveur-serveur.

Comme intérêt pour l'entreprise, elle se passera désormais avec joie de déplacements inutiles qui lui faisaient perdre beaucoup de temps, et donc d'argent. Aussi grâce aux réplications mises en place, le système a gagné en fiabilité, car au cas ou surviendraient des accidents sur un site, les données ne seraient perdues.

En ce qui nous concerne, le travail a été pour nous à la fois, un sujet de recherche, et d'affirmation dans le monde professionnel. En effet cette double dimension nous a permis de joindre l'utile à l'agréable en scrutant aussi bien les profondeurs théoriques que pratiques de ce vaste et passionnant domaine qu'est celui des bases de données reparties sous Oracle. C'est pourquoi comme il est de coutume dans ce beau pays d'accueil qu'est le Maroc, nous nous permettons de dire « Hamdoullah ! » Comprenez « Gloire à Dieu ! »./.

ANNEXES

ANNEXE I : TABLE DES ILLUSTRATIONS

Figure 1: Architecture Client-Serveur 12

Figure 2:Architecture serveur-serveur 13

Figure 3 Architecture générale 13

Figure 4 : Graphe d'attentes 18

Figure 5 : Validation à deux phases 19

Tableau 1 :Tableau des complexités des opérations 22

Figure 6 : Schéma général de l`optimisation 24

Figure 7 : Architecture Monoposte 29

Figure 8 : Architecture Client - Serveur A 29

Figure 9 : Architecture Client - Serveur B 30

Figure 10 : Architecture Serveur- Serveur 30

Figure 11 : netca 33

Figure 12: netmgr 33

Figure 13: listener.ora 34

Figure 14: sqlnet.ora 34

Figure 15 : tnsnames.ora 34

Figure 16 : diagramme de cas d'utilisation 48

Figure 17 : SD Saisir Données 49

Figure 18 : SD Superviser 50

Figure 19 : SD Gérer comptes 51

Figure 20 : Diagramme de classes 53

Figure 21 : Client Oracle 10 g 63

ANNEXE 2: RtIFtRENCES

Bibliographie

> Sql pour oracle livre, Application avec java,php et xml de Christian Soutou Edition Eyrolles

> Oracle 10 g Administration livre de Razvan Bizoi Edition Eyrolles > Oracle, partage et protection des données, livre de Frank Giraud, collection Epsilon

> Bases de données, livre de Georges Gardarin, Edition Eyrolles

Webographie

> www.oracle.com

> www.dbasupport.com/oracle

> www.dba-oracle.com

> download.oracle.com

> http://rangiroa.essi.fr/cours/systeme-information/01-bd-

reparties .pdf

> http://ceria.dauphine.fr/Rim/Teaching fichiers/BDR/Lab BDR 06. pdf

> http://libd.isnetne.ch/cours/DistributionReplication/Ferrara/BDII m od II.htm

ANNEXE 3 : QUELQUES VUES UTILISÉES

PAR L'ADMINISTRATION ORACLE

NOM

DESCRIPTION

DICT

Contient toutes les vues statiques du dictionnaire de données

DBA CONSTRAINTS _

Définition des contraintes de toutes les tables

DBA DB LINKS

_ _

Liens de bases de données de la base

DBA JOBS

_

Tous les jobs de la base

DBA JOBS RUNNING

_ _

Tous les jobs en exécution

DBA MVIEWS

_

Toutes les vues matérialisées de la

base

DBA MVIEW LOGS

_ _

Tous les fichiers logs de vue

matérialisées

DBA OBJECTS _

Tous les objects

DBA PROCEDURES _

Toutes les procédures

DBA PROFILES

_

Tous les profiles

DBA ROLES _

Tous les rôles de la base

DBA ROLE PRIVS

_ _

Les privilèges affectés aux rôles de la

base

DBA_SEQUENCES

Description de toutes les séquences de la base

DBA SNAPSHOTS

_

Description de tous les snapshots de la base

DBA_SNAPSHOT_LOGS

Tous les fichiers logs des snapshots de la base

DBA_SYNONYMS

Tous les synonymes

DBA_SYS_PRIVS

Tous les privilèges systèmes attribués aux utilisateurs

DBA _TABLES

Toutes les tables de la base

DBA_TABLESPACES

Tous les tablespaces de la base

DBA_TAB_PRIVS

Tous les privilèges attribués aux

utilisateurs

DBA_TRIGGERS

Tous les triggers

DBA_USERS

Tous les utilisateurs de la base

DBA_VIEWS

Toutes les vues de la base






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Des chercheurs qui cherchent on en trouve, des chercheurs qui trouvent, on en cherche !"   Charles de Gaulle