SlideShare uma empresa Scribd logo
1 de 29
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.
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.
GraphQL, o que é isso?
● Especificação de API baseada em grafos
● “Pense em grafos, não em endpoints.” Lee Byron , GraphQL Co-Inventor.
Empresas que usam além do facebook
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
Exemplo de consulta
● query{
customer(id: 1) {
name
email
document
salary
}
}
{
"data": {
"customer": {
"name": "Lucas",
"email": "lviecelli199@gmail.com",
"document": "020203211",
"salary": 1300
}
}
}
Solicitação Retorno
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.
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
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
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
Menos interações
mutation{
updateCustomer(id: 1, salary: 1400.00) {
name
salary
email
id
}
}
… Já retorna os dados
{
"data": {
"updateCustomer": {
"name": "Lucas",
"salary": 1400,
"email": "lviecelli199@gmail.com",
"id": "1"
}
}
}
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
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
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”
O GraphQL pode te ajudar, mas...
● Mais importante que a tecnologia, a solução é o ponto mais importante.
Referências
https://www.slideshare.net/slideshow/embed_code/key/eLBnKIQbKkPnxM
https://www.howtographql.com/
http://postgresql.com

Mais conteúdo relacionado

Semelhante a PostgreSQL e GraphQL

Rest web services com Java
Rest web services com JavaRest web services com Java
Rest web services com Java
jesuinoPower
 
Desenvolvimento Delphi
Desenvolvimento DelphiDesenvolvimento Delphi
Desenvolvimento Delphi
hildebertomelo
 

Semelhante a PostgreSQL e GraphQL (20)

REST Web Services com Java
REST Web Services com JavaREST Web Services com Java
REST Web Services com Java
 
Rest web services com Java
Rest web services com JavaRest web services com Java
Rest web services com Java
 
Express2012simples 130312140529-phpapp01
Express2012simples 130312140529-phpapp01Express2012simples 130312140529-phpapp01
Express2012simples 130312140529-phpapp01
 
Explorando a API Rest Jira Cloud
Explorando a API Rest Jira CloudExplorando a API Rest Jira Cloud
Explorando a API Rest Jira Cloud
 
GraphQL - APIs mais robustas e flexíveis
GraphQL - APIs mais robustas e flexíveisGraphQL - APIs mais robustas e flexíveis
GraphQL - APIs mais robustas e flexíveis
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha Básica
 
Design de APIs REST
Design de APIs RESTDesign de APIs REST
Design de APIs REST
 
Administração de Banco de Dados
Administração de Banco de DadosAdministração de Banco de Dados
Administração de Banco de Dados
 
T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012
 
Introdução ao Solr e Faceted Search
Introdução ao Solr e Faceted SearchIntrodução ao Solr e Faceted Search
Introdução ao Solr e Faceted Search
 
Banco de Dados Relacional Estendido
Banco de Dados Relacional EstendidoBanco de Dados Relacional Estendido
Banco de Dados Relacional Estendido
 
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan Scafi
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan ScafiInterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan Scafi
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan Scafi
 
Aplicações de tempo real com Meteor.js
Aplicações de tempo real com Meteor.jsAplicações de tempo real com Meteor.js
Aplicações de tempo real com Meteor.js
 
Evoluindo Apps e Serviços com Testes de Contrato
Evoluindo Apps e Serviços com Testes de ContratoEvoluindo Apps e Serviços com Testes de Contrato
Evoluindo Apps e Serviços com Testes de Contrato
 
Introdução ao GraphQL
Introdução ao GraphQLIntrodução ao GraphQL
Introdução ao GraphQL
 
GraphQL - uma nova maneira de projetar api's
GraphQL - uma nova maneira de projetar api'sGraphQL - uma nova maneira de projetar api's
GraphQL - uma nova maneira de projetar api's
 
Python Eve - APIs RESTful Profissionais em poucas linhas
Python Eve - APIs RESTful Profissionais em poucas linhasPython Eve - APIs RESTful Profissionais em poucas linhas
Python Eve - APIs RESTful Profissionais em poucas linhas
 
Novidades do .Net 4.0
Novidades do .Net 4.0Novidades do .Net 4.0
Novidades do .Net 4.0
 
Desenvolvimento Delphi
Desenvolvimento DelphiDesenvolvimento Delphi
Desenvolvimento Delphi
 
Por que o Microsoft Power BI? Um breve overview sobre BI
Por que o Microsoft Power BI? Um breve overview sobre BIPor que o Microsoft Power BI? Um breve overview sobre BI
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.
  • 5. Empresas que usam além do facebook
  • 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
  • 7. Exemplo de consulta ● query{ customer(id: 1) { name email document salary } } { "data": { "customer": { "name": "Lucas", "email": "lviecelli199@gmail.com", "document": "020203211", "salary": 1300 } } } Solicitação Retorno
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 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
  • 23. Menos interações mutation{ updateCustomer(id: 1, salary: 1400.00) { name salary email id } }
  • 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.

Notas do Editor

  1. O GraphQL, de modo geral, possui três estruturas principais: as queries, as mutations e as subscriptions
  2. Falar que o “model” de usuário pode ter muitos campos
  3. Dani: PODE MUDAR OS DADOS pra não ficar identico ao do cara lá
  4. Fala do cálculo da complexidade das solicitações