Panorama des Bases de Données Didier Donsez 8QLYHUVLWp-RVHSK)RXULHU*UHQREOH,0$,0$*/65$'(/( 'LGLHU'RQVH]#LPDJIU Didier Donsez, 1998-2002, Panorama des BDs 1
Le Modèle Relationnel 2 Un modèle de données Simple Relation Tuple (Ligne) Attribut (Table) (Colonne) Buveurs NB Nom Prénom Type Abus NB NV Date Qte Vins NV Cru Millésime Degré Un langage de manipulation SQL 6(/(&7 %89(856120680$%8647( )520 %89(856$%86 :+(5( %89(8561% $%861% $1'%89(8569,//( 9DOHQFLHQQHV *5283%<%89(856120
les SGBDs Relationnels 3 Des produits murs ORACLE SYBASE INFORMIX IBM DB/2 OPEN INGRES (CA) MICROSOFT SQL SERVER Des produits Open Sources MySQL PostGres HyperSonic Buveurs NB Nom Prénom Type Abus NB NV Date Qte Vins NV Cru Millésime Degré
Le modèle d accès aux SGBDs (Relationnels) 4 Centralisé Terminaux passifs Client Serveur PC avec capacité de traitement émulation VT émulation 3270 ODBC, SQL*Net, JDBC,... SGBD SGBDn SGBD1 Web Multi-Tiers Navigateur Web Terminal nomade HTML/XML/WML HTTP/WAP Web Server + Application Server ODBC, JDBC,... SGBDn SGBD1
5 Programmation Procédurale et SQL SQL : langage déclaratif optimisation de la requête par le SGBD Mais besoin de programme procéduraux boucle, test, affichage, enchainement, curseur sur une table résultat Solutions Middleware ODBC, JDBC Embedded SQL C, Java P/SQL
Les Middlewares SQL/CLI 6 Ordre SQL dans un langage général pas de précompilation indépendance aux SGBDs (et autres sources de données) Normalisation SQL/CLI (Call Level Interface) ODBC Open DataBase Connectivity (MicroSoft) 64/&/, JDBC Java DataBase Connectivity (JavaSoft) 64/&/, IDAPI Integrated Database Application Interface (Borland)... U T I L I S A T E U R A P P L I C A T I O N S API Outils Interactif I D A P I Adapteur IDAPI pour DBase Adapteur IDAPI pour SQL*Net Adapteur IDAPI pour ODBC Driver ODBC pour Oracle Driver ODBC pour MSAccess TCP/IP fichiers locaux fichiers locaux Serveur ORACLE
Exemple JDBC -DYD'DWD%DVH&RQQHFWLYLW\ 7 FODVV (PSOR\H ^ SXEOLFVWDWLFYRLG PDLQ6WULQJ DUJV >@ WKURZV 64/([FHSWLRQ &ODVV1RW)RXQG([FHSWLRQ ^ &ODVVIRU1DPH RUDFOHMGEFGULYHU2UDFOH'ULYHU 6WULQJ GEXUO MGEFRUDFOHRFL# &RQQHFWLRQFRQQ 'ULYHU0DQDJHUJHW&RQQHFWLRQGEXUOWRWRSDVVHPRW 6WDWHPHQWVWPW FRQFUHDWH6WDWHPHQW 5HVXOW6HWUV VWPWH[HFXWH4XHU\ 6(/(&7 QXPHPS QDPH VDODU\ )520(03/2<( ZKLOH UVQH[W^ 6WULQJV UVJHW6WULQJIORDW I UVJHW)ORDWVDODU\ LIUVZDV1XOO 6\VWHPRXWSULQWOQ VQDSDVGHVDODLUH HOVH 6\VWHPRXWSULQWOQ VJDJQHI `UVFORVH `FDWFK([FHSWLRQH^ HSULQW6WDFN7UDFH``
8 Embedded SQL Syntaxe plus concise que SQL/CLI Analyse statique Contrôle de la Syntaxe et du Typage Typage curseur dépendant de la Métabase Précompilation : Pro*C d Oracle, JSQL Source PL + ordres SQL imbriqués PréCompilateur E-SQL dans PL Source PL + ordres SQL/CLI imbriqués ou ordres natifs Compilateur PL Exécutable Base MetaBase
Exemple de Curseur en Pro*C 9 EXEC SQL BEGIN DECLARE SECTION; char nom[21]; float salaire; EXEC SQL END DECLARE SECTION;... EXEC SQL DECLARE c CURSOR FOR SELECT name, salary FROM Employe WHERE salary > 10000; EXEC SQL OPEN CURSOR c; while(1) { EXEC SQL FETCH c INTO :nom, :salaire; if(not FOUND) break else printf ("%s gagne %d $\n", nom, salaire); } EXEC SQL CLOSE CURSOR c;
Exemple SQLJ 10 VTO SXEOLF LWHUDWRU,WHU(PS 6WULQJ LQWGpFODUDWLRQG XQHFODVVHG LWpUDWHXU ^,WHU(PSLWHUGpFODUDWLRQG XQREMHW LWpUDWHXU 6WULQJQRPLQW VDOLQWF VTOLWHU ^6(/(&7QDPHVDODU\ )520(PSOR\H ` ZKLOH WUXH^ VTO ^)(7&+LWHU,172QRPVDO` LILWHUHQG)HWFKEUHDN LIF6\VWHPRXWSULQWOQQRPHVWSD\pVDO ` LWHUVHW5RZVHUHSRVLWLRQQHDXSUHPLHUUpVXOWDW ZKLOHLWHUQH[W^VHSRVLWLRQQHVXUOHVUpVXOWDWVHQSRVLWLRQLPSDLUH 6\VWHPRXWSULQWOQ LWHUQDPHHVWSD\pLWHUVDODU\ ` `
11 Motivations PL/SQL Begin For i=1 to 4 End Select... Client SQL SQL SQL SQL Serveur SQL Exécution de la procédure par le serveur BDR Begin For i=1 to 4 End Client SQL/Proc Moteur SQL/Proc Appel de procédure stockée par le serveur Begin Select... call proc End Client RPC Moteur SQL/Proc Procédure Stockée SQL/Proc Serveur SQL Serveur SQL BDR BDR
Exemple de Curseur en PL/SQL 12 CREATE OR REPLACE PROCEDURE augmentationsalaire( seuil INEmploye.salary%TYPE, augmentation IN NUMBER(2) ) AS sal Employe.salary%TYPE; num Employe.numemp%TYPE; &85625F,66(/(&7 VDODU\ QXPHPS )520 (PSOR\H; BEGIN 23(1F; )(7&+F,172VDO QXP; DWWHQWLRQjO RUGUHW\SHVFRPSDWLEOHV WHILE F127)281' LOOP IF sal IS NOT NULL AND sal < seuil THEN UDPATE Employe SET salary = salary*(augmentation + 100.0)/100 WHERE numemp = num; END IF; )(7&+F,172VDO QXP; END LOOP; &/26(F END;
13 Les Déclencheurs SQL (i) Base de Données Active réagit aux changements d état de la base de données Déclencheur = Evénement-Condition-Action Evénement dans la base Condition Déclenchement d une action Trigger SQL Evénement = INSERT, DELETE, UPDATE dans une relation Action = un ou plusieurs ordres SQL, SQL procédural
14 Les Déclencheurs SQL (ii) Pourquoi faire? valider les données entrées créer un audit de la base de données dériver des données additionnelles maintenir des règles d intégrité complexes implanter des règles de métier supporter des alertes (envoi de e-mails par exemple) Gains développement plus rapide les triggers sont stockées dans la base maintien global des règles d intégrité
Exemple de Trigger Ordre 15 Vente(gencod, qte, prix) VolumeAffaire(total,date) CREATE TRIGGER tg_modifvolume AFTER INSERT ON Vente DECLARE s number; BEGIN select sum(prix*qte) into s from Vente; insert into VolumeAffaire value(s,current); END; CREATE TRIGGERtg_modifInterdit AFTER UPDATE OF prix, qte ON Vente BEGIN raise_application_error(-9998, Modification interdite ); END;
16 Exemple de Trigger Ligne Vente(gencod, qte, prix) Stock(gencod, qte) CREATE TRIGGER tg_nouvvente AFTER INSERT ON Vente FOR EACH ROW BEGIN if :new.qte > (select qte fromstock where gencod = :new.gencod) then raise_application_error(-9997, Stock insuffisant ); else update Stock set qte := Stock.qte - :new.qte where gencod = :new.gencod; END;
17 Les concepts objets dans les BD Concepts Orienté Objet Classe, Objet, Méthode Encapsulation, Héritage De nouvelles applications avec des données complexes Médicale, CAO / DAO, SIG Une autre charge de travail reflète l activité de conception Transactions longues Workflow, Coopération
18 les SGBDs Objets Purs (i) Né d un constat SQL inadéquat aux types complexes et au navigationnel Normalisation ODMG : Object Data Management Group Définition d un Modèle de données pivot ODL pour des langages généraux Produits C++, Smalltalk, Java, OQL ObjectStore, O2, GemStone, POET, Niche : applications ciblées Médicale, CAO / DAO, SIG...
Exemple Personne-Employé-Manager 19 Person,6$ Employee ZRUNVLQ HPSOR\HHV Dept,6$ Manager PDQDJHV PDQDJHU
20 Exemple d ODL interface Person{ attribute string name; attribute date_t birthday attribute Addr addr; } int age(); interface Manager : Employee{ attribute int bonus; relationship Dept manages inverse Dept::manager; float salary(); } interface Employee : Person{ attribute int numemp; attribute int basesalary; relationship Dept worksin inverse Dept::employees; float salary(); }
21 Exemple d ODL interface Dept { attribute string name; attribute Addr postaddr; } relationship Set<Employee> employees inverse Employee::worksin relationship Manager manager inverse Manager::manages int allsalaries();
22 Exemple de Requêtes OQL Extent, Collection SELECT HQDPHGDGGUSRVW FROM(PSOR\HHV HHZRUNVLQ G WHERE GQDPH 5 ' Requête imbriquée Groupage SELECT m.name, m.salary() FROM 6(/(&7GPDQDJHU)520 'HSWV GP WHERE m.salary > 1000000 SELECT departement : d.name, massesal : SUM(e.salary) FROM Depts d, d.employees e GROUP BY d.name
23 Le Modèle Objet-Relationnel (i) Extension du modèle relationnel aux concepts objets Définition de User Defined data Type (UDT) Données + Méthodes, Structuration, Héritage, N1NF Values, Références... Normalisation dans SQL 3 Intérêt : Systèmes patrimoniaux (Legacy Systems) Conserve la compatibilité des applications relationnelles Evolutivité douce Structurations plus complexes (i.e. riches) Définition d Object View sur Base Relationnelle
Le Modèle Objet-Relationnel (ii) ([HPSOHGHW\SHDYHFGHVUpIpUHQFHV 24 Déclaration d un UDT CREATE TYPE person_t; CREATE OR REPLACE BODY TYPE person_t ( nom VARCHAR(20), prenom VARCHAR(10), nais DATE, conjoint 5() person_t ); Déclaration d une table CREATE TABLE Person OF person_t (SCOPE FOR conjoint IS Person) ; CREATE TABLE Ami ( ami1 5() person_t, ami2 5() person_t, SCOPE FOR ami1 IS Person, SCOPE FOR ami2 IS Person );
Le Modèle Objet-Relationnel (iii) ([HPSOHGHGpUpIpUHQFLDWLRQ 25 $PL DPL DPL 3HUVRQ QRP SUHQRP QDLV FRQMRLQW Dupont Jean 10/01/69 Dupont Marie 12/09/73 Martin Patrick 27/02/68 NULL Dupuis Pascal 1/04/69 NULL SELECT a.ami2->conjoint->nom FROM Ami a WHERE a.ami1->nom = Martin ; équivalent à SELECT x.nom FROM Ami a, Person x, Person y, Person z WHERE z.nom = Martin AND REF(z)=a.ami1 AND a.ami2=ref(y) AND y.conjoint=ref(x);
26 Les SGBDs Universels Capable de supporter tout type de données Texte plein, Texte semi structuré, Image, Vidéo, Données Spatiales, Séries Temporelles, Empreintes Digitales, Séquences génomiques... Supporter c est Stocker Manipuler Chercher, Comparer, Retrouver Exemples des empreintes digitales similaires select S.Nom, I.AffaireId from Suspects S, Indices I where S.Empreinte Similar I.Empreinte Extension par UDT Objet Relationnel «Data Cartridges» vendus par des tiers
27 les SGBDs Multimédia Type de données multimédia Image, Son, Vidéo, 3D Indexation par le contenu Quel film contient dans la bande sonore la phrase «T as beaux yeux, tu sais!» Données des index : RDF, MPEG7, Stockage et Distribution Temps Réel Vidéo à la Demande (VOD, Near VOD, PreFetch VOD, )
28 Les SGBDs Parallèles Le problème des Systèmes d Information Les entreprises dépendent de l'information à jour disponible à temps. augmentation du volume d'information : 30% par an augmentation du volume des transactions : x 10 dans 5 ans La charge de travail change : simple OLTP (transactionnel) transactions complexes (e.g., comme support au décisionnel) Le Besoin : des serveurs bases de données qui fournissent à haut débit et avec de bons temps de réponse des charges de travail variées sur des très grosses bases de données.
29 les SGBDs Parallèles 3 Capacité accrue Temps de Réponse plus court VSHHGXS Débit élevé de Transactions VFDOHXS 3 3 3 3 3 3 3
30 Speed-up et Scale-up Speed-up Diminution du temps de réponse en augmentant le nombre de nœuds Scale-up Accroissement linéaire de la Charge de Travail
les SGBDs Distribués Fragments et réplicas sur N sites distantes 31
La réplication dans les SGBD 32 Motivations Garantir la disponibilité du Système 5DSSHOH]YRXVGHO LQFHQGLHGX&UpGLW/\RQQDLV Performance pour la localité des accès,pdjlqh]ohwdx[gh79$vxuxqvhxovlwh Modes de Réplication Asymétrique / Symétrique u(i) Secondaire1 u(i) Primaire u1(i) Primaire1 u(i) Secondaire2 u2(i) u1(i) u1(i) u3(i) Primaire2 u3(i) u2(i) Primaire3 u2(i) u3(i)
33 Exemple de réplication Hot Stanby d Oracle u1(i) u2(i) Primaire u2(i)u1(i) u2(i) File persistante u1(i) Secondaire Primaire u2(i) Primaire u3(i) u2(i)u1(i) Primaire u2(i) u1(i) u2(i) Résolution conflit (u2,u3) u3(i) u1(i) u3(i) Secondaire u1(i) u3(i)
Les Systèmes Transactionnels 34 Transaction propriétés ACID Exemple Débit - Crédit Moniteurs Transactionnels 7UDQIHUWFSW$FSW%9^ $ 5($'FSW$ $ $9 :5,7(FSW%% % 5($'FSW% % %9 :5,7(FSW%% ` 7UDQIHUWF'XSRQWF6PLWK F'XSRQW 6*%'3DULV F6PLWK 6*%'1<
les SGBDs Hétérogènes 35 IMS ORACLE SYBASE O2 Buveurs NB Nom Prénom Type Buveurs NB Nom Prénom Type Abus NB NV Date Qte Vins NV Cru Millésime Degré Abus NB NV Date Qte Vins NV Cru Millésime Degré
les Entrepôts de Données 36 Service Commercial %' 3URG Service Financier %' 3URG Clientèle Service Livraison %' 3URG 'DWD :DUHKRXVH Clientèle Historique
37 Benchmark Bases de Données Banc de Performances Mesurer les performances d un système (matériel / logiciel) sous une charge de travail caractérisant une application modèle. Intérêt: Comparer avec d acheter Dimensionner son système en fonction de ses besoins MAIS ATTENTION à l écart entre Application Réelle et Application «Modèle»
38 Résultats attendus d un Benchmark Indicateurs Performance sur un système donnée Nb de Transactions réalisées par seconde Coût du système complet (matériel+logiciel+maintenance) Prix par 1 tps Exemple : le TPC-D Machine Sequent NUMA Q2000 + Base de 300 Go + ORACLE 8 Puissance : 3232,3 TPC (soit 19700 F / tps) + INFORMIX XPS Puissance : 2667,7 TPC (soit 20800 F / tps)
39 TPC (http://www.tpc.org ) Transaction Processing-performance Council corporation de 44 entreprises 6DQ-RVp But: Définir des benchmarks pour des SGBDs pour des Moniteurs Transactionnels 5 benchmarks BD TPC/A et TPC/B Transactionnel (OLTP) TPC/C et Draft TPC/E New Order TPC/D Décisionnel (OLAP) d autres benchmarks TPC-W Web et Commerce Electronique
le Système d Information d une entreprise 40 3&,QWHUIDFHV 26 $SSOLFDWLRQV 1& %DVHVGH'RQQpHV # 1HW3& &RQVROHGH -HX[ 6HW7RS %R[ 3'$ /DGWRS 7pOpSKRQH 0RELOH
Le Futur (i) 41 6L]H US Population Genomic Size Yota 10^24 Zeta 10^21 Exa 10^18 Peta 10^15 Persistency Reliability Querying )XQFWLRQV Structured Semi structured ' DSUqV&&ROOHW No structured 0RGHOV
Le Futur (ii) 42 $UFKLWHFWXUHV Peer To Peer Web Multi Tiers Client-Server Centralized Embedded Memories Disks RAID, Cluster, SMP 0HGLD Multi TR ' DSUqV&&ROOHW Component $SSOLFDWLRQ