intersystems caché comme alternative aux bases de données

Transcription

intersystems caché comme alternative aux bases de données
I N T
W H
E R
S
I T E
Y S T E M S
P
A P E R
INTERSYSTEMS CACHÉ
COMME ALTERNATIVE AUX BASES DE DONNÉES
RÉSIDENTES EN MÉMOIRE
David Kaaret
InterSystems Corporation
I N T
W H
E R
S
I T E
Y S T E M S
P
A P E R
INTERSySTEMS CAChé
CoMME ALTERNATIvE AUx BASES dE doNNéES
RéSIdENTES EN MéMoIRE
Introduction
Pour dépasser les limites de performances des bases de données relationnelles
traditionnelles, les applications – allant de celles installées sur une seule machine,
à celles utilisant de vastes grilles interconnectées – utilisent souvent des bases de
données résidentes en mémoire pour accélérer leurs accès aux données. Bien que
les bases de données résidentes en mémoire et les produits basés sur les caches
mémoire améliorent la bande passante, ils souffrent d’un certain nombre de
limites dont le manque de support pour les grands ensembles de données, des
besoins excessifs en matériel, et des limites en matière d’évolution.
InterSystems Caché® est une base de données objets à hautes performances,
disposant d’une architecture unique, qui la rend appropriée pour des applications
qui normalement utiliseraient des bases de données résidentes en mémoire. Les
performances de Caché sont comparables à celles des bases de données résidentes
en mémoire, mais de plus Caché offre :
■
■
■
■
la persistance – les données ne sont pas perdues à l’arrêt ou au crash de la
machine
un accès rapide à de vastes ensembles de données
la possibilité de gérer jusqu’à plusieurs centaines d’ordinateurs et centaines de
milliers d’utilisateurs
accès simultanés aux données via SQL et les objets : Java, C++, .NET, etc.
Ce document explique pourquoi Caché est une alternative attractive aux bases de
données résidentes en mémoire pour les entreprises qui ont besoin d’un accès à
haute vitesse à de grandes quantité de données.
Un moteur de données unique permettant la persistance
et des performances élevées
Caché est une base de données persistante, ce qui signifie que les données gérées
en RAM sont écrites sur disque par des tâches de fond. Alors, comment se fait-il
que Caché offre des performances similaires aux bases de données résidentes en
mémoire, tout en écrivant périodiquement des données sur des systèmes de
stockage persistants ?
Une partie de la réponse se trouve dans l’architecture unique de Caché. A la place
des lignes et colonnes d’une base de données traditionnelle, Caché utilise des
matrices multidimensionnelles, dont les structures s’appuient sur les définitions
des objets. Les données sont stockées telles que l’architecte le souhaite, et des
structures identiques sont utilisées à la fois pour la cache mémoire et le stockage
sur disque. Les informations qui devraient être stockées ensemble le sont. Ce qui
induit pour Caché un accès ultra-rapide aux données sur disque.
La nécessité de synchroniser de multiples caches mémoire lors de la mise à jour
des données réduit également les performances de nombreux produits s’appuyant
sur des caches distribués. Avec Caché, la mise à jour des données et leur
1
I N T
W H
E R
S
I T E
Y S T E M S
P
A P E R
distribution sur les caches sont séparées logiquement. Cela permet un
déroulement des opérations plus simple induisant des performances supérieures.
Caché offre également des « liens intra-processus » vers C++ et Java, qui
permettent aux applications écrites dans ces langages de remplir directement les
structures de données internes de Caché.
Les avantages de la persistance
Sachant que Caché offre des performances comparables, ses possibilités d’accéder
aux données sur disque lui confèrent des avantages significatifs par rapport aux
bases de données résidentes en mémoire. Le plus évident est l’inutilité d’un
système supplémentaire de stockage permanent des données. Caché est ce
système, et est toujours à jour. Les données ne sont jamais perdues à l’arrêt ou au
crash de la machine.
Un autre avantage de Caché est que les volumes ne sont pas limités à la taille de la
mémoire RAM disponible. Si les données ne sont pas dans le cache local, elles
peuvent être obtenues de façon transparente d’un autre cache ou du disque.
N’étant pas limité par la RAM, un système Caché peut gérer des petaoctets de
données, ce qu’une base de données résidente en mémoire ne peut faire.
Ajouter de la RAM à un système pour tenter d’accroitre ses capacités est plus cher
que d’ajouter des disques. (Un téraoctet de stockage disque est moins cher qu’un
téraoctet de stockage RAM). de plus, de nombreux systèmes résidents en mémoire
doivent garder des copies redondantes des données sur plusieurs machines pour
se protéger d’un éventuel crash. Gérer des systèmes de caches distribués avec une
base de données persistante comme Caché génère souvent des économies en
matériel.
Accès transparent aux données via SQL et les objets
Le problème commun aux bases de données résidentes en mémoire est, du fait
de l’optimisation de leurs structures de données pour un traitement rapide,
l’impossibilité d’un accès transparent via SQL. Pour être compatibles avec la
plupart des outils d’analyse et de rapports, les données doivent d’abord être
« traduites » en tables relationnelles. Cela est fait en général lors du transfert
de la base en mémoire vers son système de stockage persistant et implique un
processus ETC (Extraction, Transformation, Chargement). (Le surcoût en charge
processeur et en temps nécessaire pour ce transcodage est la raison principale
pour laquelle les bases de données relationnelles ne sont pas assez rapides pour
des applications distribuées à hautes performances, et pourquoi les bases de
données résidentes en mémoire sont utilisées à leur place).
Quelques bases de données résidentes en mémoire utilisent le modèle relationnel
et offrent un accès SQL aux données. Ces systèmes souffrent des maux opposés,
c’est à dire l’absence d’accès direct aux technologies orientées objet qui sont
utilisées traditionnellement pour les développements applicatif. de plus, la plupart
des bases relationnelles résidentes en mémoire ne sont pas conçues pour des
configurations multi-machines. Elles ne fonctionnent que sur un ordinateur unique
et sont limitées en RAM.
Caché est différent car ses tableaux multidimensionnels peuvent être vus
simultanément comme des tables relationnelles ou des objets. L’Architecture de
données Unifiée de Caché gère à la fois les vues objet et relationnelles des
données à tout moment – sans traduction.
2
I N T
W H
E R
S
I T E
Y S T E M S
P
A P E R
Fig. 1: L'Architecture de Données Unifiée de Caché offre divers types d'accès aux données
L’accès SQL de Caché est compatible avec odBC et JdBC. du coté objet, Caché offre
des liens avec de nombreux langages orientés objets tels Java, .NET et C++.
La représentation des objets de Caché est complète et supporte les concepts
orientés objets tels l’héritage, le polymorphisme et l’encapsulation.
Enterprise Cache Protocol
Pour les applications multi-machines, Caché gère les caches automatiquement en
utilisant son Enterprise Cache ProtocolTM (ECP).
Avec ECP, les instances de Caché peuvent être configurées comme serveurs de
données ou serveurs d’applications. Chaque bloc de données appartient à un
serveur de données. Les serveurs d’applications sont conscients de la localisation
des données et gardent un cache local des données les plus récemment utilisées.
Si un serveur applicatif ne peut pas satisfaire certaines requêtes à partir de
son cache local, il demandera les données à un serveur distant. ECP gère
automatiquement la synchronisation des caches.
ECP n’a besoin d’aucune modification des applications – les applications
considèrent toute la base de données comme si elle était locale. Ceci est une
différence majeure avec quelques gestionnaires de caches distribués, dans lesquels
chaque client doit spécifier à quel sous-ensemble de données il s’intéresse avant
chaque requête.
Une machine, un cache
Une autre différence majeure entre Caché et d’autres gestionnaires de caches
distribués réside dans le fait que ces autres produits gèrent un cache séparé pour
chaque processus de chaque machine. Par exemple, si 8 clients accèdent à une
machine donnée, alors huit caches seront gérés sur cette machine.
3
I N T
W H
E R
S
I T E
Y S T E M S
P
A P E R
A l’inverse, Caché gère son cache en mémoire partagée et offre des liens pour
permettre aux processus d’accéder aux données à partir de leur propre espace
d’adresses mémoire. Il est possible d’accéder aux données en utilisant des
protocoles basés sur TCP comme JdBC, à travers des liens directs aux langages,
et également – pour des performances extrêmement élevées – via des liens
permettant à l’application de manipuler directement le cache.
Permettre à plusieurs clients de partager un cache unique offre un grand nombre
d’avantages. L’un réside dans le fait qu’un système utilisant un cache partagé
nécessite moins de mémoire. Quand, et c’est souvent le cas, plusieurs clients
souhaitent un accès aux mêmes données, les autres systèmes de caches distribués
gèrent plusieurs copies des données. Avec Caché, une seule copie est nécessaire
sur chaque machine.
Avoir un cache par machine entraine également une réduction de la charge réseau.
dans les applications à hautes performances, le trafic réseau induit par la gestion
des caches est souvent un souci majeur. Cependant, avec un cache unique par
machine, un seul cache doit être mis à jour pour refléter les modifications de
données sous-jacentes, au lieu des mises à jour redondantes des systèmes à caches
multiples.
Même avec un processeur multi cœurs, un système Caché n’utilise qu’un cache
partagé par machine, ce qui entraine un meilleur effet d’échelle que sur les autres
systèmes de caches distribués. Par exemple, dans un système Caché de 250
machines, chacune avec 8 cœurs, la communication ne se fait qu’entre 250 caches
pour maintenir la cohérence du système. Mais les architectures qui nécessitent un
cache séparé pour chaque cœur devraient coordonner 2000 caches. Comme les
ordinateurs modernes peuvent avoir huit voire seize cœurs ou plus, l’avantage de
Caché en terme d’évolutivité devient de plus en plus important.
Fig. 2a: Gestion du cache sans l'Enterprise Cache Protocol d'InterSystems.
4
I N T
W H
E R
S
I T E
Y S T E M S
P
A P E R
Fig. 2b: Gestion du cache avec Caché.
Le remplissage du cache
dans de nombreuses applications avec un cache distribué, pré-remplir le cache
peut être un processus long. Simplement dû au volume brut de données et/ou au
temps passé à traduire les données d’un système relationnel vers la structure
objet utilisée par l’application. Pour certaines applications utilisant beaucoup de
données, on passe plus de temps à remplir le cache qu’à faire tourner les
applications l’utilisant.
Rien de tout ça avec Caché. Les capacités SQL exceptionnelles de Caché lui
permettent d’extraire aisément les données des sources primaires relationnelles.
Et naturellement, étant lui-même une base persistante, Caché peut être la source
primaire des données. dans ce cas, aucun besoin de pré-chargement des caches.
Les caches locaux se rempliront automatiquement au fur et à mesure de l’exécution des requêtes.
Une autre considération est le nombre de machines impliquées dans la tâche de
remplissage des caches. Avec Caché, la gestion primaire des données est gérée
par un petit pourcentage des machines dans une grille distribuée. Remplir cet
environnement ne nécessite que l’accès aux serveurs de données ECP, et ils
peuvent être chargés en arrière plan, pendant que les autres machines sont
utilisées à autre chose. Quand on met en ligne les serveurs d’applications, leurs
caches seront à nouveau remplis automatiquement quand ces données seront
demandées.
A l’inverse, lors du chargement des données de la plupart des produits résidents
en mémoire, celles-ci sont partitionnées pour être diffusées dans le cache
distribué afin que toutes, ou presque toutes, les données soient dans la mémoire
d’au moins une machine. Le résultat est souvent l’impossibilité de charger les
données avec un petit sous-ensemble des ordinateurs, tout en mettant les autres
en ligne suivant les besoins.
5
I N T
W H
E R
S
I T E
Y S T E M S
P
A P E R
Conclusion
La principale raison pour utiliser des bases de données résidentes en mémoire
est la vitesse. Mais malgré leur rapidité, les bases de données résidentes en
mémoire souffrent d’une mauvaise évolutivité, d’un manque de support de SQL,
d’un besoin excessif en capacité hardware, et du risque de perte des données lors
d’arrêts imprévus.
Caché est la seule base persistante qui offre des performances identiques aux
bases de données résidentes en mémoire. Il gère également de vastes quantités de
données, permet un accès transparent aux données via SQL ou les objets, gère des
systèmes distribués de centaines de machines, tout en assurant une fiabilité
maximum.
Tout cela fait de Caché une alternative attractive pour les applications gérant de
grands volumes de données à très grande vitesse.
A propos d’InterSystems
InterSystems Corporation est un leader global de l’industrie du logiciel, dont le
siège est à Cambridge, Massachusetts, et qui dispose de bureaux dans 23 pays. InterSystems offre des produits innovants qui permettent le déploiement rapide et
l’intégration d’applications à la taille de l’entreprise. InterSystems Caché® est
une base de données orientée objet qui rend les applications plus rapides et
évolutives. InterSystems Ensemble® est une plateforme de développement et
d’intégration rapide qui enrichit les applications de nouvelles fonctionnalités, et
permet leur inter-connectivité. InterSystems HealthShare™ est une plateforme
offrant la création extrêmement rapide d'une base de données médicales au niveau
des bourses de santé régionales ou nationales. InterSystems DeepSee™ est un
logiciel permettant l’intégration de fonctionnalités de business intelligence en
temps réel dans les applications transactionnelles, pour de meilleures décisions
opérationnelles.
Pour plus d’informations, visitez InterSystems.fr.
InterSystems France
Le Dôme
1 rue de la Haye
BP 12910
95731 Tremblay en France
Tel: +33 (0)1 49 19 49 09
Fax: +33 (0)1 49 19 21 00
InterSystems.fr
InterSystems Ensemble and InterSystems Caché are registered trademarks of InterSystems Corporation. InterSystems DeepSee and InterSystems HealthShare are trademarks of InterSystems Corporation.
Other product names are trademarks of their respective vendors. Copyright © 2010 InterSystems Corporation. All rights reserved. 1‐10

Documents pareils