Ausführen von Abfragen in Azure Cosmos DB for PostgreSQL

GILT FÜR: Azure Cosmos DB for PostgreSQL (unterstützt von der Citus-Datenbankerweiterung auf PostgreSQL)

Voraussetzungen

Für diesen Schnellstart müssen Sie zunächst Folgendes ausführen:

  1. Erstellen eines Clusters im Azure-Portal.
  2. Herstellen einer Verbindung mit dem Cluster mithilfe von psql, um SQL-Befehle auszuführen.
  3. Erstellen und Verteilen von Tabellen mit dem Beispieldataset

Verteilte Abfragen

Jetzt beginnt der spannende Teil unserer Schnellstartreihe: Das Ausführen von Abfragen. Beginnen Sie mit einer einfachen count (*)-Funktion, um zu überprüfen, wie viele Daten Sie im vorherigen Abschnitt geladen haben.

-- count all rows (across shards)

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

Denken Sie daran, dass es sich bei github_users um eine verteilte Tabelle handelt, was bedeutet, dass ihre Daten auf mehrere Shards unterteilt sind. Azure Cosmos DB for PostgreSQL führt die Anzahl automatisch parallel für alle Shards aus und kombiniert die Ergebnisse.

Sehen Sie sich nun einige weitere Abfragebeispiele an:

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

Kompliziertere Abfragen

Im Folgenden finden Sie ein Beispiel für eine kompliziertere Abfrage, die stündlich Statistiken für Pushereignisse auf GitHub abruft. Hier wird das JSONB-Feature von PostgreSQL verwendet, um semistrukturierte Daten zu verarbeiten.

-- 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 kombiniert die Leistungsfähigkeit von SQL- und NoSQL-Datenspeichern mit strukturierten und teilweise strukturierten Daten.

Zusätzlich zum Ausführen von Abfragen wendet Azure Cosmos DB for PostgreSQL auch Änderungen der Datendefinition auf die Shards einer verteilten Tabelle an:

-- DDL commands that are also parallelized

ALTER TABLE github_users ADD COLUMN dummy_column integer;

Nächste Schritte

Sie haben erfolgreich eine skalierbare Servergruppe erstellt, Tabellen erstellt, sie verteilt, Daten geladen und verteilte Abfragen ausgeführt.

Jetzt können Sie lernen, Anwendungen mit Azure Cosmos DB for PostgreSQL zu erstellen.