2.4.2 Optimisations
Dans la partie précédente, nous avons
décrit l'architecture de StreamGlobe.
Dans cette partie nous nous intéressons plus
précisément aux deux dernières couches optionnelles (les
deux couches supérieures dans la figure 3).
Comme StreamGlobe doit réduire la charge des pairs de
bordure (Thin-Peers), les auteurs ont fait en sorte que le réseau prenne
en charge la gestion et le routage des données que les Thin-Peers
souhaitent acquérir.
De plus, pour des raisons évidentes d'optimisation de
la charge réseau, les auteurs ont introduit dans StreamGlobe quelques
nouvelles idées. La première concerne l'agrégation de
flux. Les Super-Peers peuvent assembler deux flux différents en un seul
si ces flux ont des caractéristiques semblables. Ceci est
déterminé par le schéma XML du flux. Une autre
optimisation consiste à filtrer les flux. Par exemple si dans un flux,
un champ n'est pas utilisé par aucun abonnement, celui-ci peut
être supprimé. Deux opérations sont disponibles pour cela
:
Ø Projection : permet de supprimer les champs non
utilisés dans les abonnements.
Ø projection-sélection : permet de supprimer les
champs non utilisés et de modifier (changer de schéma) ceux qui
restent.
Une nouvelle optimisation consiste à agréger
plusieurs requêtes XML en une seule (on parle alors de Multi-Query
evaluation). Plusieurs requêtes similaires de différents
Thin-Peers peuvent être traitées en même temps si ces
dernières sont « semblables ».
Comme les flux sont continus et potentiellement infinis,
StreamGlobe introduit un moteur de requêtes appelé FluX. Il est
basé sur les événements (équivalent à un
parseur SAX) pour limiter l'espace mémoire requis pour extraire les
informations désirées d'un flot. S'il existe une
possibilité de saturer la mémoire (cas de buffers infinis), alors
StreamGlobe fait appel à une fenêtre (WXQuery) pour
découper le flux.
|