Köra frågor i Azure Cosmos DB for PostgreSQL

GÄLLER FÖR: Azure Cosmos DB for PostgreSQL (drivs av Citus-databastillägget till PostgreSQL)

Förutsättningar

Om du vill följa den här snabbstarten måste du först:

  1. Skapa ett kluster i Azure Portal.
  2. Anslut till klustret med psql för att köra SQL-kommandon.
  3. Skapa och distribuera tabeller med vår exempeldatauppsättning.

Distribuerade frågor

Nu är det dags för den roliga delen i vår snabbstartsserie – frågor som körs. Vi börjar med ett enkelt count (*) sätt att kontrollera hur mycket data vi läste in i föregående avsnitt.

-- count all rows (across shards)

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

Kom ihåg att är en distribuerad tabell, vilket innebär att github_users dess data är uppdelade mellan flera shards. Azure Cosmos DB for PostgreSQL kör automatiskt antalet på alla shards parallellt och kombinerar resultatet.

Låt oss fortsätta titta på några fler frågeexempel:

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

Mer komplicerade frågor

Här är ett exempel på en mer komplicerad fråga som hämtar statistik varje timme för push-händelser på GitHub. Den använder PostgreSQL:s JSONB-funktion för att hantera halvstrukturerade data.

-- 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 kombinerar kraften i SQL- och NoSQL-datalager med strukturerade och halvstrukturerade data.

Förutom att köra frågor tillämpar Azure Cosmos DB for PostgreSQL även datadefinitionsändringar över fragmenten i en distribuerad tabell:

-- DDL commands that are also parallelized

ALTER TABLE github_users ADD COLUMN dummy_column integer;

Nästa steg

Du har skapat ett skalbart kluster, skapat tabeller, distribuerat dem, läst in data och kört distribuerade frågor.

Nu är du redo att lära dig att skapa program med Azure Cosmos DB for PostgreSQL.