Azure Cosmos DB for PostgreSQL でクエリを実行する
適用対象: Azure Cosmos DB for PostgreSQL (PostgreSQL の Citus データベース拡張機能を利用)
前提条件
このクイックスタートを実行するには、まず次のことを行う必要があります。
- Azure portal でクラスターを作成します。
- psql を使用してクラスターに接続し、SQL コマンドを実行します。
- このサンプル データセットを使用して分散テーブル を作成します。
分散クエリ
次は、クイックスタート シリーズでのお楽しみの時間です - クエリを実行します。
まず、シンプルな count (*)
を使って、前のセクションで読み込まれたデータ量を確認しましょう。
-- count all rows (across shards)
SELECT count(*) FROM github_users;
count
--------
264308
(1 row)
github_users
は分散テーブルであることを思い出してください。つまり、そのデータは複数のシャードに分割されます。 Azure Cosmos DB for PostgreSQL が、自動的に、すべてのシャード上で同時にカウントを実行し、結果を合算します。
引き続き、その他のクエリの例をいくつか確認します。
-- 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)
より複雑なクエリ
次に、GitHub でのプッシュ イベントに対する時間単位の統計を取得する、より複雑なクエリの例を示します。 ここでは、PostgreSQL の JSONB 機能を使用して、半構造化データが処理されます。
-- 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 は、SQL データストアおよび NoSQL データストアの能力を、構造化データおよび半構造化データと結合します。
クエリを実行することに加えて、Azure Cosmos DB for PostgreSQL は、データ定義の変更を分散テーブルのシャード全体に適用します。
-- DDL commands that are also parallelized
ALTER TABLE github_users ADD COLUMN dummy_column integer;
次の手順
スケーラブルなクラスターの作成、テーブルの作成と分散、データの読み込み、および分散クエリの実行が正常に完了しました。
これで、Azure Cosmos DB for PostgreSQL を使用したアプリケーションの構築方法を学ぶ準備ができました。