21/10/2025 –, Impacta - Sala 204
Utilizando os dados do Censo de 2022 do IBGE, aprenderemos a avaliar performance de um banco de dados transacionais (com Postgres, mas os conceitos servem para os demais), melhorar e prever gargalos.
Este tutorial vai te ensinar como analisar queries lentas, identificar estruturas de tabelas problemáticas, otimizá-las e mitigar problemas futuros. E o melhor de tudo? Usando nossa querida Django ORM (e uns brinquedinhos especiais).
- Como a Django ORM abstrai as interações com o banco de dados
- Otimizações básicas para o dia a dia
- N+1: Por que ainda falamos sobre ele?
- O estranho relacionamento do Postgres e o count()
- Diferença prática entre select_related e prefetch_related
- Indexação de Banco de Dados (BTree vs BRIN vs Hash)
- Plano de Execução de Queries (Ou: Como o Dalibo mudou minha vida)
- Transações e suas peculiaridades
- Estratégias de Cacheamento
- O parente distante: Particionamento de tabelas
Monto minhas talks com a intenção que possam ser consumidas por pessoas com o menor nível de conhecimento possível, portanto acredito que sejam:
- Conhecimento básico de Django e da Django ORM
- Noções de Banco de Dados Relacionais
- Entender o básico de tipos de dados dos models
- Entender o básico de relacionamento entre Models (OneToMany e ManyToMany)
- Entender o mínimo de transações de banco de dados
- Saber executar um serviço no docker compose.
Ciência e Análise de Dados, Desenvolvimento Web, Outros
O que as pessoas que participarem podem esperar aprender na sua atividade? –- Como funciona o query builder do Django e seu comportamento.
- O que evitar ao modelar seus dados (com a ajuda do dbdiagram.io).
- Otimizações básicas:
only
,defer
,values
,values_list
eannotations
. - Diferenças entre
prefetch_related
eselect_related
, e quando usá-los. - Comportamento do Django com
.first()
e a dificuldade do Postgres em contar. - Indexação e os tipos básicos de índices no Postgres (BTree, BRIN e HASH).
- Explicação sobre planos de execução de queries, como encontrá-los e como interpretá-los (com o auxílio do explain.dalibo.com).
- O papel das transações na otimização de bancos.
- Estratégias de cacheamento (Materialized Views e Django Cache).
- Particionamento de tabelas: casos de uso e como fazer (usando django-postgres-extras).
Sou pythonista há 9 anos e programador a 15. Acredito no acesso gratuito ao conhecimento e caminho para cada dia estar mais próximo a programas de mentoria. Gosto de meias.