중요합니다
Azure Cosmos DB for PostgreSQL은 더 이상 새 프로젝트에 지원되지 않습니다. 새 프로젝트에는 이 서비스를 사용하지 마세요. 대신 다음 두 서비스 중 하나를 사용합니다.
99.999% SLA(가용성 서비스 수준 약정), 인스턴트 자동 크기 조정 및 여러 지역에서 자동 장애 조치(failover)를 사용하는 대규모 시나리오용으로 설계된 분산 데이터베이스 솔루션에는 NoSQL용 Azure Cosmos DB를 사용합니다.
오픈 소스 Citus 확장을 사용하여 분할된 PostgreSQL용 Azure Database for PostgreSQL의 탄력적 클러스터 기능을 사용합니다.
공통 필터를 분할 키로
처리량이 높은 트랜잭션 애플리케이션에 대한 분할 키를 선택하려면 다음 지침을 따릅니다.
- 지점 조회에 사용되며 대부분의 만들기, 읽기, 업데이트 및 삭제 작업에 있는 열을 선택합니다.
- 데이터의 기본 차원 또는 애플리케이션의 중심부인 열을 선택합니다. 예:
- IOT 워크로드에서
device_id는 좋은 배포 열입니다.
- IOT 워크로드에서
적절한 분할 키를 선택하면 네트워크 홉을 최적화하는 동시에 메모리와 컴퓨팅을 활용하여 밀리초 대기 시간을 달성할 수 있습니다.
처리량이 많은 앱을 위한 최적의 데이터 모델
다음은 디바이스에서 원격 분석(시계열 데이터)을 캡처하는 IoT 앱에 대한 샘플 데이터 모델의 예입니다. 원격 분석 캡처를 위한 두 개의 테이블(devices 및 events)이 있습니다. 다른 테이블이 있을 수 있지만 이 예에서는 다루지 않습니다.
처리량이 높은 앱을 빌드할 때는 일부 최적화를 염두에 두어야 합니다.
- 앱의 중심부인 공통 열과 앱에서 주로 쿼리하는 열에 큰 테이블을 배포합니다. 위의 IOT 앱 예에서
device_id가 해당 열이며 이벤트 및 디바이스 테이블을 공동 배치합니다. - 나머지 작은 테이블은 참조 테이블이 될 수 있습니다.
- IOT 앱에는 시간 차원이 있으므로 시간에 따라 분산 테이블을 분할합니다. 네이티브 Azure Cosmos DB for PostgreSQL 시계열 기능을 사용하여 파티션을 만들고 유지 관리할 수 있습니다.
- 분할은 시간 필터를 사용하여 쿼리에 대한 데이터를 효율적으로 필터링하는 데 도움이 됩니다.
- DROP 및 DELETE 명령을 사용하여 오래된 데이터를 만료하는 것도 빠릅니다.
- 이 예의 이벤트 테이블은 월별로 분할됩니다.
- JSONB 데이터 형식을 사용하여 반구조화된 데이터를 저장합니다. 디바이스 원격 분석 데이터는 일반적으로 구조화되지 않으며 모든 디바이스에는 고유한 메트릭이 있습니다.
- 이 예에서 이벤트 테이블에는
detail(JSONB) 열이 있습니다.
- 이 예에서 이벤트 테이블에는
- IoT 앱에 지리 공간적 기능이 필요한 경우 Azure Cosmos DB for PostgreSQL이 기본적으로 지원하는 PostGIS 확장을 사용할 수 있습니다.
다음 단계
이제 확장 가능한 앱에 대한 데이터 모델링 탐색을 완료했습니다. 다음 단계는 선택한 프로그래밍 언어로 데이터베이스를 연결하고 쿼리하는 것입니다.