Uruchamianie zapytań w usłudze Azure Cosmos DB for PostgreSQL
DOTYCZY: Usługa Azure Cosmos DB for PostgreSQL (obsługiwana przez rozszerzenie bazy danych Citus do bazy danych PostgreSQL)
Wymagania wstępne
Aby wykonać czynności opisane w tym przewodniku Szybki start, najpierw musisz wykonać następujące czynności:
- Utwórz klaster w Azure Portal.
- Połącz się z klastrem za pomocą narzędzia psql, aby uruchomić polecenia SQL.
- Twórz i dystrybuuj tabele przy użyciu naszego przykładowego zestawu danych.
Zapytania rozproszone
Teraz nadszedł czas na zabawę w naszej serii szybki start — uruchomione zapytania.
Zacznijmy od prostego count (*)
sprawdzenia, ile danych załadowaliśmy w poprzedniej sekcji.
-- count all rows (across shards)
SELECT count(*) FROM github_users;
count
--------
264308
(1 row)
Pamiętaj, że jest to tabela rozproszona, co oznacza, że github_users
jej dane są podzielone między wiele fragmentów. Usługa Azure Cosmos DB for PostgreSQL automatycznie uruchamia liczbę wszystkich fragmentów równolegle i łączy wyniki.
Przyjrzyjmy się kilku przykładom zapytań:
-- 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)
Bardziej skomplikowane zapytania
Oto przykład bardziej skomplikowanego zapytania, które pobiera statystykę godzinową dla zdarzeń wypychania w usłudze GitHub. Używa ona funkcji JSONB bazy danych PostgreSQL do obsługi danych częściowo ustrukturyzowanych.
-- 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)
Usługa Azure Cosmos DB for PostgreSQL łączy możliwości magazynów danych SQL i NoSQL ze ustrukturyzowanymi i częściowo ustrukturyzowanymi danymi.
Oprócz uruchamiania zapytań usługa Azure Cosmos DB for PostgreSQL stosuje również zmiany definicji danych w fragmentach tabeli rozproszonej:
-- DDL commands that are also parallelized
ALTER TABLE github_users ADD COLUMN dummy_column integer;
Następne kroki
Udało Ci się utworzyć skalowalny klaster, utworzyć tabele, rozproszyć je, załadować dane i uruchomić zapytania rozproszone.
Teraz możesz nauczyć się tworzyć aplikacje za pomocą usługi Azure Cosmos DB for PostgreSQL.