Como Criar Um Backend Com Hasura E PostgreSQL Para iniciantes

O desenvolvimento de back-end geralmente requer a escrita de muitas linhas de código que lidam com CRUD, autorização e lógica de negócios. Todo esse código precisa ser testado, depurado e mantido durante toda a vida útil do projeto. Isso leva muito tempo que os desenvolvedores podem usar para desenvolver novos recursos. Neste artigo, você aprenderá como Hasura e PostgreSQL podem ajudá-lo a acelerar o desenvolvimento de aplicativos e iniciar back-ends rapidamente com o mínimo de esforço.

Hasura é um mecanismo GraphQL de código aberto que gera terminais GraphQL e REST API usando seu esquema de banco de dados. Ele suporta modelagem de dados, consulta em tempo real, programação de eventos, autorização baseada em funções e ações para executar lógica de negócios customizada em GraphQL.

PostgreSQL é um banco de dados relacional orientado a objetos popular e poderoso, que oferece recursos de classe empresarial em um nível semelhante ao banco de dados Oracle e Microsoft SQL Server. O PostgreSQL é usado por grandes empresas internacionais como Netflix, Instagram, Uber e Spotify, de acordo com StackShare .

Neste artigo, veremos os principais recursos que o Hasura oferece e que o torna adequado para desenvolver e lançar back-ends escaláveis, tanto para web quanto para aplicativos móveis. Também veremos como você pode aproveitar os recursos do PostgreSQL para realizar várias tarefas computacionais e analíticas usando apenas SQL para fornecer os dados corretos ao seu front-end sem escrever código personalizado.

Observe que o Hasura também oferece suporte a outros bancos de dados, como Microsoft SQL Server, Amazon Aurora e Google BigQuery. Vamos nos concentrar no PostgreSQL, já que é gratuito e acessível para a maioria das empresas e organizações. O suporte para MySQL estará disponível em breve, caso você esteja interessado.

Se você é novo no GraphQL, confira nosso tutorial para saber mais. Vamos começar explicando porque o PostgreSQL pode ser a escolha perfeita para o seu projeto.

Por que PostgreSQL

Os bancos de dados relacionais têm muitas vantagens distintas sobre outros tipos de bancos de dados, pois você pode modelar seus dados usando esquemas estritos e relacionamentos de tabelas. A capacidade de realizar JOINs e transações ACID é um requisito importante para muitas aplicações na maioria dos setores. Esses recursos são essenciais para promover a integridade e consistência dos dados de negócios a qualquer momento.

PostgreSQL também tem vantagens adicionais sobre outros bancos de dados relacionais, como MySQL, em que:

  • você pode modelar dados usando herança de tabela
  • tem melhor controle de simultaneidade para ambientes multiusuário (você pode gravar grandes quantidades de dados de forma mais eficiente)
  • é tolerante a falhas e menos sujeito a corrupção de dados
  • ele suporta vários tipos de dados exclusivos, como JSON e Spatial , que é útil para aplicações financeiras e relacionadas à pesquisa

PostgreSQL não é apenas um serviço de armazenamento de dados. É também um servidor capaz de executar funções personalizadas e gatilhos para realizar várias tarefas computacionais e analíticas. A execução da lógica no PostgreSQL é mais eficiente, pois elimina a necessidade de escrever código de servidor personalizado. Você pode definir a lógica no PostgreSQL usando:

  • Views , uma consulta armazenada que pode ajudar a simplificar consultas complexas
  • Funções e operadores , como formatação de data, correspondência de padrões, operações aritméticas
  • Extensões , addons que estendem as capacidades do PostgreSQL (como PostGIS )
  • Linguagens procedurais , linguagens de programação para escrever funções definidas pelo usuário, procedimentos armazenados, gatilhos e extensão do SQL padrão (como PL / pgSQL )

Quando você implementa a lógica no PostgreSQL, o Hasura é capaz de expô-los a aplicativos front-end por meio de consultas GraphQL e mutações. Esta é uma visão de nível superior de um servidor PostgreSQL, conforme visto por meio da interface pgAdmin :

A interface do pgAdmin

Aprender a aproveitar as vantagens dos recursos do PostgreSQL pode ajudá-lo a resolver problemas complexos facilmente, sem escrever código de servidor. Aqui estão alguns exemplos do que você pode fazer com o PostgreSQL:

EXEMPLO 1

Você pode recuperar uma lista de usuários on-line que estão ativos no momento usando uma visualização :

CREATE OR REPLACE VIEW "public"."online_users" AS
 SELECT users.id,
    users.last_seen
   FROM users
  WHERE (users.last_seen >= (now() - '00:00:30'::interval));

EXEMPLO 2

Usando uma função PostGIS , você pode listar todas as lojas localizadas em um raio de 1.000 metros. Veja este tutorial de geolocalização para uma explicação detalhada:

SELECT id, name, address, geom
FROM Seattle_Starbucks
WHERE ST_DWithin(geom, ST_MakePoint(-122.325959,47.625138)::geography, 1000);

Na próxima seção, vamos nos concentrar nos recursos de Hasura.

O que é Hasura?

Hasura é um mecanismo GraphQL de código aberto e em tempo real que gera terminais GraphQL e REST API para seu banco de dados. Ele vem com um console da web que permite:

  • modele o esquema do seu banco de dados
  • visualizar, inserir, atualizar e excluir dados
  • implementar políticas de controle de acesso baseadas em funções
  • executar consultas e mutações GraphQL
  • criar endpoints REST
  • executar código SQL
  • definir ações e gatilhos

Painel API Hasura

Hasura não suporta autenticação de usuário, então você precisará integrar Hasura e seu aplicativo front-end com um provedor como:

Também não há serviço de armazenamento de arquivos, você precisará integrar seu aplicativo a um provedor de armazenamento de terceiros . Se você preferir uma experiência integrada mais out-of-the-box com Hasura, você pode verificar NHost , que discutiremos mais tarde na seção de implantação.

Na próxima seção, veremos como podemos executar Hasura localmente e na nuvem.

Lançando Hasura

Existem algumas maneiras de iniciar e executar rapidamente uma instância do Hasura:

1. Docker

Usar o Docker para executar o Hasura em sua máquina local é a maneira recomendada para configurar um ambiente de desenvolvimento. Com esta configuração, não há limite de taxa para solicitações de API e não há conexão de internet estrangulando sua experiência ao interagir com o console da web do Hasura. Qualquer trabalho que você fizer localmente pode ser facilmente migrado para ambientes de teste e produção. Discutiremos como isso é feito posteriormente na seção “Migrações e ambientes”.

Supondo que você já tenha o Docker e o Docker Compose instalados em sua máquina, você pode seguir as instruções fornecidas por este guia para executar o Hasura em sua máquina:

# create new directory
mkdir my-hasura
cd my-hasura

# download docker-compose.yml
curl https://raw.githubusercontent.com/hasura/graphql-engine/stable/install-manifests/docker-compose/docker-compose.yaml -o docker-compose.yml

# start hasura and postgresql container instances
docker-compose up -d

Você pode confirmar que as instâncias do contêiner Hasura e PostgreSQL estão em execução executando o comando docker ps. Você deve conseguir acessar sua instância local do Hasura através do seu navegador em http://localhost:8080/console. Para completar a configuração, você precisa se conectar ao banco de dados PostgreSQL, que está rodando como um contêiner junto com o de Hasura.

Com o banco de dados conectado, você poderá usar o console da web para criar tabelas, definir relacionamentos e realizar operações CRUD em seus dados. Observe que seus dados são públicos ao usar a configuração padrão do Docker. Você pode protegê-lo simplesmente removendo o comentário da linha que começa com HASURA_GRAPHQL_ADMIN_SECRETem seu docker-compose.ymlarquivo e reiniciando seu contêiner Hasura.

2. Nuvem

Uma maneira muito mais fácil de começar é por meio da nuvem Hasura . Esta é uma versão reprojetada do código aberto Hasura, projetada para escalabilidade, disponibilidade, segurança
e distribuição global.

O painel Hasura Cloud

 

 

Hasura Cloud vem com vários novos recursos não disponíveis na versão de código aberto, que incluem:

  • Painel de monitoramento de erros, conexões, assinaturas, consultas lentas e outras operações
  • Cache GraphQL para melhor desempenho de busca de dados do servidor e do cliente
  • Limitação de taxa para evitar que usuários mal-intencionados e ataques DDoS comprometam sua API
  • Teste de regressão para a execução de suítes de teste, como verificação de alterações em sua instância dev em relação à sua instância de produção

Para começar a usar Hasura Cloud, você precisa se inscrever para uma conta gratuita. Observe que a conta gratuita tem um limite de taxa de 60 solicitações por minuto. Depois de criar uma conta, você precisará:

  • Crie um projeto (uma instância Hasura)
  • Conecte-se a um banco de dados PostgreSQL

Por conveniência, Hasura Cloud fornece uma instalação com um clique e conexão a uma instância gratuita de banco de dados Heroku Cloud. Você também pode se conectar a qualquer outro banco de dados PostgreSQL acessível pela Internet. Existem muitos provedores de PostgreSQL que você pode usar. Isso inclui serviços em nuvem, como:

  • AWS
  • Azure
  • Oceano digital
  • TimescaleDB Cloud
  • YugabyteDB

Você pode seguir este guia se precisar de mais clareza com as etapas acima. Por padrão, Hasura Cloud restringe o acesso aos dados do público usando a chave secreta do administrador. Discutiremos mais sobre isso nas próximas seções.

Características Hasura

Nesta seção, darei a você uma visão geral de alto nível dos recursos que o Hasura oferece para construir um back-end personalizado sem escrever código.

Gerenciador de dados

Hasura vem com um designer visual para modelar sua camada de dados. Isso permite que você:

  • criar tabelas
  • definir relacionamentos (um para um, um para muitos, muitos para muitos)
  • realizar operações CRUD
  • criar visualizações
  • execute qualquer instrução SQL
  • implementar a validação de dados usando as restrições DDL do PostgreSQL
  • definir gatilhos

Hasura criar mesa

Quando se trata de colunas, Hasura oferece suporte a um rico conjunto de tipos de dados que incluem:

  • inteiros, numéricos e flutuantes
  • seriais e UUID
  • caracteres e texto
  • data e hora
  • boleano
  • geométrica - como linha, caixa, caminho, polígono e círculo
  • JSON

Você também pode adicionar tipos personalizados usando o CREATE TYPEcomando SQL. A seguir, veremos como os dados são autorizados no Hasura.

Autorização

O controle de acesso em Hasura é baseado em funções. Por padrão, há uma função chamada adminque tem acesso CRUD total aos seus dados. Para restringir o acesso a outros usuários, você precisará criar funções adicionais, como user, publicou accountant.

Para cada função criada, você precisa definir uma política de acesso para as seguintes ações:

  • inserir
  • selecionar
  • atualizar
  • excluir

Existem três tipos de políticas que você pode definir:

  • Acesso total , sem restrição
  • Acesso parcial , com restrições baseadas em condições
  • Sem acesso

O exemplo a seguir demonstra uma selectpolítica de autorização para a userfunção. As regras definidas a seguir são definidas para garantir que um usersó possa consultar seus próprios registros ou aqueles marcados como públicos:

 

 

Exemplo de autorização Hasura

Consultas

Depois de projetar seu esquema e definir permissões, você pode testar suas consultas GraphQL diretamente no painel de API do Hasura. Cada tabela, visão e relacionamento que você definiu podem ser consultados, desde que o rastreamento esteja habilitado.

Os tipos de consultas que você pode executar incluem:

  • Consultas simples : consultas SELECT que retornam um ou mais objetos.
  • Consultas aninhadas : consultas JOIN que retornam objetos em um formato aninhado com base em relacionamentos de chave estrangeira.
  • Consultas de agregação : consultas SELECT em que uma operação aritmética, como soma ou média, foi realizada nos resultados. Também pode ser aplicado a objetos aninhados.
  • Consultas de filtro / pesquisa : consultas WHERE que filtram dados usando operadores de comparação em um ou mais campos. Eles também podem ser usados ​​para realizar pesquisas usando correspondência de padrões ou difusa.

Consulta Hasura GraphQL

Os resultados da consulta GraphQL podem ser classificados , agrupados e paginados . A paginação baseada em cursor também é suportada. Basicamente, qualquer instrução SQL que possa ser executada no PostgreSQL pode ser exposta por meio de uma consulta GraphQL. Na próxima seção, veremos as mutações.

Mutações

Mutações GraphQL são instruções usadas para modificar dados. Abaixo estão os tipos de mutações que você pode realizar:

  • Inserir : crie uma ou mais linhas de dados:
  mutation insert_single_article {
    insert_article_one(
      object: {
        title: "Article 1"
        content: "Sample article content"
        author_id: 3
      }
    ) {
      id
      title
    }
  }
  • Upsert : criar, atualizar em conflito. No exemplo abaixo, a coluna valuepossui uma restrição única :
  mutation upsert_single_tag {
    insert_tags(
      objects: { value: "Java" }
      on_conflict: { constraint: tags_value_key, update_columns: value }
    ) {
      returning {
        id
        value
      }
    }
  }
  • Atualizar : atualiza uma ou mais linhas de dados. Existem também operadores especiais para trabalhar com inte jsonbtipos de dados. O exemplo abaixo atualiza todos os artigos com uma classificação menor ou igual a 2. A mutação retornará o número de linhas afetadas e também listará essas linhas como uma matriz de objetos:
  mutation update_article {
    update_article(
      where: { rating: { _lte: 2 } }
      _set: { rating: 1, is_published: false }
    ) {
      affected_rows
      returning {
        id
        title
        content
        rating
        is_published
      }
    }
  }
  • Excluir : exclui uma ou mais linhas de dados. O exemplo a seguir exclui um artigo por chave primária:
  mutation delete_an_object {
    delete_article_by_pk(id: 1) {
      id
      title
      user_id
    }
  }
  • Transação : execute várias mutações em um bloco de mutação. Se um deles falhar, todas as mutações executadas anteriormente nesse bloco serão revertidas. O exemplo a seguir primeiro exclui todos os artigos pertencentes a um autor. Na segunda mutação, o nome do autor é atualizado:
  mutation reset_author {
    delete_article(where: { author_id: { _eq: 6 } }) {
      affected_rows
    }
    update_author(where: { id: { _eq: 6 } }, _set: { name: "Cory" }) {
      returning {
        id
        name
        articles {
          id
          title
        }
      }
    }
  }

Assinaturas

As assinaturas de Hasura são consultas ao vivo executadas por meio de um protocolo WebSocket . Este é um protocolo usado para buscar dados em tempo real de um banco de dados. Qualquer consulta GraphQL pode ser transformada em uma assinatura simplesmente substituindo a palavra query- chave por subscription. Por padrão, essas consultas executam uma instrução SQL a cada segundo. Esta é uma definição configurável que pode ser ajustada para fornecer um equilíbrio adequado entre a carga e a latência do banco de dados. Se houver uma mudança nos dados subjacentes, o novo valor é enviado ao cliente.

O exemplo a seguir demonstra uma assinatura GraphQL que rastreia a localização de um veículo:

# $vehicleId = 3
subscription getLocation($vehicleId: Int!) {
  vehicle(where: { id: { _eq: $vehicleId } }) {
    id
    vehicle_number
    locations(order_by: { timestamp: desc }, limit: 1) {
      location
      timestamp
    }
  }
}

Outros casos de uso de assinaturas incluem:

  • rastreamento de entrega de comida
  • mensagens de bate-papo
  • enquetes online

Esquemas Remotos

Freqüentemente, ao construir um aplicativo moderno, você precisará integrar APIs de terceiros que:

  • fornecer dados que não estão em seu banco de dados - como placares ao vivo de esportes ou preço de ações
  • fornecer lógica de negócios - como processamento de pagamento ou reserva de voos

Essas APIs de terceiros geralmente são acessadas diretamente de aplicativos cliente. Com Hasura, você pode mesclar essas APIs com seu banco de dados para criar uma API GraphQL unificada. Isso cria novas oportunidades onde você pode implementar a autorização e definir relacionamentos remotos entre suas tabelas / visualização e a API remota. Você também pode criar Ações que executam uma determinada tarefa com base neste tipo de relacionamento.

Ter uma API GraphQL unificada torna mais fácil para os desenvolvedores de front-end construir o aplicativo. Na próxima seção, veremos o que são Ações Hasura.

Ações

A lógica de negócios personalizada no Hasura é tratada externamente em microsserviços ou funções sem servidor por meio de webhooks. Isso significa que você pode escrever lógica personalizada usando qualquer linguagem de sua preferência, como Node.js, Python, Go ou Ruby on Rails. Uma ação em Hasura é simplesmente uma consulta ou mutação GraphQL personalizada que mapeia para um webhook onde as interfaces de entrada e saída são definidas.

 

 

Uma definição de ação é composta de:

  • tipo: consulta ou mutação
  • nome da ação
  • tipos personalizados para entradas e saídas
  • cabeçalhos
  • URL do manipulador

Vejamos um simples “Hello, World!” exemplo. Primeiro, definimos uma consulta de ação da seguinte maneira:

type Query {
  hello(name: String!): HelloResponse
}

A ação acima define uma função chamada helloque aceita uma variável de string chamada namecomo entrada. A função retorna um HelloResponseobjeto, que é um tipo personalizado definido da seguinte maneira:

type HelloResponse {
  message: String!
}

Com a interface definida, tudo o que resta é a implementação do serviço webhook e uma URL que pode ser acessada por sua instância Hasura. Aqui está uma implementação escrita para Express.js que foi criada com a ajuda do assistente CodeGen de Hasura:

// Request Handler
app.post("/hello", async (req, res) => {
  // get request input
  const { name } = req.body.input;

  // success
  return res.json({
    message: `Hello, ${name}!`,
  });
});

Gatilhos de eventos

Em Hasura, você pode construir aplicativos usando uma arquitetura de software conhecida como programação orientada a eventos . Este é um padrão de design que desacopla o gerenciamento de estado complexo de um back-end monolítico e o transfere para microsserviços individuais ou funções sem servidor que executam a lógica de negócios. Isso permite a construção de aplicativos altamente robustos e escaláveis.

Com a programação de eventos, você pode lidar facilmente com muitos casos de uso, como:

No PostgreSQL, você pode criar gatilhos que executam instruções SQL ou procedimentos armazenados quando um evento como INSERT, UPDATEou DELETEocorre. Um gatilho está associado a uma tabela ou visualização e pode ser disparado antes ou depois de um evento.

Em Hasura, os gatilhos de evento são definidos de forma semelhante e são usados ​​para invocar web hooks quando um evento é disparado. Um web hook neste contexto é bastante semelhante aos que acabamos de discutir na seção “Ações”. Os gatilhos de evento também podem ser chamados manualmente por meio do console ou API.

Abaixo está um exemplo de uma definição de gatilho de evento no formato YAML:

- table:
    schema: public
    name: author
  event_triggers:
    - name: author_trigger
      definition:
        enable_manual: false
        insert:
          columns: "*"
        update:
          columns: "*"
      webhook: https://httpbin.org/post

Um acionador de evento pode ser definido com cabeçalhos (para fins de autenticação) e geralmente contém uma carga que é enviada ao serviço webhook para processamento de dados. A única resposta esperada é 200status. Os resultados reais, se necessário, são postados de volta por uma rota diferente - como postar uma mutação GraphQL ou enviar uma notificação por e-mail e assim por diante.

Os aplicativos de front-end podem receber os resultados por meio de consultas por meio de assinatura GraphQL. Esse tipo de arquitetura facilita a construção de aplicativos interativos em tempo real sem bloqueio que proporcionam uma ótima experiência do usuário. A base de código também é mais fácil de manter, testar e escalar para os desenvolvedores.

Gatilhos programados

Gatilhos programados são eventos baseados em tempo que executam lógica de negócios personalizada por meio de webhooks. Existem dois tipos que você pode definir:

  • Gatilhos CRON : usados ​​para eventos periódicos em um intervalo regular
  • Eventos pontuais programados : usados ​​para execuções pontuais

Os gatilhos programados podem ser criados por meio do console da web ou da API de metadados. A captura de tela abaixo mostra o exemplo do console da web.

 

 

Acionador de cron do console da web

A API de metadados permite a criação de eventos agendados usando o código do aplicativo. O exemplo abaixo mostra como você estruturaria a criação de um evento único usando a API:

{
  "type": "create_scheduled_event",
  "args": {
    "webhook": "https://my-awesome-serverless-fn.com/send-email",
    "schedule_at": "2022-07-20T12:45:00Z",
    "payload": {
      "email": "bob@ross.com"
    }
  }
}

Hasura fornece uma série de mecanismos de tolerância a falhas que garantem que os gatilhos programados sejam executados com sucesso. Por exemplo, digamos que um evento agendado para 14h não foi processado porque Hasura estava fora do ar às 13h59. Quando Hasura for colocado online novamente, ele irá reidratar eventos e executar novamente gatilhos programados perdidos com base em uma configuração de tolerância personalizável. A configuração padrão é seis horas.

Hasura também oferece uma configuração de nova tentativa flexível em caso de falhas de HTTP. Você pode configurar o número de tentativas e o tempo limite entre cada tentativa. Cada invocação de gatilho é registrada - que você pode acessar mais tarde para inspeção.

Os casos de uso para acionadores programados incluem:

  • enviando lembretes
  • geração de relatórios de fim de dia
  • exclusão de usuários inativos que não verificaram seus endereços de e-mail nos últimos 90 dias

Migrações e ambientes

O fluxo de trabalho de desenvolvimento ideal para qualquer projeto de software é configurar vários ambientes para desenvolvimento, preparação e produção. Esse fluxo de trabalho simplifica o teste e garante que os desenvolvedores não excluam acidentalmente ou corrompam dados de produção ao implantar novas versões de seu software.

Para transferir o estado de um ambiente de desenvolvimento para teste e produção, os arquivos de migração são necessários. Com Hasura, você precisará de:

  • arquivos de migração de banco de dados / SQL
  • Metadados Hasura

Os metadados Hasura são compostos de um instantâneo de arquivos de configuração que rastreiam:

  • relacionamentos
  • permissões
  • gatilhos
  • ações
  • Esquema GraphQL
  • esquema remoto

Você precisará instalar o Hasura CLI para poder criar e aplicar esses arquivos de migração a uma instância diferente do Hasura. Esses arquivos de migração podem ser versionados e atualizados incrementalmente conforme o esquema muda durante o desenvolvimento.

A criação e aplicação de arquivos de migração SQL são feitas usando o hasura migratecomando, enquanto os arquivos de migração de metadados são tratados usando o hasura metadatacomando. O comando CLI também permite:

  • reverter migrações aplicadas
  • criar migração de dados iniciais
  • redefinir arquivos de migração
  • arquivos de migração squash - isto é, substitua pequenas atualizações incrementais por uma atualização principal

Hasura tem uma imagem especial de migração Docker cli que aplica migrações automaticamente quando o servidor é iniciado. Esta imagem também contém a ferramenta Hasura CLI , que pode ser usada para executar scripts de CI / CD em seu fluxo de trabalho.

Desdobramento, desenvolvimento

A maneira mais fácil de implantar Hasura para produção é usando Hasura Cloud . Essa é a opção recomendada, pois você obtém recursos empresariais não disponíveis na versão de código-fonte aberto. Felizmente, o Hasura não bloqueia você em sua plataforma, ao contrário da maioria dos provedores de back-end como serviço (BaaS). Existem provedores de serviços de implantação com um clique que você pode aproveitar em plataformas como:

Você também pode implantar o Hasura em qualquer plataforma Kubernetes , como o Google Cloud . O AWS também é compatível, mas você precisa seguir várias etapas para fazê-lo funcionar. Hospedar externamente oferece liberdade e mais opções de preços. No entanto, todas as opções acima exigem que você configure serviços adicionais para:

  • autenticação
  • armazenar
  • lógica de negócios personalizada

Na próxima seção, veremos brevemente como você pode usar o NHost para simplificar ainda mais o desenvolvimento de aplicativos back-end Hasura.

Implantando com NHost

NHost é um provedor de BaaS de código aberto que visa competir com plataformas como o Firebase . Sua pilha de back-end consiste em:

  • Banco de dados PostgreSQL
  • Motor Hasura GraphQL
  • um serviço de autenticação
  • MinIO , um serviço de armazenamento de objetos compatível com S3
  • Funções sem servidor (atualmente em beta)

A plataforma vem com uma biblioteca cliente chamada, nhost-js-sdkque é usada para autenticação de front-end e gerenciamento de arquivos. O serviço de armazenamento oferece suporte à otimização de imagens , o que nos poupa do trabalho de integrar outro serviço de imagens.

No momento em que este artigo foi escrito, a NHost oferece atualmente um teste de 14 dias para seu serviço. Um nível gratuito será lançado em breve. Existe uma versão Docker chamada Hasura Backend Plus que você pode implantar localmente em sua máquina.

Resumo

Para concluir, o Hasura GraphQL Engine e o banco de dados PostgreSQL são bastante revolucionários em termos de rapidez com que você pode construir back-ends para aplicativos móveis e web, sem escrever linhas de código. A maior parte da lógica de computação e analítica pode ser tratada pelo PostgreSQL, enquanto o resto da lógica de negócios personalizada pode ser implementada usando microsserviços ou funções sem servidor.

Adotar o Hasura significa que você será capaz de lançar mais rápido e construir um produto de alto desempenho, seguro, tolerante a falhas, escalonável e fácil de manter. Não ter problemas de infraestrutura também reduzirá seus custos operacionais e permitirá que você se concentre no desenvolvimento de front-end e na parte voltada para o usuário de seu aplicativo.

Embora o Hasura não seja tão rico em recursos quanto outras alternativas de código aberto, como a plataforma Parse , ele oferece suporte a controle de versão e teste de ambiente, que é um requisito crucial para fluxos de trabalho de desenvolvimento de CI / CD. Por ser de código aberto, você está protegido dos riscos representados por lock-ins de fornecedores.

fonte: https://www.sitepoint.com/hasura-postgresql-build-backend/

#postgresql #hasura 

What is GEEK

Buddha Community

Como Criar Um Backend Com Hasura E PostgreSQL Para iniciantes

Como Criar Um Backend Com Hasura E PostgreSQL Para iniciantes

O desenvolvimento de back-end geralmente requer a escrita de muitas linhas de código que lidam com CRUD, autorização e lógica de negócios. Todo esse código precisa ser testado, depurado e mantido durante toda a vida útil do projeto. Isso leva muito tempo que os desenvolvedores podem usar para desenvolver novos recursos. Neste artigo, você aprenderá como Hasura e PostgreSQL podem ajudá-lo a acelerar o desenvolvimento de aplicativos e iniciar back-ends rapidamente com o mínimo de esforço.

Hasura é um mecanismo GraphQL de código aberto que gera terminais GraphQL e REST API usando seu esquema de banco de dados. Ele suporta modelagem de dados, consulta em tempo real, programação de eventos, autorização baseada em funções e ações para executar lógica de negócios customizada em GraphQL.

PostgreSQL é um banco de dados relacional orientado a objetos popular e poderoso, que oferece recursos de classe empresarial em um nível semelhante ao banco de dados Oracle e Microsoft SQL Server. O PostgreSQL é usado por grandes empresas internacionais como Netflix, Instagram, Uber e Spotify, de acordo com StackShare .

Neste artigo, veremos os principais recursos que o Hasura oferece e que o torna adequado para desenvolver e lançar back-ends escaláveis, tanto para web quanto para aplicativos móveis. Também veremos como você pode aproveitar os recursos do PostgreSQL para realizar várias tarefas computacionais e analíticas usando apenas SQL para fornecer os dados corretos ao seu front-end sem escrever código personalizado.

Observe que o Hasura também oferece suporte a outros bancos de dados, como Microsoft SQL Server, Amazon Aurora e Google BigQuery. Vamos nos concentrar no PostgreSQL, já que é gratuito e acessível para a maioria das empresas e organizações. O suporte para MySQL estará disponível em breve, caso você esteja interessado.

Se você é novo no GraphQL, confira nosso tutorial para saber mais. Vamos começar explicando porque o PostgreSQL pode ser a escolha perfeita para o seu projeto.

Por que PostgreSQL

Os bancos de dados relacionais têm muitas vantagens distintas sobre outros tipos de bancos de dados, pois você pode modelar seus dados usando esquemas estritos e relacionamentos de tabelas. A capacidade de realizar JOINs e transações ACID é um requisito importante para muitas aplicações na maioria dos setores. Esses recursos são essenciais para promover a integridade e consistência dos dados de negócios a qualquer momento.

PostgreSQL também tem vantagens adicionais sobre outros bancos de dados relacionais, como MySQL, em que:

  • você pode modelar dados usando herança de tabela
  • tem melhor controle de simultaneidade para ambientes multiusuário (você pode gravar grandes quantidades de dados de forma mais eficiente)
  • é tolerante a falhas e menos sujeito a corrupção de dados
  • ele suporta vários tipos de dados exclusivos, como JSON e Spatial , que é útil para aplicações financeiras e relacionadas à pesquisa

PostgreSQL não é apenas um serviço de armazenamento de dados. É também um servidor capaz de executar funções personalizadas e gatilhos para realizar várias tarefas computacionais e analíticas. A execução da lógica no PostgreSQL é mais eficiente, pois elimina a necessidade de escrever código de servidor personalizado. Você pode definir a lógica no PostgreSQL usando:

  • Views , uma consulta armazenada que pode ajudar a simplificar consultas complexas
  • Funções e operadores , como formatação de data, correspondência de padrões, operações aritméticas
  • Extensões , addons que estendem as capacidades do PostgreSQL (como PostGIS )
  • Linguagens procedurais , linguagens de programação para escrever funções definidas pelo usuário, procedimentos armazenados, gatilhos e extensão do SQL padrão (como PL / pgSQL )

Quando você implementa a lógica no PostgreSQL, o Hasura é capaz de expô-los a aplicativos front-end por meio de consultas GraphQL e mutações. Esta é uma visão de nível superior de um servidor PostgreSQL, conforme visto por meio da interface pgAdmin :

A interface do pgAdmin

Aprender a aproveitar as vantagens dos recursos do PostgreSQL pode ajudá-lo a resolver problemas complexos facilmente, sem escrever código de servidor. Aqui estão alguns exemplos do que você pode fazer com o PostgreSQL:

EXEMPLO 1

Você pode recuperar uma lista de usuários on-line que estão ativos no momento usando uma visualização :

CREATE OR REPLACE VIEW "public"."online_users" AS
 SELECT users.id,
    users.last_seen
   FROM users
  WHERE (users.last_seen >= (now() - '00:00:30'::interval));

EXEMPLO 2

Usando uma função PostGIS , você pode listar todas as lojas localizadas em um raio de 1.000 metros. Veja este tutorial de geolocalização para uma explicação detalhada:

SELECT id, name, address, geom
FROM Seattle_Starbucks
WHERE ST_DWithin(geom, ST_MakePoint(-122.325959,47.625138)::geography, 1000);

Na próxima seção, vamos nos concentrar nos recursos de Hasura.

O que é Hasura?

Hasura é um mecanismo GraphQL de código aberto e em tempo real que gera terminais GraphQL e REST API para seu banco de dados. Ele vem com um console da web que permite:

  • modele o esquema do seu banco de dados
  • visualizar, inserir, atualizar e excluir dados
  • implementar políticas de controle de acesso baseadas em funções
  • executar consultas e mutações GraphQL
  • criar endpoints REST
  • executar código SQL
  • definir ações e gatilhos

Painel API Hasura

Hasura não suporta autenticação de usuário, então você precisará integrar Hasura e seu aplicativo front-end com um provedor como:

Também não há serviço de armazenamento de arquivos, você precisará integrar seu aplicativo a um provedor de armazenamento de terceiros . Se você preferir uma experiência integrada mais out-of-the-box com Hasura, você pode verificar NHost , que discutiremos mais tarde na seção de implantação.

Na próxima seção, veremos como podemos executar Hasura localmente e na nuvem.

Lançando Hasura

Existem algumas maneiras de iniciar e executar rapidamente uma instância do Hasura:

1. Docker

Usar o Docker para executar o Hasura em sua máquina local é a maneira recomendada para configurar um ambiente de desenvolvimento. Com esta configuração, não há limite de taxa para solicitações de API e não há conexão de internet estrangulando sua experiência ao interagir com o console da web do Hasura. Qualquer trabalho que você fizer localmente pode ser facilmente migrado para ambientes de teste e produção. Discutiremos como isso é feito posteriormente na seção “Migrações e ambientes”.

Supondo que você já tenha o Docker e o Docker Compose instalados em sua máquina, você pode seguir as instruções fornecidas por este guia para executar o Hasura em sua máquina:

# create new directory
mkdir my-hasura
cd my-hasura

# download docker-compose.yml
curl https://raw.githubusercontent.com/hasura/graphql-engine/stable/install-manifests/docker-compose/docker-compose.yaml -o docker-compose.yml

# start hasura and postgresql container instances
docker-compose up -d

Você pode confirmar que as instâncias do contêiner Hasura e PostgreSQL estão em execução executando o comando docker ps. Você deve conseguir acessar sua instância local do Hasura através do seu navegador em http://localhost:8080/console. Para completar a configuração, você precisa se conectar ao banco de dados PostgreSQL, que está rodando como um contêiner junto com o de Hasura.

Com o banco de dados conectado, você poderá usar o console da web para criar tabelas, definir relacionamentos e realizar operações CRUD em seus dados. Observe que seus dados são públicos ao usar a configuração padrão do Docker. Você pode protegê-lo simplesmente removendo o comentário da linha que começa com HASURA_GRAPHQL_ADMIN_SECRETem seu docker-compose.ymlarquivo e reiniciando seu contêiner Hasura.

2. Nuvem

Uma maneira muito mais fácil de começar é por meio da nuvem Hasura . Esta é uma versão reprojetada do código aberto Hasura, projetada para escalabilidade, disponibilidade, segurança
e distribuição global.

O painel Hasura Cloud

 

 

Hasura Cloud vem com vários novos recursos não disponíveis na versão de código aberto, que incluem:

  • Painel de monitoramento de erros, conexões, assinaturas, consultas lentas e outras operações
  • Cache GraphQL para melhor desempenho de busca de dados do servidor e do cliente
  • Limitação de taxa para evitar que usuários mal-intencionados e ataques DDoS comprometam sua API
  • Teste de regressão para a execução de suítes de teste, como verificação de alterações em sua instância dev em relação à sua instância de produção

Para começar a usar Hasura Cloud, você precisa se inscrever para uma conta gratuita. Observe que a conta gratuita tem um limite de taxa de 60 solicitações por minuto. Depois de criar uma conta, você precisará:

  • Crie um projeto (uma instância Hasura)
  • Conecte-se a um banco de dados PostgreSQL

Por conveniência, Hasura Cloud fornece uma instalação com um clique e conexão a uma instância gratuita de banco de dados Heroku Cloud. Você também pode se conectar a qualquer outro banco de dados PostgreSQL acessível pela Internet. Existem muitos provedores de PostgreSQL que você pode usar. Isso inclui serviços em nuvem, como:

  • AWS
  • Azure
  • Oceano digital
  • TimescaleDB Cloud
  • YugabyteDB

Você pode seguir este guia se precisar de mais clareza com as etapas acima. Por padrão, Hasura Cloud restringe o acesso aos dados do público usando a chave secreta do administrador. Discutiremos mais sobre isso nas próximas seções.

Características Hasura

Nesta seção, darei a você uma visão geral de alto nível dos recursos que o Hasura oferece para construir um back-end personalizado sem escrever código.

Gerenciador de dados

Hasura vem com um designer visual para modelar sua camada de dados. Isso permite que você:

  • criar tabelas
  • definir relacionamentos (um para um, um para muitos, muitos para muitos)
  • realizar operações CRUD
  • criar visualizações
  • execute qualquer instrução SQL
  • implementar a validação de dados usando as restrições DDL do PostgreSQL
  • definir gatilhos

Hasura criar mesa

Quando se trata de colunas, Hasura oferece suporte a um rico conjunto de tipos de dados que incluem:

  • inteiros, numéricos e flutuantes
  • seriais e UUID
  • caracteres e texto
  • data e hora
  • boleano
  • geométrica - como linha, caixa, caminho, polígono e círculo
  • JSON

Você também pode adicionar tipos personalizados usando o CREATE TYPEcomando SQL. A seguir, veremos como os dados são autorizados no Hasura.

Autorização

O controle de acesso em Hasura é baseado em funções. Por padrão, há uma função chamada adminque tem acesso CRUD total aos seus dados. Para restringir o acesso a outros usuários, você precisará criar funções adicionais, como user, publicou accountant.

Para cada função criada, você precisa definir uma política de acesso para as seguintes ações:

  • inserir
  • selecionar
  • atualizar
  • excluir

Existem três tipos de políticas que você pode definir:

  • Acesso total , sem restrição
  • Acesso parcial , com restrições baseadas em condições
  • Sem acesso

O exemplo a seguir demonstra uma selectpolítica de autorização para a userfunção. As regras definidas a seguir são definidas para garantir que um usersó possa consultar seus próprios registros ou aqueles marcados como públicos:

 

 

Exemplo de autorização Hasura

Consultas

Depois de projetar seu esquema e definir permissões, você pode testar suas consultas GraphQL diretamente no painel de API do Hasura. Cada tabela, visão e relacionamento que você definiu podem ser consultados, desde que o rastreamento esteja habilitado.

Os tipos de consultas que você pode executar incluem:

  • Consultas simples : consultas SELECT que retornam um ou mais objetos.
  • Consultas aninhadas : consultas JOIN que retornam objetos em um formato aninhado com base em relacionamentos de chave estrangeira.
  • Consultas de agregação : consultas SELECT em que uma operação aritmética, como soma ou média, foi realizada nos resultados. Também pode ser aplicado a objetos aninhados.
  • Consultas de filtro / pesquisa : consultas WHERE que filtram dados usando operadores de comparação em um ou mais campos. Eles também podem ser usados ​​para realizar pesquisas usando correspondência de padrões ou difusa.

Consulta Hasura GraphQL

Os resultados da consulta GraphQL podem ser classificados , agrupados e paginados . A paginação baseada em cursor também é suportada. Basicamente, qualquer instrução SQL que possa ser executada no PostgreSQL pode ser exposta por meio de uma consulta GraphQL. Na próxima seção, veremos as mutações.

Mutações

Mutações GraphQL são instruções usadas para modificar dados. Abaixo estão os tipos de mutações que você pode realizar:

  • Inserir : crie uma ou mais linhas de dados:
  mutation insert_single_article {
    insert_article_one(
      object: {
        title: "Article 1"
        content: "Sample article content"
        author_id: 3
      }
    ) {
      id
      title
    }
  }
  • Upsert : criar, atualizar em conflito. No exemplo abaixo, a coluna valuepossui uma restrição única :
  mutation upsert_single_tag {
    insert_tags(
      objects: { value: "Java" }
      on_conflict: { constraint: tags_value_key, update_columns: value }
    ) {
      returning {
        id
        value
      }
    }
  }
  • Atualizar : atualiza uma ou mais linhas de dados. Existem também operadores especiais para trabalhar com inte jsonbtipos de dados. O exemplo abaixo atualiza todos os artigos com uma classificação menor ou igual a 2. A mutação retornará o número de linhas afetadas e também listará essas linhas como uma matriz de objetos:
  mutation update_article {
    update_article(
      where: { rating: { _lte: 2 } }
      _set: { rating: 1, is_published: false }
    ) {
      affected_rows
      returning {
        id
        title
        content
        rating
        is_published
      }
    }
  }
  • Excluir : exclui uma ou mais linhas de dados. O exemplo a seguir exclui um artigo por chave primária:
  mutation delete_an_object {
    delete_article_by_pk(id: 1) {
      id
      title
      user_id
    }
  }
  • Transação : execute várias mutações em um bloco de mutação. Se um deles falhar, todas as mutações executadas anteriormente nesse bloco serão revertidas. O exemplo a seguir primeiro exclui todos os artigos pertencentes a um autor. Na segunda mutação, o nome do autor é atualizado:
  mutation reset_author {
    delete_article(where: { author_id: { _eq: 6 } }) {
      affected_rows
    }
    update_author(where: { id: { _eq: 6 } }, _set: { name: "Cory" }) {
      returning {
        id
        name
        articles {
          id
          title
        }
      }
    }
  }

Assinaturas

As assinaturas de Hasura são consultas ao vivo executadas por meio de um protocolo WebSocket . Este é um protocolo usado para buscar dados em tempo real de um banco de dados. Qualquer consulta GraphQL pode ser transformada em uma assinatura simplesmente substituindo a palavra query- chave por subscription. Por padrão, essas consultas executam uma instrução SQL a cada segundo. Esta é uma definição configurável que pode ser ajustada para fornecer um equilíbrio adequado entre a carga e a latência do banco de dados. Se houver uma mudança nos dados subjacentes, o novo valor é enviado ao cliente.

O exemplo a seguir demonstra uma assinatura GraphQL que rastreia a localização de um veículo:

# $vehicleId = 3
subscription getLocation($vehicleId: Int!) {
  vehicle(where: { id: { _eq: $vehicleId } }) {
    id
    vehicle_number
    locations(order_by: { timestamp: desc }, limit: 1) {
      location
      timestamp
    }
  }
}

Outros casos de uso de assinaturas incluem:

  • rastreamento de entrega de comida
  • mensagens de bate-papo
  • enquetes online

Esquemas Remotos

Freqüentemente, ao construir um aplicativo moderno, você precisará integrar APIs de terceiros que:

  • fornecer dados que não estão em seu banco de dados - como placares ao vivo de esportes ou preço de ações
  • fornecer lógica de negócios - como processamento de pagamento ou reserva de voos

Essas APIs de terceiros geralmente são acessadas diretamente de aplicativos cliente. Com Hasura, você pode mesclar essas APIs com seu banco de dados para criar uma API GraphQL unificada. Isso cria novas oportunidades onde você pode implementar a autorização e definir relacionamentos remotos entre suas tabelas / visualização e a API remota. Você também pode criar Ações que executam uma determinada tarefa com base neste tipo de relacionamento.

Ter uma API GraphQL unificada torna mais fácil para os desenvolvedores de front-end construir o aplicativo. Na próxima seção, veremos o que são Ações Hasura.

Ações

A lógica de negócios personalizada no Hasura é tratada externamente em microsserviços ou funções sem servidor por meio de webhooks. Isso significa que você pode escrever lógica personalizada usando qualquer linguagem de sua preferência, como Node.js, Python, Go ou Ruby on Rails. Uma ação em Hasura é simplesmente uma consulta ou mutação GraphQL personalizada que mapeia para um webhook onde as interfaces de entrada e saída são definidas.

 

 

Uma definição de ação é composta de:

  • tipo: consulta ou mutação
  • nome da ação
  • tipos personalizados para entradas e saídas
  • cabeçalhos
  • URL do manipulador

Vejamos um simples “Hello, World!” exemplo. Primeiro, definimos uma consulta de ação da seguinte maneira:

type Query {
  hello(name: String!): HelloResponse
}

A ação acima define uma função chamada helloque aceita uma variável de string chamada namecomo entrada. A função retorna um HelloResponseobjeto, que é um tipo personalizado definido da seguinte maneira:

type HelloResponse {
  message: String!
}

Com a interface definida, tudo o que resta é a implementação do serviço webhook e uma URL que pode ser acessada por sua instância Hasura. Aqui está uma implementação escrita para Express.js que foi criada com a ajuda do assistente CodeGen de Hasura:

// Request Handler
app.post("/hello", async (req, res) => {
  // get request input
  const { name } = req.body.input;

  // success
  return res.json({
    message: `Hello, ${name}!`,
  });
});

Gatilhos de eventos

Em Hasura, você pode construir aplicativos usando uma arquitetura de software conhecida como programação orientada a eventos . Este é um padrão de design que desacopla o gerenciamento de estado complexo de um back-end monolítico e o transfere para microsserviços individuais ou funções sem servidor que executam a lógica de negócios. Isso permite a construção de aplicativos altamente robustos e escaláveis.

Com a programação de eventos, você pode lidar facilmente com muitos casos de uso, como:

No PostgreSQL, você pode criar gatilhos que executam instruções SQL ou procedimentos armazenados quando um evento como INSERT, UPDATEou DELETEocorre. Um gatilho está associado a uma tabela ou visualização e pode ser disparado antes ou depois de um evento.

Em Hasura, os gatilhos de evento são definidos de forma semelhante e são usados ​​para invocar web hooks quando um evento é disparado. Um web hook neste contexto é bastante semelhante aos que acabamos de discutir na seção “Ações”. Os gatilhos de evento também podem ser chamados manualmente por meio do console ou API.

Abaixo está um exemplo de uma definição de gatilho de evento no formato YAML:

- table:
    schema: public
    name: author
  event_triggers:
    - name: author_trigger
      definition:
        enable_manual: false
        insert:
          columns: "*"
        update:
          columns: "*"
      webhook: https://httpbin.org/post

Um acionador de evento pode ser definido com cabeçalhos (para fins de autenticação) e geralmente contém uma carga que é enviada ao serviço webhook para processamento de dados. A única resposta esperada é 200status. Os resultados reais, se necessário, são postados de volta por uma rota diferente - como postar uma mutação GraphQL ou enviar uma notificação por e-mail e assim por diante.

Os aplicativos de front-end podem receber os resultados por meio de consultas por meio de assinatura GraphQL. Esse tipo de arquitetura facilita a construção de aplicativos interativos em tempo real sem bloqueio que proporcionam uma ótima experiência do usuário. A base de código também é mais fácil de manter, testar e escalar para os desenvolvedores.

Gatilhos programados

Gatilhos programados são eventos baseados em tempo que executam lógica de negócios personalizada por meio de webhooks. Existem dois tipos que você pode definir:

  • Gatilhos CRON : usados ​​para eventos periódicos em um intervalo regular
  • Eventos pontuais programados : usados ​​para execuções pontuais

Os gatilhos programados podem ser criados por meio do console da web ou da API de metadados. A captura de tela abaixo mostra o exemplo do console da web.

 

 

Acionador de cron do console da web

A API de metadados permite a criação de eventos agendados usando o código do aplicativo. O exemplo abaixo mostra como você estruturaria a criação de um evento único usando a API:

{
  "type": "create_scheduled_event",
  "args": {
    "webhook": "https://my-awesome-serverless-fn.com/send-email",
    "schedule_at": "2022-07-20T12:45:00Z",
    "payload": {
      "email": "bob@ross.com"
    }
  }
}

Hasura fornece uma série de mecanismos de tolerância a falhas que garantem que os gatilhos programados sejam executados com sucesso. Por exemplo, digamos que um evento agendado para 14h não foi processado porque Hasura estava fora do ar às 13h59. Quando Hasura for colocado online novamente, ele irá reidratar eventos e executar novamente gatilhos programados perdidos com base em uma configuração de tolerância personalizável. A configuração padrão é seis horas.

Hasura também oferece uma configuração de nova tentativa flexível em caso de falhas de HTTP. Você pode configurar o número de tentativas e o tempo limite entre cada tentativa. Cada invocação de gatilho é registrada - que você pode acessar mais tarde para inspeção.

Os casos de uso para acionadores programados incluem:

  • enviando lembretes
  • geração de relatórios de fim de dia
  • exclusão de usuários inativos que não verificaram seus endereços de e-mail nos últimos 90 dias

Migrações e ambientes

O fluxo de trabalho de desenvolvimento ideal para qualquer projeto de software é configurar vários ambientes para desenvolvimento, preparação e produção. Esse fluxo de trabalho simplifica o teste e garante que os desenvolvedores não excluam acidentalmente ou corrompam dados de produção ao implantar novas versões de seu software.

Para transferir o estado de um ambiente de desenvolvimento para teste e produção, os arquivos de migração são necessários. Com Hasura, você precisará de:

  • arquivos de migração de banco de dados / SQL
  • Metadados Hasura

Os metadados Hasura são compostos de um instantâneo de arquivos de configuração que rastreiam:

  • relacionamentos
  • permissões
  • gatilhos
  • ações
  • Esquema GraphQL
  • esquema remoto

Você precisará instalar o Hasura CLI para poder criar e aplicar esses arquivos de migração a uma instância diferente do Hasura. Esses arquivos de migração podem ser versionados e atualizados incrementalmente conforme o esquema muda durante o desenvolvimento.

A criação e aplicação de arquivos de migração SQL são feitas usando o hasura migratecomando, enquanto os arquivos de migração de metadados são tratados usando o hasura metadatacomando. O comando CLI também permite:

  • reverter migrações aplicadas
  • criar migração de dados iniciais
  • redefinir arquivos de migração
  • arquivos de migração squash - isto é, substitua pequenas atualizações incrementais por uma atualização principal

Hasura tem uma imagem especial de migração Docker cli que aplica migrações automaticamente quando o servidor é iniciado. Esta imagem também contém a ferramenta Hasura CLI , que pode ser usada para executar scripts de CI / CD em seu fluxo de trabalho.

Desdobramento, desenvolvimento

A maneira mais fácil de implantar Hasura para produção é usando Hasura Cloud . Essa é a opção recomendada, pois você obtém recursos empresariais não disponíveis na versão de código-fonte aberto. Felizmente, o Hasura não bloqueia você em sua plataforma, ao contrário da maioria dos provedores de back-end como serviço (BaaS). Existem provedores de serviços de implantação com um clique que você pode aproveitar em plataformas como:

Você também pode implantar o Hasura em qualquer plataforma Kubernetes , como o Google Cloud . O AWS também é compatível, mas você precisa seguir várias etapas para fazê-lo funcionar. Hospedar externamente oferece liberdade e mais opções de preços. No entanto, todas as opções acima exigem que você configure serviços adicionais para:

  • autenticação
  • armazenar
  • lógica de negócios personalizada

Na próxima seção, veremos brevemente como você pode usar o NHost para simplificar ainda mais o desenvolvimento de aplicativos back-end Hasura.

Implantando com NHost

NHost é um provedor de BaaS de código aberto que visa competir com plataformas como o Firebase . Sua pilha de back-end consiste em:

  • Banco de dados PostgreSQL
  • Motor Hasura GraphQL
  • um serviço de autenticação
  • MinIO , um serviço de armazenamento de objetos compatível com S3
  • Funções sem servidor (atualmente em beta)

A plataforma vem com uma biblioteca cliente chamada, nhost-js-sdkque é usada para autenticação de front-end e gerenciamento de arquivos. O serviço de armazenamento oferece suporte à otimização de imagens , o que nos poupa do trabalho de integrar outro serviço de imagens.

No momento em que este artigo foi escrito, a NHost oferece atualmente um teste de 14 dias para seu serviço. Um nível gratuito será lançado em breve. Existe uma versão Docker chamada Hasura Backend Plus que você pode implantar localmente em sua máquina.

Resumo

Para concluir, o Hasura GraphQL Engine e o banco de dados PostgreSQL são bastante revolucionários em termos de rapidez com que você pode construir back-ends para aplicativos móveis e web, sem escrever linhas de código. A maior parte da lógica de computação e analítica pode ser tratada pelo PostgreSQL, enquanto o resto da lógica de negócios personalizada pode ser implementada usando microsserviços ou funções sem servidor.

Adotar o Hasura significa que você será capaz de lançar mais rápido e construir um produto de alto desempenho, seguro, tolerante a falhas, escalonável e fácil de manter. Não ter problemas de infraestrutura também reduzirá seus custos operacionais e permitirá que você se concentre no desenvolvimento de front-end e na parte voltada para o usuário de seu aplicativo.

Embora o Hasura não seja tão rico em recursos quanto outras alternativas de código aberto, como a plataforma Parse , ele oferece suporte a controle de versão e teste de ambiente, que é um requisito crucial para fluxos de trabalho de desenvolvimento de CI / CD. Por ser de código aberto, você está protegido dos riscos representados por lock-ins de fornecedores.

fonte: https://www.sitepoint.com/hasura-postgresql-build-backend/

#postgresql #hasura 

Hire Backend Developers India

Are you looking to hire experienced Backend Developers at a reasonable cost to boost-up your IT business?

Hire Backend Developers India and accomplish their business goals swiftly. Backend developers in HourlyDeveloper.io are well versed in writing complex functional protocols. They also have exceptional hands-on experience in using the latest technologies that give you custom, secure, and strong backend layers for your website and applications.

Consult with experts:- https://bit.ly/2WlYvA7

#hire backend developers india #backend developers #backend development company #backend development services #backend development #backend

Hire Dedicated Backend Developers

Want to create a backend for a web or mobile app using PHP & JS frameworks?

Hire Dedicated Backend Developers who offer end-to-end, robust, scalable, and innovative website solutions. HourlyDeveloper.io technical analysts will also guide you on improving your web presence using their expertise. Also, we ensure your optimum level of freedom and control over your projects.

Let’s connect with our experts: https://bit.ly/2YLhmFZBackend Development Services

#hire dedicated backend developers #backend developers #backend development company #backend development services #backend development #backend

joe biden

1615785369

Converta e-mails EML para Adobe PDF com o conversor de EML para PDF

Para converter arquivos EML em formato PDF, o Datavare é o aplicativo mais adequado. O aplicativo oferece muitas vantagens para que os usuários possam converter os arquivos facilmente. Isso ajuda a fazer uma conversão direta. O aplicativo é mais adequado para cada usuário e, portanto, converte os arquivos EML de uma forma precisa e sem erros. Qualquer usuário pode fazer a conversão de arquivos EML para o formato PDF, pois o aplicativo é muito fácil de operar. Usuários sem formação técnica também podem usar este aplicativo incrível sem qualquer problema.

Embora o aplicativo seja muito avançado, ainda assim, com sua interface gráfica amigável, é fácil converter arquivos EML para o formato PDF. Para tal não é necessária qualquer tipo de assistência técnica. A tarefa de conversão é fácil e simples de fazer com este aplicativo de terceiros. É um aplicativo altamente compatível que funciona perfeitamente em qualquer versão do Windows. Para usar o aplicativo, não é necessário que a versão do Windows seja a mais recente ou a mais antiga.

Além disso, há muitas vantagens em usar esse aplicativo notável. Vamos falar sobre algumas dessas vantagens que ela confere:

  • Concede conversão direta
  • Transfere arquivos em alta velocidade
  • Sem restrição de tamanho
  • Aplicação independente
  • Conversão sem erros

Essas vantagens tornam o aplicativo mais adequado para uso. Vale a pena usar este aplicativo para converter arquivos EML em formato PDF. Baixe sua versão de teste agora.

Passos para conversão

Para continuar a tarefa de conversão, é necessário seguir alguns passos. O processo de conversão ocorre em um processo passo a passo. Essas etapas são muito fáceis de executar por qualquer usuário. Não há necessidade de nenhuma orientação técnica para auxiliar essas etapas.

Agora, vamos apenas dar uma olhada nessas etapas simples, depois de baixar e iniciar o aplicativo;
Passo 1- Abra o aplicativo e escolha os arquivos EML que você deseja apenas converter.
Etapa 2 - Escolha o local onde deseja salvar os arquivos convertidos.
Etapa 3- Clique no botão converter agora.

Com essas 3 etapas fáceis, você pode converter seus arquivos EML em formato PDF.

Essas etapas são muito fáceis, e o aplicativo também fornece instantâneos adequados das etapas fornecidas para a assistência adequada do usuário. Além disso, uma interface de usuário fácil é fornecida pelo aplicativo para oferecer suporte a seus usuários. Em primeiro lugar, use a versão demo do aplicativo.

Características principais

Com muitas vantagens, o aplicativo também disponibiliza alguns recursos fundamentais aos seus usuários para a melhor conversão dos arquivos EML. Vejamos alguns desses recursos:

Conversão perfeita
Com uma velocidade rápida, é imprescindível que seus arquivos sejam convertidos na perfeição, sem nenhuma alteração dos dados. Este aplicativo é adequado para converter seus dados na perfeição.

Conversão seletiva
É necessário que os arquivos que você escolher sejam os que somente devem ser convertidos. Portanto, este aplicativo inteligente converte apenas os arquivos que você seleciona para a conversão. Não, outros arquivos EML são convertidos para o formato PSF.

Conversão em lote
Os dados que você escolher são convertidos em lotes. Isso significa que você pode escolher os arquivos que deseja converter ou pode escolher a pasta. Somando-se a isso, a filtragem de arquivos é fornecida no modo de arquivo

Salve os dados de acordo
Você pode escolher os arquivos a serem convertidos, bem como o local. O aplicativo oferece suporte ao salvamento personalizado de dados. Isso significa que, sem qualquer obrigação, você pode salvar seus dados de forma fácil e adequada. Esses recursos fornecem um resultado proveitoso para os usuários.

Declaração final

Os usuários podem baixar o EML para PDF Converter para converter seus arquivos EML para o formato PD. O aplicativo é fácil de usar em qualquer versão do Windows. O usuário pode converter quantos arquivos quiser sem qualquer obrigação, uma vez que adquira a versão licenciada do aplicativo.

Recursos como conversão em alta velocidade, excelente precisão e grande compatibilidade tornam o uso do aplicativo mais útil. Este aplicativo independente executa a tarefa de conversão diretamente sem qualquer problema. Portanto, experimente a versão demo gratuita do aplicativo agora e examine-o convertendo seus poucos arquivos EML em formato PDF.
Se você enfrentar algum tipo de problema também pode entrar em contato com o número de atendimento ao cliente fornecido pelo aplicativo ao seu usuário. Este serviço de ajuda ao cliente está disponível 24 horas por dia, 7 dias por semana.

Mais informações:- https://www.datavare.com/software/eml-to-pdf-converter-expert.html

#conversor de eml para pdf #migração de eml para pdf #exportador de eml para pdf #converter eml para pdf #importar eml para pdf

Como exportar banco de dados de EML para o formato PST?

O usuário agora pode converter seus arquivos EML para o formato PST apenas instalando este conversor em seu PC. O conversor EML para PST converte seus dados com total precisão, sem prejudicar os dados a qualquer custo. O aplicativo é confiável e fácil de usar.

A conversão de alta velocidade e a taxa de precisão de 100% proporcionam uma economia de tempo aos usuários. Além disso, uma versão demo também está disponível para todos os usuários verem o funcionamento do software.

Por que usar o conversor EML para PST

Converter o arquivo EML para o formato PST vai demorar muito se for feito manualmente, mas pode ser feito em alta velocidade usando o conversor EML para PST. Portanto, antes de qualquer conhecimento adicional, vamos primeiro saber sobre o conversor de EML para PST.

  • O aplicativo é executado sem problemas em todos os sistemas operacionais Windows.
  • O aplicativo pode converter os arquivos em massa.
  • Os dados podem ser salvos automaticamente pelo conversor.
  • A conversão é feita em alta velocidade.
  • O resultado obtido após a conversão é 100% preciso.
  • Para utilizar o aplicativo o usuário não necessita de suporte técnico ou assistência.
  • Os usuários podem salvar o arquivo em qualquer local de sua escolha.
  • Uma versão demo gratuita está disponível para verificar as pastas.

Um atributo chave do conversor EML para PST

O conversor de EML para PST possui muitos dos recursos que o tornam um conversor único e confiável. Portanto, a seguir estão alguns dos recursos deste conversor inteligente:

1. Fornece apenas conversão específica
O aplicativo converte apenas arquivos EML específicos para o formato PST, o que é saudável. O conversor é compatível com todas as versões do Windows.

2. Suporta conversão em massa
Este aplicativo inteligente pode converter arquivos EML em formato PST em massa. Todos os arquivos convertidos são salvos em uma pasta PST e formam um arquivo forte do Outlook.

3. Conversão de dados saudáveis
O aplicativo converte apenas os arquivos que não estão corrompidos. Portanto, o resultado é 100% preciso com perda zero de dados. Portanto, o resultado atende às expectativas do usuário.

4. Salvamento automático de dados
Os usuários podem salvar os dados em qualquer local ou usar a opção padrão. Portanto, o usuário pode salvar automaticamente seus dados convertidos. Portanto, o usuário acha fácil salvar os dados.

5. Mantém os dados na ordem hierárquica
O aplicativo mantém os dados na ordem hierárquica e a originalidade dos dados também é mantida durante todo o processo de conversão.

Palavras Finais

Os usuários agora podem converter os arquivos EML em PST usando este conversor. O aplicativo está pronto para funcionar em várias versões do Windows sem nenhum obstáculo. Os usuários podem usar a versão demo gratuita antes de usar o aplicativo.

Mais informações:- https://www.datavare.com/pt/conversor-eml-para-pst.html

#conversor eml para pst #eml para pst exportador #eml para pst importador #importar eml para pst #converter eml para pst #exportar eml para pst