Serveurs Web à contenu dynamique

publicité
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
Téléchargement