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 :
- Créer un cluster dans le portail Azure.
- Vous connecter au cluster avec psql pour exécuter des commandes SQL.
- 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.