1 Manipulations multibases et distribuées Partie 3 Witold Litwin Witold.Litwin@
1 Manipulations multibases et distribuées Partie 3 Witold Litwin Witold.Litwin@dauphine.fr 2 Transactions Contrôle de concurrence et de consistence: En présence d'autonomie En absence de contrôle centralisé (global) 3 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 4 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 5 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é 6 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) 7 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 critère naturel et le plus populaire 8 Cas MBD Architecture de référence TM TM TM TM Apps locales Apps locales App MDB 9 Cas MBD Architecture de référence TM TM TM TM Apps locales Apps locales App MDB Transaction Sous- transact. Sous- transact. Sous- transact. 10 Cas MBD Architecture de référence TM TM TM TM Apps locales Apps locales App MDB Coordinateur Participant Participant Participant 11 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 ? 12 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) 13 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 14 2-PC Le coordinateur envoie les N sous- transactions et attend N messages EOTs (end-of-transaction) Alors, il envoie N messages Vote Chaque participant journalise sa sous- transaction et si tout est OK, alors envoie le message RTC (ready-to- commit) Si N messages RTC sont reçus, alors le coordinateur envoie le message Commit 15 Avantages Atomicité garantie Simplicité Problèmes Blocage (2-PC) A quel moment ?? Nombre de messages échangées Protocoles de terminaison 16 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é 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. 17 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) 18 T31 T28 20 W31(C) W28 (A) 28 31 W31 (B) Site 1 Site 2 t 19 T31 T28 20 W31(C) W31(A) W28 (A) 28 31 W31 (B) Site 1 Site 2 t 20 T31 T28 20 W31(C) W31(A) W28 (A) 28 C28 31 C31 W31 (B) Site 1 Site 2 t 21 T31 T28 20 W31(C) W31(A) W28 (A) 28 C28 31 C31 W28 (B) W31 (B) Site 1 Site 2 t 22 T31 T28 20 W31(C) W31(A) W28 (A) 28 C28 31 C31 W28 (B) W31 (B) A31 C28 C31 Site 1 Site 2 t 23 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" 24 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 25 ODBC Origines ISO - RDA Intl. Standard Org. Remote Database Access Protocol commencé vers 1988 Draft Intl. Standard depuis 1991 26 ODBC Origines SQL-Access ISO - RDA SQL - Access Group Consortium Privé de 40 Comp. Crée sous l'impulsion de J. Gray en 1989 27 ODBC Origines ODBC SQL-Access ISO - RDA Microsoft coup de poing sur la table 28 ODBC Architecture Programme d'application Gestionnaire de Drivers Driver Driver Driver Btrieve Excell Sybase Interface ODBC Single Tier Driver Multiple Tier Driver Driver Passerelle DB2 Passerelle MicroDécision Systems 29 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 driver (Bull) – ORACLE, INFORMIX, INGRES, DB2, RDB... Contacte Microsoft pour la liste à jour 30 ODBC L'interface – offre l'API unique aux applications » connections » gestion de mémoires » ordres SQL 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 31 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 32 ODBC Niveaux de conformité Fonctions offertes par un driver – API » Core Tout le driver » Level1 » Level2 – SQL » Minimum Tout le driver » Core » Extended 33 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 34 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 erreur » SQLError 35 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 36 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 37 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 38 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 39 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 40 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 de données – DECIMAL, NUMERIC, SMALLINT, INTEGER, REAL, FLOAT, DOUBLE PRECISION 41 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, uploads/Finance/ mbd3-97.pdf
Documents similaires
-
13
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Fev 17, 2022
- Catégorie Business / Finance
- Langue French
- Taille du fichier 0.4554MB