SQLSaturday Paris 2016 Le chemin du CEP vers le Cloud De StreamInsight à Azure Stream Analytics Marius Zaharia
SQLSaturday Paris 2016 Merci à nos sponsors
SQLSaturday Paris 2016 Votre speaker : MARIUS ZAHARIA Senior Cloud Architect, Cellenza MVP Azure Azure Advisor P-SELLER Azure, Microsoft Community Manager, AZUG FR
SQLSaturday Paris 2016 De StreamInsight à Azure Stream Analytics Le traitement des évènements Besoins / scénarii type Moteurs CEP : la solution StreamInsight : le (premier) CEP de Microsoft Azure Stream Analytics : la réponse Cloud Principes de traitement temporal Modèles / patterns de requêtes StreamInsight et Stream Analytics : face à face Conclusion
SQLSaturday Paris 2016 Le traitement des évènements (rappel ?) Traitement des évènements : méthode de suivi et analyse des flux d’information par rapport à des repères (évènements) dans le temps. Traitement complexe des évènements (Complex Event Processing - CEP) : traitement en temps réel De sources singulières ou multiples d’évènements Possiblement par rapport à des données de référence Pour identifier des modèles de répétition complexes
SQLSaturday Paris 2016 Besoins / scénarii type Monitoring de réseau Surveillance intelligente Gestion et analyse des risques Commerce électronique Suivi des ventes Détection des fraudes Routage de commandes intelligent Analyse des coûts de transaction Objets connectés (des capteurs aux voitures et avions) Gestion des stocks Analyse des flux web Alertes financières (portefeuille) Analyse de prix Gestion des données de marché Trading algorithmique Enrichissement de données
SQLSaturday Paris 2016 Moteurs CEP : la solution Moteurs de Complex Event Processing TIBCO BusinessEvents / StreamBase Oracle CEP WebSphere Business Events Sybase / SAP ESP Fujitsu … Microsoft ?
SQLSaturday Paris 2016 StreamInsight : le (premier) CEP de Microsoft Résolution du problème – en manière spécifique: Moteur d’exécution: embarqué (dans l’application) ou serveur « standalone » Principes: application / adaptateurs in/out / requête / event / « payload » Application CEP : Développement en.NET Requêtes : LINQ (en.NET) Adaptateurs développés sur mesure; exposés en Web Services WCF var payloadByRegion = from i in inputStream group i by i.Region into byRegion from c in byRegion.HoppingWindow( TimeSpan.FromMinutes(1), TimeSpan.FromSeconds(2), HoppingWindowOutputPolicy.ClipToWi ndowEnd) select new { Region = byRegion.Key, Sum = c.Sum(p => p.Value) };
SQLSaturday Paris 2016 demo StreamInsight
SQLSaturday Paris 2016 Azure Stream Analytics : la réponse Cloud de Microsoft Evolution de la résolution: Application => Job Stream Analytics Adaptateurs => Entrées et sorties standardisées: Entrées: Event Hub, IoT Hub (flux), Blob Storage (flux et données de référence) Sorties: SQL Database, DocumentDB, Topic ou Queue Service Bus, Blob ou Table Storage, PowerBI ! Formats entrée/sortie: JSON, CSV, (Apache) Avro Requêtes: type « SQL » Provisionnement et démarrage très rapide et facile Scalabilité x1 – x50 (extensible à la demande) Possibilité de tester des différentes étapes
SQLSaturday Paris 2016 Azure Stream Analytics – portail(s)
SQLSaturday Paris 2016 demo Azure Stream Analytics – dans le nouveau portail !
SQLSaturday Paris 2016 Principes de traitement temporal Temps applicatif vs temps de l’exécution Intervalles (fenêtres) de temps « Tumbling » « Hopping » « Sliding » « Snapshot » « Count » Agrégations (group by) Remise en ordre des évènements désordonnés Traitement des évènements tardive
SQLSaturday Paris 2016 Principes de requetage (focus sur Azure SA) Types de données: simples (bigint, nvarchar, float, datetime, …) Complexes : types tableau (array) ou enregistrement (record) Eléments de langage: SELECT, FROM, INTO, JOIN, GROUP, … Certains sont plus spécifiques : APPLY, Reference Data JOIN Gestion temporelle: TIMESTAMP BY, décalage de temps, remise en ordre Fonctions (incluses): Scalar (Conversion, Date & Time, Mathematical, String), Record, Analytic, Aggregate, Geospatial Autres fonctions pourront être créées sur mesure
SQLSaturday Paris 2016 Référence des constructs de langage (Azure SA) Commandes SELECT FROM WHERE GROUP BY HAVING CASE JOIN UNION Extensions de type fenêtre de temps Tumbling Window Hopping Window Sliding Window Duration Fonctions Agrégates SUM COUNT AVG MIN MAX Fonctions pour la mise à l’échelle WITH PARTITION BY Fonctions date / temps DATENAME DATEPART DAY MONTH YEAR DATETIMEFROMPARTS DATEDIFF DATADD Fonctions chaîne LEN CONCAT CHARINDEX SUBSTRING PATINDEX Fonctions Statistiques VAR VARP STDEV STDEVP
SQLSaturday Paris 2016 Modèles / patterns de requêtes Trouver le premier évènement dans un intervalle
SQLSaturday Paris 2016 Modèles / patterns de requêtes Trouver le dernier évènement dans un intervalle
SQLSaturday Paris 2016 Modèles / patterns de requêtes Détecter l’absence d’évènements
SQLSaturday Paris 2016 Modèles / patterns de requêtes Sélection d’options via CASE
SQLSaturday Paris 2016 Modèles / patterns de requêtes Envoi de sorties multiples
SQLSaturday Paris 2016 Modèles / patterns de requêtes Comptage de valeurs uniques
SQLSaturday Paris 2016 StreamInsight et Stream Analytics : face à face Requetâge: LINQ (.NET) vs SQL-like
SQLSaturday Paris 2016 StreamInsight et Stream Analytics : face à face Intervalles temporels StreamInsightStream Analytics Hoppingvs Hopping TumblingvsTumbling -vsSliding Snapshotvs - Countvs -
SQLSaturday Paris 2016 StreamInsight et Stream Analytics : face à face Entrées et Sorties StreamInsight: adaptateurs customisés. On peut accepter tout type d’entrée et format Nécessite du développement spécifique Stream Analytics: multitude de types d’entrées et sorties, tous prêts à l’emploi Format prédéfini: CSV, JSON, Arvo Moins flexible sinon: pas de connectivité directement
SQLSaturday Paris 2016 StreamInsight et Stream Analytics : face à face Exécution / déploiement StreamInsight: Unité: « application StreamInsight » « process » Moteur embarqué dans une application.NET, ou Serveur autonome (dans une machine) accessible via web service WCF Installation: via installer StreamInsight Déploiement: applicatif.NET (binaries, service, endpoints, …) Stream Analytics: Unité: « job » Moteur hébergé dans Azure. Service en mode PaaS; pas de visibilité sur le fonctionnement interne Installation: rien à faire Déploiement: service Azure (portail, PowerShell/CLI, REST API)
SQLSaturday Paris 2016 StreamInsight et Stream Analytics : face à face Extensibilité StreamInsight: Adaptateurs customisés Format entrée/sortie customisable Encoding customisé User Defined Aggregates / Fonctions customisées Stream Analytics: Pas d’entrées / sorties customisées Format fixe (JSON, CSV, Avro) Encoding: UTF-8 Pas de UDF ou équivalent Fonctions custom Machine Learning possibles (en preview)
SQLSaturday Paris 2016 StreamInsight et Stream Analytics : face à face Evolutivité StreamInsight: Produit « mature » Evolutions mineures uniquement Stream Analytics: General availability Plein développement Très évolutif Mises à jour en rythme Cloud
SQLSaturday Paris 2016 StreamInsight et Stream Analytics : face à face Scalabilité, disponibilité StreamInsight: Embarqué: mono-fil Serveur autonome: parallélisme en multi-fil possible (y compris pour la même requête); gestion manuelle Scalabilité: distribution multi- machine possible HA: possible si déployé en mode distribué Stream Analytics: Fonctionne potentiellement en parallélisme; gestion automatique Scalable via Unités de streaming: 1-48 HA: 99,9%
SQLSaturday Paris 2016 StreamInsight et Stream Analytics : face à face Cout d’utilisation Licence SQL Server StreamInsight Standard StreamInsight Premium = SQL DataCenter A la consommation Per unité de streaming Per volume de données traitées
SQLSaturday Paris 2016 StreamInsight et Stream Analytics : face à face Monitoring et dépannage StreamInsight: Monitoring et compteurs de performance Windows; compteurs et alertes customisés (développer) tooling spécifique dédié (Flow Debugger); Stream Analytics Journaux (logs) – Portail Azure + API Test des requêtes (upload fichiers) Alertes configurables
SQLSaturday Paris 2016 Conclusions – StreamInsight vs Stream Analytics CEP : certainement un concept plein d’avenir (et de présent !) StreamInsight : bon pour des applications autonomes, voire embarquées Nécessite un investissement de développement Stream Analytics : partout ou le cloud est une solution viable Onboarding et setup plus rapide Scalable et flexible Paiement à l’utilisation, cout d’entrée accesible
SQLSaturday Paris 2016 Questions ?
SQLSaturday Paris 2016 Merci à nos volontaires
SQLSaturday Paris 2016 Et en plus vous pouvez gagner des cadeaux ! Donnez votre avis sur les sessions :
SQLSaturday Paris 2016 Merci !