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 linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !