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:
- Erstellen eines Clusters im Azure-Portal.
- Herstellen einer Verbindung mit dem Cluster mithilfe von psql, um SQL-Befehle auszuführen.
- 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.