중요합니다
Azure Cosmos DB for PostgreSQL은 더 이상 새 프로젝트에 지원되지 않습니다. 새 프로젝트에는 이 서비스를 사용하지 마세요. 대신 다음 두 서비스 중 하나를 사용합니다.
99.999% SLA(가용성 서비스 수준 약정), 인스턴트 자동 크기 조정 및 여러 지역에서 자동 장애 조치(failover)를 사용하는 대규모 시나리오용으로 설계된 분산 데이터베이스 솔루션에는 NoSQL용 Azure Cosmos DB를 사용합니다.
오픈 소스 Citus 확장을 사용하여 분할된 PostgreSQL용 Azure Database for PostgreSQL의 탄력적 클러스터 기능을 사용합니다.
필수 조건
이 빠른 시작을 따르려면 먼저 다음을 수행해야 합니다.
- 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을 사용하여 애플리케이션을 빌드하는 방법을 배울 준비가 되었습니다.