Persistance d'objets répartis Alexandre Lefebvre (DTL/ASR) 24 mars 2000 Le présent document contient des informations qui sont la propriété de France Télécom. L'acceptation de ce document par son destinataire implique, de la part de ce dernier, la reconnaissance du caractère confidentiel de son contenu et l'engagement de n'en faire aucune reproduction, aucune transmission à des tiers, aucune divulgation et aucune utilisation commerciale sans l'accord préalable écrit de France Télécom R&D France Télécom R&D AFNOR Java Serveurs - D1 - 24/03/2000 Plan Présentation de DTL/ASR Problèmes qui nous préoccupent Supports de persistance répartis Noah : gestion de la persistance SRS : gestion de la répartition Conclusion France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D2 - 24/03/2000 Positionnement du département ASR France Telecom R&D Centre de R&D de France Télécom ; environ 3800 personnes Rattaché à la Branche Développement Direction des Techniques Logicielles (DTL) Environ 180 personnes en R&D Quatre départements dans les domaines suivants : Maquettage, Spécification et Validation Développement Logiciel, Intelligence artificielle et connexionnisme Sécurité des Services et des Réseaux Architecture des Systèmes Répartis (ASR) France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D3 - 24/03/2000 Profil du département ASR Centre de compétence “systèmes répartis et systèmes logiciels de base” Plates-formes d’exécution réparties (ORB) Moniteurs transactionnels et bases de données répartis Systèmes (d’exploitation) sous contraintes (QoS, embarqués) Missions Recherche & Développement avancé Veille technologique Assistance technique (conseil interne) Effectif = ~ 55 personnes (~ 40 ingénieurs, 10 thésards, post-doc, chercheurs invités) France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D4 - 24/03/2000 ASR participe à l'initiative ObjectWeb Initiative « middleware open source » Java « ObjectWeb Group » initialisé par Bull, FT-R&D et l’INRIA Base logicielle Jonathan = ORB ouvert (support de Corba et de RMI) JOnAS = plate-forme EJB Coopération avec Enhydra plate-forme J2EE Informations http://www.objectweb.org http://www.enhydra.org France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D5 - 24/03/2000 BD réparties : quelques sujets en panne Support de persistance réparti BD relationnelles liaisons entre données : calculées par jointures répartition : modèles de partitionnement (placement) horizontal ( union) vertical ( jointure) pas d'objets = mauvais candidat pour BD réparties BD à objets liaisons entre données : liaisons système bon candidat mais peu de travail sur la répartition (Versant, Thor) France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D6 - 24/03/2000 Notre contexte de recherche BD réparties contexte intranet plutôt qu’Internet (connaissance exhaustive du monde) objectif = faire inter-opérer des bases d’objets hétérogènes Deux catégories de problèmes gestion des chaînes de liaison entre objets références persistantes réparties chaînes d’activation gestion de l’interrogation (SQL++) modèle de placement optimisation BD parallèles France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D7 - 24/03/2000 Quelques principes directeurs Séparation claire des rôles métier / technique Architecture multi-tiers BD gère les données (pas de code applicatif) BD extensible OK pour interrogation (indexes spécialisés) LPBD (Pjama) KO (modèle de programmation trop différent) orthogonalité / persistance mais pas de contrôle possible Serveurs applicatifs : besoin d'une couche intermédiaire cache d’objets persistants problème : le serveur de données impose modèle d’échange (format, politique de pré-chargement,...) synchronisation (CBL, verrouillage optimiste, etc) approche composants (EJB, Corba Components, COM+?) Besoin d'une couche intermédiaire France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D8 - 24/03/2000 Nos axes de travail actuels Les chaînes de liaisons entre objets Références entre objets persistants Gestion des caches d’objets Objets applicatifs répartis : ORB (Corba, RMI) Serveurs applicatifs (EJB) gestion des caches (BDO) Gestion des noms répartis Synchronisation entre les différentes mémoires Définition d’invariants architecturaux Standardisation des interfaces France Télécom R&D Serveurs de données (BDRO, BDO) objets persistants répartis La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D9 - 24/03/2000 Vision architecturale pour le support de persistance Objectif = ouvrir le support d’échanges entre les parties “client” et “serveur” d’un SGBD à objets Support d’échanges entre serveur applicatif et serveur de données “vision BD” = schéma externe interface d’accès à objet : SDL (State Definition Language) interface de synchronisation interface pour support de transactions France Télécom R&D client applicatif http (html, xml), IIOP serveur applicatif schéma externe serveur de données schéma logique schéma physique disque La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D10 - 24/03/2000 Persistance : quels besoins ? Transparence langage (orthogonalité) Support de l’objet (Noah) gestion implicite des références gestion de l’héritage et du polymorphisme Indépendance vis-à-vis du support de stockage modèle objet de base (définition d’état) portabilité binaire de l'accès réparti (SRS) accès réparti (standard réseau) Services de persistance - Noah de réplication d’objet (état) entre mémoires réparties hétérogènes - SRS France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D11 - 24/03/2000 Transparence à la conteneur EJB Environnement d’exécution réflexif Environnement d’exécution fermé nom d’objet local objet d’interception (proxy) Contrôle de la chaîne de liaison « pe rsistante » objet réel (langage) MEMOIRE D’EXECUTION chaîne de liaison gérée par le support de persistance objet réel (persistant) France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D12 - 24/03/2000 Etendre la persistance des EJB (1) Contexte : EJB avec persistance container-managed Limitations de la specification EJB 1.1 pas d'héritage entre beans références entre beans gérées par le programmeurs, ou spécifiques aux conteneurs But : augmenter la transparence pour le programmeur du bean pour : les références entre objets l'héritage entre beans les attributs multi-valués en bref, retrouver l'abstraction de l'ODMG, mais dans une autre architecture France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D13 - 24/03/2000 Etendre la persistance des EJB (2) Exemple: class ProductBean { float price; products public float getPrice(){ return price; } } class OfferBean { Collection products; //set of public Collection getProducts() { return products; } } class PurchaseOfferBean{ Offer offer ; public float totalPrice() throws RemoteException { int theTotal = 0 ; //get the set of product objects Collection products = offer.getProducts(); Iterator productsI = products.iterator(); //for each such product, add the product price to the total while (productsI.hasNext()){ theTotal += ((Product)productsI.next()).getPrice(); } //finally, return the total return theTotal ; } } France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D14 - 24/03/2000 Noah (persisteNt Object mApping tecHnology) Liaisons pour objets persistants Modèle de données structurel objet Descriptions XML : de la structure des classes persistantes du mapping vers le support de persistance Gère la liaison entre les objets dans la base de données et les objets en mémoire Notion de PId (persistent object identifier) étend la notion de primary key introduit le contexte de nommage France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D15 - 24/03/2000 Noah : modèle de données Classes et interfaces (pour héritage multiple) Types de base : integer, loats, strings, etc Tout ce qui n'est pas d'un type de base est un objet Ensemble extensible de classes génériques set, array interface person { string(30) LastName; array<string(15)> FirstNames; } interface customer { class invoice { customer Customer; set<purchase> Purchases; } class purchase { set<invoice> Invoices; } product Product; interface product { float Price; serialized Picture; } float Total; integer Quantity; } } class client implements person, customer { } France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D16 - 24/03/2000 Noah : utilisation Dans la hiérarchie des classes EJB pour fournir la persistance container-managed au niveau de la couche d'interception du container Autres approches PSS CORBA ... France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D17 - 24/03/2000 Noah : vision logique Memory Object method creation, deletion, retrieval new Control Object Class Control Factory Class create get_attr, set_attr read, write init, export, unexport, find, bind Code for controlling memory copies of objects Interfaces State Mngt Class setPID Factory Class NOAH Runtime : Code for Persistence Control Persistence Storage System Stored Object France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D18 - 24/03/2000 Noah dans le context EJB EJBObject EJBHome PFinder NOAH code Generated code for persistent class XXX EJB container code PObject PFactory PObject_XXX PFactory_XXX XXX interface class XXX home class extends abstract class France Télécom R&D class interface implements La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D19 - 24/03/2000 Utilisation de Noah : Compilation persistent class persistent class structure persistent structureclass structure persistent class persistent class mapping information persistent class mapping information mapping information PMC XML parser NOAH 1) creation of meta-objects meta-objects reflexive information France Télécom R&D 2) call of meta-object initialization java files for java files for persistent class java files for persistent class persistent class La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D20 - 24/03/2000 Utilisation de Noah : creation d'objets (1) void PID 3-init Bean instance 4setPID PObject_XXX PFactory_XXX EJBObject_XXX Home_XXX 2-new 5-new, EJBCreate 1-create France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D21 - 24/03/2000 Utilisation de Noah : creation d'objets (2) 3-setPID 1-export PObject_XXX PFactory_XXX Home_XXX EJBObject_XXX 2-new PID France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D22 - 24/03/2000 Utilisation de Noah pour trouver et utiliser des objets Bean instance 6-create 2-find 8-read PFactory_XXX PObject_XXX Home_XXX EJBObject_XXX 10-setattr 4-bind 5-bind PID PID PID PID 11-EJBLoad + business method 3 1-find France Télécom R&D data store 7-business method 9-data from data store La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D23 - 24/03/2000 Quelques propriétés de Noah Réflexivité les méta objets décrivant les classes persistantes sont eux-même persistants Les méta-objets sont auto-suffisants : regénération du fichier de description XML regénération du code Java France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D24 - 24/03/2000 Noah : état des travaux Première version en cours de développement mapping objet-relationnel implicite identifiants d'objets mapping horizontal attributs multi-valués transformés en collections d'objets mappés dans une table séparée héritage multiple Limitations : pas de support de bases de données legacy mapping non customisable dans cette version France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D25 - 24/03/2000 Plan de travail pour Noah février 00: spécifications avril 00: premier prototype été 00: integration avec JOnAS plus tard : évolution pour support de persistance sur : bases de données objet mapping explicite vers les BD relationnelles legacy LDAP ? France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D26 - 24/03/2000 Service de réplication (SRS) Original Copy Replica Copy Objectifs gérer des liaisons entre réplicas Requests réplicas mémoires SRS réparties hétérogènes échanges d’états entre réplicas (gestion de la cohérence) Modèle de programmation à la ORB échange d'états au lieu d'appels de procédures à distance Ce que le SRS ne fait pas, mais permet de programmer politique de cohérence politique de synchronisation mécanisme de transparence langage France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D27 - 24/03/2000 Exemple d’utilisation du SRS France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D28 - 24/03/2000 SRS : état des travaux Spécifications du SRS en cours Implantation Personnalité de l’ORB Java Jonathan Utilisation de GIOP bidirectionnel Application à l’implantation d’un cache d’objets applicatif Serveur EJB JOnAS Choix du serveur d’objets ? Application à l’implantation de réplication d’objets entre BD Serveur EJB Jonas Serveurs de données hétérogènes France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D29 - 24/03/2000 Autres travaux Relation avec les specifications EJB 2.0 Java Data Objects ? Autres travaux sur la persistance : PSS approche très différente par d'orthogonalité / persistance France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D30 - 24/03/2000 Conclusion Objectif : concevoir et construire un middleware d'accès à des mémoires d'objets répartis répliqués persistants Principes architecturaux : d'ouverture d'adaptabilité Trouver les bons invariants architecturaux En déduire les bonnes interfaces France Télécom R&D La communication de ce document est soumise à autorisation de France Télécom R&D Alexandre Lefebvre - AFNOR Java Serveurs - D31 - 24/03/2000