Spouštění dotazů ve službě Azure Cosmos DB for PostgreSQL
PLATÍ PRO: Azure Cosmos DB for PostgreSQL (využívající rozšíření databáze Citus do PostgreSQL)
Požadavky
Pokud chcete postupovat podle tohoto rychlého startu, musíte nejprve:
- Vytvořte cluster na webu Azure Portal.
- Připojte se ke clusteru pomocí psql a spusťte příkazy SQL.
- Vytvořte a distribuujte tabulky s naší ukázkovou datovou sadou.
Distribuované dotazy
Teď je čas na zábavnou část v našich rychlých startech – dotazy spuštěné v řadě rychlých startů.
Začněme jednoduchým count (*)
ověřením, kolik dat jsme načetli v předchozí části.
-- count all rows (across shards)
SELECT count(*) FROM github_users;
count
--------
264308
(1 row)
Vzpomeňte si, že je distribuovaná tabulka, což znamená, že github_users
data jsou rozdělená mezi několik horizontálních oddílů. Azure Cosmos DB for PostgreSQL automaticky spouští počet všech horizontálních oddílů paralelně a kombinuje výsledky.
Pojďme se dále podívat na několik dalších příkladů dotazů:
-- 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)
Složitější dotazy
Tady je příklad složitějšího dotazu, který načítá hodinové statistiky událostí na GitHubu. Používá funkci JSONB PostgreSQL ke zpracování částečně strukturovaných dat.
-- 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 kombinuje výkon úložišť dat SQL a NoSQL se strukturovanými a částečně strukturovanými daty.
Kromě spouštění dotazů azure Cosmos DB for PostgreSQL také používá změny definic dat napříč horizontálními oddíly distribuované tabulky:
-- DDL commands that are also parallelized
ALTER TABLE github_users ADD COLUMN dummy_column integer;
Další kroky
Úspěšně jste vytvořili škálovatelný cluster, vytvořili tabulky, distribuovali je, načetli data a spustili distribuované dotazy.
Teď se můžete naučit vytvářet aplikace pomocí služby Azure Cosmos DB for PostgreSQL.