Partilhar via


Executar consultas no Azure Cosmos DB para PostgreSQL

Importante

O Azure Cosmos DB para PostgreSQL não tem mais suporte para novos projetos. Não use este serviço para novos projetos. Em vez disso, use um destes dois serviços:

  • Use o Azure Cosmos DB para NoSQL para obter uma solução de banco de dados distribuído projetada para cenários de alta escala com um SLA (contrato de nível de serviço) de disponibilidade de 99.999%, dimensionamento automático instantâneo e failover automático em várias regiões.

  • Use a funcionalidade de Clusters Elásticos do Azure para PostgreSQL para PostgreSQL fragmentado, utilizando a extensão Citus de código aberto.

Pré-requisitos

Para seguir este guia de início rápido, primeiro você precisará:

  1. Crie um cluster no portal do Azure.
  2. Conecte-se ao cluster com psql para executar comandos SQL.
  3. Crie e distribua tabelas com nosso conjunto de dados de exemplo.

Consultas distribuídas

Agora é hora da parte divertida em nossa série de início rápido: executar consultas. Vamos começar com um simples count (*) para verificar a quantidade de dados que carregamos na seção anterior.

-- count all rows (across shards)

SELECT count(*) FROM github_users;
 count
--------
 264308
(1 row)

Lembre-se de que é uma tabela distribuída, o que significa que github_users seus dados são divididos entre vários fragmentos. O Azure Cosmos DB para PostgreSQL executa automaticamente a contagem em todos os fragmentos em paralelo e combina os resultados.

Vamos continuar examinando mais alguns exemplos de consulta:

-- Find all events for a single user.
-- (A common transactional/operational query)

SELECT created_at, event_type, repo->>'name' AS repo_name
  FROM github_events
 WHERE user_id = 3861633;
     created_at      |  event_type  |              repo_name
---------------------+--------------+--------------------------------------
 2016-12-01 06:28:44 | PushEvent    | sczhengyabin/Google-Image-Downloader
 2016-12-01 06:29:27 | CreateEvent  | sczhengyabin/Google-Image-Downloader
 2016-12-01 06:36:47 | ReleaseEvent | sczhengyabin/Google-Image-Downloader
 2016-12-01 06:42:35 | WatchEvent   | sczhengyabin/Google-Image-Downloader
 2016-12-01 07:45:58 | IssuesEvent  | sczhengyabin/Google-Image-Downloader
(5 rows)

Consultas mais complicadas

Aqui está um exemplo de uma consulta mais complicada, que recupera estatísticas horárias para eventos de push no GitHub. Ele usa o recurso JSONB do PostgreSQL para lidar com dados semiestruturados.

-- Querying JSONB type. Query is parallelized across nodes.
-- Find the number of commits on the default branch per hour 

SELECT date_trunc('hour', created_at) AS hour,
       sum((payload->>'distinct_size')::int) AS num_commits
FROM   github_events
WHERE  event_type = 'PushEvent' AND
       payload @> '{"ref":"refs/heads/master"}'
GROUP BY hour
ORDER BY hour;
        hour         | num_commits
---------------------+-------------
 2016-12-01 05:00:00 |       13051
 2016-12-01 06:00:00 |       43480
 2016-12-01 07:00:00 |       34254
 2016-12-01 08:00:00 |       29307
(4 rows)

O Azure Cosmos DB para PostgreSQL combina o poder dos armazenamentos de dados SQL e NoSQL com dados estruturados e semiestruturados.

Além de executar consultas, o Azure Cosmos DB para PostgreSQL também aplica alterações de definição de dados nos fragmentos de uma tabela distribuída:

-- DDL commands that are also parallelized

ALTER TABLE github_users ADD COLUMN dummy_column integer;

Próximos passos

Você criou com êxito um cluster escalável, criou tabelas, distribuiu-as, carregou dados e executou consultas distribuídas.

Agora você está pronto para aprender a criar aplicativos com o Azure Cosmos DB para PostgreSQL.