Vous êtes sur la page 1sur 14

COURS DE

BASE DE DONNEES
AVANCEES

Par M. Brou,
Enseignant à l’université Félix Houphouët Boigny
de Cocody à l’UFR de Mathématique et
informatique (UFRMI)
Chapitre I

IMPLEMENTATION D’UN SGBD

I/ LES FICHIERS DE LA BASE DE DONNEES

II/ L’OPTIMISATION DES REQUÊTES

III/ UNE AUTRE TECHNIQUE D’OPTIMISATION, LES FORMES NORMALES

IV/ LA GESTION DES TRANSACTIONS

V/ LA RESISTANCE AUX PANNES


I. LES FICHIERS DE LA BASE DE DONNEES

1- Présentation
Tous les grands SGBD, organisent eux même l’enregistrement des données sur les mémoires
auxiliaires (disque dur). En général ils réservent de très gros fichiers du système d’exploitation qu’ils
gèrent eux même pour allouer de la place aux tables, vues tab/ index et autre objet manipulé.
Deux avantages certains de cette solution sont :
- L’amélioration des performances grâces à un accès disques optimisé - Une plus grande potabilité
(independance par rapport au système d’exploitation)
2- (Ecriture des données) Fichiers de BD
3- Processus d’écriture dans les fichiers
Un seul processus (Data Base Writer) à la charge d’enregistrer dans les fichiers de la BD, les infos
déposées dans les tampons (buffers) par les différents processus serveur.
4- Les fichiers LOG
Parallèlement à l’enregistrement des données, les processus serveurs enregistrent toutes les actions
effectuées sur les tables de la base dans les fichiers indep des fichiers de la base appelés fichier log.

A l’installation d’un SGBD, deux grands groupes de fichiers sont créés :

- Les fichiers du SGBD (programme exécutables, fichiers de configuration, …)


- Les fichiers de la BD (fichier de configuration, fichier de données)
Les fichiers executables, une fois en mémoire, deviennent des processus qui permettent d’écrire dans
les fichiers de données, dans les fichiers journaux, de surveiller le fonctionnement des autres
processus.
Les fichiers de données sont chargés dans le buffer des BD à la demande.
Fig
Architecture
Oracle et mysql

les fichiers de BD se fait par l’intermédiaire des tampons (Buffer)

Les fichiers log sont les fichiers de journalisation qui enregistrent toute l’activité de la BD.

L’architecture de PostgreSQL
Post master (securité)
Pg writter (ecrire dans les fichiers de BD)
Cisloger (processus ou fichiers journaux)
II. L’OPTIMISATION DES REQUÊTES
1. Rappel sur le traitement d’une requête
Les étapes de traitement des requêtes sont :

- Analyse de la syntaxe de transfert et de la sémantique


- Contrôle des droits d’accès et contrôles d’intégrité

Produit Fournisseur Select *


From Article
Where NoArticle = 20;

Categorie

Fig. extrait de la dase de données Combiodb

Erreur syntaxique

Select NoProduit, libelle, Prix


From Produits
Where Prix > Avg(Prix) ;

Fournisseurs Produits
1 Yao Koumassi _ 1521 Savon BF 500 2
2 Sylla Marcory 1 1600 Cahier 100p 300 10
3 Kouassi Zone 4 2 2100 OMO 100g 100 1
4 Aly Treichville 1
Erreur : violation de contrainte d’intégrité référentielle
Insert into Produits (1600, ‘cahier 100p’, 300, 10)

Rappels– Quelquels contraintes d’intégrités


 Clé primaire (primary key)
 La contrainte de clé étrangère (foreign key)
 Contrainte d’unicité (unique)
 Contrainte de valeur acceptable (check)
- Optimisation de la requête
Choix du meilleur chemin

- Exécution de la requête :

Elle utilise la mémoire, l’accès disque, le processeur et ceux-ci permettent de présenter le coût de la
requête

Après avoir analysé plusieurs plan de SGBD choisit toujours la requête de coût le plus faible.
2. Techniques d’optimisations

Rappel des opérateurs de l’algèbre relationnelle

Selection - П Projection - |X| Jointure

Arbre algébrique
C’est un graphe qui donne l’utilisation des opérations de l’algèbre relationnel dans le cadre de
l’exécution d’une requête
Exemple :
Ecrire une requête qui affiche le libellé, la catégorie, le prix pour le produit dont le prix est supérieur à
300 (voir figure 2).
Categorie
Produit

Categorie_Id numProdt
LibelleCat LibellePrdt
Prix
#Id_Fournisseur
#Categorie_Id
Graphe de navigation des tables

Select LibellePrdt, LebelleCat, Prix


From Categorie C, Produit P
Where C. Categorie_Id = P.Categorie_Id And Prix>300

Réalisation de l’arbre algébrique Thales

Arbre de recherche optimisé respectant les


Arbre de recherche biaisé heuristiques de ULLMANN
Le langage SQL est non-procédural, c’est-à-dire qu’on ne décrit pas comment obtenir le résultat dans
la syntaxe. L’optimiseur du SGBD choisit le meilleur plan d’exécution en terme de coût (pourcentage
de mémoire, pourcentage de calcul du processeur, nombre d’accès disque). Dans la pratique, il est
mieux de commencer par les opérations de sélection et de projection avant les jointures pour réduire le
nombre de données à traiter.

Cf les travaux de Jeffrey Ullmann sur l’optiimisation des requetes

3. Autres techniques d’optimisation

a) Index

Un index est un objet informatique qui contient des clés d’un index d’une table et qui permet
d’exécuter rapidement une requête en accédant directement à une ou plusieurs lignes de la table.
L’index permet d’accélérer une recherche.

T-Articles
Row_Id NoArticle Libelle Categorie Prix CodeFourn
4516H 1516B Savon BF HYGIENE 500 01
60FH 1616H Lait NIDO DEJ 1800 02

T-Index : CREATE INDEX <NOM_INDEX> ON TABLE (COLONNE)

IND-Prix

rowid prix
4516H 500
66FH 1800

Pour retrouver les informations le moteur SQL parcourt la table des index en retenant les Row_Id
respectant le prédicat spécifié sur la colonne indexée (ici prix = 500)

SELECT NoArticle, Libelle FROM T-Articles WHERE Prix = 500 ;

Un accès séquentiel sera fait à la table T-Articles pour sélectionner les enregistrements (ou tuples)
correspondant au Row_Id Ces techniques d’optimisation supérieur mises en œuvre différenciant les
types d’index :

 Les arbres (B-arbre ou B-Tree)

Les données de la table indexée sont disposées comme un arbre binaire

4 10 10

1 2 3 6 7 9 17 22 26
B+
(Rajout de liste chaînée)

 Un tableau de bit associé au Row_Id


Les index bitmap sont beaucoup utilisés dans les systèmes décisionnels
Exemple

RowId M F
4566H 1 0 Select NoEploye, Nom
1021H 1 0 From employe
4451F 0 1 Where sexe = ‘F’;
61AAC 1 0

Consultation du dictionnaire Mysql server concernant les indexes

use information_schema;
SELECT DISTINCT
TABLE_NAME,
INDEX_NAME
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'your_schema';

+------------+------------+
| TABLE_NAME | INDEX_NAME |
+------------+------------+
| categories | PRIMARY    |
| clients    | PRIMARY    |
| commandes  | PRIMARY    |
| contenir   | PRIMARY    |
| produits   | PRIMARY    |
+------------+------------+
LES FORMES NORMALES

(Voir cours de BD ing1)

III. LA GESTION DES TRANSACTIONS

1. Concept de transaction

Une transaction est une séquence d’opérations exécutées par un programme, elle est délimitée par :
- Un début de transaction
En SQL le début d’une transaction est implicite)
- Une fin de transaction qui est explicite
On utilise ici COMMIT pour confirmer et ROLLBACK pour annuler. Pour écrire une transaction
en phase d’analyse, on utilise un pseudo-code.

Exemple
Debut Transaction:
Lire (Solde_compte1, S1);
S1:= S1 – 100;
Ecrire (S1, Solde_compte1);
Si
S1<0 Annuler Transaction,
Sinon
Lire (Solde_compte2 ;
S2 := S2 + 100;
Ecrire (S2, Solde_compte2) ;
Confirmer Transaction ;
Finsi ;

Atomicité d’une transaction

Une transaction doit être traitée comme une seule opération, c’est-à-dire que le SGBD doit s’assurer
que toutes les actions de la transaction ou bien qu’aucune soit exécutée(s)

Exemple
Begin Transaction;
Insert … Actions exécutées
Delete …
… Si panne
Insert
Delete Actions non exécutées
Commit

Si l’exécution d’une transaction est interrompue par une panne quelconque (panne interne, panne
externe) le SGBD doit:
- Soit compléter la transaction en exécutant les actions restantes
- Soit défaire les actions qui avaient déjà été exécutées avant la panne

Cohérence d’une base de données

Une BD est dite dans un état cohérent si les valeurs contenues dans la base vérifient toutes les
contraintes d’intégrité définies sur celle ci.

Gestion des transactions concurrentes

Deux transactions sont concurrentes si elles accèdent en même temps aux mêmes données. Les
problèmes qui peuvent subvenir en cas d’accès concurrent pour des mises à jour sur la BD sont :
- La perte de mise à jour
- Lecture impropre
- Lecture non reproductive
Diverses techniques sont mises en œuvre par les SGBD pour réaliser un verrouillage temporaire
permettant à une transaction de s’exécuter seule entièrement. On a le verrou exclusif (pour
suppression et mise à jour) le verrou partagé(pour des processus de lecture).

IV. LA RESISTANCE AUX PANNES

1. Les sauvegardes

Les SGBD offrent des outils et des mécanismes automatiques pour reparer les dommages créés par les
pannes

Quelques outils internes du SGBD


- Les fichiers journaux
Toutes les actions faites sur le SGBD sont enregistrés dans ces fichiers journaux.
- Système Monitor
Il surveille le SGBD en surveillant les exécutions de celui-ci.

En plus de ces outils le SGBD doit faire régulièrement des sauvegardes (sauvegarde à froid, pas en
temps réel), la technique d’archivage automatique (sauvegarde automatique)

NB : L’archivage automatique a tendance à ralentir la BD, mais constitue l’assurance contre de trop
grandes pertes de données

cf archivelog (paramètre oracle pour la sauvegarde automatique)

2. Les types de pannes

Selon l’origine on peut les classer en panne interne et en panne externe (voir paragraphe précédent)
3. La reprise après incident

Le SGBD peut, dans certains cas, lui-même, restaurer la BD à partir des fichiers journaux. Si les
fichiers de la BD sont endommagés le DBA doit recharger la dernière sauvegarde.

Les fichiers de données oracle ( select * from DBA_DATA_FILES;)

/opt/oracle/oradata/XE/users01.dbf
/opt/oracle/oradata/XE/undotbs01.dbf
/opt/oracle/oradata/XE/system01.dbf
/opt/oracle/oradata/XE/sysaux01.dbf
Chapitre II 

ARCHITECTURE CLIENT/SERVEUR

INTRODUCTION

I/ DECOUPAGE D’UNE APPLICATION

II/ DIALOGUE ENTRE LE CLIENT ET LE SERVEUR

INTRODUCTION

Système de communication

Terminaux
Ordinateur central 100%
Dans cette architecture, l’ordinateur central est bloquant, il n’y a pas d’autonomie des terminaux (0%
traitement, 100% affichage).

Pourquoi ne pas décentraliser les traitements?

La solution c’est le client/serveur dont les principes généraux sont:

- Des postes de travail multifonction. Ils peuvent se connecter à plusieurs serveurs.

- Les traitements peuvent être répartis entre serveur et client

Réseau

Client
Serveur Execution de certains des
Régulation des traitements traitements
Le client/serveur dans une entreprise

I. DECOUPAGE D’UNE APPLICATION

Toute application peut être découpée selon les 3 niveaux :

- L’interface avec l’utilisateur


Concerne le système de disposition des éléments graphique (bouton, label, zone de saisie , grille …)
- Les traitements
Concerne les algorithmes et les requêtes SQL de manipulation des données ( package, module,
fonction , procédure...)
- Les données
Concerne le contenu de la BD que l’on consulte pour les manipulations et les mises à jour. (les tables ,
les vues)

Exemple : Le modèle MVC


 Le Modèle (pour les données) : il fait le lien entre l’application et la BD
 La Vue (pour l’interface utilisateur) : elle contient l’ensemble des fenêtres de l’application.
 Le Contrôleur (pour le traitement des requêtes de l’utilisateur) : c’est lui qui, selon la requête de
l’utilisateur, va chercher les données (chez le Modèle), remplie la vue correspondante et l’affiche à
l’utilisateur.

II. DIALOGUE ENTRE LE CLIENT ET LE SERVEUR

L’objectif du dialogue entre le client et le serveur est de permettre l’échange de la demande et le


résultat de cette demande. Cette communication s’effectue à travers le réseau et s’appuie sur le
dialogue interprocessus IPC (Inter Process Communication). Il contient l’API et le FAP.

COUCHE FONCTION EXEMPLE


API Interface de programmation
Protocole de communication
FAP - Connexion
- Format de données
TRANSPORT Protocole de transport TCP - IP
Méthode d’accès au média Protocole d’accès au média Ethernet

TAF :
Rechercher des exemples d’API pour les différents types d’architecture client-serveur 2/3 et
3/3.TRAVAUX DE RECHERCHE PERSONNEL
T.A.F. 1 :
En utilisant les concepts du client/serveur réaliser un programme de connexion à une BD à l’aide de
l’un des langages suivants : PHP, C#, Visual basic.net, Java ou WinDev ; avec le SGBD MySQL ou
oracle XE

1. Fonctionnalité à implémenter :
 Création d’un enregistrement
 Recherche d’un enregistrement
 Affichage d’un ou plusieurs enregistrements
 Modification

2. Contenu du rapport
 Présentation du langage
 Présentation du SGBD
 L’API utilisé pour la connexion
 Présentation de l’architecture (les composants, les connecteurs, …)

3. Architecture : client/serveur 2/3

T.A.F. 2 :
Le même travail en utilisant cette fois-ci :

1. Le logiciel COMBIO
 Faire la migration entière du logiciel COMBIO

2. architectures client/serveur :
 Le logiciel doit être réalisé en 2/3
Ensuite, il faut faire sa migration entière vers l’architecture 3/3

Vous aimerez peut-être aussi