Processamento de Streams

Objetivos

Aprender os conceitos fundamentais, linguagens e sistemas para construir aplicações que processam fluxos de dados. A unidade curricular aborda, apresenta e discute os sistemas generalistas para processamento de streams em tempo real, e desenvolverá com especial ênfase o estudos de sistemas para modelos de dados estruturados orientados aos fluxos de dados.

Saber

A. Conhecer os principais modelos de programação para o processamento de fluxos contínuos de dados

B. Conhecer as linguagens e assimilar as características fundamentais para resolver problemas no domínio do processamento de streams

C. Compreender as vantagens e as desvantagens das plataformas para processamento de streams.

Aplicação

A. Ser capaz de escolher os modelos, linguagens e ferramentas mais adequadas para resolver um problema de processamento de streams

B. Ser capaz de desenvolver e executar aplicações para processamento de streams usando ferramentas e tecnologias correntes.

Caracterização geral

Código

11562

Créditos

6.0

Professor responsável

Jorg Matthias Knorr, Nuno Manuel Ribeiro Preguiça

Horas

Semanais - 4

Totais - 50

Idioma de ensino

Português

Pré-requisitos

Adequate programming skills in the Python programming language. 

Bibliografia

Opher Etzion and Peter Niblett. Event Processing in Action. Manning Publications, 2010.

Lukasz Golab and Tamer Özsu. Data Stream Management. Morgan and Claypool, 2010.

Bifet et al., (2018) Machine Learning for Data Streams, MIT Press

Several papers will be provided for further reading.

Método de ensino

As aulas teóricas apresentam os modelos, linguagens e plataformas dominantes para cada área temática do programa, usando exemplos paradigmáticos para enquadrar a discussão e o entendimento das questões tratadas.

As aulas práticas focam-se na utilização prática dos sistemas e linguagens estudadas, incluindo o desenvolvimento de aplicações para cenários particulares de processamento de streams. As aulas consistem em demonstrações, exercícios e o acompanhamento da realização dos dois projectos de programação a desenvolver ao longo do semestre. Exemplos de tais aplicações, que têm sido usados, são os challenges da principal conferência nesta área (DEBS).

A avaliação consiste em dois testes (25% cada) e dois trabalhos práticos (25% cada).

Método de avaliação

Avaliação

A avaliação é composta por uma componente teórica-prática e por uma componente de projeto. 

Ambas as componentes são avaliadas numa escala de 0 a 20, arredondado a uma casa decimal.

A nota final da disciplina é a média ponderada das duas componentes, na qual a componente de projeto contribui com 40% e a componente teórica-prática com 60%.

Para obter aprovação à disciplina um estudante necessita ter uma classificação igual ou superior a 9.5 valores em ambas as componentes.

Componente teórica-prática

Esta componente é obtida através de dois testes individuais.

Supletivamente, esta componente pode também ser realizada por exame de recurso. 

A nota da componente teórica é obtida através de:

  1. Média aritmética da nota dos 2 testes, arredondado a uma casa decimal, ou
  2. Nota do exame, arredondado a uma casa decimal.

Componente de projeto

Esta componente consiste na realização de dois trabalhos, feitos em grupos de até 2 alunos.

Apesar do trabalho ser feito em grupo, a nota desta componente será sempre individual (e não atribuída ao grupo).

A nota final da componente é a média aritmética das notas individuais dos dois projetos, arredondado a uma casa decimal.

A útilização de ferramentas de IA é permitida na realização dos projetos, mas deve ser claramente indicada. Em caso de uso excessivo poderá ser penalizado na nota final.

Para aferir esta questão ou o contributo individual de cada membro do grupo no trabalho entregue, os grupos podem ser chamadas a discussão do projeto. 

Conteúdo

Distributed Stream Processing Systems.

System models for stream processing: streams as sequences of mini-batches (e.g. Spark streaming); continuous processing (e.g. Apache Flink, Storm).
Programming models. System aspects: distribution, scalability and fault-tolerance.
Distributed time-series databases. Systems for IoT stream processing.

Data Stream Management Systems (DSMS).

Structured Data Models for Streams. Algebraic operators on stream and relations.
Continuous query languages (extensions to SQL and database management systems to deal with data streams).

Complex Event Processing.
Streams as sequences of events. Production rules, reactive rules, and event-driven computing. Event processing networks, agents and channels. Complex and derived events. Detection of event patterns. Event-processing languages and systems.

Machine Learning for Streams.

Introduction to learning from data Dimensionality reduction for streams.
Learning under concept drift. Incremental learning.
Learning under imbalance and learning from graphs.

Cursos

Cursos onde a unidade curricular é leccionada: