Vous êtes sur la page 1sur 28

1 PLAN CHAPITRE 2: ARCHITECTURE ET MEMOIRE RELATIONNELLE

Partie 1 : Architecture et fonctions des SGBD


1. INTRODUCTION : Rappels , objectifs principaux des systmes relationnels 2. ARCHITECTURE DE QUELQUES S.G.B.D : Systme ORACLE, Systme R 3. FONCTIONS DES S.G.B.D Cration/chargement Les chemins daccs Les catalogues de la base

Partie 2 : La mmoire relationnelle


1 INTRODUCTION 2 RAPPELS SUR LES METHODES CLASSIQUES DE STOCJAGE 5-2.1 Le Fichier comme un tas de donnes 5-2.2 Le hachage ou adressage associatif 5-2.3 Fichiers indexs 3 INDEX EN B-ARBRE 5-3.1 Dfinitions 5-3.2 Algorithme dinsertion 5-3.3 Algorithme de suppression 4 HACHAGE VIRTUEL 5-4.1 Introduction 5-4.2 hachage virtuel HV1

Partie 1 1. INTRODUCTION
Les objectifs principaux des SGBD sont : Indpendance des donnes par rapport aux supports physiques : Cet aspect est pris en compte grce : - la notion de relation qui dfinit la structure de donnes - la structure dimplmentation dune relation est la table sur laquelle seront dfinis des chemins daccs. Indpendance logique Le SGBD doit autoriser plusieurs visions dutilisateurs sur la base : ceci peut tre possible grce la notion de vues. Evolution de la BD Les donnes dans une base de donnes peuvent voluer suivant deux aspects : - modification de leur tat, et ceci implique la possibilit dinsrer, supprimer des occurrences de relations, ou de modifier des valeurs de champs de relations, - modification de la structure de la base de donnes par modification de la structure dune relation (ajout ou suppression dattributs), ou par ajout de nouvelles relations. Cohrence de donnes : intgrit des donnes Les donnes dune base de donnes doivent vrifier des invariants appels contraintes dintgrit. Partageabilit des donnes et scurit de fonctionnement La possibilit dautoriser plusieurs utilisateurs accder en mme temps la base de donnes implique la possibilit de grer les conflits daccs et dcriture. Par ailleurs une base de donnes doit tre scurise cest--dire doit tre protge contre les pannes et les accs mal intentionns. Tout ceci est possible grce la notion de transaction. Ainsi, ces objectifs impliquent des fonctionnalits bien prcises au SGBD : - Cration et chargement des relations et occurrences de base - Dfinitions de catalogues permettant la gestion de ces relations - Drivation de nouvelles relations (vues) - Stockage et accs aux donnes par la dfinition dindex - Dfinition de transaction et de contraintes dintgrit. - Gestion des droits daccs et de la confidentialit

2. ARCHITECTURE DE SYSTEMES RELATIONNELS


2.1. LE SGBD ORACLE ORACLE a t dit par la socit Oracle Corporation, implante aux USA RedWood Shores en Californie. Depuis, les produits ORACLE nont cess dvoluer avec lvolution des technologies de linformation et de la communication. Aujourdhui ORACLE est un SGBD rparti, qui sest tourn vers le Web. Lenvironnement ORACLE est un ensemble de produits autour de sa base de donnes :

3 ORACLE Server, gestionnaire de la base de donnes : il contrle toutes les actions au niveau de la BD comme laccs utilisateur et la scurit, stoskage et intgrit des donnes. Le langage SQL et lextension PL/SQL (langage comprenant des commandes procdurales supportant la gestion des erreurs et dclaration de variables) ORACLE Designer est un ensemble de produits intgrs dans un rfrentiel unique dentreprise pour la conception des applications. ORACLE Developer : outils de dveloppement dapplications client/serveur ou Internet. ORACLE Discoverer : outil dinterrogation pour des utilisateurs qui ont besoin daccder par eux-mmes aux donnes, Datawarehouse, Datamart. Designer Client Developer Discoverer

Serveur

SQL*Plus PL/SQL

SQL

ORACLE SERVER

Environnement des Produits ORACLE

ORACLE est aujourdhui considr comme tant lun des meilleurs SGBD dans le monde, ce qui nous a men vouloir comprendre le fonctionnement dun tel systme. La version actuelle d ORACLE est : Oracle9i. Les composants principaux de larchitecture dORACLE sont les suivants : Les process Les structures mmoires Les fichiers

Background Process

Structures mmoires : SGA


Shared Pool

DB Buffer Cache

Redo Log Buffer

Process Serveur

Process utilisateurs

Fichiers

Architecture gnrale dORACLE

La System Global Area

La SGA reprsente lensemble des buffers ncessaires la gestion des transactions. La SGA est galement appele Shared Global Area, elle est partage entre plusieurs utilisateurs. La SGA est une zone mmoire alloue au dmarrage dune instance, elle est restitue la fermeture de cette instance. Les donnes de la SGA sont partages par lensemble des utilisateurs connects un moment donn ; elles sont divises en plusieurs types de buffers : Data base Buffer Cache: Il contient les blocs de donnes, les blocs dindex, des blocs contenant les RollBack Segments (ils enregistrent les actions dune transaction pour la reprise encas de panne) et des blocs pour la gestion du systme, les plus rcemment utiliss; il peut contenir des donnes modifies qui nont pas encore t enregistres sur disque. Redo Log Buffer: Il contient les redo entries, ensemble des modifications ralises sur la base ; ces redo entries sont mmorises sur un fichier redo log, qui pourra tre utilis en cas de panne. Shared Pool ou zone de partage des ordres SQL: cette zone est utilise pour mmoriser, analyser et traiter les ordres SQL soumis par les utilisateurs. Elle peut rutiliser les ordres SQL dj excuts.

Les Process
Les Oracle Process sont diviss en trois catgories : les process utilisateurs, les Process Server et les background Process. Les Background Process (Process dtachs) prennent en charge les mcanismes internes dOracle. Une instance Oracle contient au minimum quatre background process : DBWR, LGWR, SMON et PMON. DBWR : DataBase Writer : Son rle est de mettre jour les fichiers de donnes. Les blocs de donnes modifis en SGA sont stocks dans la base de donnes. LGWR : LoG Writer : Ce process crit squentiellement dans le fichier Redo Log courant des enregistrements Redo Log de la SGA. SMON : System MONitor : Il vrifie si la base a t arrte proprement. Si ce nest pas le cas, il rcupre dans les fichiers redo log les enregistrements valids, qui nont pas encore t crits dans la base par Oracle, pour les insrer. PMON : Process MONitor : Il administre les diffrents process dOracle. Il est charg de la libration des ressources occupes, par exemple dans le cas o un client teint sa machine sans se dconnecter. Les autres process sont les suivants : CKPT : Checkpoint ARCH : Archiver RECO : Recover LCKn : LOCK SNPn : Snapshot Refresh Snnn : Shared server Dnnn : Dispatcher Pnnn : Parallel Query Les process utilsateurs Un process utilisateur est dmarr lorsquun utilisateur excute un programme applicatif. Le process utilisateur : Excute loutil ou lapplication et est considr comme tant le client. En guise dexemple citons : SQL*plus, Forms, Il transmet le SQL au process serveur et en reoit les rsultats.

Process Server : ils prennent en charge les demandes des utilisateurs. Ils sont responsables de la communication entre la SGA et le Process User.

6 Les taches du process serveur Analyser et excuter les commandes SQL Lire les blocs de donnes partir du disque dans les zones partages de la SGA Renvoyer les rsultats des commandes SQL au Process utilisateur Linstance dORACLE :

Cest la combinaison de la SGA et des process dtachs de la base de donnes. Quand une instance est dmarre, les zones mmoire de la SGA sont alloues ert les process dtachs sont lancs. Ne pas confondre une BD ORACLE et une instance dORACLE : linstance est dabord dmarre puis elle monte la BD (ouverture des fichiers). Les process serveurs et utilisateurs ne font pas partie de linstance dORACLE. MCANISME : Lorsquun utilisateur demande une donne, son processus va la chercher en SGA, si elle ny est pas, le processus va la chercher dans les fichiers de donnes. Toutes les transactions sont enregistres dans les fichiers Redo Log, en cas de problme la reprise aprs panne est assure par le process SMON au dmarrage dune nouvelle instance.

La base de donnes ORACLE est compose de fichiers de donnes et de fichiers redo log tous tants rfrencs dans un ou plusieurs fichiers de contrle. Structure physique Fichiers de donnes Dfinition Contiennent toutes les donnes de la base : les tables, index, procdures, fonctions, ; ainsi que le dictionnaire de donnes (cr lors de la cration de la base de donnes) . Gardent des enregistrements de toutes les modifications effectues sur la base de donnes dans un but de restauration Conservent la dfinition des structures physiques et les tats de la Base de donnes: nom de la base, nom et chemin daccs des fichiers de donnes et Redo Log, date et heure de cration de la base.

La base de donnes ORACLE

Fichiers Redo Log Fichiers de contrle

Structure interne dune base de donnes ORACLE :

7
Tablespace DATA

Tablespace SYSTEM

Tablespace INDEX

Table
ROLLBACK SEGMENT

Table

Index Index Index

Index
DBfile

Table

Index
DBfiles

LES TABLESPACES : Les donnes dune base Oracle sont mmorises dans une ou plusieurs units logiques appeles tablespaces et physiquement dans des fichiers associs ces tablespaces. Chaque base contient obligatoirement un tablespace SYSTEM, celui-ci contient les tables du dictionnaire de donnes, les procdures, les fonctions, les packages, les triggers et le rollback segment SYSTEM. Les autres tablespaces contiennent les segments de la base de donnes (tables, index, ). LES ROLLBACK SEGMENTS Une base de donnes contient un ou plusieurs ROLLBACK SEGMENTS ; un rollback segment enregistre les actions dune transaction qui peuvent tre annules en cas dincident. Le rollback segment SYSTEM est cr lors de la cration de la base dans le tablespace SYSTEM ; il nest utilis que pour les transactions portant sur les donnes du dictionnaire. Un ou plusieurs autres rollback segments doivent exister pour les transactions portant sur des donnes utilisateur.

2.2. LE S.G.B.D RELATIONNEL : SYSTEM R Caractristiques : constructeur IBM, langage SQL sous systme dexploitation OS

Usager 1

Usager n

Programme en PL/1 ou Cobol

Langage SQL

RDS : Relationnel Data System Gestion de catalogues Optimisation de requtes Mcanismes dautorisation Contraintes dintgrit

Mta Base (Description relations de base et relations systmes

DBSS : Data Base Storage System Gestion espace physique Gestion des index Gestion des transactions Accs concurrents Journalisation et reprise aprs pannes

BD

En ralit la structure de System R est relativement complexe, et le produit comporte un grand nombre de composants, que nous pouvons regrouper en deux grands sous-systmes : le sous-systme de donnes relationnel qui gre globalement toutes les interactions avec les utilisateurs, et certaines fonctions systmes comme loptimisation des requtes ou le contrle des autorisations. Cest ce sous-systme qui prpare lexcution de la requte. Nous verrons ci-aprs le droulement dune requte. Le sous-systme de stockage qui peut tre vu comme un S.G.B.D de bas niveau. Il comporte une interface interne qui fournit des oprateurs daccs un tuple la fois aux relations de base. Les appels aux fonctions du DBSS doivent spcifier explicitement les segments et index utiliser. Le DBSS gre : Les allocations en mmoire secondaire

9 VSAM). La mmoire tampon Le contrle de transactions (concurrence et reprise aprs pannes) Le maintien automatique des index (la mthode daccs supporte est

RDS : Fonction prparation des programmes dapplications pour lexcution : 2.3. EXCUTION DUNE REQUTE De manire gnrale, une requte est analyse en suivant les tapes suivantes : - analyse syntaxique de la question - optimisation - gnration dun plan dexcution de la requte Il existe deux manires dinterroger une base de donnes : En mode interactif : lutilisateur interroge directement la base de donnes par des requtes en langage SQL, directement interprtables. Un plan dexcution de la requte est gnr en passant dabord par les phases danalyse syntaxique et doptimisation . En mode programm : Les ordres SQL sont incorpors un programme dapplication crit en langage de programmation PL/1, C, COBOL etc. appels langages htes. Dans ce cas la dmarche ncessite une approche de prcompilation. Source Module Le prcompilateur est un processeur qui regroupe les instructions SQL du programme . dapplication dans un module de requtes* de la BD, et les remplace dans le programme initial $ select par des appels (CALLs) du langage employe un superviseur dexcution qui surveille les from hte programmes SQL. (voir schma suivant) . Prcompilateur Analyse Syntaxique Module source modifi Call M Optimisation Gnration de code

M: Module daccs ou plan dexcution (code machine)

Compilateur

Module objet

Module excutable Module daccs DBSS : Gestion de donnes mmoire et zone tampon Supervision de lexcution

Editeur de liens

Module excutable Mmoire principale

10

Le gestionnaire de donnes mmoire gre la base de donnes mmoire, alors que le gestionnaire des tampons gre les transferts physique des pages entre mmoire secondaire et mmoire principale. Etapes de prcompilation et compilation : - fonctions du prcompilateur : analyser le programme source, remplacement des ordres SQL par des instructions dappels. Gnration dun module de requte de base de donnes qui passe par linterprteur SQL pour tre excut. - Compilation du programme avec dition de liens ayant pour rsultat un module excutable. - Lexcution seffectue par le sous-systme de stockage : le module excutable sexcute normalement, lorsque le premier call est atteint, le superviseur prend la main et excute le module daccs en invoquant le gestionnaire de donnes et le gestionnaire des tampons. Analyse syntaxique et optimisation : - Analyse syntaxique : Exemple : soit la base de donnes suivante : Fournisseur (nf, nomf, codf, villef) Produit (np, dsignation, villep) Four-prod (nf, np, qte) Et soit la requte : Select nomf, codf From Fournisseur, Four-Prod Where Fournisseur.nf = Four-Prod.nf and VilleF = Tunis and np = P1 La requte est vrifie syntaxiquement puis elle est transforme en arbre syntaxique o les oprateurs sont les nuds et les feuilles sont les oprandes. Lanalyse syntaxique est suivie par une analyse smantique : en effet dans le cas o la syntaxe est correcte, le noyau consulte son dictionnaire pour identifier toutes les informations indispensables lexcution dune requte. Exemples : Analyse syntaxique Select * fournisseur Erreur : mot-cl FROPM absent lemplacement prvu Analyse smantique Select nom From fournisseur Erreur : nom de colonne invalide

11 Project

Nomf, codf = np P1

Select Select

Join

VilleF

Tunis Fournisseur = Four-Prod

Nf Nf Une squence SQL peut donner lieu diffrentes interprtations qui peuvent conduire diffrents temps dexploitation. Ltape doptimisation a lieu qui consiste en : - grce aux diffrents catalogues qui dcrivent la base (la mta base), le systme peut faire la correspondance entre les noms symboliques (noms de relations, dattributs) et les objets effectivement grs par le systme (analyse smantique). - Le systme vrifie que lusager qui a mis la requte va manipuler les objets quil est effectivement autoris manipuler (gestion des droits daccs et de la confidentialit). - Un ordre peut faire rfrence une relation de base ou une vue. La vue est dfinie (on le verra plus loin) par rfrence des relations de base. Il convient alors de remplacer la rfrence la vue par une rfrence aux relations de base (phase de substitution). - Dterminer les chemins daccs disponibles et la meilleure stratgie daccs aux donnes. Pour cela, le systme dispose dans ces catalogues des index dfinis sur chaque relation mais aussi dinformations statistiques sur les relations manipuler. - Rsultat de ltape : arbre optimis partir duquel il y a excution. Linterprteur SQL fournit le rsultat de la requte en excutant les oprateurs contenus dans larborescence laide de procdures associes ces diffrents oprateurs.

12 Project

Nomf, codf Project Nf Nf, Nomf, Codf

join = Np Nf Select Select Four-Prod Np Tunis = P1 Project

Fournisseur Villef

On remarquera quune des rgles est de faire remonter dans larbre les oprateurs qui prennent du temps dexcution (comme la jointure) et faire descendre dans larbre les oprateurs rducteurs (projection, restriction).

3. Fonctions des SGBD relationnels


3.1. CRATION / MODIFICATION La structure de donnes de base dans les systmes relationnels est la reprsentation tabulaire de la relation. La forme gnrale dune requte SQL permettant la cration dune relation a la syntaxe suivante :

CREATE TABLE <nom table> (<dfinition dattribut [,dfinition dattribut]) O dfinition dattribut = (<nom champ>(<type>[NONULL])) Les principaux types de donnes prdfinis sont : CHAR (n) n prcise la longueur maximum, par dfaut 254 DATE format mm/jj/aa DECIMAL(x,y) x nombre total de chiffres et y dtermine la place de la virgule en partant de la droite FLOAT (x,y) INTEGER LOGICAL Exemple : CREATE TABLE Fournisseur ( NF (CHAR (5), NONULL), NOMF (CHAR(30)), CODEF (INTEGER), VILLEF (CHAR (20)))

13 La modification de schma peut seffectuer grce la possibilit de rajouter des attributs ou supprimer des tables 1. Ajout/ modification de champs ALTER TABLE <nom table> ou bien EXPAND TABLE <nom table> ADD FIELD(<dfinition dattribut [,dfinition dattribut]) O dfinition dattribut = (<nom champ>(<type>[NONULL])) Exemple : ALTER TABLE Fournisseur ou EXPAND TABLE Fournisseur ADD FIELD (ADRESSE (CHAR (40))) ALTER TABLE MODIFY <nomchamp><type> Exemple : ALTER TABLE Fournisseur MODIFY nomf(CHAR(40)) Remarque : supprimer. on peut ajouter ou modifier des colonnes dans une table mais pas en

2. Suppression dune table DROP <nom table> Remarque : la structure, toutes les donnes et tous les index sont supprimes. Seul le crateur de la table peut la supprimer. La mise jour de relations peut seffectuer grce linsertion, suppression ou modification de valeurs de champs

Insertion directe dun tuple dans une table : INSERT INTO <nom table> [(nom champ[,nom champ]] VALUES (<valeur1>,<valeur2>,) Remarques : Cette syntaxe ninsre quune seule ligne la fois. Si le nom des colonnes nest pas prcis dans INSERT alors les valeurs doivent tre fournies dans lordre par dfaut des colonnes dans la table. Exemple : INSERT INTO Piece VALUES ( P5, Vis, laiton, 5, alger) Insertion dans une relation des tuples copis dune autre table et rsultant dune valuation : (insertion de plusieurs lignes). INSERT INTO table [(nom champ[,nom champ]] : bloc de qualification

14 Exemple : INSERT INTO FOUR-T (numfour, ville) SELECT numfour, ville FROM fournisseur WHERE ville = Tunis Attention ! le nombre de colonnes de la clause INSERT doit correspondre celui de la sousinterrogation. Suppression de tuples dans une relation DELETE FROM <nom table> [WHERE <prdicat>] Linstruction efface les tuples complets qui satisfont le prdicat. Remarque : lordre DELETE supprime les lignes dune table mais ne libre pas lespace de stockage. Pour le librer utiliser linstruction TRUNCATE TABLE DELETE FROM Fournisseur WHERE NF=10 (I ligne supprime) Il est possible de supprimer des lignes en faisant rfrence une autre table. Pour cela, il faut utiliser une sous-interrogation. Exemple : suppression des fournisseurs ayant fourni des quantits <10 (suppression de plusieurs lignes). DELETE FROM fournisseur WHERE NF IN ( SELECT NF FROM four-piece WHERE QTE<10)

Il est possible dans ORACLE de remplacer IN par =

Mise--jour dun ou plusieurs tuples dune table UPDATE <nom table> SET <nom champ1>=<nouvelle valeur1>[<nom champ2>=<nouvelle valeur2>]* WHERE <condition> La clause WHERE permet de modifier une ou plusieurs lignes spcifiques. Si elle est omise toutes les lignes seront modifies. Exemples : UPDATE Piece SET Materiau = aluminium WHERE NP = P5 Une ligne modifie Modifier la ville de pieces de couleur rouge lidentique du fournisseur F5

15 UPDATE piece SET ville = (SELECT ville FROM fournisseur WHERE numf = F5) WHERE couleur = rouge

plusieurs lignes modifies

3.2. LES CHEMINS DACCS Les chemins daccs sont dfinis sur les diffrentes relations stockes afin de faciliter le travail du SGBD pour loptimisation des requtes. Un chemin daccs dfini sur une relation est appel INDEX. Un index est un arrangement des tuples dune relation en fonction des valeurs dun constituant ou dun groupe de constituants. Nous distinguons deux types dindex : index primaire et index secondaire. Lindex primaire est dfini sur la cl de la relation : une valeur de la cl, la fonction index ramnera un tuple. Lindex primaire fournit un accs direct aux tuples dune relation, cest-dire que lordre des tuples sur la cl concide avec lordre physique. Lindex secondaire peut tre dfini sur des constituants non cl : une valeur de lattribut de lindex, celui-ci ramnera un ou plusieurs tuples. Lindex secondaire est un rarrangement logique des tuples dune relation en fonction des valeurs dun attribut ou groupe dattributs. CREATE [UNIQUE] INDEX <nom index> ON <nom relation> (nom attribut [ORDRE] [,nom attribut [ORDRE] ]) Loption unique permet dune part de spcifier quun attribut ou groupe dattributs est cl, dautre part de fournir un chemin daccs direct aux tuples ayant une valeur de cl donne. Lordre est soit ASC (ascendant) ou DESC (descendant) : ASC est pris par dfaut. Exemple : CREATE UNIQUE INDEX XF ON Fournisseur (NF) CREATE INDEX XFV on Fournisseur (VilleF) CREATE UNIQUE INDEX XP ON Piece (NP) CREATE UNIQUE INDEX XFP on Fourpiece (NF, NP) Il est possible de supprimer des index. Ceci peut tre fait grce linstruction de suppression : DROP INDEX <nom index> Remarque : La cration et la suppression dindex est dynamique ( fait tout moment). Grce cela, le SGBD assure lindpendance des programmes vis--vis des chemins daccs (indpendance physique). En effet, les requtes utilisateurs ne se proccupent pas de lordre de stockage des informations gr par le systme. 3.3.
LES CATALOGUES

Une base de donnes contient des relations de base, des chemins daccs et des vues (relations virtuelles : voir plus loin). Le SGBD, pour fonctionner et assurer ses objectifs doit pouvoir retrouver les diffrentes informations sur ces catgories dinformation. Pour cela, il les stocke dans des catalogues en respectant le modle relationnel, cest--dire que ces catalogues sont eux-mmes des relations. Les principaux catalogues sont :

16

Relation RELATION : chacun de ses tuples est un descripteur de relations qui peuvent tre de trois types : base, systme, virtuelle ; nous pouvons trouver les informations suivantes : Type Ident relation relation (nom interne) systme 1 Base 10 Taille tuple (nbre octets) 100 110 Cardina lit (nombre tuples) 50 1000 Degr (nombre attribut s) 09 04 Date Version Adresse cration 1er attribut 25/03/02 1 25/03/02 1 @ @

Nom relation (nom externe) Relation Fourniss eur

Relation ATTRIBUT : chacun de ses tuples dcrit un attribut dune relation Identificateur attribut 11 12 Identificateur Type relation attribut 02 02 Integer Char longueur 06 10 Position attribut dans la relation 01 02

Nom attribut (nom externe) numf nomf

Relation INDEX : chaque tuple dcrit une relation index cre sur les relations de base ou systme Identification relation 02 02 Type (primaire secondaire) P S , Liste index Numf villef arguments

Nom index XFOUR XSFOUR

Relation VUE : chaque tuple est un descripteur de vue Requte qui dfinit la vue Select * from fournisseur where villef =Tunis

Identificateur(s) de ou des Identificateur de la vue relations sur la(es)quelle(s) est dfinie la vue 02 100

Relation AUTORISATION : chaque tuple dcrit un usager avec les droits qui lui sont accords sur chaque relation (lecture / criture/ modification ) Remarques : SGBD.

Il peut exister dautres catalogues en fonction des SGBD Les structures donnes ci-avant peuvent tre diffrentes en fonction des

17 Par ailleurs lorsque les catalogues sont eux-mmes trop grands, il est possible de dfinir des index sur les catalogues. Par exemple index sur RELATION de type primaire avec argument nom de relation, ou encore index sur ATTRIBUT de type primaire sur les arguments (ident-rel, num-att), et de type secondaire sur largument ident-rel. 3.4. LES SCHMAS EXTERNES Une vue est une table logique (virtuelle) base sur une table ou une autre vue. Une vue est stocke dans un catalogue. Une vue peut tre simple : definie sur une table sans fonction et sans group by Une vue peut tre complexe : dfinie sur plusieurs tables avec ventuellement fonctions et Group By. A quoi sert une vue ? Elle limite laccs une BD Elle facilite la cration de requtes complexes Elle garantit lindpendance des donnes, en effet une vue peut tre utilise pour extraire des donnes de plusieurs tables. Elle prsente les mmes donnes sous diffrentes formes. Syntaxe : CREATE VIEW<nom_vue> [ (liste dattributs)] AS <sous-requte> La sous-requte peut contenir une syntaxe SELECT complexe Cration dune vue complexe : noms des dpartements ainsi que les salaires minimum, maximum, et moyens par dpartement. CREATE VIEW Sal-dept (nom, salmin,salmax, salmoy) AS SELECT d.nomd, MIN(e.sal), MAX(e.sal), AVG(e.sal) FROM employe e, dpartement d WHERE e.numd = d.numd GROUP BY d.nomd Il est possible de supprimer une vue par linstruction DROP VIEW. La suppression dune vue nentrane pas la perte de donnes.

Partie 2 : La mmoire relationnelle 1- Introduction


Nous nous intressons dans ce chapitre la couche du SGBD qui accde la BD, cest-dire au systme de stockage appel la mmoire relationnelle. Cette couche prsente quatre fonctions principales : 1. Prsenter une vision relationnelle des fichiers qui constituent la BD. Nous rappelons quun fichier est un ensemble denregistrements composs euxmmes de champs. En premire approximation, une relation peut tre vue comme un fichier, et chaque tuple correspond un enregistrement. 2. Grer la mmoire centrale (MC) : les relations sont dcoupes et stockes par page de taille fixe en mmoire secondaire (MS), lesquelles sont amenes en MC

18 la demande, grce des mcanismes de mmoire virtuelle. Lespace de stockage en MS est logiquement divis en segments. Un segment est un espace virtuel de stockage qui se compose physiquement de plusieurs pages. Nous rappelons que la page est lunit de transfert entre MC et MS. Un fichier est stock dans un seul segment et peut stendre donc, sur plusieurs pages. 3. Grer les diffrentes relations de la BD, cest--dire les relations de base, les index appels encore relations inverses, les vues, les diffrentes relations catalogues permettant de les dcrire. 4. Etablir des mthodes daccs : nous distinguons les mthodes classiques (les mthodes indexes, le hachage etc.) et des mthodes plus particulires savoir le hachage virtuel et les arbres balancs B-arbre. Les oprations que nous pouvons effectuer sur le fichier sont : Insrer un enregistrement Supprimer un enregistrement Modifier un enregistrement.

2- Rappels sur les mthodes classiques de stockage


2-1 LE FICHIER COMME UN TAS DE DONNES Dans cette technique, les enregistrements sont placs la queue leu leu dans des pages successives. Un enregistrement nest pas cheval sur deux pages. Le seul accs aux donnes dans le cas de la recherche dun enregistrement est un balayage squentiel des tuples. Cette opration est donc trs coteuse. Linsertion dun nouvel enregistrement seffectue dans la dernire page. Si cette dernire est sature, alors une nouvelle page est alloue et lenregistrement est insr. La suppression est assure logiquement grce un indicateur de suppression. Cette organisation a t implmente par dfaut dans le systme INGRES. 2-2 LE HACHAGE OU ADRESSAGE ASSOCIATIF Principe : disposer dune fonction de hachage h(c ) qui permet de calculer un numro de bloc ou paquet, contenant un ensemble de pages, partir dune cl. La recherche de lenregistrement seffectue ensuite squentiellement dans le bloc. Exemple de fichier P1 P2 P3 . H(c) 1 2 3 . . . n

P4

P5

Table des blocs P6 P7 P8

19

Explication : La table des blocs va contenir n+1 pointeurs vers n+1 blocs. Chaque pointeur est ladresse de la premire page du bloc. Un bloc peut contenir une plusieurs pages chanes entre elles. La fonction de hachage permet de retrouver partir de la cl le numro du bloc qui va contenir lenregistrement. Remarque : la table des blocs peut tre rsidente en MC si elle est petite. Dans le cas contraire (dfinie sur plusieurs pages), il faudra la ramener de la MS par partie (par page) en appliquant la fonction de hachage. Algorithme de recherche - entre : valeur de cl c - Calcul h ( c ) : numro de bloc - Consultation de la table des blocs : rcupration de la premire page du bloc - Recherche dans cette page lenregistrement ayant pour cl c. Algorithme de modification : - rechercher lenregistrement laide de lalgorithme prcdent - raliser la modification Algorithme dinsertion : - rechercher si le nouvel enregistrement nexiste pas. - Si non : si le bloc nest pas satur alors insrer le nouvel enregistrement, sinon, allouer une nouvelle page, insrer le nouvel enregistrement et chaner la nouvelle page aux autres. Le bloc est satur signifie quil va y avoir dbordement. Cest la gestion des dbordements qui va dgrader les performances dans les techniques de hachage. Algorithme de suppression : - rechercher lenregistrement supprimer et - soit librer la place quoccupait cet enregistrement en mettant jour le chanage, - soit mettre un indicateur de suppression dans len-tte de lenregistrement supprimer. 2-3 FICHIERS INDEXS Principe : un fichier index contient un ensemble de couples (c,p) o c est la cl du premier enregistrement de la page p. Index dense : il contient toutes les cls du fichier Index non dense : on cre des enregistrements index pour certains enregistrements du fichier : dans ce cas le fichier est tri et divis en blocs. A chaque bloc lui est associe une entre dans lindex. (c,p) = < plus grande cl du bloc, adresse relative du bloc>

20 Exemple Soit le fichier suivant : Index @1 Bloc1 @2 1 @3 8 10 @4 12 @5 @6 @7 @8 13 20 21 30 Bloc2 dense 1 8 10 12


@4

13
@5

20
@6

21
@7

30
@8

@1 @2 @3

Index non dense 30 @01 @02 Cls Adresses de blocs

Algorithme de recherche : - accs lindex, - recherche dans lindex de la cl denregistrement dsir, - rcupration dans lindex de ladresse relative de lenregistrement ( si index dense), ou de ladresse relative du bloc qui le contient (si index non dense), - Conversion de ladresse relative en adresse relle, - Accs lenregistrement ou au bloc, - Transfert de lenregistrement dans la zone du programme utilisateur. Algorithme dinsertion : - accs lindex, - dtermination de lemplacement de la page qui doit contenir lenregistrement, puis dtermination de la place de lenregistrement dans la page. - Si la place existe (page non sature), alors insrer lenregistrement en dplaant les autres si ncessaire. - Si la page est pleine, il existe diffrentes stratgies, entre autres, aller la page suivante ou allouer une nouvelle page, tout en mettant jour lindex. Algorithme de suppression : - appliquer lalgorithme de recherche pour trouver lenregistrement, - soit supprimer rellement lenregistrement en mettant jour lindex, - soit faire une suppression logique. - Cas particuliers : si lenregistrement supprimer est le premier de lindex, alors une modification de lindex est ncessaire. Lorsquune page devient compltement vide, il faut la rendre au systme et mettre jour lindex. Algorithme de modification : - appliquer lalgorithme de recherche pour trouver lenregistrement modifier,

21 raliser la modification. Cas particulier : si la modification porte sur la cl, alors la traiter comme une suppression, suivie dune insertion.

Un index tant lui-mme un fichier, il ny a aucune raison, si celui-ci est volumineux, de dfinir un autre niveau dindex et ainsi de suite : nous obtenons alors un index hirarchis plusieurs niveaux ( exemple la mthode squentielle indexe ISAM dans laquelle il pouvait y avoir deux ou trois niveaux dindex : index de cylindres, index de pistes, et ventuellement index maitre ).

3- Index en b-arbre
Les fichiers squentiels indexs ont pour dsavantage de diminuer leurs performances lorsque leur taille grandit. Souvent dans de telles organisations la rorganisation tait ncessaire de manire assez frquente (pour rcuprer les places libres, pour allouer de nouvelles places etc). Une technique efficace dans le cas de nouvelle insertion ou suppression existe et est largement applique dans le cas des BD, il s'agit des index en B-arbre ou encore appel arbre balanc qui sont des cas particuliers dindex hirarchis plusieurs niveaux. Un B-arbre est un arbre quilibr dans lequel les chemins qui conduisent de la racine une feuille quelconque sont tous de mme longueur. Dfinition : Soient d et p des nombres entiers positifs : un B-arbre dordre d (nombre de descendants directs dun nud interne) et de profondeur p est dfini comme une arborescence ayant les proprits suivantes : 1. Chaque nud a au plus d fils, cest--dire d pointeurs. 2. Chaque nud except la racine et les feuilles a au moins [d/2] fils (plus petit entier non infrieur d/2, ou encore larrondi suprieur de d/2). 3. La racine a au moins 2 fils. 4. Toutes les feuilles apparaissent au mme niveau : (p), 5. Un nud ayant k fils (k<= d) cest--dire k pointeurs, contient k-1 cls. Les donnes (tuples) sont ranges dans les feuilles ou nuds terminaux. Les nuds non terminaux ne contiennent que des cls et des pointeurs vers dautres nuds de larborescence. Ainsi un B-arbre a deux composantes : 1. Un B-index constitu par lensemble des nuds non feuilles appel le B+ arbre. 2. Une relation de base reprsente par les feuilles de larborescence. Les types daccs fournis par un B-index Nous pouvons avoir deux types dindex : - Index principal : lordre physique concide avec lordre logique : il est construit au chargement initial de la relation et est dfini sur une cl. - Index secondaire : ordre physique est diffrent de lordre logique dans la plupart des cas et peut tre dfini sur des attributs non cls Exemple :

22

P1

D=3 P=3
1114 2212 P4 2018 2100 P9 2100 2200 ---P10 2300 P11 2300 2308 2360 2212 2220 ----

Index
P2 1100 P5 P7 1001 1010 --P6 1100 1112 ---P3

Fichier

1114 2006 2007 P8

2018 2019 ---

Par souci de clart, seul le champ cl est reprsent dans les pages du fichier (pages P5 P11) Algorithme de recherche : soit la recherche dun tuple de cl c - lire la racine et rechercher quelle valeur de cl recouvre la valeur c. - lire la valeur de pointeur associ. - Aller la page pointe par le pointeur slectionn. - Rechercher quelle valeur de cl recouvre c, lire la valeur de pointeur associ et aller la page pointe. Rpter lopration prcdente jusqu trouver la page feuille contenant la cl. Exemple : le chemin daccs ncessaire la recherche du tuple de cl 2200 est le suivant : P1 : 1114<2200<2212 : aller la page P3 ; P3 : 2200>2100 : aller la page P9 ; P9 : recherche squentielle du tuple de cl 2200. Algorithme dinsertion : soit insrer un tuple de cl c - rechercher la page feuille du B-arbre qui doit contenir ce tuple en appliquant lalgorithme de recherche : soit Pi cette page ; deux possibilits. - si Pi est non sature alors insertion dans lordre des cls. - sinon il faut allouer une nouvelle page P. On rpartit les tuples de Pi avec le nouveau tuple en deux groupes quilibrs qui seront stocks respectivement sur Pi et P. - Soit P0 la page qui pointait sur Pi ; deux possibilits : - Soit P0 est non sature, cest--dire quelle na pas les d-1 cls alors insertion dun pointeur pour P avec la valeur minimum de cl de P. - Sinon, il faut allouer une nouvelle page pour lindex tout en contrlant le pointage du niveau antcdent. Dans le cas o

23 plusieurs anctres de P0 sont pleins alors linsertion aura pour effet de modifier larbre sur plusieurs niveaux et ainsi tre dans la possibilit de modifier la racine qui deviendra un nud intermdiaire, et qui sera remplace par une nouvelle racine avec 2 fils. La profondeur de larbre sera alors modifie. On parle alors dinsertion avec clatement de nuds et propagation de lclatement jusqu la racine. Exemple : insrer le tuple de cl 2000 Rechercher la page qui doit contenir le tuple de cl 2000 : soit P7 P7 est sature : allocation dune nouvelle page P12 : Rpartition des cls : 1114 et 2000 dans P7, 2006 et 2007 dans P12. Insertion dans P3 de la cl 2006 et un pointeur sur la nouvelle page P12, mais P3 est sature (elle a le maximum de fils). Allocation dune nouvelle page P13 : Pointeurs P7 et P12 dans P3, Pointeurs P8 et P9 dans P13. Insrer dans P1 une nouvelle cl 2018 et un pointeur pour P13, mais P1 est sature. Allocation dune nouvelle page P14 : pointeurs P2 et P3 dans P1, pointeurs P13 et P4 dans P14. Crer une nouvelle racine P15 contenant la cl 2018 pointant sur P1 et P14. Le B-arbre initial devient :
P15 2018

D=3 P=4
P14 2212

P1

1114

P2

1100

P3

2006

P
2100 P5 P6 1001 1010 --1100 1112 ---P7 P12 1114 2000 P9 2006 2007 2100 2200 ---2018 2019 ---

P4 2300

P11 2300 2308 2360 P10 2212 2220 ----

P8

Algorithme de suppression : soit supprimer le tuple de cl c - appliquer lalgorithme de recherche de la cl c : soit Pi la page qui contient c - Si Pi a un nombre denregistrement >= [d/2] aprs suppression alors raliser la suppression. Il faut cependant vrifier que la cl du tuple supprim ne se retrouve pas comme cl dans lindex du B-arbre (vrifier tous les niveaux de lindex). Dans ce cas, il faut alors remonter dans la hirarchie afin de remplacer cette cl par la cl du tuple suivant. - Sinon (cest--dire que Pi a moins de [d/2] fils aprs suppression) : -On examine la page Pj immdiatement gauche ou droite de Pi et ayant le mme pre.

24 -Si Pj a plus de [d/2] enregistrements, on redistribue les enregistrements de Pi et Pj de manire quilibre tout en conservant lordre. On rpercute la modification sur les anctres de Pi puisque les cls sont modifies. -Sinon on ralise une suppression avec fusion. On regroupe Pi et Pj en un seul bloc et on modifie les anctres de Pi. Cette fusion peut tre rcursive. Exemple : Soit supprimer dans le B-arbre prcdent le tuple de cl 2018 La procdure de recherche nous donne le chemin daccs : P15, P14, P13, P8. La suppression du tuple de cl 2018 implique deux situations : Le tuple de cl 2018 est le premier enregistrement de la page P8. Il faut propager vers le haut de larbre que maintenant la plus petite valeur de la cl dans P8 est 2019. - Par ailleurs, lorsque 2018 est supprim de P8, cette page ne respecte plus les caractristiques du B-arbre (>= [d/2]). P8 na pas de frre gauche mais il a un frre droit P9 qui contient 2 tuples. On fusionne alors P8 et P9. Mais P13 na plus quun seul fils, ce qui implique la fusion de P13 avec son frre P4. Alors P14 naura plus quun seul fils, donc la fusion se propage P14 et son frre P1. La racine P15 se retrouve avec un seul fils (P14 et P1 fusionns), elle est supprime. Nous obtenons le B-arbre suivant : D=3 P=3
2019 P13 et P4 2006 P7 1001 1010 --P6 1100 1112 ---1114 2000 P12 P8 et P9 2019 2100 2200 2006 2007 --P10 2212 2300 P11 2300 2308 2360 2212 2220 ----

P14 et P1 1114 P2 1100 P5 P3

25

4- Le hachage virtuel
4-1INTRODUCTION Nous avons vu en tudiant les fichiers alatoires, que la mthode de hachage tait performante tant que le fichier nvoluait pas. La dtrioration des performances daccs est due laccumulation des dbordements. Souvent la prvision des dbordements impliquait des taux doccupation de fichier assez faible. Lide du hachage virtuel est de prvoir une solution dans le cas dinsertion lorsque le taux doccupation du fichier est voisin de 1. 4-2 HACHAGE VIRTUEL1 : HV1 La mthode de hachage virtuel 1 est applique des fichiers ayant des taux de remplissage tout fait usuel (voisin de 1), lorsque de nouvelles insertions posent problme. La solution consiste lorsquil y a dbordement modifier la fonction de hachage initiale. Principe : il consiste clater le paquet satur en deux paquets grce la nouvelle fonction de hachage, et rpartir les enregistrements. La fonction de hachage sur laquelle a t dvelopp le principe de HV1 est la division. Soit la fonction initiale de hashcoding H0 , soit c une cl et N le nombre de paquets. H0 : c m [0, N[ R(c,N) = reste de la division de c par N La nouvelle fonction de hachage utiliser est : H1 : c m [0, 2N[ R(c, 2N) Exemple : Fichier ltat initial : N=100 : H0 (c) = R(c,100)

800 3900 1800 700 14600 0

22901 34601 1201 601 1701 1

52753 2453 253 353 53 53

30999 45199 5499 34199 2090 99

Insertion de 23750 : H0 (23753) = 53 : dbordement du paquet 53, alors application de la nouvelle fonction de hashcoding H1 . H1 (23753) = R(23753,200) = 153, donc clatement du paquet 53 en deux paquets 53 et 153. Le fichier devient :

26 800 3900 1800 700 1460 0 0

22901 34601 1201 601 1701 1

2453 253 53 53

30999 45199 5499 34199 2090 99 Fichier = 200 paquets

23753 52753 353 153 199

Ainsi, un nouvel enregistrement r aura soit la mme adresse, soit une nouvelle adresse H0(c)+N ou encore H1 (c) = m est telle que H0 (c ) = m-N. Mathmatiquement il a t prouv que lorsquon utilise une pareille fonction de hachage alors : 1. Si y enregistrements partagent la mme adresse m avec H0, alors en moyenne y/2 changeraient dadresse en appliquant H1. 2. Soit b le nombre maximal denregistrements du paquet, alors si y est voisin de b , il est trs peu probable que H1 attribue m ou m+N plus de b enregistrements. Ces implications nous permettent daffirmer que la recherche dun enregistrement se fera au maximum en 2 accs : (paquet m et paquet m+N). Rgles de fonctionnement de HV1 1. Le fichier est cre avec H = H0 2. H est inchang jusqu ce quune collision se produise et que le taux de remplissage dpasse lusuel. 3. Ds la premire collision, alors les actions suivantes sont excutes : La mmoire est alloue pour les paquets N, N+1, , 2N-1 Une table de bits B(0 , N-1) est cre avec B(n) = 0 quelquesoit n. Si m0 est ladresse de la collision, alors B(m0) =1 H = H1(c) si H0(c) = m0 H = H0(c) sinon Chaque enregistrement de cl c tel que H0(c) = m0 est rinsr ladresse H1(c) soit m0+N. Dans lexemple prcdent la table de bits est la suivante : 00 01 1 53 0 0 99

CONCLUSION Une srie de tests utilisant HV1 a aboutit la conclusion suivante : Un fichier HV1 peut subir un grand nombre dinsertions sans altrer les performances. En gnral, un enregistrement sur deux est trouv en un accs. Au pire un enregistrement est trouv en deux accs en moyenne ( la table de bits est rsidente en MC).

27

28