GraphQL é uma linguagem de consulta e modificação de recursos semelhante ao SQL, mas usada para consultar e manipular APIs web. Ele foi desenvolvido pelo Facebook e é mais flexível que REST, permitindo que os clientes especifiquem exatamente os dados necessários. GraphQL resolve problemas como latência, retornando apenas os dados solicitados.
Por que o Microsoft Power BI? Um breve overview sobre BI
PostgreSQL e GraphQL
1.
2. GraphQL, o que é isso?
● É uma linguagem(definição/padrão) de consulta e modificações de recursos
● “Parecido” com o SQL. Só que, o GraphQL é utilizado para consulta e
manipulação de APIs Web.
3. GraphQL, o que é isso?
● Desenvolvido pelo Facebook o GraphQL é um novo padrão de API
● Mais flexível que REST
● o GraphQL lhe permite realizar buscas declarativas onde um cliente
especifica exatamente os dados de que ele precisa da API.
4. GraphQL, o que é isso?
● Especificação de API baseada em grafos
● “Pense em grafos, não em endpoints.” Lee Byron , GraphQL Co-Inventor.
6. Que problema GraphQL resolve?
● Acesso de conexões lentas
○ Somente os dados necessários
○ Menos iterações
● Flexível
● Não precisa ficar criando muitas versões da API
● O Cliente sabe o que ele precisa
○ Menos end-points… menos código
18. GraphQL dedica poder aos clientes
Um aplicativo iOS, Android e aplicativos web são
muito diferentes uns dos outros. Como poderíamos
retornar dados diferentes para cada cliente?
“Com grandes poderes vem grandes responsabilidades, Tio Ben.
19.
20. Principais benefícios para o PostgreSQL
● Diminuir a quantidade “select * from”
○ Menos consultas semelhantes
○ Mais fácil de customizar consultas
● Dar update só nos campos alterados (Usar o HOT)
● Menos iterações e processos
21. Retornar apenas o que o cliente precisa
● Latência
○ Velocidade
○ Menos informações nas consultas
● Selecionar só as entidades e colunas necessárias
● O objetivo da consulta fica claro
22. Só o que cliente precisa...
query{
user(email: "lviecelli199@gmail.com") {
name
email
id
country {
abbreviation
name
}
}
}
{
"data": {
"user": {
"name": "Lucas viecelli",
"email": "lviecelli199@gmail.com",
"id": "1",
"country": {
"abbreviation": "BR",
"name": "Fooo"
}
}
}
}
Consulta Retorno
24. … Já retorna os dados
{
"data": {
"updateCustomer": {
"name": "Lucas",
"salary": 1400,
"email": "lviecelli199@gmail.com",
"id": "1"
}
}
}
25. Updates só nas colunas alteradas
● UPDATE customers
SET
salary = $1,
WHERE
customers.id = $2
[["salary", 1300.0], ["id", 1]]
Nunca usamos PATCH
○ Sempre mandamos tudo no PUT
26. Heap Only Tuples (HOT)
● Otimização que o PG usa para reduzir a quantidade de I/O necessária para
atualizações
● Não precisa atualizar a referência para todos os índices
● Atualmente o HOT só é possível quando nenhuma das colunas atualizadas é
indexada
27. PostgreSQL 11 - INCLUDE
CREATE UNIQUE INDEX users_idx
ON users (email)
INCLUDE (name);
● Permite que o aplicativo faça uso de somente varreduras de índice
● Somente um índice para manter
○ Menos dados no disco, o include não são armazenados em páginas internas de
índice
● Beneficia querys que podem usar somente “index-only scans”
28. O GraphQL pode te ajudar, mas...
● Mais importante que a tecnologia, a solução é o ponto mais importante.