Udostępnij za pomocą


Uruchamianie zapytań w usłudze Azure Cosmos DB for PostgreSQL

Ważne

Usługa Azure Cosmos DB for PostgreSQL nie jest już obsługiwana w przypadku nowych projektów. Nie używaj tej usługi dla nowych projektów. Zamiast tego użyj jednej z tych dwóch usług:

Wymagania wstępne

Aby wykonać czynności opisane w tym przewodniku Szybki start, najpierw musisz wykonać następujące czynności:

  1. Utwórz klaster w witrynie Azure Portal.
  2. Połącz się z klastrem za pomocą narzędzia psql, aby uruchomić polecenia SQL.
  3. 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" — uruchamianie zapytań. 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 wykonuje zliczanie na wszystkich partycjach 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 statystyki godzinowe dla zdarzeń wypychania na GitHubie. Używa funkcji JSONB bazy danych PostgreSQL do obsługi częściowo ustrukturyzowanych danych.

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

Pomyślnie utworzono skalowalny klaster, utworzono tabele, rozproszono je, załadowano dane i uruchomiono zapytania rozproszone.

Teraz możesz dowiedzieć się, jak tworzyć aplikacje za pomocą usługi Azure Cosmos DB for PostgreSQL.