transact.

publicité
Manipulations multibases et
distribuées
Partie 3
Witold Litwin
[email protected]
1
Transactions
Contrôle de concurrence et de consistence:
En présence d'autonomie
En absence de contrôle centralisé (global)
2
Transactions ACID
 Opérations
atomiques inexprimables avec
une requête relationnelle.
– Exécutées entièrement ou pas du tout
 Préservant
la consistance de la BD
 comme si l'usager était isolé sur la BD
 A effet durable sur la BD, une fois
terminées comme prévu
3
Primitives de gestion de transactions
 BEGIN,
COMMIT, ROLLBACK
BEGIN TRANSACTION
UPDATE Compte1
Val = Val -100
IF SQLCODE <> 0 ROLLBACK ; EXIT ;
UPDATE Compte2
Val = Val + 100
IF SQLCODE <> 0 ROLLBACK ; EXIT;
COMMIT
4
Concurrence
 Les
BDs étant partagées, les transactions
pourraient être exécutées:
– l'une après l'autre
– simultanément
» meilleures performances
» possibilités d'inconsistances dans la base
 Théorie
de concurrence analyse les
problèmes d'accès simultané
5
Verrou mortel
 Les
transactions s'attendent mutuellement
(deadlock)
 Solution typique:
– avorter une de transactions (la victime)
– le choix est fait par le gestionnaire des verrous
(lock manager)
6
Les exécutions correctes
 Sérialisabilité
Les exécutions concurrentes sont correctes ssi
leur résultat est équivalent à celui d'une
exécution sérielle
 Le
7
critère naturel et le plus populaire
Cas MBD
Architecture de référence
App
MDB
TM
Apps
locales
Apps
locales
TM
8
TM
TM
Cas MBD
Architecture de référence
App
MDB
Transaction
TM
Apps
locales
Apps
locales
SousTM
transact.
9
SousTM
transact.
SousTM
transact.
Cas MBD
Architecture de référence
App
MDB
Coordinateur
TM
Apps
locales
Apps
locales
Participant
TM
10
Participant
TM
TM
Participant
Quelles transactions ??
Critères de réference :
Sérialisabilité ?
ACID ?
Temps global ?

Problème nouveau.
Si à l'exécution d'une transaction T
- certaines sous-transactions commettent
- une ou plus avortent
alors l'exécution de T est-elle correcte ou pas ?
11
Quelles transactions ??
Réponse industrielle actuelle
 Pas correcte
Il faut le modèle ACID

Solutions techniques
Vérouillage à deux phases (2-phase
locking)
Committement à deux phases (2-phase
commit)
Base de temps global (DCE)

12
Verrouillage à deux phases (2PL)
1-ère phase : tous les verrouillages
2-ème phase : tous les déverrouillages
2-ème phase est le +souvent après le
commit (strict 2-PL). Pourquoi ?
Problème:
Verrou mortel (2-PL)
Mal adapté aux transactions longues
13
2-PC
Le coordinateur envoie les N soustransactions et attend N messages EOTs
(end-of-transaction)
Alors, il envoie N messages Vote
Chaque participant journalise sa soustransaction et si tout est OK, alors
envoie le message RTC (ready-tocommit)
Si N messages RTC sont reçus, alors le
coordinateur envoie le message Commit
14
Avantages
Atomicité garantie
Simplicité

Problèmes
Blocage (2-PC)
A quel moment ??
Nombre de messages échangées
Protocoles de terminaison
15
Solutions
Nouveaux modèles de transaction (non-ACID) et
notamment:
 Compensation & transactions flexibles
 Dates de valeur
Toute transaction T est munie d'une date de valeur V
(par l'application ou le système)
quand la date V arrive, la transaction doit être terminée
sinon elle est avortée par le système
Règle de priorité
16
toute T estampille toute donnée D utilisée avec V.
dans le cas d'un conflit d'accès à D, la priorité va à T
avec V minimal.
 si une transaction T2 avec V2 > V avait déjà
estampillé D, alors T2 est localement avortée
et attend la fin de T.

 Propriétés intéressantes:
 Jamais de verrou mortel
 Possibilité de commitement implicite, sans
blocage, et sans messages, à la date de valeur
 Approche bien adapté également au BDs
temps-réel
 Problème pratique principal
 Comment déterminer les dates de valeur
 Evitement de "livelock" (une transaction
toujours avortée et relancée)
17
Site 1
Site 2
T28
T31
20
W31(C)
W28 (A)
28
31
t
18
W31 (B)
Site 1
Site 2
T28
T31
20
W31(C)
W31(A)
28
31
t
19
W28 (A)
W31 (B)
Site 1
Site 2
T28
T31
20
W31(C)
W31(A)
28
C28
C31
31
t
20
W28 (A)
W31 (B)
Site 1
Site 2
T28
T31
20
W31(C)
W31(A)
W28 (A)
W31 (B)
W28 (B)
28
C28
C31
31
t
21
Site 1
Site 2
T28
T31
20
W31(C)
W31(A)
W28 (A)
W31 (B)
A31
28
C28
C31
31
t
22
W28 (B)
C28
C31
Protocoles & standards
d'intéroperabilité MBD
La seule voie pour la coopération des SGBD
 ODBC (Open Database Connectivity) standard
interface, & protocole

– bits et octets encodent :
»
»
»
»
ordres SQL & tables résultats de ceux-ci
ordre de gestion de connections et d'exécution répartie
Locking & 1PC
API à 2 niveaux, jusque-là
"Middleware" supporté par pratiquement tous
les producteurs de SGBD ou de "front-ends"
23
Protocoles & standards MBD
Industriels autres que ODBC
 Data Access
Language (DAL)
– Disponible sur Apples depuis 1989
» un dialecte de SQL
 Distributed
Relational Database Access
(DRDA)
– IBM, une partie de System Application Arch.
(SAA)
 EDA-SQL
– Inf. Builders ; un dialecte de SQL et une API
24
ODBC
Origines
ISO - RDA
Intl. Standard Org. Remote
Database Access Protocol
commencé vers 1988
Draft Intl. Standard depuis
1991
25
ODBC
SQL - Access Group
Consortium Privé de
40 Comp.
Crée sous l'impulsion
de J. Gray en 1989
Origines
SQL-Access
ISO - RDA
26
ODBC
Origines
Microsoft
coup de poing
sur la table
ODBC
SQL-Access
ISO - RDA
27
ODBC Architecture
Programme d'application
Interface ODBC
Gestionnaire de Drivers
Driver Driver
Driver Driver
Single Tier
Driver
Btrieve
Passerelle
Multiple Tier
Driver
Excell
DB2
Sybase
Passerelle
MicroDécision
Systems
28
ODBC : quelques drivers
HP : ALLBASE/SQL
 CA : IDMS, DATACOM, VSAM, DL/1, TOTAL...
 CrossAccess ; IMS, VSAM, IDMS, RMS...
 IBM : DB2
 DBA ODBC driver (Siemens-Nixdorf)

– INFORMIX, ORACLE, INGRES, SESAM/SQL,
UDS/SQL...
 DDA/ODBC

29
driver (Bull)
– ORACLE, INFORMIX, INGRES, DB2, RDB...
Contacte Microsoft pour la liste à jour
ODBC

L'interface
– offre l'API unique aux applications
» connections
» gestion de mémoires
» ordres SQL

30
Le gestionnaire de drivers
– charge le driver approprié
– passe les ordres de connection et de SQL
– récupère les résultats en format ODBC
ODBC
 Le
driver
– traduit les ordres SQL & API vers ceux de la source de
données
» décompose SQL

Single-tier
» passe SQL à la source

multiple-tier
– SQL ODBC traduit
– SQL non-ODBC non-traduit ("pass through")
– traduit le format de données
» à l'envoi
» au retour
– traduit les codes d'erreur vers ceux standard
31
ODBC
Niveaux de conformité
 Fonctions
offertes par un driver
– API
» Core

Tout le driver
» Level1
» Level2
– SQL
» Minimum

32
Tout le driver
» Core
» Extended
ODBC
Fonctions de Core API

Alloue et libère
– environnement, connections et "handles"
» SQLAllocEnv, SQLAllocConnect, SQLAllocStmt
» SQLFreeStmt, SQLFreeConnect, SQLFreeEnv

– fonctions à executer avant toute connection
Connecte au sources de données et déconnecte
» SQLConnect, SQLDisconnect

Prépare et exécute ordres SQL
» SQLPrepare, SQLExecute, SQLExecDirect, SQLCancel,
SQLGetCursorName, SQLSetCursorName

Alloue mémoire pour les paramètres et résultats de SQL
» SQLBindCol
33
ODBC
Fonctions de Core API

Trouve des données dans le résultat
» SQLFetch

Trouve les metadonnées du résultat
» SQLRowCount, SQLNumResultsCols, SQLDescribeCol,
SQLColAttributes

Commit et rollback
» SQLTransact
 Gère les codes
» SQLError
34
erreur
ODBC
Fonctions Level1 API

Fonctions de Core API avec un ordre suppl.
» SQLBindParameter (prép. des ordres SQL)

Connections avec les boites de dialogue
– spécifiques aux drivers
» SQLDriverConnect

Requêtes aux metadonnées de la connection et de l'ordre en
cours
» SQLSetConnectOption, SQLGetConnectOption
» SQLSetStatementOption, SQLGetStatementOption

Envoie d'une partie de paramètres de l'ordre ou du résultat
– utile pour des données longues
» SQLPutData, SQLParamData, SQLGetData
35
ODBC
Fonctions Level1 API

Requêtes au catalogues des attributs, tables et stats
» SQLColumns, SQLSpecialColumns,
SQLStatistics,SQLTables,

Requêtes aux metadonnées du driver et de la source de
données
– types de données supportés, fonctions aggr., niveau de conformité
ODBC...
» SQLGetInfo, SQLGetFunctions,SQLGetTypeInfo
36
ODBC
Fonctions Level2 API


Level1
"Browsing" de l'info sur la connection et les sources
disponibles
» SQLBrowseConnect, SQLDataSources, SQLDrivers

Envoi des tables ("arrays") de valeurs de paramètres
» SQLParamOptions

"Browsing" de l'info sur les paramètres et résultats
– le nombre et les param. individuels
» SQLDescribeParam, SQLNumParams, SQLMoreResults

Gère les curseurs "scrolable"
» , SQLSetScrollOptions, SQLSetPos, SQLExtendFetch
37
ODBC
Fonctions Level2 API

Laisse-passer un dialecte de SQL
– ordres spécifiques de la source de données

» SQLNativeSql
Requêtes aux catalogues SQL
– privilèges, clés, procédures...
» SQLForeignKeys, SQLPrimaryKeys,
SQLProcedureColumns,SQLProcedures,
SQLTablePriviledges

Appel du traducteur DLL
» SQLDriverToDataSource, SQLDataSourceToDriver
38
ODBC
SQL : Niveau Grammaire Minimale
 CREATE
TABLE, DROP TABLE
 Simple SELECT, INSERT, UPDATE
SEARCHED, DELETE SEARCHED
 Expressions simples
– (A > B+C)
 Types
de données
– CHAR, VARCHAR, LONG VARCHAR
39
ODBC
SQL : Niveau Grammaire Core
 Grammaire
Minimale
 DDL
– ALTER TABLE, CREATE INDEX, DROP
INDEX, CREATE VIEW, DROP VIEW,
GRANT & REVOKE
 DML
– SELECT entier
» sous-requêtes et fonctions agrégats de SQL Access
 Types
40
de données
– DECIMAL, NUMERIC, SMALLINT, INTEGER,
REAL, FLOAT, DOUBLE PRECISION
ODBC
SQL : Niveau Grammaire Etendue
 Grammaire
Minimale
 DML
–
–
–
–
outer joins,
UPDATE, DELETE positionnées
SELECT FOR UPDATE
Unions
 Types
de données
BIT, TINYINT, BIGINT, BINARY, VARBINARY,
LONG VARBINARY, DATE, TIME, TIMESTAMP
41
ODBC
Conception d'un driver

Les fonctions de ODBC (API & SQL) sont prises
en charge
– par le Gestionnaire
– par le driver
» surtout la conversion de SQL et de représentation de données
Les drivers ne sont pas en principe fournis par
Microsoft
 Plusieurs vendeurs peuvent proposer un driver
vers une même source, p.e. Sybase

42
ODBC
Conception d'un driver
 Les
drivers vers une même source peuvent différer en
– niveau de conformité
– performances
 les différences en performances peuvent résulter de
– stratégie de réception de tuples
» sur demande ou "read-ahead"
» existence et taille du cache

pour "read-ahead" ou une copie d'une table
– optimisation locale de requêtes
» jointures internes et externes
43
ODBC
Limitations de V2
 Une
connection per SGBD
– mais une application peut ouvrir plusieurs connections
simultanément
 Ordres
SQL-ODBC sont monobase
– sauf les "passe-through" vers un SGMB
 Requêtes
MBD doivent être décomposées par le
système local
– l'idée peu performante
» connections multiples
» jointures MBD
44
 Absence
de 2PC
ODBC
Pour en savoir +
 ODBC
2.0
Programmer's
Reference and SDK
Guide. Microsoft
Press, 900. $25
 Geiger, K. Inside
ODBC.Microsoft
Press, 482 & CDROM. $39.95
45
Autres protocoles notables
 OLE
& DDE
– de Microsoft
– Permettent d'échanger les données entre un
SGBD et les applications externes
» tableur, traitement de texte, gestionnaire d'images
 CORBA
– tentative de standard multicompagnie
– orienté l'échange distribué des objets
46
DCE
 Distributed
Computing Environment
 Un ensemble de services supportes par les
principaux constructeurs
 Tout particulièrement
– SGF distribué
– Les serveurs de temps unique
 DCE
47
sera probablement largement appliqué
DCE
Reference Architecture
File service
Time Directory Security
service
service
service
RPC &
authentication
DCE
Threads
Host Operating system
and networking
Hardware
48
DCE
Reference Architecture
 Les
DCE services s'utilisent en interne
– Directory Service (DS) utilise RPC pour la
communication entre les serveurs
– RPC utilise DS pour connaître la destination d'un
appel
– Time Service (TS) utilise les Security Service (SS)
pour déterminer qui peut régler une horloge
– SS utilise TS pour donner les permissions à courte
terme ("short life-time tickets")
49
DCE
Reference Architecture

Les machines, usagers, fichiers
et autres ressources sont
groupés en "Cells" selon
– But fonctionnel
– Sécurité
– Performance
Ordinateur
Chaussure
» Géographie
– Administration
» choix de Cell Administrator

50
Cell peut correspondre à une
multibase
Cellules organisées
par produit
DCE
Distributed Time Service
 Maintient
la synchronisation des horloges
 Basé sur les Time Servers qui veuillent sur
– la synchronisation mutuelle des horloges
– la synchronisation avec le temps réel

Offre 33 fonctions (library calls) aux applications
 Le
modèle de temps
– temps à intervalle
» quelle heure est-il ?

entre 9:30 et 9:31
– représenté sur 64 bits
– pas d'ordre total
51
» problème pour les dates de valeur
DCE
Indic. d'imprécision
Erreur max (en sec.)
Diff. / GMT
Mois
Jour
Heure
Min.
Sec, (préc. de 1 msec.
Année
Distributed Time Format
1995 -11 -02-14:23:43.123 - 01:00 I 003.600
International Standard 8601 pour
Universal Coordinated Time (UTC)
52
DCE
Time Adjustement Algorithm
 Time
Clerks (TC)
– démons sur les machines-client
 Time
Servers (TS)
– démons en charge de gérer la base de UTC
» locaux (dans les Cells)
» globaux

53
avec peut-être une interface vers les sources exterieures
de UTC
– ondes hertziennes diffusées dans les pays industriels
DCE
Time Clerk Synchronization
 Contacte
tous les TS sur le
LAN ou dans la Cell
 Delete toute réponse sans
intersection avec une autre
 Calcule l'intersection max du
reste
 Prend la valeur du milieu
comme nouveau UTC
 Fait une correction graduelle
UTC1
UTC2
UTC3
UTC4
UTC
» p.e. < 5 msec. par tick d'horloge
54
UTC client
DCE
Directory Service

Deux types de répertoires &
services
– Cell Directory Service (CDS)
– Global Directory Service (GDS)
Cell
CDS
GDA
DNS
» schéma de nommage X500

Services auxiliaires
– Domain Name System (DNS)
» utilisé par GDS
 schéma de nommage Internet
– Global Directory Agent
» utilisé par CDS pour localiser les noms
55
Cell
GDA
CDS
GDS
DCE
File Service
 Deux
partie conceptuelles
– FMS local sur chaque noeud
» dit Episode
» une modernisation de FMS de Unix
– FMS global
» extension de AFS
» indépendance de localisation dans une Cell
» duplication possible d'un fichier entre les Cells
» nommage DCE
» notion de client et de serveur
56
DCE
Security Service
 Composantes
– Authentication Server (AS)
» donne des tickets
– Privilege Server (PS)
» issue des privilèges d'accès et
d'execution

Privilege Attribute Certificates
» exigés pour execs. RPC
– Login Server (LS)
» gère les connections et vérifie les
tickets et les privilèges
57
AS
1
PS
2
DCE
Client
3
LS
DCE
Pour en savoir +
 Tanenbaum, A.
Distributed
Operating Systems.
Prentice Hall, 1994,
614. $57
58
Conclusion
 Manipulations
multibases - parmi les plus
importantes directions R & D dans les
SGBDs
 Autres mots-clés:
– Interopérabilité
– Intégration
– Bases Réparties Hétérogènes
 Encore
59
beaucoup à apprendre et à faire
Exercices


Voir tous ceux déjà dans le texte
Est-ce que cette requête est une transaction ACID ?
Use Banks vital cic
Update cl*
set street = 'Charles de Gaulle"
where street = 'Etoile‘

Proposez un exemple de requête multibase où le modèle ACID convient et un il il ne convient pas

En quoi consiste le blocage d’un participant au 2PC ?

A quoi sert un protocole de terminaison si on ajoute un au 2PC standard ?

Proposez un protocole de terminaison
 Prouvez qu’il n’y a pas de protocole de terminaison qui éviterait à coup sûr le blocage d’un
participant.

Prouvez que le protocole de dates de valeur est libre de verrou mortel.

A quoi sert ODBC ?

L’utilité de fonctions API par rapport aux celles dites SQL de ODBC

Comment pourrait-on appeler autrement les drivers CrossAccess ?

Comment la DCE gère la base de temps globale ?
60
FIN
Téléchargement