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은 자동으로 모든 분할된 데이터베이스에서 count를 병렬로 실행하고 결과를 결합합니다.
몇 가지 쿼리 예제를 더 살펴봅시다.
-- 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을 사용하여 애플리케이션을 빌드하는 방법을 배울 준비가 되었습니다.