Jss 2015 Stream Analytics

44
#JSS2015 Les journées SQL Server 2015 Un événement organisé par GUSS @GUSS_FRANCE

Transcript of Jss 2015 Stream Analytics

Page 1: Jss 2015   Stream Analytics

#JSS2015

Les journées

SQL Server 2015

Un événement organisé par GUSS

@GUSS_FRANCE

Page 2: Jss 2015   Stream Analytics

#JSS2015

Les journées

SQL Server 2015

Un événement organisé par GUSS

Architecture Lambda -Stream AnalyticsMichel Hubert

Georges Damien

Page 3: Jss 2015   Stream Analytics

#JSS2015

Merci à nos sponsors

Page 4: Jss 2015   Stream Analytics

#JSS2015

About me

• Directeur Technique chez Cellenza

• MVP Azure

• Microsoft P-Seller

Page 5: Jss 2015   Stream Analytics

#JSS2015

About me

Page 6: Jss 2015   Stream Analytics

#JSS2015

Démonstrateur

http://tinyurl.com/cellenza

Page 7: Jss 2015   Stream Analytics

#JSS2015

• « La meilleure façon de prédire le futur

est de regarder le passé et le présent ! »

Introduction• Pourquoi les architectures lambda ?

Page 8: Jss 2015   Stream Analytics

#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 ?

Page 9: Jss 2015   Stream Analytics

#JSS2015

• Architecture lambda ?

De quoi parle-t-on ?

Page 10: Jss 2015   Stream Analytics

#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

Page 11: Jss 2015   Stream Analytics

#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

Page 12: Jss 2015   Stream Analytics

#JSS2015

• Quels cas d’usage ?

Big Data + Temps réel

Page 13: Jss 2015   Stream Analytics

#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

Page 14: Jss 2015   Stream Analytics

#JSS2015

Réponse Microsoft

Page 15: Jss 2015   Stream Analytics

#JSS2015

EVENT HUB

La « Master Data »

Page 16: Jss 2015   Stream Analytics

#JSS2015

Azure Service BusAzure Service Bus

Relay

Queue

Topic

Notification Hub

Event Hub

NAT and Firewall Traversal Service

Request/Response Services

Unbuffered with TCP Throttling

Many 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 distribution

Most mobile push notification services

Millions of notification targets

Page 17: Jss 2015   Stream Analytics

#JSS2015

EventHub

Event Hub vs Topics / Queues

• Bus de messages

Topics / Queues Event Hub

Page 18: Jss 2015   Stream Analytics

#JSS2015

Event Hub : Principe généralArchitecture Lambda

Event Producers

Azure Event Hub

> 1M Producers> 1GB/sec

Aggregate Throughput

Up to 32 partitions via portal, more on

request

Part

itio

ns

Direct

PartitionKey

Hash

Consumer Group(s)

Receivers

AMQP 1.0

Credit-based flow control

Client-side cursors

Offset by Id or Timestamp

Page 19: Jss 2015   Stream Analytics

#JSS2015

Event Hub : Envoi de données

Partition 1

Partition 2

Partition “n”

Event 1

PartitionKey=A

Event 1

PartitionKey=B

Page 20: Jss 2015   Stream Analytics

#JSS2015

Publication de message .Net / AMQP

Page 21: Jss 2015   Stream Analytics

#JSS2015

Publication de message via HTTP<protocol>://<namespace>.servicebus.windows.net/<eventhubname>/publisher/<partitionkey>/messages

Page 22: Jss 2015   Stream Analytics

#JSS2015

Event Hub : Consommation de données

Partition 1

Partition 2

Partition “n”

Event 1

Pkey = A

Event 2

Pkey = B Receiver 6

Receiver 2

Worker “n”

Receiver 1

Receiver “n”

Worker 1

Page 23: Jss 2015   Stream Analytics

#JSS2015

Event Hub : Consommation multiple

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

Page 24: Jss 2015   Stream Analytics

#JSS2015

IEventProcessor

Architecture Lambda

Page 25: Jss 2015   Stream Analytics

#JSS2015

IEventProcessor

Architecture Lambda

Page 26: Jss 2015   Stream Analytics

#JSS2015

EVENT HUB

Page 27: Jss 2015   Stream Analytics

#JSS2015

STREAM ANALYTICS

Complex Event Processing

Page 28: Jss 2015   Stream Analytics

#JSS2015

Données au repos

SELECT count(*) FROM ParkingLot

WHERE type = 'Auto'AND color = 'Red'

Question“Combien de voitures rouges dans le parking?”

Répondre avec une base de donnée relationnelleMarcher jusqu’au parking

Compter les véhicules qui sont: Rouge, Voiture

Page 29: Jss 2015   Stream Analytics

#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…

Page 30: Jss 2015   Stream Analytics

#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?”

Page 31: Jss 2015   Stream Analytics

#JSS2015

Agrégation temporelle – SQL Like

TumblingWindow(minute,5) HoppingWindow(minute, 10 , 5)

SlidingWindow(minute, 3)

https://msdn.microsoft.com/fr-fr/library/azure/dn834998.aspx

Page 32: Jss 2015   Stream Analytics

#JSS2015

Stream Analytics

Page 33: Jss 2015   Stream Analytics

#JSS2015

Stream Analytics

Page 34: Jss 2015   Stream Analytics

#JSS2015

• Agrégation simple :

– SELECT sensorId, MIN(temp) as temp

FROM SensorReadings

TIMESTAMP BY time

GROUP BY sensorId, SlidingWindow(second, 5)

HAVING MIN(temp) > 75

Exemples de requêtes

Page 35: Jss 2015   Stream Analytics

#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 time

JOIN SensorData s2 timestamp by time

ON s1.dspl = s2.dspl

AND DATEDIFF(s, s1, s2) BETWEEN 0 AND 5

WHERE (s2.hmdt - s1.hmdt >= .1) or (s1.hmdt - s2.hmdt >= .1)

Exemples de requêtes

Page 36: Jss 2015   Stream Analytics

#JSS2015

• Jointure avec table de référence :

– SELECT SensorReadings.sensorID, SensorReadings.temp

FROM SensorReadings

JOIN thresholdRefData

ON SensorReadings.sensorID = thresholdRefData.sensorID

WHERE SensorReadings.temp > thresholdRefData.value

Exemples de requêtes

Page 37: Jss 2015   Stream Analytics

#JSS2015

• Plusieurs sorties :– SELECT *

INTO outputLog

FROM SensorReadings

– SELECT *

INTO outputTempAlert

FROM SensorReadings

WHERE temp > 75

Exemples de requêtes

Page 38: Jss 2015   Stream Analytics

#JSS2015

ANALYSE DE LOGS

Stream Analytics

Page 39: Jss 2015   Stream Analytics

#JSS2015

DÉTECTION DE FRAUDES

Stream Analytics

Page 40: Jss 2015   Stream Analytics

#JSS2015

ANALYSE DE TWEETS

Stream Analytics

Page 42: Jss 2015   Stream Analytics

#JSS2015#JSS2015

Les évaluations des sessions,

c’est important !!

http://GUSS.Pro/jss

Page 43: Jss 2015   Stream Analytics

#JSS2015

Merci à nos volontaires…

Page 44: Jss 2015   Stream Analytics

#JSS2015#JSS2015