Condividi tramite


Eseguire query in Azure Cosmos DB for PostgreSQL

SI APPLICA A: Azure Cosmos DB for PostgreSQL (con tecnologia basata sull'estensione di database Citus per PostgreSQL)

Prerequisiti

Per seguire questa guida di avvio rapido, è prima necessario:

  1. Creare un cluster nel portale di Azure.
  2. Connettersi al cluster con psql per eseguire i comandi SQL.
  3. Creare e distribuire tabelle con il set di dati di esempio.

Query distribuite

Ora è il momento della parte divertente della nostra serie di avvio rapido: l'esecuzione delle query. Si inizierà con una semplice count (*) per verificare la quantità di dati caricati nella sezione precedente.

-- count all rows (across shards)

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

Tenere presente che github_users è una tabella distribuita, ovvero i relativi dati sono divisi tra più partizioni. Azure Cosmos DB for PostgreSQL esegue automaticamente il conteggio su tutte le partizioni in parallelo e combina i risultati.

Continuiamo a esaminare alcuni altri esempi di query:

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

Query più complesse

Di seguito è riportato un esempio di query più complessa, che recupera statistiche orarie per gli eventi push in GitHub. Usa la funzionalità JSONB di PostgreSQL per gestire dati semistrutturati.

-- 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 potenza degli archivi dati SQL e NoSQL con dati strutturati e semistrutturati.

Oltre all'esecuzione di query, Azure Cosmos DB for PostgreSQL applica anche le modifiche alle definizioni dei dati nelle partizioni di una tabella distribuita:

-- DDL commands that are also parallelized

ALTER TABLE github_users ADD COLUMN dummy_column integer;

Passaggi successivi

È stato creato un cluster scalabile, sono state create tabelle, distribuite, caricati i dati e sono state eseguite query distribuite.

Ora si è pronti per imparare a creare applicazioni con Azure Cosmos DB for PostgreSQL.