Upload
georges-damien
View
277
Download
4
Embed Size (px)
Citation preview
#JSS2015
Les journéesSQL Server 2015
Un événement organisé par GUSS
@GUSS_FRANCE
#JSS2015
Les journéesSQL Server 2015
Un événement organisé par GUSS
Architecture Lambda -Stream Analytics
Michel HubertGeorges Damien
#JSS2015
Merci à nos sponsors
#JSS2015
About me• Michel Hubert• Directeur Technique chez
Cellenza• MVP Azure• Microsoft P-Seller
#JSS2015
About me
• Georges Damien• Consultant chez Cellenza
#JSS2015
Démonstrateur
http://tinyurl.com/cellenza
#JSS2015
• « La meilleure façon de prédire le futur est de regarder le passé et
le présent ! »
Introduction• Pourquoi les architectures lambda ?
#JSS2015
• Historiquement, le BigData est une suite logique de la B.I.
• Donc on a appliqué les techniques de la B.I. : Le Batch• Ce n’est pas plus suffisant !
• Des flux de données à prendre en compte en temps-réel• Des historiques très volumineux qui recèlent de la valeur
IntroductionPourquoi les architectures lambda ?
#JSS2015
• Architecture lambda ?De quoi parle-t-on ?
#JSS2015
• La base de données classique :• Ex d’une action utilisateur (changement d’adresse) :
• Chaque update écrase des données précédentes !
Principe de baseArchitecture basée sur des données
immuables
UPDATE
#JSS2015
• Stockage immuable :• La mort de l’update, vive l’insert !
• Toute autre information peut être dérivée/reconstruite à partir de ces données brutes
Principe de base• Architecture basée sur des données
immuables
#JSS2015
• Quels cas d’usage ?Big Data + Temps réel
#JSS2015
• Prenons un scénario Exemple :– Site eCommerce / Retail
• Quels gains ?• Analyse temps réel des comportements,• Calcul du Taux d’abandon de panier,• Prévision de stock• Détection de Fraude• Analyse d’une campagne marketing• Quels produits ne déclenchent pas d’achat ? Problème de stock ? De
prix ?
ScénarioArchitecture Lambda
#JSS2015
Réponse MicrosoftPresentation and action
Storage andBatch Analysis
StreamAnalysis
IngestionCollectionEvent production
Event hubs
Cloud gateways(web APIs)
Field gateways
Applications
Legacy IOT (custom protocols)
Devices
IP-capable devices(Windows/Linux)Low-power devices (RTOS)
Search and query
Data analytics(Power BI)
Web/thick client dashboardsEvent Hubs
SQL DB
HD Insight
Power BI
Storage Blobs
Stream Analytics
Devices to take action
MachineLearning
more to come…
#JSS2015
EVENT HUBLa « Master Data »
#JSS2015
Azure Service BusAzure Service
BusRelay
Queue
Topic
Notification Hub
Event Hub
NAT and Firewall Traversal ServiceRequest/Response ServicesUnbuffered with TCP ThrottlingMany publishers and many consumers to communicate over a FIFO like channel. (Competing consumers and Queue-based Load leveling scenarios)
Pub / Sub communication channel. Each Consumer subscribes to a copy of message
High-scale notification distributionMost mobile push notification servicesMillions of notification targets
#JSS2015
EventHubEvent Hub vs Topics / Queues
• Bus de messages
Topics / Queues Event Hub
#JSS2015
Event Hub : Principe général
Event Producers
Azure Event Hub
> 1M Producers> 1GB/sec Aggregate Throughput
Up to 32 partitions via portal, more on
request
Parti
tions
Direct
PartitionKeyHash
Consumer
Group(s)
Receivers
AMQP 1.0Credit-based flow controlClient-side cursorsOffset by Id or Timestamp
#JSS2015
Event Hub : Envoi de donnéesChaque Event Hub a un nombre déterminé de partitionsChaque événement possède une clef de partition, assignée à une partition en sortie
Partition 1
Partition 2
Partition “n”
Event 1PartitionKey=
A
Event 1PartitionKey=
B
#JSS2015
Publication de message .Net / AMQP
#JSS2015
Publication de message via HTTP<protocol>://<namespace>.servicebus.windows.net/<eventhubname>/publisher/<partitionkey>/messages
#JSS2015
Event Hub : Consommation de données
Partition 1
Partition 2
Partition “n”
Event 1Pkey = A
Event 2Pkey = B Receiver 6
Receiver 2
Worker “n”
Receiver 1Receiver “n”
Worker 1
Chaque consommateur (worker) se connecte à l’Event Hub, et reçoit les messagesOn met en place un receiver pour chacune des partitions attendues
#JSS2015
Event Hub : Consommation multipleOn met en place des groupes de consommateurs lorsque plusieurs applications consomment un même flux
Partition 1
Partition 2
Partition “n”
Consumer Group C
Callback for prtn. 6
Callback for prtn. 2
Worker “n”
Callback for prtn. 1
Callback “n”
Worker 1Consumer Group B
Callback for prtn. 6
Callback for prtn. 2
Worker “n”
Callback for prtn. 1
Callback “n”
Worker 1Consumer Group A
Worker “n”Callback for prtn. 6
Callback for prtn. 2
Callback for prtn. 1
Callback “n”
Worker 1
#JSS2015
IEventProcessor
Architecture Lambda
#JSS2015
IEventProcessor
Architecture Lambda
#JSS2015
demoEVENT HUB
#JSS2015
STREAM ANALYTICSComplex Event Processing
#JSS2015
Données au repos
SELECT count(*) FROM ParkingLotWHERE type = 'Auto' AND color = 'Red'
Question“Combien de voitures rouges dans le parking?”
Répondre avec une base de donnée relationnelleMarcher jusqu’au parkingCompter les véhicules qui sont: Rouge, Voiture
#JSS2015
Données en mouvementLa question est différente“Combien de voitures rouges sont passées au marqueur 18A sur l’A-10 dans la dernière heure?”
Répondre avec une base de donnée relationnelleS’arrêter, faire se garer toutes les voitures qui arrivent pendant l’heure dans un parking, les compter
Pas la meilleure des solutions…
#JSS2015
L’avantage définitif
SELECT count(*) FROM A-10WHERE Type = ‘Voiture’ and Color = ‘Rouge’GROUP BY TumblingWindow(hour, 1)
La question est différente“Combien de voitures rouges sont passées au marqueur 18A sur l’A-10 dans la dernière heure?”
#JSS2015
Agrégation temporelle – SQL LikeTumblingWindow(minute,5) HoppingWindow(minute, 10 , 5)
SlidingWindow(minute, 3)
https://msdn.microsoft.com/fr-fr/library/azure/dn834998.aspx
#JSS2015
Stream Analytics
#JSS2015
Stream Analytics
#JSS2015
• Agrégation simple :
– SELECT sensorId, MIN(temp) as tempFROM SensorReadingsTIMESTAMP BY timeGROUP BY sensorId, SlidingWindow(second, 5)HAVING MIN(temp) > 75
Exemples de requêtes
#JSS2015
• Agréagation plusieurs flux :
– SELECT s1.time, s1.dspl, s1.hmdt as previousHmdt, s2.hmdt as newHmdt, datediff(ss, s1.time, s2.time) as secondsApart
FROM SensorData s1 timestamp by timeJOIN SensorData s2 timestamp by timeON s1.dspl = s2.dsplAND DATEDIFF(s, s1, s2) BETWEEN 0 AND 5WHERE (s2.hmdt - s1.hmdt >= .1) or (s1.hmdt - s2.hmdt >= .1)
Exemples de requêtes
#JSS2015
• Jointure avec table de référence :
– SELECT SensorReadings.sensorID, SensorReadings.tempFROM SensorReadingsJOIN thresholdRefDataON SensorReadings.sensorID = thresholdRefData.sensorIDWHERE SensorReadings.temp > thresholdRefData.value
Exemples de requêtes
#JSS2015
• Plusieurs sorties :– SELECT *
INTO outputLogFROM SensorReadings
– SELECT *INTO outputTempAlertFROM SensorReadingsWHERE temp > 75
Exemples de requêtes
#JSS2015
demoANALYSE DE LOGSStream Analytics
#JSS2015
demoDÉTECTION DE FRAUDESStream Analytics
#JSS2015
demoANALYSE DE TWEETSStream Analytics
#JSS2015
Des questions ?• Michel Hubert• [email protected]
m• @michelhubert• Georges Damien• Georges.damien@Cellenza.
com• @georges_damien
#JSS2015#JSS2015
Les évaluations des sessions,c’est important !!
http://GUSS.Pro/jss
#JSS2015
Merci à nos volontaires…
#JSS2015#JSS2015