590 likes | 744 Views
DATA BASE forum. Les standards des SGBD du Futur (survol). Prof Serge Miranda Juin 2005. Un peu de PUB…. Plan. Les quadrants de Stonebraker Présentaion de SQL3 et ODMG su un exemple Bilan synthétique. Police. Nom. Adresse. Conducteurs. Accidents. Age. Conducteur.
E N D
DATABASE forum Les standards des SGBD du Futur(survol) Prof Serge Miranda Juin 2005
Plan • Les quadrants de Stonebraker • Présentaion de SQL3 et ODMG su un exemple • Bilan synthétique
Police Nom Adresse Conducteurs Accidents Age Conducteur Accident Rapport Photo 24 Paul Paris Paul 45 134 Robert 17 219 037 Table ? Objet ? Exemple de table et objet (Oracle)
Faiblesses du modèle relationnel • Opérations séparées des données • procédures stockées non intégrées DM • absence d'attributs cachés • Support de domaines atomiques • 1ère forme normale de Codd • inadapté aux objets complexes • (documents structurés) • introduction des BLOB…. • Mauvais support des applications • non gestion :CAO, CFAO, BD Géographiques,BD techniques
Modèle OR ? Modèle Relationnel de Codd (V1) Langage Prog. OBJET Propriétés TIPS Propriétés RICE Modèle OR (Objet- Relationnel) Propriétés TIPS + RICE 1- Compatibilité ascendante "Réutiliser et enrichir l'existant" CNAF (4 Dec 1996) 2- "Evoluer en douceur vers l'objet"
Evolution de l'informatique et OBJET 1965 LP OS OS : Operating SERVICES ? 1970 LP IA SGF SGBD
Evolution de l'informatique 1970 SGF OS SGBDR • Services OS : • Gestion des ressources physiques • algorithme de pagination • Sécurité • Confidentialité • d'ACCES • Contrôle de • Synchronisation (sémaphores,verrouillage, • deadlock, ... ) • Modélisation : • (" processus ") • .... pas de langage de • programmation • Services SGBD-R • ( Propriétés TIPS ): • (P) GestionPersistance • LRU ++ • (T) Sécurité & • Transactionnel • Intégrité S) Structuration/Schéma via des modèles de données • (I) Interface utilisateur • Non procédurale(SQL)
Evolution de l'informatique et OBJET 198O OS SGBD-R LP SGBD-R OS IA 1990 OS LP Objet SGBD-R IA
Evolution de l'informatique 2000 ? " Il est dur de prédire, particulièrement ... le futur " N.Boehr ? ? ? • SERVICES ?
Evolution du logiciel et OBJETS DONNEES TRAITEMENTS SGBD-R L.P ( SQL ) ( Prog. structurée ) OBJETS GENIE LOGICIEL COMMUNICATION
Approche Objet et développement d'application Intégration Objet INTERFACE Approche Objet APPLICATION SGBD DB • PB : " IMPEDANCE MISMATCH « et productivité du développeur
Marché BD et standards ? (Stonebraker 96 et Gartner) Traitements SQL SGBD-OR SGBD- R (1) (2) SQL3 SQL2 SGF SGBD- OO (3) Non SQL ODMG Simples Complexes Données (1) : 8 G$ en 1995 (30 % de croissance) (3) : 1/100 de (1) en 1995 et 2008 (2) : 1/2 de (3) en 1995 ; 2*(1) en 2008 !
Visions de l'Objet • VISION DOUBLE : • (i) LP : objet "encapsulé” • Opérateurs SPECIFIQUES (classes, • propriétés) • héritage (instantiation) • Polymorphisme • (ii) BD : objet "structuré” • opérateurs GENERIQUES (algèbre, ...) • Persistance • Concurrence / reprise sur panne • Dualité des concepts structurels
Propriétés RICE d'un SGBD OBJET (Miranda, 2002) Dunod (Incrémentales par rapport à un SGBD relationnel) R (Réutilisabilité) : "Héritage" ou "polymorphisme" ==> Graphe héritage I (Identification système) C(Constructeurs d'objets complexes) Orthogonalité TUPLE et SET ==> Graphes d'agrégation E ("Encapsulation") "Messages", "Méthodes", "CLASSES d’Objets » DEFINITION : Une CLASSE d ’OBJETS - est un (« valeurs potentielles ») - possède un (« valeurs réelles ») TYPE de DONNEES qui vérifie les propriétés RICE....
Définition Classe d’Objets ? DEFINITION : Une CLASSE d ’OBJETS - est un (« valeurs potentielles ») - possède un (« valeurs réelles ») TYPE de DONNEES qui vérifie les propriétés RICE....
Consortium ODMG • Créé en 1991 par Rick Cattell (SUN, Javasoft) comme sous groupe de l’ OMG (Object Management Group) avec les éditeurs suivants: 02 Tech., Objectivity, Object Design, Ontos, Versant • OMG : CORBA,… • plus de 50 organisations de l’industrie et de l’informatique en 2000 (Lucent, Lockheed, CA, Microsoft, Baan, ...) • Objectifs: • Promouvoir les OO DBMS, FUD , au delà des niches et standard avant …SQL3 ! • Créer un standard pour garantir l’indépendance entre OODBMS (Portability)
Historique du standard « 00 »Objectif « portabilité Code » • Première réunion à l’initiative de Rick Catell chez Sun en Sept 91 • ODMG 1.0 (1993) : 5 Editeurs • ODL, OQL, Interface C++, Smalltalk • ODMG 2.0 (1996) : 10 Editeurs (Poet, Lucent, Windward, American Man, Barry) • Interface Java (Java Binding) , Meta Model, OIF ODMG 3.0 (2000) • enrichissement interface Java • Accent sur intégration avec OMG et X3H2 ( SQL3)
Composants du standard ODMG 3.0 • Adaptation du modèle objet de l'OMG • Interfaces d'accès à un SGBDOO OML C++ OML Java OML Smalltalk OQL ODL OIF SGBDOO
Composants du standard ODMG 3.0 • Modèle de données Objet dérivé de l’OMG • Langages de spécifications • ODL : langage de définition d’objets • OIF (object Interchange Format) : import/export • Langage de requête : OQL (avec retour sur base SQL) • OML (avec Liaisons) • C++, SMALLTALK et JAVA
Composants du standard ODMG 3.0 • Modèle de données Objet dérivé de l’OMG • Langages de spécifications • ODL : langage de définition d’objets • OIF (object Interchange Format) : import/export • Langage de requête : OQL (avec retour sur base SQL) • OML (avec Liaisons) • C++, SMALLTALK et JAVA
RICE et ODMG • R * HERITAGE MULTIPLE (C++) • I * OID • C * STRUCTURE * COLLECTIONS : SET, BAG, LIST, ARRAY, Dictionary * pointeurs bidirect. REF et INVERSE • E * Objets avec méthodes
OQL (nouveautés « SQL ») • Expression de chemin mono-valuée - Séquence d'attributs ou associations (« relationship ») mono-valués de la forme X1.X2…Xn telle que chaque Xi à l'exception du dernier contienne une référence à un objet ou un litéral unique sur lequel le suivant s'applique. - Utilisable en place d'un attribut SQL dans SELECT ou WHERE 2) Collection dépendante - Collection obtenue à partir d'un objet, soit parce qu'elle est imbriquée dans l'objet ou pointée par l'objet. • Utilisable dans FROM
Exemple ODL Liaison C++ CLASS employe { E# INT, Nom STRING, Adresse ADDRESS <autre classe> //méthodes...}
Exemple ODL CLASS pilote : employe { Nbre-H-Vol# INT, salaire FLOAT, SET REF <vol> assure INVERSE est_assuré_par //méthodes...} CLASS vol { V# STRING, REF <pilote> est_assuré_par INVERSE assure, REF <avion> utilise INVERSE est_utilisé_dans,. VD...}
Exemple ODL • CLASS avion : { av# INT, avnom STRING, … SET REF <vol> est_utilisé_dans INVERSE utilise …}
Exemple OQL Quels sont les numéros des vols assurés par un pilote de nom 'Serge' ? 1) SELECT v.v# FROM v IN vol p IN v.est_assure_par WHERE p.Nom = 'Serge' ;
Exemple OQL Quels sont les numéros des vols assurés par un pilote de nom 'Serge' ? 2 Select v.v# from v IN vol wherev.est_assure_par.Nom=‘Serge’; <Expressionmonovaluée X1.X2.X3>
Exemple OQL • Quels sont les noms des avions conduits par un pilote Niçois ? <Parcours d’ associations multivaluées en utilisant des collections dépendantes> 1) SELECT a.avnom FROM a in avion <in COLLECTION> v in a.est_utilisé_dans <in COLLECTION> p in v.est_assuré_par WHERE p.adr = ‘ Nice ’ ;
Exemple OQL • Quels sont les noms des avions conduits par un pilote Niçois ? <Parcours d’ associations multivaluées en utilisant des collections dépendantes> 2) SELECT a.avnom FROM a in avion <in COLLECTION> v in a.est_utilisé_dans <in COLLECTION> WHERE v.est_assuré_par.adr= ‘Nice’ <Expression>
Exemples • Noms des pilotes Niçois qui assurent un vol au départ de Nice avec un avion localisé à Nice ? • Noms des pilotes qui habitent dans la ville de localisation d’un Airbus ?
Exemple quantificateur universel • Quels sont les noms des pilotes qui conduisent TOUS les Airbus localisés à Nice ? Select p.plnom From p in pilote V in p.assure For all a in V.utilise : a.avnom = ‘airbus ’ and a.loc = ‘Nice’;
SQL3… (« SQL99 ») SELECT quelque chose avec image et son FROM quelque part ++ WHERE condition ++
Standard SQL(petite histoire) • SEQUEL 1 (1974) de System R d’IBM • SEQUEL 2 (1977) • SQL 1 (Ansi : 1986 ; ISO : 1987) : 100 pages puis révisions en 1989, « SQL89 » Avec des systèmes de tests et de validation développés par le NIST (National Institute of Standards and Technology) pour éviter problèmes de Codasyl • SQL2 (1992, « SQL92 ») par X3H2 : 600 pages avec 3 niveaux • Niv. 1 : « Entry » (SQL1), 2: « Intermediate » et 3: « Full » • SQL3 ( Standard en 1999, « SQL99 ») : 1500 pages • Niveau 1 (SQL2)… • SQL4…
Concept OBJET dans SQL3 ? • Dualité de structures de données SQL3 pour CLASSE D’ OBJETS CREATE TABLE CREATE TYPE • 1) « TABLE », : Create table structure de données de base (relation NF2 possible) pour le stockage en mémoire persistante et la manipulation ensembliste avec VALEURS et POINTEURS (double paradigme !) 1.1 « Table Objet » possible (clause « With Identity ») ROWID Type REF possible 1.2 Table « relationnelle » sinon
Concept OBJET dans SQL3 ? 2) « TYPE » : Create type (classe d’objets) 2.1) - (« VALUE ») ADT • Pas d’ OID, valeur pour attribut dans relation • Types de base 2.2) - (« OBJECT ») ADT (Create type with OID <visible>) • OID pour chaque instance (pas d’ OID par défaut) • Types possibles pour attributs ou autres ADT, variables SQL… • Type REF (avec OID) possible associé
SQL3 R : * HERITAGE MULTIPLE hybride (clause"UNDER" pour les TABLES et les TYPES) * POLYMORPHISME(Surcharge) et TEMPLATES (types génériques/ paramétrés)
SQL3 I : (dualité de structure, dualité d’OID) : Pour les tables : "ROW ID"(explicite- "with identity") pour encapsulation de tuple et type REF Pour les TYPES : "Object ID" (« with OID visible » ) pour les classes d’objets
SQL3 et RICE • C : TYPES (ADT) et TABLES ADT : types de données complexe défini par l'utilisateur : "OBJECT ADT" (avec OID) : classe d’objets " VALUE ADT » (sans OID) : type de base Support d’objets complexes (tables ou ADT) : - Constructeur de Collections : "SET", "LIST", "MULTISET" (agrégation de tables) - Constructeur tuple/produit cartésien (ROW)
SQL3 C : TYPES (ADT) et TABLES TABLESavec « With identity » (ROWID) : classe d’objets sans ROWID : table relationnelle des attributs "stored" ou "virtual" ("updatable", "read-only", "constant")
SQL3 E * PSM (Persistent Stored Module) : regroupement de routines dans schéma objet/procédures STOCKEES * "Routines"(SQL ou externe) associées aux tables/ADT/base : -"Functions"("Actor » , « Constructor » ou "destructor") -"Procedures" * 3 Niveaux d'encapsulation pour un ADT
SQL3 (Définition) Exemple : Create table AVION <ou CreateType AVION> ( AV# Integer, AVNOM varchar (12), AV-PHOTO blob (600 K), CONTRAT clob (60K), REFPILOTE REFPilote<Pilote attitré> Private PRIX Decimal (9,2) CAP SET Integer, <ensemble de capacités> LOC SET adresse,<Ensemble d’adresses ; insertion avec SET (ROW(‘..’))> REVISION boolean) Imbrication définition sur ADT (ex Adresse) possible à plusieurs niveaux Attributs « PRIVATE » non visibles pour l’utilisateur ; « PROTECTED » visibles seulement pour les sous types
SQL3 (Définition) CREATE TABLE Vol (Vol# Char(4), ... PL# REFERENCE Pilote (PL#) <clé étrangère : valeur clé primaire> REFPIL REF Pilote<type REF : ROWID> ...)
Nouveautés SQL3 • Trois extensions de SQL2 (pour les tables) : • ROWID, REF, « --> » • 1- Identifiant (système) de tuple (ROW ID) • L'opérateur associé de référencement est "&ROW" • En Oracle 9, cet opérateur s’appelle ref • Exemple : • Select ref (p) from pilote p where pnom = ‘serge’ ;
SQL3 • 2- Type "REF" : les valeurs d'une colonne peuvent être des POINTEURS ("adresses de tuples" /ROWID) d'une autre relation. • Exemple : Dans la table pilote, un attribut "refavion" est introduit pour traduire le lien N:1 entre Pilote et Avion correspondant à "l'avion préféré d'un pilote" • refavion REF (avion_type) • SCOPE FOR refavion IS avion • refavion contient pour un pilote donné, le ROWID de l'avion préféré
SQL3 • Type "REF" dans Oracle 9 : • - le type REF est introduit dans les TABLES ou les TYPES (qui peuvent exister avec ou sans OID) • - opérateurs associés : « ref » et « deref » • - OID, ROWID, PKID/PKREF • Note : en dehors du stockage persistant des valeurs de TABLES, aucune différence entre TYPE et CLASSE !
SQL3 • 3- Opérateur de déréférencement noté "--> » • Exemple : "refavion --> av#, avnom" • forme abrégée pour : • SELECT av#, avnom • FROM avion A • WHERE A.&ROW = refavion ; • Dans Oracle 9 : • Informations sur les pilotes assurant un vol au départ de Paris ? • Select deref (REFPIL) from vol where VD= ‘Paris’ ; • Notation ‘.’ possible dans Oracle 9 pour « »
Exemple • pilote (pl#, plnom, adr, refavion ) • avion (av#, avnom, cap, loc) • <refavion de type REF : "refavion" contient des valeurs d'adresses de tuples (ROWID) d'avions pour traduire l ’avion préféré d'un pilote>
Exemple • Q1 : Quels sont les numéros des avions préférés par les pilotes habitant 'Nice' ? SELECT p.refavion-->av# <opérateur de déréférencement> FROM pilote p WHERE p.adr = 'Nice' ;