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