Query objects: materializados
O curso trata de query objects e de materialized views do PostgreSQL numa aplicação Rails. Começa tirando a lógica de consulta de models gordos e levando-a para classes Ruby simples, com self.call e um Result feito com Data.define. Depois explica materialized views como resultados pré-calculados guardados em disco, como criá-las com SQL cru ou com a gem scenic e como lê-las por models só de leitura. As últimas lições cobrem estratégias de atualização, locks, monitoramento de atraso, testes e uma lista de conferência para produção.
O que você vai aprender
- ✓Como tirar a lógica de consulta de models gordos e levá-la para query objects
- ✓O contrato de self.call e Result com Data.define para consultas só de leitura
- ✓Quando uma materialized view serve e quando uma consulta direta basta
- ✓Como criar materialized views com migrations em SQL cru ou com a gem scenic
- ✓Atualização simples e concorrente, agendamento com Solid Queue e espaçamento
- ✓Testes de query objects, do SQL das views e dos jobs, e monitoramento em produção
O que são query objects?
Você abre app/models/user.rb numa segunda-feira de manhã. Ele tem 847 linhas, com 34 scopes, 12 métodos de classe que montam consultas e um método self.dashboard_stats de 60 linhas de SQL cru costurado com interpolação de strings. Três pessoas deixaram # TODO: refactor this, e ninguém refatorou.
Ler a aula completa grátis →Currículo
7 aulasO que são query objects?
Mostra por que models gordos viram gargalos e como query objects só de leitura, com contrato fixo, os substituem.
Construindo seu primeiro query object
Monta um query object com self.call, Result via Data.define, argumentos nomeados, filtros condicionais e relations preguiçosas.
Materialized views: queries pré-computadas
Compara views comuns e materialized views e explica a troca entre velocidade de leitura e atualidade dos dados.
Criando materialized views no Rails
Cria materialized views com SQL cru ou scenic, liga-as a models só de leitura e define o formato do schema.
Query objects + materialized views
Combina os dois padrões numa página de admin, com uma matriz de decisão e a origem dos dados escondida de quem chama.
Estratégias de refresh e invalidação de cache
Trata dos locks da atualização simples e concorrente, agendas do Solid Queue, espaçamento, atraso e tratamento de falhas.
Testes e padrões de produção
Testa query objects, o SQL das views e os jobs, e confere planos de consulta, duração da atualização e lista de produção.