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
  

précédent sommaire suivant

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

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).

précédent sommaire suivant






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








"Il faut répondre au mal par la rectitude, au bien par le bien."   Confucius