Sdílet prostřednictvím


Spouštění dotazů ve službě Azure Cosmos DB for PostgreSQL

Důležité

Azure Cosmos DB for PostgreSQL se už pro nové projekty nepodporuje. Tuto službu nepoužívejte pro nové projekty. Místo toho použijte jednu z těchto dvou služeb:

  • Azure Cosmos DB for NoSQL můžete použít pro distribuované databázové řešení navržené pro vysoce škálovatelné scénáře s 99,999% smlouvou o úrovni služeb (SLA), okamžitým automatickým škálováním a automatickým převzetím služeb při selhání napříč několika oblastmi.

  • Použijte funkci Elastic Clusters služby Azure Database for PostgreSQL pro horizontálně dělené PostgreSQL pomocí opensourcového rozšíření Citus.

Požadavky

Pokud chcete postupovat podle tohoto rychlého průvodce, nejprve budete muset:

  1. Vytvořte cluster na webu Azure Portal.
  2. Připojte se ke clusteru pomocí psql a spusťte příkazy SQL.
  3. Vytvořte a distribuujte tabulky s naší ukázkovou datovou sadou.

Distribuované dotazy

Teď je čas na zábavnou část v naší sérii rychlých startů – spouštění dotazů. 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 github_users je distribuovaná tabulka, což znamená, že její data jsou rozdělená mezi několik shardů. Azure Cosmos DB for PostgreSQL automaticky provádí počítání na všech shardech 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.