You are on page 1of 42

Panorama

des Bases de Donnes

Didier Donsez

8QLYHUVLWp-RVHSK)RXULHU *UHQREOH
,0$,0$*/65$'(/(
'LGLHU'RQVH]#LPDJIU
Didier Donsez, 1998-2002, Panorama des BDs



Le Modle Relationnel
Un modle de donnes
Simple
Relation
(Table)
Tuple (Ligne)
Attribut
(Colonne)

Buveurs

NB

Nom

Abus

NB

NV

Date

Vins

NV

Cru

'LGLHU'RQVH]3DQRUDPDGHV%'V

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

Prnom

Type

Qte

Millsime

Degr



les SGBDs Relationnels


Des produits murs

'LGLHU'RQVH]3DQRUDPDGHV%'V

ORACLE
SYBASE
INFORMIX
IBM DB/2
OPEN INGRES (CA)
MICROSOFT SQL SERVER

Des produits Open Sources

MySQL
PostGres
HyperSonic

Buveurs

NB

Nom

Prnom

Abus

NB

NV

Date

Vins

NV

Cru

Type

Qte

Millsime

Degr



Le modle daccs
aux SGBDs (Relationnels)

Centralis

SGBD

Terminaux passifs
mulation VT
mulation 3270

Client Serveur
PC avec capacit de traitement

ODBC, SQL*Net,

SGBDn
SGBD1

'LGLHU'RQVH]3DQRUDPDGHV%'V

JDBC, ...

Web Multi-Tiers
Navigateur Web
Terminal nomade

HTML/XML/WML
HTTP/WAP

Web
Server
+
Application
Server

ODBC,
JDBC, ...

SGBDn
SGBD1



Programmation Procdurale et SQL


SQL : langage dclaratif
optimisation de la requte par le SGBD

Mais besoin de programme procduraux


boucle, test, affichage, enchainement,
curseur sur une table rsultat
'LGLHU'RQVH]3DQRUDPDGHV%'V

Solutions
Middleware
ODBC, JDBC

Embedded SQL
C, Java

P/SQL



Les Middlewares SQL/CLI


Ordre SQL dans un langage gnral

pas de prcompilation
indpendance aux SGBDs (et autres sources de donnes)

Normalisation SQL/CLI (Call Level Interface)

'LGLHU'RQVH]3DQRUDPDGHV%'V

U
T
I
L
I
S
A
T
E
U
R

Open DataBase Connectivity (MicroSoft) 64/&/,


Java DataBase Connectivity (JavaSoft)
64/&/,
Integrated Database Application Interface (Borland)

ODBC
JDBC
IDAPI
...
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 Driver ODBC
pour Oracle
IDAPI
pour
Driver ODBC
ODBC pour MSAccess

fichiers
locaux

TCP/IP

Serveur
ORACLE

fichiers
locaux



Exemple JDBC

'LGLHU'RQVH]3DQRUDPDGHV%'V

-DYD'DWD%DVH&RQQHFWLYLW\
FODVV (PSOR\H ^
SXEOLFVWDWLFYRLG PDLQ 6WULQJ DUJV >@
WKURZV 64/([FHSWLRQ &ODVV1RW)RXQG([FHSWLRQ ^
&ODVVIRU1DPH RUDFOHMGEFGULYHU2UDFOH'ULYHU 
6WULQJ GEXUO MGEFRUDFOHRFL#
&RQQHFWLRQFRQQ 'ULYHU0DQDJHUJHW&RQQHFWLRQ GEXUOWRWRSDVVHPRW 
6WDWHPHQWVWPW FRQFUHDWH6WDWHPHQW 
5HVXOW6HWUV VWPWH[HFXWH4XHU\
6(/(&7 QXPHPS QDPH VDODU\ )520(03/2<( 
ZKLOH UVQH[W ^
6WULQJV UVJHW6WULQJ  IORDW I UVJHW)ORDW VDODU\ 
6\VWHPRXWSULQWOQ VQ

DSDVGHVDODLUH 
LI UVZDV1XOO
HOVH
6\VWHPRXWSULQWOQ VJDJQHI 
`UVFORVH 
`FDWFK ([FHSWLRQH ^
HSULQW6WDFN7UDFH ``



Embedded SQL
Syntaxe plus concise que SQL/CLI
Analyse statique
Contrle de la Syntaxe et du Typage
Typage curseur dpendant de la Mtabase

'LGLHU'RQVH]3DQRUDPDGHV%'V

Prcompilation : Pro*C d Oracle, JSQL


Source
PL
+
ordres SQL
imbriqus

PrCompilateur
E-SQL dans PL

Source
PL
+
ordres SQL/CLI
imbriqus
ou ordres natifs

Compilateur
PL

Excutable

Base
MetaBase



'LGLHU'RQVH]3DQRUDPDGHV%'V

Exemple de Curseur en Pro*C


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;



10

'LGLHU'RQVH]3DQRUDPDGHV%'V

Exemple SQLJ
VTO SXEOLF LWHUDWRU,WHU(PS 6WULQJ LQW GpFODUDWLRQG XQHFODVVHG LWpUDWHXU
^
,WHU(PSLWHUGpFODUDWLRQG XQREMHW LWpUDWHXU
6WULQJQRPLQW VDOLQWF 
VTOLWHU ^6(/(&7QDPHVDODU\ )520(PSOR\H `
ZKLOH WUXH ^
VTO ^)(7&+LWHU ,172QRPVDO`
LI LWHUHQG)HWFK EUHDN
LI F 6\VWHPRXWSULQWOQ QRPHVWSD\pVDO 
`
LWHUVHW5RZ  VHUHSRVLWLRQQHDXSUHPLHUUpVXOWDW
ZKLOH LWHUQH[W  ^VHSRVLWLRQQHVXUOHVUpVXOWDWVHQSRVLWLRQLPSDLUH
6\VWHPRXWSULQWOQ LWHUQDPH HVWSD\pLWHUVDODU\  
`
`



11

Motivations PL/SQL

Begin
For i=1 to 4
Select ...
End

Client

SQL
SQL
SQL
SQL

Serveur
SQL

BDR

'LGLHU'RQVH]3DQRUDPDGHV%'V

Excution de la procdure par le serveur


Begin
For i=1 to 4
Select ...
End

Client

SQL/Proc

Moteur

SQL/Proc

Serveur
SQL

BDR

Appel de procdure stocke par le serveur


Begin
call proc
End

Client

RPC

Moteur

SQL/Proc
Procdure
Stocke
SQL/Proc

Serveur
SQL

BDR



12

'LGLHU'RQVH]3DQRUDPDGHV%'V

Exemple de Curseur en PL/SQL


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;
 DWWHQWLRQjORUGUHW\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 Dclencheurs SQL (i)


Base de Donnes Active
ragit aux changements d tat de la base de donnes

'LGLHU'RQVH]3DQRUDPDGHV%'V

Dclencheur = Evnement-Condition-Action
Evnement dans la base
Condition
Dclenchement d une action

Trigger SQL
Evnement
= INSERT, DELETE, UPDATE dans une relation
Action = un ou plusieurs ordres SQL, SQL procdural



14

Les Dclencheurs SQL (ii)

'LGLHU'RQVH]3DQRUDPDGHV%'V

Pourquoi faire ?

valider les donnes entres


crer un audit de la base de donnes
driver des donnes additionnelles
maintenir des rgles d intgrit complexes
implanter des rgles de mtier
supporter des alertes (envoi de e-mails par exemple)

Gains
dveloppement plus rapide
les triggers sont stockes dans la base

maintien global des rgles d intgrit



15

Exemple de Trigger Ordre

'LGLHU'RQVH]3DQRUDPDGHV%'V

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

'LGLHU'RQVH]3DQRUDPDGHV%'V

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, Mthode
Encapsulation, Hritage

De nouvelles applications
avec des donnes complexes
'LGLHU'RQVH]3DQRUDPDGHV%'V

Mdicale, CAO / DAO, SIG

Une autre charge de travail


reflte l activit de conception
Transactions longues
Workflow, Coopration



18

les SGBDs Objets Purs (i)


N d un constat
SQL inadquat aux types complexes et au navigationnel

Normalisation ODMG : Object Data Management Group


Dfinition d un Modle de donnes pivot
ODL

'LGLHU'RQVH]3DQRUDPDGHV%'V

pour des langages gnraux


C++, Smalltalk, Java, OQL

Produits
ObjectStore, O2, GemStone, POET,

Niche : applications cibles


Mdicale, CAO / DAO, SIG ...



19

Exemple
Personne-Employ-Manager
Person
,6$

'LGLHU'RQVH]3DQRUDPDGHV%'V

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;

'LGLHU'RQVH]3DQRUDPDGHV%'V

int age();

interface Employee : Person {


attribute int numemp;
attribute int basesalary;
relationship Dept worksin
inverse Dept::employees;
float salary();
}

interface Manager : Employee {


attribute int bonus;
relationship Dept manages
inverse Dept::manager;
float salary();
}



21

Exemple d ODL

'LGLHU'RQVH]3DQRUDPDGHV%'V

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 Requtes OQL


Extent, Collection

SELECT HQDPHGDGGUSRVW
FROM(PSOR\HHV HHZRUNVLQ G
WHERE GQDPH 5 '

'LGLHU'RQVH]3DQRUDPDGHV%'V

Requte imbrique
SELECT m.name, m.salary()
FROM 6(/(&7GPDQDJHU)520 'HSWV G P
WHERE m.salary > 1000000

Groupage
SELECT departement : d.name, massesal : SUM(e.salary)
FROM Depts d, d.employees e
GROUP BY d.name



23

Le Modle Objet-Relationnel (i)


Extension du modle relationnel aux concepts objets
Dfinition de User Defined data Type (UDT)
Donnes + Mthodes, Structuration, Hritage,
N1NF Values, Rfrences ...

'LGLHU'RQVH]3DQRUDPDGHV%'V

Normalisation dans SQL 3


Intrt :
Systmes patrimoniaux (Legacy Systems)
Conserve la compatibilit des applications relationnelles

Evolutivit douce
Structurations plus complexes (i.e. riches)
Dfinition d Object View sur Base Relationnelle



Le Modle Objet-Relationnel (ii)

([HPSOHGHW\SHDYHFGHVUpIpUHQFHV
Dclaration d un UDT

CREATE TYPE person_t;


CREATE OR REPLACE BODY TYPE person_t (
nom VARCHAR(20), prenom VARCHAR(10), nais DATE,
person_t
conjoint
5()
);

'LGLHU'RQVH]3DQRUDPDGHV%'V

Dclaration d une table

CREATE TABLE Person OF person_t


(SCOPE FOR conjoint IS Person) ;
CREATE TABLE Ami (
person_t,
ami1
5()
person_t,
ami2
5()
SCOPE FOR ami1 IS Person,
SCOPE FOR ami2 IS Person
);

24



25

Le Modle Objet-Relationnel (iii)


([HPSOHGHGpUpIpUHQFLDWLRQ
$PL

DPL

DPL

3HUVRQ

QRP SUHQRP

Dupont
Dupont
Martin
Dupuis

Jean
Marie
Patrick
Pascal

QDLV

10/01/69
12/09/73
27/02/68
1/04/69

FRQMRLQW
NULL
NULL

'LGLHU'RQVH]3DQRUDPDGHV%'V

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 donnes
Texte plein, Texte semi structur, Image, Vido, Donnes Spatiales, Sries
Temporelles, Empreintes Digitales, Squences gnomiques ...

Supporter c est

'LGLHU'RQVH]3DQRUDPDGHV%'V

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 Multimdia


Type de donnes multimdia
Image, Son, Vido, 3D

Indexation par le contenu

'LGLHU'RQVH]3DQRUDPDGHV%'V

Quel film contient dans la bande sonore


la phrase T as beaux yeux, tu sais !
Donnes des index : RDF, MPEG7,

Stockage et Distribution Temps Rel


Vido la Demande (VOD, Near VOD, PreFetch VOD, )



28

Les SGBDs Parallles


Le problme des Systmes d Information
Les entreprises dpendent de l'
information jour disponible
temps.
augmentation du volume d'
information : 30% par an
augmentation du volume des transactions : x 10 dans 5 ans

'LGLHU'RQVH]3DQRUDPDGHV%'V

La charge de travail change :


simple OLTP (transactionnel)
transactions complexes (e.g., comme support au dcisionnel)

Le Besoin :
des serveurs bases de donnes qui fournissent haut dbit et
avec de bons temps de rponse des charges de travail varies
sur des trs grosses bases de donnes.



29

les SGBDs Parallles

Capacit accrue
Temps de Rponse plus court
VSHHGXS

Dbit lev de Transactions

'LGLHU'RQVH]3DQRUDPDGHV%'V

VFDOHXS



30

Speed-up et Scale-up
Speed-up

'LGLHU'RQVH]3DQRUDPDGHV%'V

Diminution du temps de
rponse en augmentant
le nombre de nuds

Scale-up
Accroissement linaire
de la Charge de Travail



les SGBDs Distribus

'LGLHU'RQVH]3DQRUDPDGHV%'V

Fragments et rplicas sur N sites distantes

31



32

La rplication dans les SGBD


Motivations
Garantir la disponibilit du Systme

5DSSHOH]YRXVGHO LQFHQGLHGX&UpGLW/\RQQDLV

Performance pour la localit des accs

,PDJLQH]OHWDX[GH79$VXUXQVHXOVLWH

'LGLHU'RQVH]3DQRUDPDGHV%'V

Modes de Rplication
Asymtrique / Symtrique
u(i)
u(i)

Primaire

u(i)

Secondaire1
u1(i)
Secondaire2

u2(i) Primaire2
u1(i)
u3(i) u2(i)
Primaire1
u1(i)
u3(i) Primaire3

u2(i)

u3(i)



33

Exemple de rplication
Hot Stanby d Oracle
u1(i)
u2(i)

Primaire

u1(i)

Secondaire

File
u2(i) u1(i) persistante

Primaire
'LGLHU'RQVH]3DQRUDPDGHV%'V

u2(i)

u2(i)

Primaire

u2(i) u1(i)

Primaire
u2(i) u1(i)

u1(i) u3(i)
u2(i)
u3(i)
Rsolution
conflit (u2,u3)

Secondaire
u1(i) u3(i)

u3(i)



34

Les Systmes Transactionnels


Transaction
proprits ACID

'LGLHU'RQVH]3DQRUDPDGHV%'V

Exemple Dbit - Crdit


Moniteurs Transactionnels

7UDQIHUW FSW$FSW%9 ^
$ 5($' FSW$ 
$ $9
:5,7( FSW%% 
% 5($' FSW% 
% %9
:5,7( FSW%% 
`

F'XSRQW 6*%'3DULV


7UDQIHUW F'XSRQWF6PLWK 


6*%'1<
F6PLWK




35

les SGBDs Htrognes

IMS

ORACLE

'LGLHU'RQVH]3DQRUDPDGHV%'V

Buveurs NB

Abus

Nom

Prnom

NB

NV

Date

Vins

NV

Cru

Type

Qte

Millsime Degr

SYBASE
Buveurs NB

Abus

Nom

Prnom

NB

NV

Date

Vins

NV

Cru

Type

Qte

Millsime Degr

O2



36

les Entrepts de Donnes

Service
Commercial
%' 3URG

Service
Financier
%' 3URG

Service
Livraison
%' 3URG

'DWD :DUHKRXVH
Clientle

Historique

'LGLHU'RQVH]3DQRUDPDGHV%'V

Clientle



37

Benchmark Bases de Donnes


Banc de Performances
Mesurer les performances dun systme (matriel / logiciel)
sous une charge de travail caractrisant une application
modle.

'LGLHU'RQVH]3DQRUDPDGHV%'V

Intrt:
Comparer avec dacheter
Dimensionner son systme en fonction de ses besoins
MAIS ATTENTION l cart entre
Application Relle et Application Modle



38

Rsultats attendus d un Benchmark


Indicateurs
Performance sur un systme donne
Nb de Transactions ralises par seconde

Cot du systme complet (matriel+logiciel+maintenance)

'LGLHU'RQVH]3DQRUDPDGHV%'V

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)



TPC (http://www.tpc.org )

Transaction Processing-performance Council

corporation de 44 entreprises 6DQ-RVp


But: Dfinir des benchmarks
pour des SGBDs
pour des Moniteurs Transactionnels

'LGLHU'RQVH]3DQRUDPDGHV%'V

5 benchmarks BD
TPC/A et TPC/B
Transactionnel (OLTP)
TPC/C et Draft TPC/E New Order
TPC/D
Dcisionnel (OLAP)

d autres benchmarks
TPC-W

Web et Commerce Electronique

39



40

le Systme dInformation
dune entreprise
,QWHUIDFHV 26

3&

1&

$SSOLFDWLRQV

'LGLHU'RQVH]3DQRUDPDGHV%'V

%DVHVGH'RQQpHV
1HW

3&

#
/DG

&RQVROHGH
-HX[

6HW7RS
%R[

3'$

WRS

7pOpSKRQH
0RELOH



41

Le Futur (i)
6L]H
US Population
Genomic Size

Yota 10^24
Zeta 10^21
Exa 10^18

'LGLHU'RQVH]3DQRUDPDGHV%'V

Peta 10^15

Persistency
Reliability
Querying
)XQFWLRQV

Structured
Semi structured
No structured
0RGHOV
'DSUqV&&ROOHW



42

Le Futur (ii)
$UFKLWHFWXUHV
Peer To Peer
Web Multi Tiers
Client-Server

'LGLHU'RQVH]3DQRUDPDGHV%'V

Centralized

Embedded Memories
Disks
RAID, Cluster, SMP
0HGLD

Multi
TR
Component
$SSOLFDWLRQ
'DSUqV&&ROOHW

You might also like