Informática e Tecnologias Multimédia

Armazenamento de Grandes Volumes de Dados

<< voltar ao Plano Curricular

6 ECTS; 3º Ano, 1º Semestre, 28,0 PL + 28,0 TP + 5,0 OT , Cód. 814360.

Docente(s)
- Renato Eduardo Silva Panda (1)(2)

(1) Docente Responsável
(2) Docente que lecciona

Pré-requisitos
Não aplicável.

Objetivos
Esta unidade curricular desenvolve competências de aquisição, preparação, armazenamento, consulta e análise de dados, articulando a ciência de dados com a engenharia de dados e o processamento em larga escala. No final da unidade curricular, os estudantes deverão ser capazes de:

1. Explicar o ciclo de vida de um projeto de dados, as características do Big Data e as implicações éticas da aquisição e utilização de dados.
2. Configurar ambientes de desenvolvimento reprodutíveis e utilizar Python e as suas bibliotecas na manipulação e análise de dados.
3. Adquirir e integrar dados de ficheiros, APIs e páginas web, aplicando operações de preparação e transformação com verificações de qualidade.
4. Realizar análise exploratória e comunicar resultados através de visualizações, relatórios e dashboards interativos.
5. Comparar modelos de armazenamento e consulta, selecionando formatos e tecnologias adequados às características dos dados e aos requisitos de utilização.
6. Explicar os princípios do processamento paralelo e distribuído e aplicar estratégias de processamento em larga escala, avaliando os seus custos e limitações.
7. Desenvolver, documentar e defender soluções práticas de dados, justificando decisões técnicas e verificando criticamente os resultados e o apoio obtido através de ferramentas de inteligência artificial.

Programa
1. Introdução à ciência de dados e ao Big Data
- 1.1 Conceitos fundamentais, papéis profissionais e ciclo de vida dos projetos de dados.
- 1.2 Os 5Vs: volume, velocidade, variedade, veracidade e valor.
- 1.3 Ética, privacidade, transparência, qualidade dos dados e impacto social.
- 1.4 Reprodutibilidade, documentação, controlo de versões e utilização crítica de IA.
2. Ambiente de desenvolvimento e fundamentos de Python
- 2.1 Jupyter, scripts Python e Visual Studio Code.
- 2.2 Ambientes isolados e gestão de dependências: pip, conda e uv.
- 2.3 Docker, Docker Compose e, se possível, introdução a Dev Containers.
- 2.4 Revisão de Python: tipos, estruturas de dados, controlo de fluxo, funções e módulos.
- 2.5 Organização de projetos, Git, verificações de código e testes básicos.
3. Manipulação, análise e visualização de dados
- 3.1 NumPy e operações sobre arrays.
- 3.2 pandas: seleção, transformação, agregação e junção de dados tabulares.
- 3.3 Análise exploratória, estatística descritiva, dados em falta e valores atípicos.
- 3.4 Visualização com Matplotlib, Seaborn e Plotly; escolha de gráficos e comunicação rigorosa.
- 3.5 Dashboards interativos com Streamlit e introdução a alternativas como Dash.
4. Aquisição, integração e engenharia de dados
- 4.1 Ficheiros e formatos: CSV, JSON, Excel e Parquet.
- 4.2 APIs REST: autenticação, paginação, limites de acesso e tratamento de erros.
- 4.3 Web scraping com requests e Beautiful Soup; boas práticas de recolha.
- 4.4 Extração de dados de documentos e introdução a OCR.
- 4.5 Limpeza, normalização, integração e validação de dados de múltiplas fontes.
- 4.6 Introdução a ETL e ELT, rastreabilidade e atualização dos dados, com exemplos orientados.
5. Armazenamento e consulta de dados
- 5.1 Modelos relacionais e NoSQL: documentos, chave-valor, famílias de colunas e grafos.
- 5.2 Consulta e análise com SQL; exemplos com PostgreSQL e DuckDB.
- 5.3 Armazenamento e consulta em MongoDB e Redis.
- 5.4 Armazenamento de objetos, data warehouses, data lakes e introdução a lakehouses.
- 5.5 Critérios de seleção: modelo de dados, padrões de acesso, consistência, escalabilidade e custo.
- 5.6 Experimentação comparativa com notebooks e serviços locais em Docker, quando aplicável.
6. Estratégias de processamento em larga escala
- 6.1 Limites de memória e de entrada/saída; avaliação do tempo de execução e dos recursos utilizados.
- 6.2 Processamento por blocos, operações vetorizadas e processamento incremental.
- 6.3 Formatos colunares, compressão, particionamento e leitura seletiva.
- 6.4 Paralelização, execução diferida e introdução ao processamento com Dask.
7. Processamento distribuído
- 7.1 Paradigma MapReduce e fundamentos de distribuição de dados e tarefas.
- 7.2 Arquitetura Hadoop: HDFS e YARN; enquadramento da evolução para Spark.
- 7.3 Apache Spark e PySpark: DataFrames, Spark SQL e introdução aos RDDs.
- 7.4 Transformações, ações, execução diferida, partições e transferência de dados entre tarefas.
- 7.5 Comparação de soluções locais, paralelas e distribuídas; medição e interpretação do desempenho.
- 7.6 (Se o tempo permitir) Streaming e introdução à aprendizagem automática distribuída com Spark MLlib.

Metodologia de avaliação
Todas as épocas:
- 30%: Projeto I, Ciência de Dados: aquisição, preparação e análise exploratória (6 valores).
- 30%: Projeto II, Big Data: armazenamento, consulta e processamento em larga escala (6 valores).
- 40%: Exame teórico (8 valores).

Notas mínimas:

- 50% em cada projeto: 10 valores em 20, equivalentes a 3 em 6.
- 35% no exame: 7 valores em 20, equivalentes a 2,8 em 8.
- Classificação final mínima de 9,5 valores em 20, cumpridos todos os mínimos.

Na escala de 0 a 20, a classificação final é 0,30 × P1 + 0,30 × P2 + 0,40 × E. Se registadas pelos seus contributos de 0 a 6, 0 a 6 e 0 a 8, as componentes são somadas.

A entrega e a defesa de ambos são obrigatórias, nos prazos e momentos definidos durante a avaliação contínua. Os projetos não são repetíveis nem substituíveis por exame. A falta de entrega ou de defesa de qualquer projeto determina a exclusão da avaliação da UC nesse ano letivo, em todas as épocas. O incumprimento do mínimo em qualquer projeto impede a aprovação.

As classificações dos projetos mantêm-se nas diferentes épocas do mesmo ano letivo. Apenas o exame teórico pode ser repetido nas épocas aplicáveis. A defesa verifica a compreensão e a contribuição individual, incluindo o uso de IA.

Bibliografia
- McKinney, W. (2022). Python for Data Analysis: Data Wrangling with pandas, NumPy, and Jupyter. .: O'Reilly Media
- Triguero, I. e Galar, M. (2023). Large-Scale Data Analytics with Python and Spark. UK: Cambridge University Press

Método de Ensino
Aulas TP com conceitos e tutoriais práticos. Aulas PL com notebooks e Docker, ao ritmo de cada estudante, e apoio a dois projetos. Trabalho autónomo e uso crítico de IA para explicações, aprendizagem e verificação de soluções.

Software utilizado nas aulas
Python, Jupyter, Visual Studio Code, pip, conda/Miniconda ou micromamba, uv, Git, Docker e Docker Compose; NumPy, pandas, Matplotlib, Seaborn, Plotly, Streamlit, requests e Beautiful Soup; SQL, DuckDB, PostgreSQL, MongoDB, Redis, Dask e PySpark. Ruff e pytest como apoio à qualidade e verificação do código. Dev Containers, Dash e ferramentas de extração documental/OCR em exemplos complementares.

 

 

Objetivos de Desenvolvimento Sustentável

Garantir o acesso à educação inclusiva, de qualidade e equitativa, e promover oportunidades de aprendizagem ao longo da vida para todos
Construir infraestruturas resilientes, promover a industrialização inclusiva e sustentável e fomentar a inovação

 


<< voltar ao Plano Curricular
ISO 9001
NP4552
SGC
KreativEu
erasmus
catedra
b-on
portugal2020
centro2020
compete2020
crusoe
fct
feder
fse
poch
portugal2030
poseur
prr
santander
republica
UE next generation
Centro 2030
Lisboa 2020
Compete 2030
co-financiado