AggOperator Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC...

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

Transcript of AggOperator Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC...

Page 1: AggOperator Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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 Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

AggOperator

Query

TupleRouterMDBBufferC

RandomLPSR

QueryResult

Selperator

Tuple

TinyDBAttr TimerC

MainC

NetworkC

AttrGlobal

AttrTemp

AttrPot

AttrPhoto

AttrVoltage

AttrAccel

AttrMag

TinyAlloc

ParsedQuery

Page 3: AggOperator Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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 Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

SENSORVariable : Dominio

solicitarEstado()

Page 5: AggOperator Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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

TuplaVariable : DominioT : DateX : IntegerY : Integer

construir()

Page 6: AggOperator Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

TupleRouterM

TimerC

fired()NetworkC

DBBufferC

RadioQueue

RAM

EEPROM

ADC Components

Page 7: AggOperator Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

¿El atributo corresponde al histórico?

Insertar valor en el histórico

No

¿Atributo sin dato?

SíNo

Fin

Page 8: AggOperator Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.
Page 9: AggOperator Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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 Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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 Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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 Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

¿Variable de control?

¿Idle?

¿Agregar?

Page 13: AggOperator Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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 Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

Slots libres

Slots llenos

Slots llenos

Slots llenos

Slots libres

Slots libres

Siguiente libre

Siguienteocupado

Inicio

Siguiente lleno

Siguiente libre

Inicio

Page 15: AggOperator Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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 Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

Epoch

1. Procesar consultas

2. Entrega de tuplas

Page 17: AggOperator Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

Epoch

2.1¿Radio?

No

2.3¿Idle?

No

D

2.2 Guardar EEPROM

2.4 Enviar

Page 18: AggOperator Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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 Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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 Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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 Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

Nueva inserción

¿Grano == 1?

Page 22: AggOperator Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

QB 1

Estación central

QB 3

QB 2

Luz

Luz

Luz

Page 23: AggOperator Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

ADMINISTRADOR DE HISTÓRICO

IAdministraciónH

Page 24: AggOperator Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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 Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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 Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

Red de sensores

Recolector AplicaciónPersistencia

Page 27: AggOperator Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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 Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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 Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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 Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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 Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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 Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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 Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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 Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

QueryProcessor

RadioQueue

TupleRouterM

AggOperator

Query DBBufferC

RandomLPSR

QueryResult

SelperatorTupleTinyDBAttr

TimerC

NetworkC

AttrGlobal TinyAlloc

ParsedQuery

Page 35: AggOperator Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

1 2 3 … 65,535 …

ED [1,650000]

Page 36: AggOperator Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

NetworkC

newMessage()

TupleRouterM

queryMessage()

Query

query

ParsedQuery

crear()

crear()

parsedQuery

Tuple

crear()

tuple

Page 37: AggOperator Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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 Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

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 Query TupleRouterM DBBufferC RandomLPSR QueryResult Selperator Tuple TinyDBAttr TimerC MainC NetworkC AttrGlobal AttrTemp AttrPot AttrPhoto.

TimerC TupleRouterM

newEpoch()

QueryResult

creado

DBBuffer

crear()

encolar()

transmitido

NetworkC

transmitir()

transmitido

endOfEpoch()

iniciado()

terminado