• Aucun résultat trouvé

4.3 Opérateurs de flux

4.3.1 Fenêtres

Comme nous l’avons vu dans la section3.1, l’opérateur de fenêtre est un des

opé-rateurs les plus étudiés dans la littérature. Toutefois, son comportement est encore

flou sur certains points. La formalisation de son fonctionnement permet une meilleure

spécification.

Association position-batch

Avant de définir formellement l’opération de fenêtrage, nous avons besoin d’un

outil pour gérer l’association entre la position d’un n-uplet et de sonbatch. La fonction

τ

S

définit cette association (def4.3.1).

Définition 4.3.1 Fonction position-batch

SoitSun flux,

La fonctionτ

S

: NT×Nest la fonction qui par une position (dans

N) donne l’identifiant du batch (dansT×N) du seul n-uplet ayant cette

position.

Par convention,τ

S

(0) = (t

0, 0

).

En corollaire de l’hypothèse des ordres4.1, la fonctionτ

S

est croissante non-stricte.

Ainsi, il est possible de définir une pseudo inverse (cor4.1)τ

S1

capable de donner une

position (la maximale) pour unbatchdonné.

Corollaire 4.1 Fonction pseudo-inverse deτ

SoitSun flux,

La pseudo-inverse τ

S1

: T×NN existe et correspond à la plus

grande position dubatchdonné en entrée. Si aucunbatchn’existe, le plus

proche est utilisé. Formellement,

∀b ∈ T×N, τ

S1

(b) =

+∞

n=0

n1

[τS(n),τS(n+1)[

(b)

Description de séquences de fenêtres

Afin de se rapprocher le plus possible d’un aspect déclaratif, il est nécessaire de

décomposer l’opérateur de fenêtre en deux objets mathématiques : la description de

son évolution et la séquence de fenêtres. Cette dernière prend une description en

argu-ment pour représenter la relation temporelle résultante. Le principe des descriptions

de séquences de fenêtres tel que décrit dans la définition4.3.2) est assez simple

puis-qu’il suffit de décrire deux bornes (α et β) évoluant de manière discrète ainsi qu’un

taux d’évaluation de ces bornes (r).

Exemple 4.5 :

Nous souhaitons connaître tous les 100 relevés de charge processeur, les 10 derniers

relevés. Dans ce cas, nous souhaitons obtenir une séquence de fenêtres positionnelles

générées tous les100n-uplets (r = 100 ∈ N). Nous appliquons des bornes

position-nelles α,β ∈ (NN)

2

. La première fenêtre contient du 91

ème

n-uplet au 100

ème

.

Ainsi :α(0) =91etβ(0) =100. Sachant que l’évolution des bornes est linéaire, nous

Définition 4.3.2 Description de Séquence de Fenêtre (DSF)

Soient D et D

0

pouvant êtreT ouN, une description de séquence de

fenêtre (DSF) est un triplet(α,β,r)tel que :

– r∈ D est le taux d’évaluation des bornes de la fenêtre

α et β sont deux fonctions de N → D

0

représentant l’évolution des

bornes.

α(j)et β(j) définissent les j

ème

valeurs des bornes. La première borne

est donnée pourj=0. Ces fonctions se doivent de vérifier les propriétés

suivantes (en considérantD =D

0

=T) :

∀j∈ N,

α(j) ≤β(j) le début est avant la fin

α(j) ≥t

0

le début existe

β(j)≤ jr+β(0) la fin est accessible

Les conditions pour les autres cas pour D et D

0

se déduisent par

appli-cation des fonctionsτ

S

etτ

S1

.

avons :

α(j) = 100j+91

β(j) = 100j+100

r = 100

La création de fenêtres nécessite d’associer les n-uplets du flux et le numéro de

fenêtre décrit dans la DSF. Pour cela, nous définissons en 4.3.3une fonction d’attente

utilisant les identifiants debatchs. Cette fonction donne le rang de la dernière fenêtre

complète au moment du batch. Le terme attenteest lié au fait que l’évaluateur de

fe-nêtre doit attendre le prochain changement deγ. Nous retrouvons dans cette fonction

le caractèrebloquantdes fenêtres.

Définition 4.3.3 Fonction d’attenteγ

SoitSun flux, soit(α,β,r)une DSF,

La fonction d’attente de la DSF est une fonctionT×NN

permet-tant de trouver pour un identifiant de batch, l’identifiant de la dernière

fenêtre complétée.

– Sir∈ T, cette fonction est définie parγ: (t,i) 7→j

tβ(0)

r

k

.

– Sir∈ N, cette fonction est définie parγ: (t,i) 7→

τS−1(t,i)−β(0)

r

.

Exemple 4.6 :

En reprenant l’exemple précédent, après simplification nous obtenons :

γ(b) =

$

τ

S1

(b)

100

%

1.

Si nous supposons que le flux produit un n-uplet par seconde (ainsi, τ

S1

(t,i) =

bt/1sc) : alors γ(1024s, 0) = j

1024 100

k

1 = 9. Nous avons bien la 10

ème

fenêtre

(j=9) comme la dernière fenêtre créée à l’instant 1024.

L’opérateur

Il devient désormais possible de définir un opérateur permettant de générer une

relation temporelle à partir d’un flux donné. Cette relation temporelle change d’état

avec l’instant défini par la fonctionγ. De manière générale, une DSF peut être ramenée

à une expression plus générale (α,β,γ) ce que nous utilisons pour la définition 4.3.4

de séquence de fenêtres.

Définition 4.3.4 Opérateur de Séquence de Fenêtres

SoitSun flux et(α,β,γ)une description de séquence,

L’opérateur de séquence de fenêtres est défini par :∀(t,i)∈ T×N,

– Siγ(t,i) ≥0,

– Si la description possède des bornes temporelles :

S[α,β,γ](t,i) = {s∈ S, (α(γ(t,i)), 0)≤ B

S

(s) ≤(β(γ(t,i)),i)}

– Si la description possède des bornes positions :

E(t,i) ={s∈ S, τ

S

(α(γ(t,i)))≤ B

S

(s)≤τ

S

(β(γ(t,i)))}

S[α,β,γ](t,i) ={s ∈ E(t,i)/(#E(t,i)−pos

E(t,i)

(s))≤ β(γ(t,i))−α(γ(t,i))}

– Siγ(t,i) <0 alorsS[α,β,γ](t,i) =

Plusieurs remarques peuvent être formulées sur cette définition. Tout d’abord, les

expressions sont différentes si les bornes sont positionnelles ou temporelles. Pour les

fenêtres temporelles, l’opérateur inclut les n-uplets dont l’identifiant debatchs’étend :

depuis le premierbatchde la fenêtre : (α(γ(t,i)), 0), i.e. ceux dont letimestampest

supérieur à la borne inférieure.

jusqu’au dernierbatchde la fenêtre :(β(γ(t,i)),i). Ce qui correspond aui

ème

batch

ayant letimestampinférieur ou égal à la borne.

Il est important de voir que S[α,β,γ] peut changer à l’arrivée d’un nouveau batch,

même si letimestampne change pas. Ne pas inclure ces modifications ferait perdre des

données à la fenêtre. Nous retrouvons les problématiques explorées dans la section3.1.

Pour les fenêtres positionnelles, la gestion est plus délicate. Si nous considérons

que le flux réparti ses batchs (un n-uplet par batch), alors E(b) = S[α,β,γ](b). Mais

dans le cadre général, E(b) contient l’ensemble des n-uplets potentiels et la séquence

S[α,β,γ](b)en est un sous-ensemble dont la taille est exactement celle décrite dans la

DSF (sélections des n-uplets les plus récents). De plus, nous remarquons queγen

po-sitionnel est défini en fonction deτ

S1

qui fournit la position maximale en cas d’égalité

debatchs, ce qui nous garanti de couvrir l’ensemble des n-uplets concernés.

Exemple 4.7 :

La figure4.1montre l’évolution d’une séquence où la fenêtre glisse de2secondes toutes

les2secondes (r=2) avec une taille constante de3secondes. t

0

=0par simplicité ici.

La première fenêtre possède les bornesα(0) = t

0

+0s etβ(0) = t

0

+3s. Sachant que

le glissement est de2s la description de fenêtre est

∀j∈ N,

(

α(j) = j∗2s+t

0

β(j) = j∗2s+3s+t

0

La relation temporelle générée par cette DSF peut être notée S[2js, 2js +3s, 2s]. Le

calcul de son état à un instant est simple. Prenons le batch (t

0

+5.5s, 0). La fenêtre

à calculer est la fenêtre numérotée γ(t

0

+5.5s, 0) = j

t0+5.5s−β(0)

r

k

= 1. Ainsi :

S[2js, 2js+3s, 2s](t

0

+5.5s, 0) = F

1

={s

4

,s

5

,s

6

,s

7

,s

8

}.

F

IGURE

4.1 – Séquence de fenêtre de taille 3sglissante de 2s

Définition 4.3.5 Exclusions de bornes de fenêtres

SoitSun flux et(α,β,γ)une description de séquence de fenêtre,

Les notations S]α,β,γ], S[α,β,γ[ et S]α,β,γ[ désignent les définitions

de l’opérateur classique de séquence de fenêtre permettant d’exclure

res-pectivement les bornes inférieures, supérieures ou les deux.

Exemple 4.8 :

En reprenant la définition de fenêtre sur 5 secondes :(j∗5s+t

0

,j∗5s+5s+t

0

, 5s).

Nous remarquons que les fenêtres 0 et 1 contiennent les n-uplets dont le timestamp est

égal à t

0

+5s. Ainsi, l’opérateur S]jr+t

0,

jr+r+t

0,

r]avec r=5s permet de retirer

les n-uplets à ce timestamp de cette fenêtre.

Fenêtres partitionnées

L’opérateur de fenêtres partitionnées est très utilisé pour appliquer la même

sé-quence de fenêtres à des sous-flux. Les opérateurs partitionnés sont tous décrits de

la même manière. Le principe, illustré dans la figure4.2 est de diviser le flux suivant

un (ou des) attribut A donné. Sur chacun de ces sous-flux est appliqué un opérateur

quelconque. Le résultat est l’union des résultats de ces opérateurs.

F

IGURE

4.2 – Principe d’un opérateur partitionné

Ainsi, nous décrivons dans la définition 4.3.6de séquence de fenêtre partitionnée

l’application de ces principes de partitionnement sur l’opérateur de séquence de

fe-nêtre.

Définition 4.3.6 Séquence de fenêtre partitionnée

Soient S un flux, a

1, ...,

a

k

un ensemble d’attributs du schéma de S, et

(α,β,γ)une DSF,

Soit∪

l’union relationnelle conservant les identifiants physiques,

Alors, la séquence de fenêtres (α,β,γ) partitionnées par a

1, ...,

a

k

est

définie par :

S[a

1...

a

k

/α,β,γ] = [

a∈Dom(a1,...,ak)

(σ

(a1,...,ak)=a

S)[α,β,γ]

Nous remarquons que nous utilisons la définition de l’union relationnelle

conser-vant les identifiants physiques présentés dans la section précédente, ainsi l’ordre

na-turel décrit dans le flux d’entrée peut être retrouvé dans la relation de sortie.

Exemple 4.9 :

L’exemple le plus courant est la représentation de l’état actuel d’un système à partir

d’un flux. Supposons un flux d’entrée CPU(appId,cpu,τ), nous donnant les relevés

de charge de processeur. Soit la description de fenêtre rapportant le dernier n-uplet

d’un flux : (1j, 1j, 1). Nous pouvons obtenir la relation temporelle représentant pour

chaque application appId, la dernière valeur connue de cpu ainsi que le timestamp τ

de mesure :

CPU[appId/1j, 1j, 1]

Cet exemple illustre comment nous pouvons passer d’un flux brut à une

représen-tation (dynamique) d’uncontexte.

La définition du partitionnement par l’union conservant les identifiants physiques

permet d’avoir un ordre clair et intuitif sur la relation temporelle résultante. Lorsqu’un

nouveau n-uplet entre dans cette relation (ou remplace l’ancien n-uplet), alors il est

mis en bout. Avec l’union classique, il est nécessaire de définir l’ordre d’application des

unions. Et les n-uplets auraient changé d’identifiants à chaque nouvel état de la fenêtre,

ce qui est difficile à contrôler et à manipuler.

Par la suite, plusieurs notations simplifiées sont utilisées pour désigner des

des-criptions de fenêtres courantes décrites dans le tableau 4.2. Notons que les

équiva-lences présentées dans ce tableau sont non triviales et sont démontrées dans

l’an-nexeA.

Définition Équivalence

[L] [j,j, 1]

La séquence de fenêtre où chaque fenêtre ne contient que le dernier

n-uplet du flux. Cette séquence est égale à [B] si le flux répartit ses

n-uplets avec un n-uplet parbatch.

[B] ]τ

S1

(τ

S

(j)

),j, 1] {s ∈ S,B

S

(s) = τ

S

τ

S1

(b)}

Séquence de fenêtre où chaque fenêtre contient le dernierbatch.

[∞] [0,j, 1] {s ∈ S,B

S

(s) ≤b}

Séquence cumulative contenant tout le flux jusqu’aubatchcourant.

[T r s] ]max(sj−r+t

0,

t

0

),sj+t

0,

s]

Fenêtre temporelle de taille r se déplaçant toutes les s unités de

temps.

[P r s] ]max(sj−r, 0),sj,r]

Fenêtre positionnelle de taille r n-uplets se déplaçant tous les s

n-uplets.

T

ABLE

4.2 – Liste des fenêtres courantes