Complex Event Processing Traitement de flux de données en temps réel Romain Colle R&D Project Manager Quartet FS Plan Génération et exploitation de données CEP et applications Flux de données et notifications Traitement des flux Implémentation Conclusion 1
Plan Génération et exploitation de données CEP et applications Flux de données et notifications Traitement des flux Implémentation Conclusion Création de données 5 exabytes de données (5*10 18 octets) créées par jour Générées par les utilisateurs (youtube, twitter,...) Générées par des actions (vente e-commerce,...) Générées automatiquement (RFID, GPS,...) Comment les exploiter au mieux? 2
Exploitation des données BI Business Intelligence (informatique décisionelle): aide à la décision en utilisant les données de l entreprise Basée sur des outils d OLAP (cf cours précédent) Permet de prendre des décisions «informées»: Connaissance de son stock Connaissance de la situation logistique Connaissance de la valeur de mon portefeuille d actions Exploitation des données Data Mining Data mining est l extraction de connaissances à partir de larges volumes de données Informatique + statistique Utilisation «prédictive» pour prévoir le futur grace au passé Applications Relation client Maintenance préventive Optimisation des ventes 3
Exploitation des données - CEP Le but est d analyser des flux de données et d en déduire des événements plus complexes Analyse des flux de données Détection et corrélation des événements importants Déduction d événements complexes Agir en conséquence Plan Génération et exploitation de données CEP et applications Flux de données et notifications Traitement des flux Implémentation Conclusion 4
Impossible d afficher l image. 1/9/2013 Complex Event Processing - How does it work? INPUT STREAM OUTPUT STREAM Alert New Event (message) Example: Filtering Correlations Basic calculations Speed of the car If speed > 50 km/h and Trajectory of the car Tyre pressure Trajectory change and Tyre pressure drops by 50% Action Airbag Exploitation des données - CEP Les déductions se font à l aide d un ensemble de transformations et traitements sur les flux entrants Filtrage / projection Aggrégation Jointure 5
Exploitation des données - CEP Traitement des données en temps réel, «au fil de l eau» Applications Trading algorithmique Détection de fraude (carte de crédit) Analyse des médias sociaux CEP Trading algorithmique High Frequency Trading (HFT) Prises de décisions complexes et passages d ordres avant toute réaction humaine Market making (sell/bid), arbitrage,... 2009: 73% des ordres par HFT sur les actions aux USA Facteur important du «flash crash» de 2010 6
CEP Online Gaming Surveillance des données générées par les utilisateurs Avatars, communications,... Gestion de l intérêt du joueur S adapter à sa progression, son niveau,... Surveillance de l activité en ligne Optimisation des publicités et promotions Optimisation des transactions en ligne CEP Détection de fraude Détection de paiements frauduleux Comparaison avec des années de données historiques Détection de transactions inhabituelles Détection de comportements frauduleux Le but est de prévenir la fraude alors qu elle est en train de se produire Traitement temps réel extrêmement performant 7
Plan Génération et exploitation de données CEP et applications Flux de données et notifications Traitement des flux Implémentation Conclusion Polling Flux de données - Réception Notify pull Push 8
Flux de données - Réception Polling Interroger le service toutes les N secondes pour récupérer la valeur courante ou les nouvelles données Très gourmant en ressources: la requête doit être réexécutée toutes les N secondes et comparée avec son résultat précédent Peut être amélioré si le service peut fournir un «diff» lors de chaque interrogation Notify-pull Flux de données - Réception Le client enregistre sa requête au niveau du service Le service notifie le client lorsque de nouvelles données sont disponibles Le client requête le serveur pour récupérer les nouvelles données Plus efficace que le polling, évites les aller-retours inutiles Pas toujours vrai si le serveur notifie le client lorsque de nouvelles données apparaissent «à côté» de la requête Très efficace si la quantité de nouvelles données récupérées lors de chaque requête est importante 9
Flux de données - Réception Push Le client enregistre sa requête au niveau du service Le service envoie au client les nouvelles données au fil de l eau Très efficace, évite tout aller-retour après la souscription Le serveur peut «batcher» les nouvelles données si la fréquence d apparition est trop élevée Plan Génération et exploitation de données CEP et applications Flux de données et notifications Traitement des flux Implémentation Conclusion 10
Traitement des flux Les données entrantes passent à travers un réseau d opérateurs Les données sortantes (s il y en a) correspondent au résultat du «complex processing» Modélisation et représentation par un système de «boites et flêches» (boxes and arrows) Traitement des flux Médias sociaux Analyse des tweets sur Apple et Samsung suite à la sortie des nouveaux IPhone et Galaxy S Recherche des mots apparaissant le plus souvent avec Apple et Samsung Filtrage des tweets Découpage des phrases en mots => Création de nouveaux flux Aggrégation de flux sur une fenêtre de temps 11
Traitement des flux Médias sociaux Filter Split Agg. Top 3 OUT Contains Apple On words Sum over 30mn Group by words Dupli cate Tweets Filter Split Agg. Top 3 OUT Contains Samsung On words Sum over 30mn Group by words Modélisation d un flux de données Un flux de données est une séquence de tuples t = (a 1,a 2,a 3,...,a n ) Le schéma du flux est la description des différents attributs des tuples: a 1,a 2,a 3,...,a n Les données du flux sont des éléments (tuples) ayant des valeurs pour chacun des attributs du flux 12
Modélisation d un flux de données Exemple: flux de ventes de voitures chez un concessionnaire Schéma: (date, marque, modèle, couleur, prix) Flux de données: t1 = (01/12/2012, Peugeot, 407, bleue, 20.000 ) t2 = (04/12/2012, Renault,Twingo, blanche, 5.000 ) t3 = (06/12/2012, Citroen, C5, noire, 35.000 )... Différents opérateurs d un moteur CEP Filter Applique des conditions sur les différents attributs d un tuple Le flux de sortie a le même schéma que le flux d entrée mains ne contient qu un sous-ensemble des tuples entrants Exemple t1 = (01/12/2012, Peugeot, 407, bleue, 20.000 ) t2 = (04/12/2012, Renault,Twingo, blanche, 5.000 ) t3 = (06/12/2012, Citroen, C5, noire, 35.000 ) t1 = (01/12/2012, Peugeot, 407, bleue, 20.000 ) t3 = (06/12/2012, Citroen, C5, noire, 35.000 ) Prix > 10.000 13
Différents opérateurs d un moteur CEP Projection Projette les tuples vers un sous-ensemble des attributs du flux entrant Le schéma du flux de sortie est un sous-ensemble des attributs du schéma du flux entrant Exemple t1 = (01/12/2012, Peugeot, 407, bleue, 20.000 ) t2 = (04/12/2012, Renault,Twingo, blanche, 5.000 ) t3 = (06/12/2012, Citroen, C5, noire, 35.000 ) t1 = (Peugeot, 407) t2 = (Renault,Twingo) t3 = (Citroen, C5) Projection = (Marque,Modèle) Différents opérateurs d un moteur CEP Sort Trie les tuples du flux entrant selon un ordre défini sur la valeur des attributs Le flux de sortie a le même schéma que le flux d entrée, mais l ordre des tuples est différent Exemple t1 = (01/12/2012, Peugeot, 407, bleue, 20.000 ) t2 = (04/12/2012, Renault,Twingo, blanche, 5.000 ) t3 = (06/12/2012, Citroen, C5, noire, 35.000 ) t1 = (04/12/2012, Renault,Twingo, blanche, 5.000 ) t2 = (01/12/2012, Peugeot, 407, bleue, 20.000 ) t3 = (06/12/2012, Citroen, C5, noire, 35.000 ) Sort by price 14
Différents opérateurs d un moteur CEP Sort Un tri ne peut se faire sur l ensemble des tuples d un flux Comment trier un flux infini d éléments? Stockage trop important pour un flux fini Doit être fait sur une fenêtre glissante de temps (e.g. 10 dernières minutes) d événements (e.g. 1.000 derniers tuples) Pour une fenêtre de taille n, les n+1 derniers éléments sont gardés dans un «buffer» en mémoire Ejecte et émet dans le flux sortant le plus petit élément du buffer lorsqu il devient plein Opérateur sort - Exemple D.J. Abadi et al.: Aurora: a new model and architecture for data stream management 15
Différents opérateurs d un moteur CEP Aggregate Application d une fonction d aggrégation (sum, min, max, avg,...) et d un «group by» sur le flux de tuples entrant Le schéma du flux de sortie contient les attributs du group by, ainsi que la valeur de l attribute aggrégé Exemple t1 = (01/12/2012, Peugeot, 407, noire, 20.000 ) t2 = (04/12/2012, Peugeot, 307,noire, 13.000 ) t3 = (06/12/2012, Citroen, C5, bleue, 35.000 ) t1 = (Peugeot, noire, 33.000 ) t2 = (Citroen, bleue, 35.000 ) Sum(price) group by make,color Différents opérateurs d un moteur CEP Aggregate Comme le tri, l aggrégation ne peut se faire sur l ensemble du flux L aggrégation se fait sur une fenêtre glissante Pour une fenêtre d une heure, les éléments reçus durant cette heure sont gardés en mémoire ainsi que les aggrégats pour chaque groupe existant Lorsque l heure est terminée, les aggrégats sont émis dans le flux de sortie et la mémoire est ré-initialisée 16
Opérateur aggregate - Exemple D.J. Abadi et al.: Aurora: a new model and architecture for data stream management Moteur CEP - Stockage des données Certaines fonctions ne nécessitent pas de stockage Filter Projection... Fenêtre glissante de temps/éléments pour les autres Sort Aggregate Join... 17
Moteur CEP - Stockage des données Implémentation d une fenêtre glissante LinkedList (Deque) Les éléments sont ajoutés à la fin de la liste Lorsque la liste est pleine, on enlève l élément du début: il est sorti de la fenêtre glissante Ces opérations sont en O(1) pour une liste chaînée Nécessite de maintenir la taille de la liste dans une variable pour être efficace (O(n) sinon) Moteur CEP - Stockage des données Implémentation d une fenêtre glissante Tableau «circulaire» de taille n Maintient d un index i pour la prochaine insertion Commence à 0 et augmente après chaque insertion Recommence à 0 à la fin du tableau Lorsqu un élément est inséré à la place d un autre, l ancien élément sort de la fenêtre glissante Dès que le tableau a été rempli une première fois 18
Moteur CEP - Stockage des données Somme courante sur une fenêtre de n éléments La fenêtre glissante est maintenue à l aide d une des techniques précedentes Lorsqu un élément est reçu, il est inséré dans la fenêtre et sa valeur est ajoutée à la somme courante Si l insertion a éjecté un ancien élément de la fenêtre, la valeur de cet ancien élément est soustraite à la somme courante Moteur CEP - Stockage des données Max courant sur une fenêtre de n éléments Implémentation naïve : garder les n derniers éléments en mémoire et recalculer le max lorsqu il sort de la fenêtre Peut mieux faire Garder les «sommets» décroissants de la fenêtre 19
Moteur CEP - Stockage des données Max courant sur une fenêtre de 10 éléments U1 1 U2 2 U3 3 U4 U4 5 U2 U1 6 U3 U2 7 U4 U3 U3 U4 U5 11 U1 12 U2 13 4 8 U5 10 9 Max list 1 1226 13 37 11 845 910 Plan Génération et exploitation de données CEP et applications Flux de données et notifications Traitement des flux Implémentation Conclusion 20
Conclusion CEP est une technologie encore nouvelle Très présente pour les traitements «simples» de flux de données avec très faible latence Donne de bons résulats CEP est une technologie qui a ses limites Pas de stockage de données donc pas de contexte ni historique Les traitements sont encore assez simples Faible dimensionalité Convergence du CEP, OLAP et Data Mining ActivePivot! Fondée en 2005 Développe et commercialise ActivePivot R&D à Paris, Services à Paris, Londres, NY et Singapour CEI Supélec et stage tous les ans depuis 2009 21
Thank you for your attention To know more about Quartet FS Please visit: www.quartetfs.com Email: info@quartetfs.com 22