AggOperator

39
AggOperato r Query TupleRoute rM DBBufferC RandomLPSR QueryResul t Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal emp ot hot olt cce ag TinyAlloc ParsedQuer y Histór

description

ADC Components. AttrMag. MainC. AttrGlobal. AttrAccel. TinyAlloc. TinyDBAttr. TimerC. AttrVoltage. RandomLPSR. AttrPhoto. HistóricoM. AttrTemp. NetworkC. TupleRouterM. AttrPot. PotC. DBBufferC. Tuple. AggOperator. GenericComm. Selperator. QueryResult. Query. ParsedQuery. - PowerPoint PPT Presentation

Transcript of AggOperator

Page 1: AggOperator

AggOperator

Query

TupleRouterMDBBufferC

RandomLPSR

QueryResult

Selperator

Tuple

TinyDBAttr TimerC

MainC

NetworkC

AttrGlobal

AttrTemp

AttrPot

AttrPhoto

AttrVoltage

AttrAccel

AttrMag

TinyAlloc

ParsedQuery

HistóricoM

Page 2: AggOperator

AggOperator

Query

TupleRouterMDBBufferC

RandomLPSR

QueryResult

Selperator

Tuple

TinyDBAttr TimerC

MainC

NetworkC

AttrGlobal

AttrTemp

AttrPot

AttrPhoto

AttrVoltage

AttrAccel

AttrMag

TinyAlloc

ParsedQuery

Page 3: AggOperator

ADMINISTRADOR DE HISTÓRICO

IAdministraciónH

HISTORICOMGrano : IntegerMAX_SIZE : uint16_tNUM: uint16_tCurritem: Registro

REGISTROepoch1: uint16_tepoch2: uint16_tlightVal: uint32_ttempVal: uint32_t

1 *

Page 4: AggOperator

SENSORVariable : Dominio

solicitarEstado()

Page 5: AggOperator

AdminHistoricoGrano : IntegerMAX_SIZE: uint16_t construir() insertar() agregar() recuperar()

TuplaVariable : DominioT : DateX : IntegerY : Integer

construir()

Page 6: AggOperator

TupleRouterM

TimerC

fired()NetworkC

DBBufferC

RadioQueue

RAM

EEPROM

ADC Components

Page 7: AggOperator

¿El atributo corresponde al histórico?

Insertar valor en el histórico

No

¿Atributo sin dato?

SíNo

Fin

Page 8: AggOperator
Page 9: AggOperator

1.2: Muestrear datos

1.3: Llenar tuplas

1.4:¿Agregar?

1.6: ¿Agregar?

1.5: Operador de selección

1.7: Operador de agregación

No Sí

No

1.1 Identificar consultas

D

Page 10: AggOperator

1.2: Muestrear datos

1.3: Llenar tuplas e insertar

en histórico

1.4:¿Agregar?

1.6: ¿Agregar?

1.7: Operador de agregación

Epoch

No Sí

No

1.1 Identificar consultas

Arribo de resultados hijos

Page 11: AggOperator

Nuevo mensaje de consulta

Fin

Crear representación compacta de consulta

¿Todos los mensajes?

No

Arribo de mensaje de consulta

Crear representación compacta de consulta

¿Todos los mensajes?

No

¿Identificador distinto de cero?

Encender variable de control

No

Crear tupla de resultado

Page 12: AggOperator

¿Variable de control?

¿Idle?

¿Agregar?

Page 13: AggOperator

1.3: Llenar tuplas e

insertar en Histórico

1.4:¿Agregar?

1.7: Operador de agregación

No Sí

2.1¿idle?

epoch

NoSí

1.5: Operador de selección

1.6:¿Radio?

Page 14: AggOperator

Slots libres

Slots llenos

Slots llenos

Slots llenos

Slots libres

Slots libres

Siguiente libre

Siguienteocupado

Inicio

Siguiente lleno

Siguiente libre

Inicio

Page 15: AggOperator

Muestrear datos

¿Agregar?

Evento de reloj

No

Procesar consultas

Entrega de tuplas

Llenar tupla

Arribo resultados hijos

¿Agregar?

Operador de Selección Operador de

Agregación

Sí¿Radio?

No

Page 16: AggOperator

Epoch

1. Procesar consultas

2. Entrega de tuplas

Page 17: AggOperator

Epoch

2.1¿Radio?

No

2.3¿Idle?

No

D

2.2 Guardar EEPROM

2.4 Enviar

Page 18: AggOperator

2.1¿Radio?

No

2.4¿Idle?

No

D

2.2 Guardar EEPROM

2.6 Enviar

Sí 2.3¿Agregación?

2.5¿Variable

de control?

No

Page 19: AggOperator

Muestrear datos

¿Agregar?

Evento de reloj

No

Procesar consultas

Entrega de tuplas

Llenar tupla

Arribo resultados hijos

¿Agregar?

Operador de Selección

Operador de Agregación

S

Page 20: AggOperator

Muestrear

¿Agregar?

Evento de reloj

No

Procesar consultas

Entrega de tuplas

Llenar tupla

Arribo resultados hijos

¿Agregar?

Operador de Selección Operador de

Agregación

Sí¿Radio?

No

Page 21: AggOperator

Nueva inserción

¿Grano == 1?

Page 22: AggOperator

QB 1

Estación central

QB 3

QB 2

Luz

Luz

Luz

Page 23: AggOperator

ADMINISTRADOR DE HISTÓRICO

IAdministraciónH

Page 24: AggOperator

A.2: Muestrear datos

A.3: Llenar tuplas

C:¿Agregar?

¿Agregar?

C.2: Operador de selección

No

No

¿Resultados hijos?

¿Agregar?

Page 25: AggOperator

uint8_t qid; //1uint8_t numFields; //2uint16_t epochDurationuint16_t clocksPerSample;int16_t clockCount; //11bool hasAgg:1; // -- are there aggregates in this querychar bufferType; //see Buffer.h:BufferType //25uint8_t bufferId; //26 -- output buffer id

qid numFields epochDuration clocksPerSample clockCount hasAgg bufferType

Page 26: AggOperator

Red de sensores

Recolector AplicaciónPersistencia

Page 27: AggOperator

Usuario Posición Fecha RetiroSr. López (3,5) 1/06/09 $200.00Sr. López (3,5) 5/06/09 $500.00Sr. López (4,2) 11/06/09 $100.00Sr. López (3,5) 20/06/09 $150.00Sr. López (9,6) 22/06/09 $120.00

Usuario Posición Fecha RetiroSra. López (4,2) 3/06/09 $100.00Sra. López (3,5) 5/06/09 $350.00Sra. López (4,2) 7/06/09 $450.00Sra. López (9,6) 22/06/09 $210.00

Posición Fecha Retiro Sr López Retiro Sra López(3,5) 1/06/09 $200.00 No hubo(3,5) 3/06/09 No hubo $350.00(3,5) 5/06/09 $500.00 $350.00(4,2) 7/06/09 No hubo $450.00(4,2) 11/06/09 $100.00 No hubo(3,5) 20/06/09 $150.00 No hubo(9,6) 22/06/09 $120.00 $210.00

Page 28: AggOperator

CONSULTAqid: uint8_thasAgg: boolbuffType: uint16_t

EPOCH DURATIONVal :uint16_t

1 1

RELOJGrano: uint16_t

fireEvent()

clocksPerSamplekMIN : uint16_t

MCD()

*

1MENSAJE

field : Field

Page 29: AggOperator

CONSULTAqid: uint8_thasAgg: boolbuffType: uint16_tED: uint16_t

MENSAJEfield : Field

* 1

TUPLA

EVENTOTime : uint32_t

RELOJ LÓGICOGrano: uint16_t

EPOCH

1

*

*

*

1

MOTE

Page 30: AggOperator

CONSULTAqid: uint8_thasAgg: boolbuffType: uint16_tED: uint16_t

MENSAJEqid: uint8_tfield : Field

* 1

TUPLA RESULTADOnumFields : char

RELOJNow: Tiempo

setInterval()setTime()fire()

EPOCHT: Tiempo

iniciar()terminar()

1

*

1 1.. 65535

TIEMPOHigh32: uint32_tLow32: uint32_t

Page 31: AggOperator

ESQUEMAqid: uint8_thasAgg: boolbuffType: uint16_tED: uint16_t

MENSAJEqid: uint8_tfield : Field

* 1

TUPLA RESULTADO

numFields : Char

RELOJNow: Tiempo

setInterval()setTime()fire()

EPOCHT: Tiempo

iniciar()terminar()

1

*

HISTORICOGrano: uint8_tMAX_SIZE: uint8_t

add()pack()

CONSULTAT: TiempoX: IntegerY: Integer

*

1

1

* 1

*1

1

Page 32: AggOperator

ESQUEMAqid: uint8_thasAgg: boolbuffType: uint16_tED: uint16_t

MENSAJE

qid: uint8_tfield : Field

* 1

TUPLAnumFields : Char

RELOJNow: Tiempo

setInterval()setTime()fire()

EPOCH

T: Tiempo

iniciar()terminar()

1

*

HISTORICOGrano: uint8_tMAX_SIZE: uint8_t

CONSULTAT: TiempoX: IntegerY: Integer

*

1

ATRIBUTOName: StringValue: uint16_t

1

*

1

*1

1

Page 33: AggOperator

CONSULTAqid: uint8_thasAgg: boolbuffType: uint16_tED: uint16_t

MENSAJE

qid: uint8_tfield : Field

* 1

TUPLAnumFields : Char

RELOJNow: Tiempo

setInterval()setTime()fire()

EPOCH

T: Tiempo

iniciar()terminar()

1

*

ATRIBUTOName: StringValue: uint16_t

1

*

*1

*

1

Page 34: AggOperator

QueryProcessor

RadioQueue

TupleRouterM

AggOperator

Query DBBufferC

RandomLPSR

QueryResult

SelperatorTupleTinyDBAttr

TimerC

NetworkC

AttrGlobal TinyAlloc

ParsedQuery

Page 35: AggOperator

1 2 3 … 65,535 …

ED [1,650000]

Page 36: AggOperator

NetworkC

newMessage()

TupleRouterM

queryMessage()

Query

query

ParsedQuery

crear()

crear()

parsedQuery

Tuple

crear()

tuple

Page 37: AggOperator

TimerC TupleRouterM

newEpoch()

TinyDBAttr

dato

Tuple

a: muestrear()

b: llenarAtributo()

llenado

{ b.Ejecución = por cada atributo}

{ a.Ejecución = por cada atributo}

SelOperator

procesarTupla()

procesada

iniciado

Page 38: AggOperator

TimerC TupleRouterM

newEpoch()

TinyDBAttr

dato

Tuple

a: muestrear()

b: llenarAtributo()

llenado

{ b.Ejecución = por cada atributo}

{ a.Ejecución = por cada atributo}

AggOperator

procesarTupla()

NetworkC

newResult()

agregar()recibido

Page 39: AggOperator

TimerC TupleRouterM

newEpoch()

QueryResult

creado

DBBuffer

crear()

encolar()

transmitido

NetworkC

transmitir()

transmitido

endOfEpoch()

iniciado()

terminado