Azure Cosmos DB for PostgreSQL에 대한 애플리케이션 유형 결정
적용 대상: Azure Cosmos DB for PostgreSQL(PostgreSQL에 대한 Citus 데이터베이스 확장 기반)
클러스터에서 효율적인 쿼리를 실행하려면 테이블이 서버에 적절하게 분산되어야 합니다. 권장 배포는 애플리케이션 유형과 해당 쿼리 패턴에 따라 달라집니다.
Azure Cosmos DB for PostgreSQL에서 잘 작동하는 애플리케이션에는 크게 두 가지 종류가 있습니다. 데이터 모델링의 첫 번째 단계는 사용 중인 애플리케이션과 더 유사한 종류를 식별하는 것입니다.
개요
다중 테넌트 애플리케이션 | 실시간 애플리케이션 |
---|---|
경우에 따라 스키마에 수십 개 또는 수백 개의 테이블 포함 | 적은 수의 테이블 |
한 번에 하나의 테넌트(회사/매장)와 관련된 쿼리 | 집계를 사용하여 비교적 간단한 분석 쿼리 |
웹 클라이언트를 제공하는 OLTP 워크로드 | 주로 변경할 수 없는 대량의 데이터 수집 |
테넌트별 분석 쿼리를 제공하는 OLAP 워크로드 | 주로 많은 이벤트 테이블 중심 |
예제 및 특징
다중 테넌트 애플리케이션
일반적으로 다른 회사, 계정 또는 조직에 서비스를 제공하는 SaaS 애플리케이션입니다. 대부분의 SaaS 애플리케이션은 본질적으로 관계형입니다. 여기에는 데이터를 여러 노드에 분산하는 자연 차원, 즉 tenant_id에 의해 분할된 데이터베이스가 있습니다.
Azure Cosmos DB for PostgreSQL을 사용하면 애플리케이션을 다시 설계하지 않고도 데이터베이스를 수백만 개의 테넌트로 스케일 아웃할 수 있습니다. 조인, 외래 키 제약 조건, 트랜잭션, ACID, 일관성 등의 필요한 관계형 의미 체계를 유지할 수 있습니다.
- 예제: 디지털 마케팅 솔루션 또는 판매 자동화 도구와 같이 다른 비즈니스의 상점을 호스트하는 웹 사이트
- 특징: 테넌트 간 정보를 조인하는 것이 아니라 단일 테넌트와 관련된 쿼리. 여기에는 웹 클라이언트에 서비스를 제공하기 위한 OLTP 워크로드와 테넌트별 분석 쿼리를 제공하는 OLAP 워크로드가 포함됩니다. 데이터베이스 스키마에 수십 개나 수백 개의 테이블이 있는 것도 다중 테넌트 데이터 모델을 나타냅니다.
Azure Cosmos DB for PostgreSQL을 사용하여 다중 테넌트 앱을 확장하려면 애플리케이션 코드를 최소한으로 변경해야 합니다. Ruby on Rails, Django 등의 인기 프레임워크가 지원됩니다.
실시간 분석
대규모 병렬 처리를 필요로 하며 숫자, 통계 또는 개수 계산 쿼리에 대한 빠른 결과를 위해 수백 개의 코어를 조정하는 애플리케이션. Azure Cosmos DB for PostgreSQL은 여러 노드에서 SQL 쿼리를 분할하고 병렬화하여 1초 이내에 수십억 개의 레코드에서 실시간 쿼리를 수행할 수 있습니다.
실시간 분석 데이터 모델의 테이블은 일반적으로 user_id, host_id 또는 device_id 같은 열을 기준으로 배포됩니다.
- 예제: 1초 미만의 응답 시간이 필요한 고객용 분석 대시보드
- 특징: 디바이스 이벤트, 사이트 이벤트 또는 사용자 이벤트의 큰 테이블을 중심으로 하는 경우가 많고 대체로 변경할 수 없는 대량 수집 데이터가 필요한 몇 개의 테이블. 여러 집계 및 GROUP BY를 포함하는 비교적 간단하지만 계산 집약적 분석 쿼리
위의 사례와 유사한 상황인 경우 다음 단계는 클러스터에서 데이터를 분할하는 방법을 결정하는 것입니다. 성능을 보장하려면 데이터베이스 관리자가 일반적인 쿼리의 액세스 패턴과 일치하도록 배포 열을 선택해야 합니다.
다음 단계
- 데이터를 효율적으로 배포하기 위해 애플리케이션에서 테이블의 배포 열을 선택합니다.