다음을 통해 공유


Azure Cosmos DB for PostgreSQL에서 처리량이 높은 트랜잭션 앱 모델링

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

공통 필터를 분할 키로

처리량이 높은 트랜잭션 애플리케이션에 대한 분할 키를 선택하려면 다음 지침을 따릅니다.

  • 지점 조회에 사용되며 대부분의 만들기, 읽기, 업데이트 및 삭제 작업에 있는 열을 선택합니다.
  • 데이터의 기본 차원 또는 애플리케이션의 중심부인 열을 선택합니다. 예:
    • IOT 워크로드에서 device_id는 좋은 배포 열입니다.

적절한 분할 키를 선택하면 네트워크 홉을 최적화하는 동시에 메모리와 컴퓨팅을 활용하여 밀리초 대기 시간을 달성할 수 있습니다.

처리량이 많은 앱을 위한 최적의 데이터 모델

다음은 디바이스에서 원격 분석(시계열 데이터)을 캡처하는 IoT 앱에 대한 샘플 데이터 모델의 예입니다. 원격 분석 캡처를 위한 두 개의 테이블(devicesevents)이 있습니다. 다른 테이블이 있을 수 있지만 이 예에서는 다루지 않습니다.

이벤트 및 디바이스 테이블, 이벤트의 파티션 다이어그램

처리량이 높은 앱을 빌드할 때는 일부 최적화를 염두에 두어야 합니다.

  • 앱의 중심부인 공통 열과 앱에서 주로 쿼리하는 열에 큰 테이블을 배포합니다. 위의 IOT 앱 예에서 device_id가 해당 열이며 이벤트 및 디바이스 테이블을 공동 배치합니다.
  • 나머지 작은 테이블은 참조 테이블이 될 수 있습니다.
  • IOT 앱에는 시간 차원이 있으므로 시간에 따라 분산 테이블을 분할합니다. 네이티브 Azure Cosmos DB for PostgreSQL 시계열 기능을 사용하여 파티션을 만들고 유지 관리할 수 있습니다.
    • 분할은 시간 필터를 사용하여 쿼리에 대한 데이터를 효율적으로 필터링하는 데 도움이 됩니다.
    • DROP 및 DELETE 명령을 사용하여 오래된 데이터를 만료하는 것도 빠릅니다.
    • 이 예의 이벤트 테이블은 월별로 분할됩니다.
  • JSONB 데이터 형식을 사용하여 반구조화된 데이터를 저장합니다. 디바이스 원격 분석 데이터는 일반적으로 구조화되지 않으며 모든 디바이스에는 고유한 메트릭이 있습니다.
    • 이 예에서 이벤트 테이블에는 detail(JSONB) 열이 있습니다.
  • IoT 앱에 지리 공간적 기능이 필요한 경우 Azure Cosmos DB for PostgreSQL이 기본적으로 지원하는 PostGIS 확장을 사용할 수 있습니다.

다음 단계

이제 확장 가능한 앱에 대한 데이터 모델링 탐색을 완료했습니다. 다음 단계는 선택한 프로그래밍 언어로 데이터베이스를 연결하고 쿼리하는 것입니다.