C-JDBC Emmanuel Cecchet INRIA, Projet Sardes http://sardes.inrialpes.fr Plan Motivations Idées principales Concepts Caching Perspectives C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] 2 C-JDBC - Motivations clustering J2EE perf des applis J2EE limitée par la BD serveur Web (switch L4, RR-DNS, …) serveur de servlets (mod_jk, …) serveur d’EJB (travaux de Simon) pas de solution pour les BDs coût des transactions pas d’implantations open-source pour cluster limitation matérielles (petits SMP) solutions commerciales très chères serveur d’EJB pas capable d’optimiser les accès ou de cacher les résultats si accès à la BD par un autre tiers JDBC est une API bien établie C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] 3 C-JDBC – Etat de l’art clustering BD utilisé pour le partitionnement mais pas pour la réplication pb de perf sur les joins utilisation de views pour améliorer les perfs décision de load balancing centralisée pas d’offre open-source les offres commerciales (Oracle, DB2) ont des solutions propriétaires support dans le driver JDBC en général pas plus que du pooling de connexions clustering ad-hoc dans WebLogic pour Oracle (limité au round-robin) C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] 4 C-JDBC – Idées C-JDBC = RAIDb fournir à des clients JDBC un accès transparent à un cluster de bases de données performance/disponibilité/tolérance aux fautes gestion des BD hétérogènes caching, logging, monitoring, … Hypothèses tous les accès à la BD se font à travers un driver JDBC Jim Gray a tort : eager consistency peut marcher avec des BD répliquées C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] 5 C-JDBC – Idées duplication de la BD sur toutes les machines load balancing des reads et broadcast des write Propriétés architecture modulaire, reconfigurable, adaptable aux ressources matérielles et aux besoins des applis, portable (écrit en Java) C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] 6 Plan Motivations Idées principales Concepts Caching Perspectives C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] 7 C-JDBC – Vue d’ensemble Java client program Java client program C-JDBC driver Java client program Java client program MySQL driver MySQL driver JVM C-JDBC driver JVM Java client program C-JDBC driver JVM JVM Java client program MySQL driver JVM JVM C-JDBC Manager MySQL JDBC driver MySQL MySQL MySQL C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] MySQL MySQL MySQL 8 Oracle + C-JDBC Java client program C-JDBC driver Java client program JVM C-JDBC driver Java client program C-JDBC driver JVM JVM C-JDBC Manager Oracle JDBC driver MySQL JDBC driver Oracle MySQL MySQL MySQL MySQL C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] 9 C-JDBC – Hétérogénéité Java client program Java client program C-JDBC driver JVM Java client program C-JDBC driver Java client program JVM C-JDBC driver C-JDBC driver Java client program JVM C-JDBC driver JVM JVM C-JDBC Manager MySQL PostGreSQL JDBC driver JDBC driver Oracle JDBC driver RMI JDBC RMIJDBC InstantDB JDBC driver MySQL PostGreSQL Oracle Oracle C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] InstantDB 10 C-JDBC Manager Java client program (Servlet, EJB, ...) C-JDBC Manager lookup C-JDBC driver Registry JVM Administration console C-JDBC Manager XML configuration file Configuration & administration XML engine Virtual database Virtual database Request Manager Request Manager Request Scheduler Request Scheduler Request Cache Request Cache Request Dispatcher Request Dispatcher Database Backend Database Backend Database Backend Database Backend Connection Manager Connection Manager Connection Manager Connection Manager MySQL JDBC driver MySQL JDBC driver Oracle JDBC driver RMI JDBC Bind Manager RMIJDBC MySQL MySQL Oracle InstantDB JDBC driver InstantDB C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] 11 C-JDBC – Scalabilité verticale Java client program C-JDBC driver Java client program Java client program C-JDBC driver C-JDBC driver JVM JVM JVM C-JDBC Manager MySQL PostGreSQL JDBC driver JDBC driver MySQL PostGreSQL C-JDBC driver C-JDBC Manager C-JDBC Manager Oracle JDBC driver DB2 JDBC driver Oracle Oracle C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] DB2 DB2 12 C-JDBC – Scalabilité horizontale Java client program Java client program C-JDBC driver JVM Java client program C-JDBC driver Java client program C-JDBC driver Java client program C-JDBC driver JVM C-JDBC driver JVM JVM JVM C-JDBC Manager MySQL PostGreSQL JDBC driver JDBC driver MySQL PostGreSQL JavaGroups C-JDBC Manager JavaGroups C-JDBC Manager DB2 JDBC driver Oracle JDBC driver Oracle Oracle C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] DB2 DB2 13 Pistes de recherche - 1 équilibrage de charge, scheduling de requêtes weighted round-robin, spécialisation selon les requêtes (possibilité de partitionnement de la BD sur la grappe), monitoring/évaluation de la charge des BD. étude des possibilités de réordonnancement des requêtes pour améliorer le taux du hit du cache ou les temps de réponse favorisation des batch-updates retard volontaire des écritures, out-of-order write, … passage à l'échelle étude architecturale : cluster horizontal à la JavaGroup, diffusion en arbre, … limitation de la diffusion des écritures C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] 14 Pistes de recherche - 2 caching caching de requêtes SQL dans le driver granularités multiples avec BD cache pour requêtes complexes caching de document XML, précalcul de transformations avec feuilles de styles (XSLT) edge-side caching (sujet de recherche à part entière qui aurait plus d’intérêt au niveau Web Services) (re)configuration dynamique ajout dynamique d’un nœud (maintien de la cohérence) changement de politique au niveau scheduler, cache ou load balancing détection automatique des schémas des BDs C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] 15 Pistes de recherche - 3 exploitation de l'hétérogénéité tolérance aux fautes / reprise sur pannes spécialisation de traitement en fonction des spécificités des BDs, réécriture à la volée de requête pour support de l'hétérogénéité synthèse des propriétés de la grappe hétérogène dans le driver logs transactions sécurité monitoring C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] 16 Plan Motivations Idées principales Concepts Caching Perspectives C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] 17 Fine-grain caching cacher les réponses des requêtes SQL limiter les invalidations en analysant les requêtes SQL Query Cache dans les BD utilise invalidations sur les tables invalidation sur les colonnes optimisation des SELECT uniques peut être possible d’exécuter les UPDATE/DELETE sur le cache dans certains cas possibilité de parser les requêtes dans le driver JDBC (et de cacher le parsing) C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] 18 Fine-grain caching Taux de hits du cache avec RUBiS pas d’invalidation (cache non cohérent) : 82% invalidation par table : 15% invalidation par colonne : 53% + unique : 54% ++ BD cache : 57.5% +++ unique update : 71% C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] 19 Fine-grain caching TPC-W (papier OSDI) débit amélioré jusqu’à x2 temps réponse diminué jusqu’à x3 obligé d’avoir invalidations à grain fin position du cache (serveur web, bd ou entre les 2) a peu d’impact sur les perfs stratégie pour caches multiples : w w workload fortement read-only : cache à 2 niveaux (serveur web + machine dédiée) workload ayant plus d’écritures : cache centralisé partagé suffisant C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] 20 Plan Motivations Idées principales Concepts Caching Perspectives C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] 21 Etat actuel Code disponible driver JDBC générique utilisant RMI conflict-aware scheduling load-balancing: simple round-robin scalabilité horizontale et verticale opérationnelle mais non évaluée reconfiguration dynamique embryonnaire caching à granularité variable Manque tolérance aux fautes/reprise sur panne logging monitoring C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] 22 Perspectives Lancer C-JDBC comme projet ObjectWeb Peut s’interfacer avec n’importe quel container Web ou EJB Gros potentiel de diffusion Nécessaire pour le benchmark de JOnAS cluster et/ou transactions réelles avec RUBiS Intégration dans l’offre clustering de JOnAS pas de modification de JOnAS possibilité d’intégrer l’admin/monitoring dans les outils de JOnAS ? C-JDBC/ObjectWeb – 15 octobre 2002 – [email protected] 23