Share via


Azure Cosmos DB for PostgreSQL에서 쿼리 실행

적용 대상: Azure Cosmos DB for PostgreSQL(PostgreSQL에 대한 Citus 데이터베이스 확장 기반)

필수 조건

이 빠른 시작을 따르려면 먼저 다음을 수행해야 합니다.

  1. Azure Portal에서 클러스터를 만듭니다.
  2. psql을 통해 서버 그룹에 연결하여 SQL 명령을 실행합니다.
  3. 예제 데이터 세트를 사용하여 테이블을 만들고 배포합니다.

분산 쿼리

이제 빠른 시작 시리즈의 재미있는 부분인 쿼리 실행을 살펴보겠습니다. 간단한 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을 사용하여 애플리케이션을 빌드하는 방법을 배울 준비가 되었습니다.