Академический Документы
Профессиональный Документы
Культура Документы
Examen probatoire du cycle ingnieur C.N.A.M. Filire : Systme de conduite Prsent par Christophe CARPENA
JURY
Prsident : Membres : M. Ranchin M. Marc Nanard (Professeur principal) Mme Maguelonne Teisseire
Remerciements
Je tiens remercier le CNAM ainsi que lensemble des professeurs pour les connaissances fort utiles quils mont apportes et je regrette de navoir pas pu devenir un spcialiste de tous ces domaines forts intressants.
Un remerciement particulier tous mes amis Jj, Ba, Grim et Ludivine, Vincent et Cathy (Pardon ceux que je nai pas cit) qui mont support dans tous les sens du terme. Je ne vous parlerai plus de cours. Du moins, plus aussi souvent
Le dernier remerciement, mais non le moindre, est pour ma douce toile du nord Ocane, sans qui je nen serais pas ou jen suis aujourdhui.
2/49
CNAM 2005-2006
Introduction _______________________________________________________________ 4 1 2 Caractristiques d'un SGBD ______________________________________________ 5 Les SGBD libres disponibles ______________________________________________ 7
2.1 2.2 2.3 Les SGBD les plus aboutis _________________________________________________ 7 Les SGBD en progression__________________________________________________ 9 Synthse et Choix _______________________________________________________ 12 Normes et dialecte SQL __________________________________________________ 14 SQL-92, les diffrents niveaux _____________________________________________ 16 SQL-99 ________________________________________________________________ 22 Quest-ce quun dclencheur ______________________________________________ 27 Langage SQL/PSM ______________________________________________________ 28 Support de SQL/PSM ____________________________________________________ 31 Interfaces avec les langages de programmation. ______________________________ 31 Protection des donnes ___________________________________________________ 34 Optimisation ___________________________________________________________ 39 Gestion des sauvegardes / restaurations _____________________________________ 41 Tableau de synthse _____________________________________________________ 42
Administration ________________________________________________________ 34
5.1 5.2 5.3 5.4
3/49
CNAM 2005-2006
Introduction
Range ta chambre ! Quel enfant n'a pas entendu de ses parents cette phrase synonyme de corve venir. En ce qui concerne le rangement, linformatique reprsente un avantage certain : il se fait de manire automatise. Que ce soit le logiciel de dfragmentation qui range les bouts de fichiers en les dplaant sur le disque, ou les bases de donnes qui rangent les informations afin de pouvoir aisment les retrouver, ces tches sexcutent de faon automatique, sans intervention humaine proprement parler. L'volution de l'informatique a toujours t rapide et impressionnante. Le domaine des bases de donnes ne droge pas la rgle. Au commencement, les fichiers plat ont stock les informations, sans structure. Puis sont apparus, chronologiquement parlant, les bases de donnes hirarchiques prsentant une structure arborescente o chaque enregistrement n'a qu'un seul possesseur, les bases de donnes rseaux, lesquelles ont t en mesure de lever de nombreuses difficults du modle prcdent, les bases de donnes relationnelles utilisant des principes de lalgbre ensembliste et les bases de donnes orientes objet dont les informations sont reprsentes sous forme d'objets. Chaque volution a lev nombre de limitations de la gnration prcdente et a ajout toujours plus de fonctionnalits. Lvolution des technologies des bases de donnes tait ncessaire dans notre socit de linformation. En effet, il nest pas rare davoir, aujourdhui, des bases de donnes contenant des gigaoctets d'informations. Certaines atteignent mme plusieurs traoctets alors que le texte du roman Les trois Mousquetaires ne reprsente quenviron 1,35 mgaoctets. Les bases de donnes peuvent donc stocker lquivalent de plusieurs millions de livres. On pourrait se demander comment retrouver ces informations. Au vu de la taille et de leur nombre, il semblerait facile une information de se perdre, une erreur de se glisser, une personne malintentionne de la modifier son avantage. La maintenance, le bon fonctionnement et la scurisation dun tel systme sont dune grande difficult. Les systmes de gestion de base de donnes doivent donc offrir des facilits pour l'excution de ces tches. Nous verrons au cours de cet expos comment les systmes de gestion de base de donnes (SGBD) libres rpondent ces problmatiques. Dans un premier temps, nous rpertorierons les caractristiques principales dun SGBD et quels sont les SGBD libres disponibles rpondant ces critres. Ensuite nous verrons comment les interroger, voir sils parlent tous le mme langage, et donc, voir si lon peut sadresser eux de la mme faon. Dans un deuxime temps, nous analyserons comment, grce aux dclencheurs (Trigger), nous tenterons de maintenir lintgrit dune base et en faciliter ladministration. Pour terminer, nous aborderons les lments considrer pour administrer une base (par exemple la sauvegarde des informations ou encore, la gestion et la restriction des accs). Comment empcher un pirate dentrer ? Comparaison des SGBD Libres.doc 4/49 CNAM 2005-2006
5/49
CNAM 2005-2006
Le systme doit assurer la confidentialit des donnes. La notion d'utilisateur et de droits associs (droits de lecture, d'criture et d'excution sur les objets de la base) est indispensable afin assurer cette confidentialit. Le systme doit galement prvoir des mcanismes de cession et de retrait de droits. Le systme doit pouvoir efficacement grer les demandes Les performances doivent tre suffisamment bonnes. Pour cela, le SGBD doit utiliser des techniques d'indexation, d'optimisation de requtes et de gestion de caches. De plus, il est essentiel que le SGBD puisse facilement voluer et sadapter laugmentation du nombre de requtes et celle de lespace de stockage, cette augmentation se produisant immanquablement au fil des ans.
Aprs avoir recens les principes gnraux des bases de donnes, passons maintenant en revue les SGBD libres existants, afin de voir s'ils rpondent tous l'ensemble de ces critres.
6/49
CNAM 2005-2006
Ensemble de machines qui cooprent, visible de lextrieur comme un seul serveur extrmement puissant.
7/49
CNAM 2005-2006
8/49
CNAM 2005-2006
INGRES fonctionne sur les systmes suivants : Linux Unix: Solaris, HP-UX, AIX, OpenVMS Windows
9/49
CNAM 2005-2006
Berkeley DB fonctionne sur les systmes suivants : Linux Windows Et sur tous les systmes supportant JAVA.
10/49
CNAM 2005-2006
2.2.5 PicoSQL
(http://www.picosoft.it/picosql/)
PicoSQL est un SGBD crit dans le but de pouvoir tre facilement install et dutiliser peu de mmoire. Il supporte les transactions et mme les vues en mise jour. Malheureusement, la gestion des dclencheurs ainsi que celle des droits des utilisateurs ne sont pas encore prsentes. PicoSQL fonctionne sur les systmes suivants : Linux Windows
11/49
CNAM 2005-2006
12/49
CNAM 2005-2006
Synthse :
Une analyse rapide de l'volutivit des SGBD et des fonctionnalits nous font donc retenir pour une analyse approfondie les SGBD suivants : MySQL, MaxDB, PosgreSQL, Ingres. Nous venons donc de voir quels SGBD rpondent au cahier des charges suivant : Le systme doit assurer la fiabilit des donnes : la possibilit dexcuter des transactions4 doit tre prsente. Le systme doit offrir la possibilit plusieurs utilisateurs de manipuler les donnes concurremment, c'est--dire qu'il doit grer des utilisateurs diffrents et verrouiller les enregistrements. Le systme doit assurer la confidentialit des donnes par l'existence d'une gestion des droits utilisateurs. Ce point sera abord dans la partie consacre l'administration. Le systme doit tre volutif, notamment avec la possibilit de grer des grappes (clusters). Le systme doit offrir, l'utilisateur, la possibilit d'interroger la base de faon simple : support du langage SQL. Comme nous l'analyserons dans le chapitre suivant, le standard SQL a volu au cours du temps et des drives, sous forme de dialectes diffrents, sont apparues. Nous verrons comment les SGBD ont adapt et supportent ce langage SQL, lequel est autant employ par lutilisateur lors de l'interrogation de la base, que par ladministrateur pour assurer lintgrit des donnes avec laide des dclencheurs (triggers).
MySQL supporte les transactions avec le systme de fichier InnoDB mais pas avec le systme de fichier MyIsam par exemple.
13/49
CNAM 2005-2006
Dr. E. F. Codd, A Relational Model of Data for Large Shared Data Banks, http://www.cs.duke.edu/~junyang/cps216/papers/codd-1970.pdf
14/49
CNAM 2005-2006
Il existe un quatrime niveau nomm "Transitional" se situant entre le niveau entre et le niveau intermdiaire . Il ne fait pas partie de la norme ANSI SQL mais est propos par le Federal Information Processing Standards Publications (FIPS PUBS)6. Lorsquun SGBD clame quil respecte la norme SQL-92, il devrait prciser, ce qui est important, le niveau. Nous verrons dans la prochaine section, une description condense des diffrences entre ces niveaux. En 1999, une nouvelle version de la norme, nomme SQL-99, mais aussi connue sous le nom de SQL3, a t diffuse. Elle introduit de nouveaux concepts avancs comme les concepts de lobjet relationnel ou encore du langage de programmation structure SQL/PSM. Elle reprend le principe des niveaux de la norme SQL-92 (Entry, Intermediate et Full) mais les remplace par les siens : SQL-99 Central (Core) et Modules/Amliorations (Non-core, Enhanced). Pour des facilits de lecture, la norme a t dcoupe en parties; les mille cinq cents pages ont t scindes en neuf volumes traitant, chacun, dun domaine particulier : Sql, Sql/Psm, etc... Lobjet relationnel reste lavance majeure de cette norme, lintgration dXML fait ses dbuts. SQL-99 a galement normalis les dclencheurs, mme si beaucoup de SGBD les possdaient dj. Cet ordre chronologique (les dclencheurs crits avant la norme ne la respectent pas entirement) engendre des problmes de portabilit. Par exemple, entre Oracle et son PL/SQL ou Microsoft SQL Server et son Transac-SQL, ces langages ne sont pas totalement compatibles, ni compatibles avec SQL/PSM d'ailleurs. Rcemment, en 2003, lANSI/ISO a rendu publique la norme SQL-2003. Les fonctionnalits les plus marquantes de cette nouvelle norme sont les suivantes : Une augmentation des types de collections (Objets grant des ensembles dobjets : les tableaux, les listes, les arbres sont des exemples de collection) Une amlioration des spcifications de lobjet relationnel. Des nouvelles rfrences dans XML. Nous pouvons dduire aisment des paragraphes prcdents que SQL-92 tait le prcdent standard et SQL-99 le standard actuel, mme si peu de bases de donnes implmentent lobjet relationnel. Dans les SGBD libres, seul PosgreSQL supporte lobjet relationnel. Dans les systmes commerciaux, Oracle possde cette fonctionnalit. SQL-2003 sera le prochain standard support par les SGBD. Cette norme, trs rcente est peu implmente dans les SGBD; la partie XML est la plus frquemment prsente mais elle trouve ses fondements dans la norme SQL-99. La norme SQL-2003 tant trs peu supporte, elle ne sera pas analyse. Etudions maintenant plus en dtails les principaux apports de la norme SQL-92 avant de voir rapidement les ajouts apports par SQL-99.
Federal Information Processing Standards Publication 127-2, Announcing the Standard for Database Language SQL, http://www.itl.nist.gov/fipspubs/fip127-2.htm
15/49
CNAM 2005-2006
16/49
CNAM 2005-2006
INTERVAL supporte deux prcisions. Dans la premire, lintervalle est compt en mois et anne. Dans la seconde, lintervalle est compt en seconde minute heure et jour. Il est noter que SQL-92 supporte les oprations arithmtiques sur les dates, comme par exemple laddition ou la soustraction de dates. SQL-92 admet la cration de domaines qui sont, nanmoins, des sous-ensembles de domaines existants et offre la possibilit d'inclure des contrles dintgrit. Exemple : cration du domaine Monnaie par la commande suivante :
CREATE DOMAINE Monnaie is DECIMAL(5,2) CHECK(VALUE>0) NOT NULL
Le niveau intermdiaire propose, galement, les amliorations suivantes : Diffrents alphabets. Les caractres propres chaque pays sont grs. Le support des collations (COLLATE). Cette fonctionnalit entrane le support de plusieurs ordres de comparaison pour les chanes de caractres et, ainsi, gre correctement les caractres accentus lors des phases de tris. Un tri binaire, au vu du code ASCII des caractres, aurait donn : parle, parleur, parloir, parl alors que lon s'attend, de faon naturelle, avoir parl entre parle et parleur . La concatnation de chanes par loprateur || et lextraction de sous-chanes par la commande SUBSTRING. La conversion dun type de donne en un autre par la commande CAST Les chanes de longueurs variables (VARCHAR) et la possibilit de connatre la longueur dune chane par la commande LENGTH.
Lintgrit rfrentielle est un jeu de rgles empchant d'effacer ou de modifier par inadvertance des donnes d'une table lorsque cela peut dclencher des problmes sur une table en relation (cls trangres par exemple)
17/49
CNAM 2005-2006
Il est maintenant possible dexcuter les contraintes dintgrit la fin de chaque opration (IMMEDIATE) ou la fin de la transaction (DEFERRED) :
SET CONSTRAINTS { ALL | nom de la contrainte } {DEFERRED | IMMEDIATE}
Pour en terminer avec lintgrit, SQL-92 dfinit quatre niveaux d'isolation de transaction pour empcher trois phnomnes indsirables de se produire lors de transactions concurrentes qui sont : La lecture inconsistante : une transaction lit des donnes crites par une transaction concurrente qui nest pas encore valide.
La lecture non rptitive : Une transaction relit des donnes qu'elle a lues prcdemment et trouve que ces donnes ont t modifies par une autre transaction (valide depuis la lecture initiale).
18/49
CNAM 2005-2006
Les lignes fantmes : Une transaction excute nouveau une requte renvoyant un ensemble de lignes satisfaisant une condition de recherche et trouve que l'ensemble des lignes satisfaisant cette condition a chang du fait d'une autre transaction rcemment valide.
Ces phnomnes peuvent ou ne peuvent pas se produire en fonction du niveau disolation. Les niveaux d'isolation des transactions dfinis sont les suivants : Niveau d'isolation Lecture de donnes non valides (Uncommitted Read) Lecture de donnes valides (Committed Read) Lecture rpte (Repeatable Read) Srialisable (Serializable) Lecture inconsistante Possible Impossible Impossible Impossible Lecture non rptitive Possible Possible Impossible Impossible Lignes fantmes Possible Possible Possible Impossible
Le niveau Srialisable supprime tous les effets des accs concurrents mais en contrepartie il est galement le plus lent. Une requte avec un niveau disolation Lecture de donnes non valides pourrait lire des enregistrements verrouills en criture par une autre requte et donc ne pas attendre le relchement des verrous8. Pour certains types de requtes, comme celles utilises dans un entrept de donnes, le fait de ne pas avoir les dernires donnes jour nest pas significatif.
8
Mcanisme grant la simultanit daccs afin dviter des incohrence (deux critures en mme temps).
19/49
CNAM 2005-2006
SQL-92 tend les oprations ensemblistes disponibles par lajout des commandes grant lintersection (INTERSECT) et la diffrence (EXCEPT) d'ensembles.
Toutes les lignes de table1 seront affiches que <Conditions de jointure> soit ralise ou non dans table2. La requte suivante affiche tous les tudiants, qu'ils aient ou non une note. Si un tudiant n'a pas de note, le champ Numetu de la table correspondante (NOTES) aura la valeur NULL. :
SELECT DISTINCT(E.Nometu), N.Numetu FROM ETUDIANT E LEFT OUTER JOIN NOTES N ON E.Numetu=N.Numetu;
On peut ainsi retenir les lments nayant pas de correspondance dans la table de gauche (LEFT OUTER). Sur le mme principe, on peut aussi retenir les lments nayant pas de correspondance dans celle de droite (RIGHT OUTER) ou dans les deux (FULL OUTER)
20/49
CNAM 2005-2006
Les diffrentes modifications possibles sont : Ajout dune colonne (ADD COLUMN) Modification de la dfinition dune colonne (ALTER COLUMN) Suppression dune colonne (DROP COLUMN) Ajout dune contrainte (ADD CONSTRAINT) Suppression dune contrainte (DROP CONSTRAINT)
Possibilit de renommer les colonnes afin de les faire correspondre dans les requtes comportant un des termes suivants : UNION, INTERSECT, EXCEPT. Extension du support des dates et temps avec support des fuseaux horaires et possibilit de dfinir des chelles de temps pour le type INTERVAL Comparaison des SGBD Libres.doc 21/49 CNAM 2005-2006
Cration d'un type de donne BIT pour supporter les objets binaires comme les images
3.3 SQL-99
La premire forme normale de Codd (valeur atomique c'est dire non compose) est inadapte aux objets complexes tel que les documents structurs (document XML) ou les donnes multimdias. Cest pourquoi la norme SQL-99 a introduit une dnormalisation de la premire forme normale avec l'objet relationnel ou encore avec les objets larges tels que les CLOB (Character Large Object) et les BLOB (Binary Large Object). Nanmoins, la recherche dans les objets larges (Large Object) est limite et squentielle. Labsence de pointeurs visibles tait, dans SQL-92, pnalisante. Stocker un gros objet et utiliser des rfrences plusieurs endroits dans la base gnre des conomies de place. Il est aussi possible dviter de faire de coteuses jointures grce ces rfrences. Lobjet relationnel est fait pour palier aux points faibles du modle relationnel. SQL-99 a introduit les modifications principales suivantes : Suppression du type de donne BIT qui servait supporter les objets binaires. Lobjet relationnel le remplace avantageusement. Extension des fonctions comparaisons floues SQL-92 les prenait en compte grce linstruction LIKE. SQL-99 en tend les possibilits grce linstruction SIMILAR et par lutilisation dexpressions rgulires faon UNIX : WHERE NAME SIMILAR (SQL(86|89|92|99))|(SQL(1|2|3)). Cette ligne prend en compte les versions de SQL sorties avant lanne 2000. Utilisation de nouveaux type de donnes : o o o o o BLOB CLOB BOOLEAN ARRAY : JourDelaSemaine VARCHAR(10) ARRAY[7] ROW : NID ROW (NOM VARCHAR(50), PRENOM VARCHAR(50)) SELECT E.NID.NOM FROM Employ E Ajout de la possibilit de dfinir des types propres lutilisateur par la commande CREATE TYPE.
22/49
CNAM 2005-2006
Possibilit de mettre jour les vues (View) : Dans la norme SQL-92, les vues ntaient quen lecture seule. Les applications taient donc obliges de modifier les tables sous-jacentes la vue en cas de mise jour, ce qui enlve une partie de lintrt des vues. Cration de points de sauvegarde (Savepoint) : Ces points de sauvegarde agissent comme des sous ensembles de transaction. Dans une transaction, il est possible dannuler un sous ensemble de la transaction et donc de remonter ltat du dernier point de sauvegarde sans pour autant annuler la transaction en entier. ROLLBACK TO SAVEPOINT Nom et RELEASE SAVEPOINT agissent respectivement comme les ROLLBACK et COMMIT dune transaction. SET SAVEPOINT Nom dfinit un point de sauvegarde nomm Nom . Introduction de XML avec la possibilit de retrouver les donnes grce XQUERY. Cette partie est tendue dans SQL-2003. Apparition des requtes rcursives. Par exemple, sur une table Etapes compose de deux colonnes, VilleDpart et VilleArrive , on pourrait excuter la requte suivante :
SELECT VilleArrive START WITH VilleDpart=Montpellier CONNECT BY PRIOR VilleArrive=VilleDpart;
Cration de rles facilitant la gestion des droits des utilisations par dfinition d'ensembles de droits prts lemploi . On prpare un rle Mise a jour des clients en lui attribuant les droits ncessaires. Il suffira ensuite dattribuer ce rle lensemble des utilisateurs devant mettre jour les clients. Mise en place de dclencheurs (Trigger). Un dclencheur est une procdure compile qui sexcute automatiquement lorsque lvnement associ le dclenchant se produit comme la mise jour dune colonne dans la base. Utilisation du langage de programmation SQL/PSM qui est un langage procdural. Lcriture de procdures stockes ou de dclencheurs dans ce langage est possible.
23/49
CNAM 2005-2006
Cration d'extensions ncessaires lobjet relationnel comme la notation point (Employ.Salaire), la dfinition d'hritage etc. Avant de voir les tableaux rcapitulatifs des fonctionnalits supportes par les SGBD, prcisons la lgende :
Ce que lon peut retenir du tableau suivant est que le SGBD possdant le plus grand nombre de fonctions des normes SQL92 et SQL99 est PosgreSQL. Les principales fonctions manquantes de PosgreSQL version 8.1 sont : les vues modifiables. Cette fonctionnalit est prvue dans la prochaine version. les vues concrtes le Check sur plusieurs tables les requtes rcursives
24/49
CNAM 2005-2006
26/49
CNAM 2005-2006
4 Les dclencheurs
Aprs avoir tudi comment le langage SQL est support par les diffrents SGBD, voyons comment il est utilis, en conjonction avec les dclencheurs, afin de faciliter lintgrit des donnes.
Lorsquune requte va tenter de mettre jour, dinsrer une valeur ou den supprimer une, il est donc possible de lancer une suite d'instructions avant ou aprs le passage de cette requte. Le programme peut tre lanc, soit pour chaque ligne modifie de la table (FOR EACH ROW), soit une seule fois pour lensemble des lignes (FOR EACH STATEMENT). Lors de lcriture dun dclencheur de type ligne (ROW), il est possible davoir les valeurs avant (OLD) et aprs modification (NEW). Ceci est galement valable dans le cas dun dclencheur de type Statement , les variables se nomment alors OLD_TABLE et NEW_TABLE et contiennent lensemble des enregistrements avant et aprs altration par la requte. Le mot cl ATOMIC, prcise que le corps du trigger doit tre excut comme une transaction, c'est dire d'un seul coup et sans concurrence (excution atomique). La ligne [WHEN condition] rajoute une condition vrifier avant l'excution de la requte.
CREATE TRIGGER NomTrigger { BEFORE | AFTER } { INSERT | DELETE | UPDATE } ON NomTable { REFERENCING OLD [ROW] [AS] NomAnciennesValeursLigne | NEW [ROW] [AS] NomNouvellesValeursLigne | OLD TABLE [AS] NomAnciennesValeursTable | NEW TABLE [AS] NomNouvellesValeursTable } FOR EACH { ROW | STATEMENT } [WHEN condition] BEGIN [ATOMIC] Code du trigger END
Exemple :
TABLE test1 (a1 INT); TABLE test2 (a2 INT); CREATE TRIGGER RecopieTest1 BEFORE INSERT ON test1 FOR EACH ROW BEGIN INSERT INTO test2 SET a2 = NEW.a1; END;
Les dclencheurs lance donc des requtes lors de certains vnements. Attention, une requte lance dans un dclencheur peut provoquer le dmarrage d'un autre dclencheur. Il appartient au dveloppeur de vrifier les boucles infinies pouvant se produirent. Comme nous venons de le voir, les dclencheurs lancent des requtes lors de certains vnements, mais il est possible daller au-del de ce simple lancement. En effet, les dclencheurs peuvent tre crits dans le mme langage que les procdures stockes, savoir SQL/PSM. Lutilisation d'un langage structur renforce les possibilits des dclencheurs.
4.2.1 Dclaration
La cration d'un module (ensemble de fonctions ou procdures stockes) se fait par l'instruction suivante :
CREATE MODULE ModuleName LANGUAGE [SQL|C| ] END MODULE
28/49
CNAM 2005-2006
On remarquera dans cette instruction comme dans la suivante, le mot cl LANGUAGE qui offre la possibilit du choix du langage et donc de ne pas utiliser obligatoirement le langage SQL/PSM. Les procdures ou les fonctions stockes peuvent scrire avec diffrents langages comme C, Ada, Cobol, Pascal Exemple en java :
CREATE OR REPLACE PROCEDURE AjouteEmp (empno NUMBER, ename VARCHAR2, sal NUMBER, deptno NUMBER) AS LANGUAGE JAVA NAME Employee.AjouteEmp( int, java.lang.String, float, int);
Un des avantages du langage SQL/PSM par rapport un langage volu tel que C ou Java est qu'il n'y pas besoin d'une conversion de type entre les donnes de la base et les variables utilises pour les stocker. Voici un exemple de module :
MODULE gestion_compte LANGUAGE SQL; DECLARE total DECIMAL(16,2); FUNCTION solde (SQLCODE, client_id) RETURNS FLOAT; SELECT SUM(CPT_CREDIT) - SUM(CPT_DEBIT) INTO total FROM COMPTE_BANCAIRE WHERE CLI_ID = client_id; RETURN total; PROCEDURE credite (SQLCODE, client_id, montant DECIMAL(16,2)); INSERT INTO COMPTE BANCAIRE (CLI_ID, CPT_CREDIT, DATE_HEURE_TRANSACTION) VALUES (client_id, montant, CURRENT_TIMESTAMP); PROCEDURE debite (SQLCODE, client_id, montant DECIMAL(16,2)) INSERT INTO COMPTE BANCAIRE (CLI_ID, CPT_DEBIT, DATE_HEURE_TRANSACTION) VALUES (client_id, montant, CURRENT_TIMESTAMP); END MODULE;
29/49
CNAM 2005-2006
L'instruction Loop est une instruction rptant une boucle l'infinie. L'instruction LEAVE entrane la sortie de la boucle. L'instruction Tantque excute le code prsent au sein de sa boucle tant que la condition est vraie.
WHILE <Cond> END WHILE
L'instruction RpterJusqu' excute le code prsent au sein de sa boucle jusqu' ce que la condition soit vraie.
REPEAT UNTIL END REPEAT
Aprs avoir vu les principes de base de SQL/PSM, analysons maintenant comment ces fonctions sont supportes par les diffrents SGBD.
30/49
CNAM 2005-2006
Pour des raisons chronologiques, le langage SQL/PSM est support par les bases de donnes libres, plus qu'il ne l'est dans les bases de donnes commerciales. En effet, ces dernires ont implment un quivalent au langage SQL/PSM bien avant la publication de la norme SQL-99. Cette dernire aurait du sortir en 1996 au lieu de fin 1999, ce qui a contribu a une non conformit des SGBD commerciaux. C'est, par contre, un point fort pour les SGBD libres, qui ayant mis en place ce langage aprs la publication de la norme, ont pu la respecter fidlement. Les dclencheurs peuvent aider maintenir l'intgrit de la base, laquelle fait partie des tches de l'administrateur de base de donnes. Avant de lister les tches d'administration existant sur les SGBD, voyons comment un SGBD peut sinterfacer avec un langage de programmation afin de dvelopper de nouvelles applications, comme des applications de maintenance par exemple.
31/49
CNAM 2005-2006
4.4.3 API
Chaque SGBD possdant ses propres mthodes d'accs, la tche des programmeurs dsireux de s'y connecter ne s'en trouve pas simplifie. Ces "API", comme on les nomme (Application Programming Interface), sont autant de syntaxes matriser afin de communiquer avec chaque SGBD. L'ide est alors venue de fournir une librairie de fonctions, indpendante du SGBD, afin de faciliter la programmation et damliorer linteroprabilit des programmes envers les divers SGBD. Si on utilise une API propritaire (comme OCI chez Oracle, libmysql.dll pour MySQL), le code sera trs efficace. Si en revanche, on utilise une API gnrique, telle que, par exemple ODBC (Open Database Connectivity), la portabilit du code sera meilleure, mais l'excution sera moins performante car la conversion des instructions SQL en leur quivalent du SGBD utilis ne pourra se faire que pendant l'excution car c'est seulement ce moment que l'on saura quel type de SGBD on a rellement affaire. Cest Microsoft qui a crit ODBC, librairie gnrique daccs aux bases de donnes. RDO (Remote Data Object), est une surcouche dODBC galement dveloppe par Microsoft. Celle-ci est destine faciliter le travail des programmeurs Visual Basic, alors qu'ODBC est davantage tourne vers les programmeurs C/C++. Une autre technique d'accs, encore plus simple, a ensuite fait son apparition : "DAO" (Data Access Object). La standardisation n'tait plus vraiment standard . Microsoft, souhaitant offrir une mthode de connexion indpendante des sources de donnes, tente d'unifier encore une fois le tout et dveloppe une nouvelle API : "OLE-DB" (Object Linking And Embedding Database). Puis, Microsoft toujours, afin d'aider les dveloppeurs qui peinent crire des fonctions "OLE-DB", propose la technologie ADO (ActiveX Data Object), laquelle accde diverses sources de donnes plus facilement. ADO.Net, volution dADO est la dernire norme propose par Microsoft. Les normes de Microsoft, actuellement utilises sont : ODBC, ADO et ADO.NET. Cependant, Microsoft nest pas le seul avoir crit des librairies gnriques. IDAPI est une API daccs aux bases de donnes, dveloppe par Borland. Elle sait aussi interroger ODBC et cela lui ouvre lensemble des bases du march. JDBC (Java DataBase Connectivity) est une API de connexion aux bases de donnes fournie avec Java. Comparaison des SGBD Libres.doc 32/49 CNAM 2005-2006
Il suffit de disposer dun driver supportant lAPI choisie pour qu'un programme fonctionne avec la base de donne. Ce dernier peut, par exemple, se connecter sur une base MySQL. Si l'on change de driver dans ODBC pour utiliser une base Microsoft Sql Serveur, un mme programme fonctionnera de la mme faon. Tableau rcapitulatif :
Tous les SGBD libres de ce comparatif supportent les deux plus grands standards actuels, savoir ODBC et JDBC, d'o, ce critre importera peu au moment du choix.
Voyons maintenant quelles sont les tches dadministration et en quoi les dclencheurs ou des programmes crits avec laide de ces API, peuvent venir en aide l'administrateur.
33/49
CNAM 2005-2006
5 Administration
La premire des tches d'administration d'une base de donnes, chronologiquement parlant, est de prvoir la dimension du serveur qui va l'hberger, c'est--dire le nombre de processeurs, la taille mmoire et les besoins de stockage ncessaires lors de la cration de la base et, en tenant compte, si possible des besoins futurs. Ces choix dpendent de la finalit du systme : La base doit elle tre en ligne 365 jours par an ou pas ? Combien d'utilisateurs vont accder en simultan la base ? En cas de panne, quel est le temps acceptable pour restaurer une sauvegarde ? La perte de donnes est-elle acceptable ou pas ? Autant de questions qui vont dterminer le dimensionnement du systme et le choix du niveau de redondance des quipements afin de pallier aux pannes. Une fois le systme choisi et install, les principales tches de l'administrateur de base de donnes sont : La gestion de la scurit L'optimisation des requtes L'optimisation de l'utilisation des disques La gestion des sauvegardes La conception et la cration de nouvelles bases
34/49
CNAM 2005-2006
Dans un SGBD, x est le mot de passe et f(x) la valeur chiffre, stocke dans la base. Cest une fonction rpondant aux critres suivants : Il est facile de calculer f(x) ayant x, il est quasi-impossible de calculer x en ayant f(x). Si x et x' sont diffrents alors f(x) est diffrent de f(x').
10
35/49
CNAM 2005-2006
ALTER, droit de modification de la dfinition de la table Le droit ALL contient lensemble des droits prcdents (Insert, Update, Delete et Alter). Un utilisateur ayant reu un droit avec l'option GRANT peut le transmettre son tour condition que le droit soit transmis avec, dans la commande, WITH GRANT OPTION.
GRANT { SELECT | INSERT | UPDATE | DELETE | ALTER | ALL } ON {nom_table | nom_vue | nom_base } TO nom_utilisateur {WITH GRANT OPTION};
Loption CASCADE supprime les droits de lutilisateur marqus dans la commande mais aussi les droits de tous les utilisateurs qui un utilisateur aurait donn ces mmes droits. Admettons que A donne un droit B avec WITH GRANT OPTION et que B donne ce droit C. Si A ne met pas CASCADE, il retire le droit B mais pas C. Si A spcifie CASCADE, il retire le droit B et C. Les droits sont cumulatifs. Supposons que lutilisateur A reoive, la fois de lutilisateur B et lutilisateur C, le droit de lire une table T, il faut que B et C retirent tous les deux ce droit de lecture A pour que celui-ci ny accde plus. PosgreSQL a ajout des droits ceux prcdemment cits comme, par exemple, le droit de crer des cls trangres (REFERENCES), des dclencheurs (TRIGGER), des schmas (CREATE) et des tables temporaires (TEMPORARY). MySQL a aussi ajout ses propres droits, comme par exemple, l'obligation faite lutilisateur d'employer une connexion chiffre, les limitations en terme de nombre de requtes (MAX_QUERIES_PER_HOUR, MAX_UPDATES_PER_HOUR) ou en terme de nombre de connexions (MAX_CONNECTIONS_PER_HOUR, MAX_USER_CONNECTIONS). Ingres a aussi ajout des droits comme par exemple le droit de crer des squences (compteur partag et auto incrment) ou le droit de consulter les statistiques du SGBD. Le tableau ci-aprs rpertorie les droits supports. Sa lecture en fait ressortir un point important : tous les SGBD supportent les droits dfinis par lISO dans la norme SQL. Mais chaque SGBD a rajout des droits supplmentaires qui lui sont propres.
36/49
CNAM 2005-2006
attribu par dfaut tous les utilisateurs. Il est noter que seul le SGBD MySQL ne supporte pas les rles.
5.2 Optimisation
5.2.1 Optimisation des requtes
L'optimisation des requtes et des temps de rponse du SGBD incombe l'administrateur de bases de donnes. Quatre vingt dix pour cent de l'optimisation de la base est faite pendant la conception. Les dix pour cent restants se font pendant la production.
39/49
CNAM 2005-2006
Le SGBD doit fournir l'administrateur toutes les informations ncessaires cette optimisation : L'occupation mmoire Afin d'avoir les performances maximales, il faut que le SGBD ne fonctionne qu'en mmoire, il ne doit pas utiliser le fichier d'change prsent sur le disque. Les informations de cette occupation mmoire doivent tre dtailles par zones car le SGBD utilise des zones mmoires diffrentes : une pour stocker les modifications de donnes, une pour trier les tables lors de l'excution des requtes L'affichage de ces informations est ncessaire l'administrateur, qui doit voir si une requte ne manque pas de mmoire par exemple dans la zone de tri. Les choix effectus par le programme qui optimise les requtes Avant d'excuter une requte, le SGBD choisit l'algorithme qu'il va utiliser pour les jointures et dtermine les index possibles L'affichage de ces informations est ncessaire l'administrateur pour dterminer o se situe l'ventuel goulet d'tranglement (un index manquant par exemple). Ladministrateur de base de donnes peut aussi dcider de crer une table contenant une jointure prcalcule. Cette solution entrane un gain de temps considrable dans le cas de tables souvent lues et peu mises jour. La mise jour de cette table contenant une jointure est assure par des triggers prsents sur la table concerne. Tous les SGBD de ce comparatif supportent ces fonctionnalits. Il est noter que lvolution de la complexit des SGBD, avec notamment les grappes (clusters) rpartition de charges (Data Grid), rend de plus en plus difficile loptimisation des serveurs. Cest pourquoi la tendance naissante est dintroduire une optimisation calcule et dcide par le SGBD luimme.
40/49
CNAM 2005-2006
Pour remdier aux dfauts de la solution prcdente, la plupart des SGBD grent des espaces de stockages virtuels (tablespace). Un tablespace est, en fait, un ensemble de fichiers pouvant se trouver sur des espaces de stockage physiques diffrents. Il est possible de rajouter facilement un nouveau fichier cet espace de stockage logique et donc daugmenter la possibilit de stockage de donnes. Une table peut tre partage sur plusieurs fichiers du mme espace de stockage virtuel (tablespace).
La prsence de fichiers journaux de reprises gnrs par le SGBD est ncessaire pour effectuer une sauvegarde chaud. Dans le cadre d'environnements haute disponibilit, l'arrt de la base est impossible. Le problme qui se pose provient, alors, de la constante modification des valeurs prsentes. Pour effectuer une sauvegarde chaud, l'espace de stockage virtuel (tablespace) est pass en mode "Sauvegarde". Les modifications sont mmorises uniquement dans les fichiers journaux durant la sauvegarde de cet espace de stockage virtuel. Ensuite, l'espace de stockage virtuel est mis jour avec les fichiers journaux avant d'tre repass en mode "Normal". La planification des tches est un systme offrant la possibilit de lancer, avec une frquence dtermine, une tche comme la sauvegarde des bases de donnes, la mise jour des statistiques ncessaires au programme d'optimisation des requtes, etc. Elle automatise donc la procdure. Les bases de donnes libres, fonctionnant sous forme de commandes saisies sur la ligne de commande (Mysql, PostgreSQL), sappuient sur le systme (Planificateur de tache sous Windows, cron sous linux) afin d'offrir cette possibilit.
Le choix devient, cette fois, plus difficile. Ingres et MaxDB ont l'avantage d'avoir une administration intgre avec des interfaces graphiques natives tandis que MySQL utilise des diteurs tiers pour produire les logiciels contenant des interfaces. PostgreSQL, de par ses modules en ligne de commande, offre la possibilit d'crire des scripts shell, ce qui le rend hautement configurable et automatisable.
42/49
CNAM 2005-2006
Conclusion
Cette tude montre que les SGBD libres possdent nombre datouts. Mme sils noccupent pas encore la majorit des parts de march, ils en sont la valeur montante. Le dveloppement rapide des ultimes fonctionnalits leurs faisant dfaut, par rapport leurs homologues commerciaux, et leurs cots imbattables en font des alternatives qui ne peuvent qu'tre srieusement considres. Le nombre impressionnant de SGBD libres offre la possibilit de choisir celui qui convient le mieux aux besoins. La couverture va de la petite base mono poste mono utilisateur la base gante contenant des milliards de lignes et ncessitant un cluster rpartition de charge pour grer des milliers de requtes par seconde. Le respect de la norme SQL engendre un nombre minimal dadaptions raliser en cas de changement de SGBD. Lutilisation dAPI gnriques vite l'adaptation des programmes en fonction de la base. Lutilisation des procdures stockes offre loptimisation du temps dexcution des requtes. La facilitation des oprations de maintenance est prsente avec les dclencheurs (triggers). La souplesse et les possibilits rajoutes par le langage procdural SQL/PSM ouvrent de nombreux horizons quant lutilisation des requtes stockes et des dclencheurs. Ladministration de bases de donnes se compose des tches suivantes : Gestion de la scurit : droit daccs et chiffrement des communications Optimisation du SGBD, des diffrentes zones mmoires, des requtes par lutilisation des dclencheurs Gestion des sauvegardes
On peut se demander comment les SGBD commerciaux vont arriver survivre la dferlante des SGBD libres. Demain, les SGBD libres auront les mmes fonctionnalits que les SGBD commerciaux. Ils possdent, en outre, un avantage de taille : un prix imbattable. Les espaces de stockage auront des tailles gigantesques qui pourront stocker le savoir de lhumanit dans tous les domaines. Laccs se fera en langage naturel, il suffira de penser une question pour en avoir la rponse. Dans ces conditions, quel sera lintrt daller lcole ? Lhumanit arrivera t-elle encore progresser dans ses connaissances ?
43/49
CNAM 2005-2006
Bibliographie
Carolyn Begg et Thomas Connolly, Systme de base de donnes, Edition Eyrolles, 2005. Christian Mare, Guy Ledant, SQL2 Initiation/Programmation, Editions Dunod, 1999. Cyril Nocton, PHP4 et MySQL en ligne, Micro Application, 2001. Georges Gardarin, Bases de donnes, Edition Eyrolles, 2003. Pierre Risler, Manuel dadministration Oracle. 2005. http://www.MySQL.com, Le site officiel du SGBD MySQL, MySQL AB, 1995-2006 http://www.sapdb.org, un site officiel du SGBD MaxDB, SAP AG. On peut aussi trouver ce logiciel sur le site de MySQL. http://www.firebirdsql.org, le site officiel du SGBD FireBird, Firebird Project, 2000-2006 http://www.ingres.com, le site officiel du SGBD Ingres, Ingres Corporation, 2006 http://www.postgresql.org, le site officiel du SGBD PosgreSQL, PostgreSQL Global Development Group, 1996-2006 http://www.sleepycat.com/, le site officiel du SGBD Berkeley DB. http://db.apache.org/, le site officiel du SGBD Derby, Apache Software Foundation, 20012006 http://hsqldb.org/, le site officiel du SGBD Hypersonic SQL, The hsqldb Development Group, 2001-2005
44/49
CNAM 2005-2006
http://www.picosoft.it/picosql/, le site officiel du SGBD PicoSQL, 2006. http://www.daffodildb.com/, le site officiel du SGBD Daffodil DB et de sa dclinaison open source One$DB, Daffodil Software Ltd, 2004-2006 http://www.sqlite.org, le site officiel du SGBD SQLite, 2006 http://sqlpro.developpez.com, Site contenant diverses informations sur les bases de donnes, Frdric Brouard, 2003-2006 http://www.linux-france.org/article/cel/SICOMOR/SGBDR/html/Rapport_7-9V10.html, Scurisation des SGBDR, EADS Sycomore. http://www.cs.duke.edu/~junyang/cps216/papers/codd-1970.pdf, Dr. E. F. Codd, A Relational Model of Data for Large Shared Data Banks, http://www.itl.nist.gov/fipspubs/fip127-2.htm Federal Information Processing Standards Publication 127-2, Announcing the Standard for Database Language SQL
45/49
CNAM 2005-2006
Glossaire
ANSI : American National Standard Institute. Institut amricain charg de valider et publier des normes. Atomique : Une transaction atomique (ensemble dinstructions) est un ensemble indivisible, entirement excut ou pas du tout. Cache : Technique de stockage en mmoire de valeurs lues ou crire sur le disque. En groupant les accs disques, on augmente la vitesse globale dchange avec le disque. Cl trangre : Une cl trangre est une cl primaire ou candidate dans une autre table. Collation : Dfinit la position ordinale de chaque caractre dans un jeu de caractre. Le mme jeu de caractre peut donc tre tri diffremment. Commutateur : Dispositif rseau reliant plusieurs machines sur un mme cble et qui ne transmet les informations quau bon destinataire (pas de broadcast). Contrainte dintgrit : Une contrainte d'intgrit est une clause qui oblige que les donnes saisies dans la base soient conformes aux donnes attendues (Not Null, Unique) Dclencheur : Bout de programme sur le serveur qui est automatiquement invoqu lorsqu'un enregistrement est insr, mis jour ou effac. Il effectue de petites oprations tel que des vrifications de donnes, des modifications... Domaine : Ensemble de valeurs que peut prendre un attribut.
46/49
CNAM 2005-2006
Entrept de donnes : Outil d'aide la dcision, bas sur une base de donnes fdrant et homognisant les informations des diffrents services d'une organisation. Fonctions de hachage sens unique : Fonction rpondant aux critres suivants : Il est facile de calculer f(x) ayant x mais il est quasi-impossible de calculer x en ayant f(x). Si x et x' sont diffrents alors f(x) est diffrent de f(x'). Elles servent assurer la dtection dune modification dans un document. Grappe : Cluster en Anglais. Ensemble de machines qui cooprent, visibles de lextrieur comme un seul serveur extrmement puissant. Index : Structure de donnes offrant la possibilit d'accder de manire efficace un tuple en connaissant la valeur d'un de ses attributs. Un index amliore les performances d'accs en interrogation mais pnalise les mises jour et prend de la place sur le disque. Intgrit rfrentielle : Capacit d'un SGBD imposer sur une table des rgles de validation provenant d'une autre table (cl trangre). International Standards Organization (ISO) : Organisation non gouvernementale qui fdre des organismes nationaux et s'occupe d'dicter des normes internationales. Jointure externe : La jointure consiste combiner deux tables (ou plus) pour obtenir une table rsultat. En concatnant deux deux les lignes des deux tables initiales (produit cartsien) et en ne gardant (restriction) que les lignes dont deux colonnes (ou plus) dans les tables initiales vrifient une certaine proprit, on obtient une jointure. Si on garde toutes les lignes dune table ou des deux, on parle de jointure externe. Objet large : Type de donne stockant une information de grande taille. Pare-feu : Dispositif logiciel ou matriel protgeant un rseau en bloquant certaines communications juges dangereuses.
47/49
CNAM 2005-2006
Point de sauvegarde : Sous ensemble de transactions. Procdures stockes : Ensemble dinstructions prsentes dans le SGBD et prtes tre excutes. Relationnel objet : Se dit dune base qui supporte les objets. Requte : Ensemble dinstructions manipulant des ensembles de donnes. Rle : Ensemble de droits sur un ensemble dobjet de la base. Sauvegarde : Copie de la base afin de pouvoir la restaurer en cas de problme grave. Schma : Ensemble des objets (tables, index, dclencheurs) proprit d'un utilisateur. Srialisation : Excution en parallle dun ensemble de transactions produisant le mme rsultat que si elles taient excutes en srie. SGBD : Systme de Gestion de Base de Donnes. Programme grant une base de donnes, autrement dit un grand volume dinformations. SQL : Structured Query Langage. Langage utilis dans les bases de donnes afin de manipuler les donnes. SSL : Secure Socket Layer. Couche logicielle effectuant le chiffrement/dchiffrement dune communication quelconque.
48/49
CNAM 2005-2006
Transaction : Ensemble de requtes. Une transaction simple est execut sur un serveur. Les transactions distribues peuvent tre excutes sur plusieurs serveurs. Tuple : Un tuple est une ligne structure comme un ensemble de valeurs. Verrou : Mcanisme grant la simultanit daccs afin dviter des incohrences (deux critures en mme temps). Vue : Du point de vue de lutilisateur, cest comme une table. Du point de vue de la base, cest le rsultat dune requte. Les vues simplifient la structure dune base et restreignent laccs des donnes. XML : eXtensible Markup Language. Cest un langage de balise extensible dont la forme gnrale est <balise>texte</balise>. XQuery : Langage offrant la possibilit de retrouver des informations dans un document XML.
49/49
CNAM 2005-2006