Jss 2015 Stream Analytics

Post on 22-Jan-2018

3.366 views 0 download

Transcript of Jss 2015 Stream Analytics

#JSS2015

Les journées

SQL Server 2015

Un événement organisé par GUSS

@GUSS_FRANCE

#JSS2015

Les journées

SQL Server 2015

Un événement organisé par GUSS

Architecture Lambda -Stream AnalyticsMichel Hubert

Georges Damien

#JSS2015

Merci à nos sponsors

#JSS2015

About me

• Directeur Technique chez Cellenza

• MVP Azure

• Microsoft P-Seller

#JSS2015

About me

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

#JSS2015

EVENT HUB

La « Master Data »

#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

#JSS2015

EventHub

Event Hub vs Topics / Queues

• Bus de messages

Topics / Queues Event Hub

#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

#JSS2015

Event Hub : Envoi de données

Partition 1

Partition 2

Partition “n”

Event 1

PartitionKey=A

Event 1

PartitionKey=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 1

Pkey = A

Event 2

Pkey = B Receiver 6

Receiver 2

Worker “n”

Receiver 1

Receiver “n”

Worker 1

#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

#JSS2015

IEventProcessor

Architecture Lambda

#JSS2015

IEventProcessor

Architecture Lambda

#JSS2015

EVENT HUB

#JSS2015

STREAM ANALYTICS

Complex Event Processing

#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

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

TumblingWindow(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 temp

FROM SensorReadings

TIMESTAMP BY time

GROUP 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 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

#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

#JSS2015

• Plusieurs sorties :– SELECT *

INTO outputLog

FROM SensorReadings

– SELECT *

INTO outputTempAlert

FROM SensorReadings

WHERE temp > 75

Exemples de requêtes

#JSS2015

ANALYSE DE LOGS

Stream Analytics

#JSS2015

DÉTECTION DE FRAUDES

Stream Analytics

#JSS2015

ANALYSE DE TWEETS

Stream Analytics

#JSS2015

Des questions ?

Michel.hubert@Cellenza.com

Georges.damien@Cellenza.com

#JSS2015#JSS2015

Les évaluations des sessions,

c’est important !!

http://GUSS.Pro/jss

#JSS2015

Merci à nos volontaires…

#JSS2015#JSS2015