Delen via


Query's uitvoeren in Azure Cosmos DB for PostgreSQL

VAN TOEPASSING OP: Azure Cosmos DB for PostgreSQL (mogelijk gemaakt door de Citus-database-extensie naar PostgreSQL)

Vereisten

Als u deze quickstart wilt volgen, moet u eerst het volgende doen:

  1. Maak een cluster in Azure Portal.
  2. Maak verbinding met het cluster met psql om SQL-opdrachten uit te voeren.
  3. Tabellen maken en distribueren met onze voorbeeldgegevensset.

Gedistribueerde query's

Nu is het tijd voor het leuke deel in onze quickstart-reeks query's die worden uitgevoerd. Laten we beginnen met een eenvoudige count (*) controle hoeveel gegevens we in de vorige sectie hebben geladen.

-- count all rows (across shards)

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

Zoals u weet, is dit een gedistribueerde tabel, wat betekent dat github_users de gegevens worden verdeeld tussen meerdere shards. Azure Cosmos DB for PostgreSQL voert automatisch het aantal shards parallel uit en combineert de resultaten.

Laten we nog enkele queryvoorbeelden bekijken:

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

Complexere query's

Hier volgt een voorbeeld van een complexere query, waarmee uurstatistieken worden opgehaald voor pushgebeurtenissen op GitHub. De JSONB-functie van PostgreSQL wordt gebruikt om semi-gestructureerde gegevens te verwerken.

-- 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 combineert de kracht van SQL- en NoSQL-gegevensarchieven met gestructureerde en semi-gestructureerde gegevens.

Naast het uitvoeren van query's past Azure Cosmos DB for PostgreSQL ook gegevensdefinitiewijzigingen toe in de shards van een gedistribueerde tabel:

-- DDL commands that are also parallelized

ALTER TABLE github_users ADD COLUMN dummy_column integer;

Volgende stappen

U hebt een schaalbaar cluster gemaakt, tabellen gemaakt, gedistribueerd, geladen gegevens en gedistribueerde query's uitgevoerd.

U bent nu klaar om toepassingen te bouwen met Azure Cosmos DB for PostgreSQL.