1640318673
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.
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:
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:
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 :
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:
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));
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.
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:
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.
Existem algumas maneiras de iniciar e executar rapidamente uma instância do Hasura:
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_SECRET
em seu docker-compose.yml
arquivo e reiniciando seu contêiner Hasura.
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.
Hasura Cloud vem com vários novos recursos não disponíveis na versão de código aberto, que incluem:
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á:
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:
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.
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.
Hasura vem com um designer visual para modelar sua camada de dados. Isso permite que você:
Quando se trata de colunas, Hasura oferece suporte a um rico conjunto de tipos de dados que incluem:
Você também pode adicionar tipos personalizados usando o CREATE TYPE
comando SQL. A seguir, veremos como os dados são autorizados no Hasura.
O controle de acesso em Hasura é baseado em funções. Por padrão, há uma função chamada admin
que tem acesso CRUD total aos seus dados. Para restringir o acesso a outros usuários, você precisará criar funções adicionais, como user
, public
ou accountant
.
Para cada função criada, você precisa definir uma política de acesso para as seguintes ações:
Existem três tipos de políticas que você pode definir:
O exemplo a seguir demonstra uma select
política de autorização para a user
função. As regras definidas a seguir são definidas para garantir que um user
só possa consultar seus próprios registros ou aqueles marcados como públicos:
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:
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 GraphQL são instruções usadas para modificar dados. Abaixo estão os tipos de mutações que você pode realizar:
mutation insert_single_article {
insert_article_one(
object: {
title: "Article 1"
content: "Sample article content"
author_id: 3
}
) {
id
title
}
}
value
possui 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
}
}
}
int
e jsonb
tipos 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
}
}
}
mutation delete_an_object {
delete_article_by_pk(id: 1) {
id
title
user_id
}
}
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
}
}
}
}
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:
Freqüentemente, ao construir um aplicativo moderno, você precisará integrar APIs de terceiros que:
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 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:
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 hello
que aceita uma variável de string chamada name
como entrada. A função retorna um HelloResponse
objeto, 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}!`,
});
});
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
, UPDATE
ou DELETE
ocorre. 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 é 200
status. 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 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:
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.
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:
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:
Os metadados Hasura são compostos de um instantâneo de arquivos de configuração que rastreiam:
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 migrate
comando, enquanto os arquivos de migração de metadados são tratados usando o hasura metadata
comando. O comando CLI também permite:
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.
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:
Na próxima seção, veremos brevemente como você pode usar o NHost para simplificar ainda mais o desenvolvimento de aplicativos back-end Hasura.
NHost é um provedor de BaaS de código aberto que visa competir com plataformas como o Firebase . Sua pilha de back-end consiste em:
A plataforma vem com uma biblioteca cliente chamada, nhost-js-sdk
que é 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.
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/
1640318673
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.
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:
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:
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 :
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:
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));
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.
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:
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.
Existem algumas maneiras de iniciar e executar rapidamente uma instância do Hasura:
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_SECRET
em seu docker-compose.yml
arquivo e reiniciando seu contêiner Hasura.
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.
Hasura Cloud vem com vários novos recursos não disponíveis na versão de código aberto, que incluem:
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á:
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:
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.
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.
Hasura vem com um designer visual para modelar sua camada de dados. Isso permite que você:
Quando se trata de colunas, Hasura oferece suporte a um rico conjunto de tipos de dados que incluem:
Você também pode adicionar tipos personalizados usando o CREATE TYPE
comando SQL. A seguir, veremos como os dados são autorizados no Hasura.
O controle de acesso em Hasura é baseado em funções. Por padrão, há uma função chamada admin
que tem acesso CRUD total aos seus dados. Para restringir o acesso a outros usuários, você precisará criar funções adicionais, como user
, public
ou accountant
.
Para cada função criada, você precisa definir uma política de acesso para as seguintes ações:
Existem três tipos de políticas que você pode definir:
O exemplo a seguir demonstra uma select
política de autorização para a user
função. As regras definidas a seguir são definidas para garantir que um user
só possa consultar seus próprios registros ou aqueles marcados como públicos:
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:
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 GraphQL são instruções usadas para modificar dados. Abaixo estão os tipos de mutações que você pode realizar:
mutation insert_single_article {
insert_article_one(
object: {
title: "Article 1"
content: "Sample article content"
author_id: 3
}
) {
id
title
}
}
value
possui 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
}
}
}
int
e jsonb
tipos 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
}
}
}
mutation delete_an_object {
delete_article_by_pk(id: 1) {
id
title
user_id
}
}
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
}
}
}
}
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:
Freqüentemente, ao construir um aplicativo moderno, você precisará integrar APIs de terceiros que:
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 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:
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 hello
que aceita uma variável de string chamada name
como entrada. A função retorna um HelloResponse
objeto, 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}!`,
});
});
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
, UPDATE
ou DELETE
ocorre. 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 é 200
status. 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 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:
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.
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:
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:
Os metadados Hasura são compostos de um instantâneo de arquivos de configuração que rastreiam:
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 migrate
comando, enquanto os arquivos de migração de metadados são tratados usando o hasura metadata
comando. O comando CLI também permite:
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.
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:
Na próxima seção, veremos brevemente como você pode usar o NHost para simplificar ainda mais o desenvolvimento de aplicativos back-end Hasura.
NHost é um provedor de BaaS de código aberto que visa competir com plataformas como o Firebase . Sua pilha de back-end consiste em:
A plataforma vem com uma biblioteca cliente chamada, nhost-js-sdk
que é 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.
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/
1594888728
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
1598859295
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
1615785369
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:
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.
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.
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.
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
1617176651
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.
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 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.
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