Partage via


Exécuter des requêtes dans Azure Cosmos DB for PostgreSQL

S’APPLIQUE À : Azure Cosmos DB for PostgreSQL (avec l’extension de base de données Citus pour PostgreSQL)

Prérequis

Pour suivre ce démarrage rapide, vous devez d’abord :

  1. Créer un cluster dans le portail Azure.
  2. Vous connecter au cluster avec psql pour exécuter des commandes SQL.
  3. Créez et distribuez des tables avec notre exemple de jeu de données.

Requêtes distribuées

La partie la plus intéressante de notre série de guides de démarrage rapide est arrivée : l’exécution des requêtes ! Commençons par un simple count (*) pour vérifier la quantité de données que nous avons chargée dans la section précédente.

-- count all rows (across shards)

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

Rappelez-vous que github_users est une table distribuée, ce qui signifie que ses données sont réparties entre plusieurs partitions. Azure Cosmos DB for PostgreSQL exécute automatiquement le comptage sur toutes les partitions en parallèle et combine les résultats.

Nous allons continuer à examiner quelques exemples de requêtes :

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

Requêtes plus compliquées

Voici un exemple de requête plus compliquée, qui récupère des statistiques horaires pour les événements d’envoi (push) sur GitHub. Elle utilise la fonctionnalité JSONB de PostgreSQL pour gérer les données semi-structurées.

-- 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 combine la puissance des magasins de données SQL et NoSQL avec des données structurées et semi-structurées.

Outre l’exécution des requêtes, Azure Cosmos DB for PostgreSQL applique aussi automatiquement les modifications apportées à la définition des données sur les partitions d’une table distribuée :

-- DDL commands that are also parallelized

ALTER TABLE github_users ADD COLUMN dummy_column integer;

Étapes suivantes

Vous venez de créer un cluster évolutif, des tables, de les distribuer, de charger des données et d’exécuter des requêtes distribuées.

Vous êtes maintenant prêt à apprendre à créer des applications avec Azure Cosmos DB for PostgreSQL.