Delen via


Query's uitvoeren in Azure Cosmos DB voor PostgreSQL

Belangrijk

Azure Cosmos DB for PostgreSQL wordt niet meer ondersteund voor nieuwe projecten. Gebruik deze service niet voor nieuwe projecten. Gebruik in plaats daarvan een van deze twee services:

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 van onze quickstartserie: het uitvoeren van query's. Laten we beginnen met een eenvoudige count (*) om te controleren 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 de telling uit op alle shards parallel 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 queries

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 met succes een schaalbaar cluster gemaakt, tabellen gemaakt, gedistribueerd en gegevens geladen, en gedistribueerde query's uitgevoerd.

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