Bases de données avancées
Données en flux et requêtes continues
Dan VODISLAV
Université de Cergy-Pontoise
Master Informatique M1
Cours BDA
Cours BDA (UCP/M1) : Données en flux et requêtes continues 2
BD pour flux de données
• Flux de données
– Données qui arrivent en flux, ordonnées avec des estampilles temporelles
– Exemples: cotations boursières, dépêches d'agences de presse, données en
provenance de capteurs (position, température, …), flux RSS, etc.
• Qu'est-ce qui change par rapport au BD classiques?
– On peut voir chaque donnée comme une ligne dans une table relationnelle
– Nouvelle donnée (article): insertion dans la table
… mais
– On ne peut pas tout stocker
– On a envie de réagir sur l'arrivée d'un nouvel article
– Le temps joue un rôle particulier
• Au niveau des données: estampille temporelle, ordre
• Au niveau de l’événement « nouvelle donnée »
Pourquoi utiliser des flux?
• Volume des données
– Impossibilité de tout stocker
– Big Data
• Production fréquente de nouveau contenu
– Réaction sur l’arrivée de nouvelles données
– Réduction du délai entre production et utilisation de contenu
• Production « naturelle » de données en flux
– Capteurs, cotations, dépêches, …
– Applications de surveillance, alerte, veille
• Accélération des traitements
– Traitement continu, à la volée, de type filtrage
– Réduit le besoin d’accéder à des données sur disque
Cours BDA (UCP/M1) : Données en flux et requêtes continues 3
Cours BDA (UCP/M1) : Données en flux et requêtes continues 4
Approches dans le traitement des flux
• Deux extrêmes
– Traitement avec stockage
• Chaque article arrivé est stocké
• Requêtes sur les données stockées
– Traitement continu
• Pas de stockage
• Requêtes continues
• On peut imaginer diverses solutions intermédiaires entre les
deux approches
– Traitement avec stockage activé par l’arrivée de nouvelles données
Ex. Exécuter une requête toutes les N arrivées de données
– Traitement continu mais accédant à des données stockées
Ex. Filtrer la donnée arrivée selon un critère utilisant des données stockées
Système de
gestion de flux
BD
…
…
flux
requêtes
réponses
Cours BDA (UCP/M1) : Données en flux et requêtes continues 5
Requêtes continues
• Requêtes classiques: données + requêtes à différents moments
– Le calcul se fait au moment de la requête sur les données courantes
• Requêtes continues: requête + données à différents moments
– Le calcul se fait à chaque fois qu'une donnée arrive
• Particularités des requêtes continues
– Nombre indéterminé de résultats
– On n'a pas accès à toutes les données
• Donnée courante + éventuellement quelques données passées mémorisées
– Résultats produits seulement sur des événements d'entrée (arrivée d'une
donnée)
– Requêtes généralement moins complexes que les requêtes classiques
• Requête continue = souscription
– Résultat = notification
Cours BDA (UCP/M1) : Données en flux et requêtes continues 6
Fenêtres sur flux
• Fenêtre = sous-séquence finie d'articles d'un flux
– Préserve l'ordre d'arrivée des articles
• Inhérentes aux traitement des flux
– Stockage: on stocke en fait des fenêtres (les flux sont infinis)
– Continu: nécessaires pour des opérations de jointure entre flux
– Opérations spécifiques aux flux: agrégation sur fenêtres
Ex. La moyenne des cotations des 10 derniers jours
• Types de fenêtres
–Glissantes: déterminées par le moment courant
• Sur le temps: les articles des Nderniers jours
• Sur le nombre: les Nderniers articles
–Sur condition: déterminées par des conditions de début/fin
Ex. début: cotation baisse en dessous de 40 euros, fin: fin de la journée
• Cas particulier: « tumbling windows », qui partitionnent le temps de façon
régulière (chaque jour, mois, …)
Cours BDA (UCP/M1) : Données en flux et requêtes continues 7
Traitement des flux dans les BD relationnelles
• Peu de support standardisé pour le traitement des flux
– Approche de type stockage
– Pas de requêtes continues
– Événement d'arrivée: gestion par triggers ou par programme
– Seul support explicite: notion de fenêtre dans SQL:1999
• En pratique: systèmes spécifiques, dédiés au traitement de flux,
construits parfois au-dessus de BD relationnelles
• Oracle
– Oracle CEP (Complex Event Processing): ex- WebLogic Event Server
– Utilise le langage CQL (Stanford) pour décrire les traitements sur flux
• Plus récemment: PipelineDB
– Clauses SQL spécifiques au traitement en flux
Cours BDA (UCP/M1) : Données en flux et requêtes continues 8
Clause WINDOW
• Introduite en SQL:1999, permet d'exprimer des requêtes sur des
données stockées provenant d'un flux
– Permet l'agrégation sur des fenêtres de type flux
– Plutôt vue comme une extension pour les entrepôts de données que pour
le traitement des flux
• Syntaxe
window nom-fenêtre as (
partition by attributs-partition
order by attributs-ordre
range|rows intervalle
)
– Idée: pour chaque ligne de la table on définit une fenêtre de lignes
• Situées toutes dans la même partition
• Dans l'ordre spécifié (selon le temps pour un flux)
• De taille donnée par l'intervalle précisé
Cours BDA (UCP/M1) : Données en flux et requêtes continues 9
Syntaxe de la clause WINDOW
•Partition by : découpage de la table en partitions
– Similaire à group by, mais pas dans le même but
•group by un résultat par groupe, partition by un résultat par ligne!
– Rôle du partition by: définir des "types" de lignes
• une fenêtre contient des lignes d'une seule partition (d'un seul type)
– Absence partition by une seule partition (toute la table)
•Order by : ordonnancement des lignes dans la fenêtre
•Range/Row between: largeur de la fenêtre
–Range: largeur exprimée par un intervalle de valeurs de l'attribut
d'ordonnancement avant et après la ligne courante
Ex. range between interval '8' day preceding and interval '3' day following
range interval '6' day preceding
–Row: largeur exprimée par un nombre de lignes avant et après
Ex. rows between 5 preceding and 5 following
rows 7 preceding
Cours BDA (UCP/M1) : Données en flux et requêtes continues 10
Exemple
• Table Cotation(Csoc, Cdate, Cval)
– Une cotation en bourse par jour pour différentes sociétés
• Pour chaque société et chaque date, la moyenne glissante sur le
dernier mois de la cotation de cette société
select Csoc, Cdate, avg(Cval) over w
from Cotation
window was (
partition by Csoc
order by Cdate
range interval '1' month preceding
)
1 / 9 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!