Ejecución de consultas en Azure Cosmos DB for PostgreSQL

SE APLICA A: Azure Cosmos DB for PostgreSQL (con tecnología de la extensión de base de datos de Citus en PostgreSQL)

Requisitos previos

Para seguir este inicio rápido, primero tiene que:

  1. Cree un clúster en Azure Portal.
  2. Conéctese al clúster con psql para ejecutar comandos SQL.
  3. Crear y distribuir tablas con el conjunto de datos de ejemplo.

Consultas distribuidas

Ahora viene la parte divertida de la serie de inicios rápidos: la ejecución de consultas. Empezaremos por una simple consulta count (*) para comprobar la cantidad de datos cargados en la sección anterior.

-- count all rows (across shards)

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

Recuerde que github_users es una tabla distribuida, lo que significa que los datos se dividen entre varias particiones. Azure Cosmos DB for PostgreSQL ejecuta automáticamente el recuento en todas las particiones en paralelo y combina los resultados.

Veamos algunos ejemplos de consulta más:

-- 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 más complejas

A continuación se ofrece un ejemplo de una consulta más compleja, que recupera estadísticas por hora para los eventos de inserción en GitHub. Usa la característica JSONB de PostgreSQL para manipular datos semiestructurados.

-- 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)

Azure Cosmos DB for PostgreSQL combina la eficacia de los almacenes de datos SQL y NoSQL con los datos estructurados y semiestructurados.

Además de ejecutar consultas, Azure Cosmos DB for PostgreSQL aplica los cambios en la definición de datos en las particiones de una tabla distribuida:

-- DDL commands that are also parallelized

ALTER TABLE github_users ADD COLUMN dummy_column integer;

Pasos siguientes

Ha creado correctamente un clúster escalable, ha creado tablas, las ha distribuido, ha cargado datos y ha ejecutado consultas distribuidas.

Ahora está listo para aprender a crear aplicaciones con Azure Cosmos DB for PostgreSQL.