在 Azure Cosmos DB for PostgreSQL 中运行查询
适用对象: Azure Cosmos DB for PostgreSQL(由 PostgreSQL 的 Citus 数据库扩展提供支持)
先决条件
若要按照本快速入门操作,首先需要:
分布式查询
现在到了快速入门系列中有趣的部分了:运行查询。
首先,让我们通过简单的 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 生成应用程序。