다음을 통해 공유


Azure Data Explorer를 사용하여 높은 동시성을 위한 최적화

애플리케이션이 대기 시간이 짧고 처리량이 높은 많은 요청을 동시에 처리하는 대규모 사용자 기반의 시나리오에서는 매우 동시적인 애플리케이션이 필요합니다.

사용 사례로 대규모 모니터링, 경고 대시보드 등이 있습니다. 예를 들어 Azure Monitor, Azure Time Series Insights 및 Playfab과 같은 Microsoft 제품 및 서비스가 있습니다. 이러한 모든 서비스는 높은 동시성 워크로드를 제공하기 위해 Azure Data Explorer를 사용합니다. Azure Data Explorer는 애플리케이션, 웹 사이트, IoT 디바이스 등의 대용량 데이터 스트리밍을 실시간으로 분석하는 빠른 속도의 완전 관리형 빅 데이터 분석 서비스입니다.

참고 항목

클러스터에서 동시에 실행할 수 있는 실제 쿼리 수는 클러스터 SKU, 데이터 볼륨, 쿼리 복잡성 및 사용 패턴과 같은 요인에 따라 달라집니다.

높은 동시성 애플리케이션에 대해 설정하려면 다음과 같이 백 엔드 아키텍처를 디자인합니다.

이 문서에서는 최적의 비용 효율적인 방법으로 높은 동시성을 달성하기 위해 구현할 수 있는 각 이전 주제에 대한 권장 사항을 제공합니다. 이러한 기능은 단독으로 또는 함께 사용할 수 있습니다.

데이터 최적화

높은 동시성을 제공하려면 쿼리는 최소한의 CPU 리소스를 사용해야 합니다. 다음 방법 중 전부 또는 전부를 사용할 수 있습니다.

테이블 스키마 디자인 모범 사례 사용

다음 표 스키마 디자인 제안을 사용하여 사용되는 CPU 리소스를 최소화합니다.

  • ID 열은 값이 숫자인지 여부에 관계없이 문자열 데이터 형식으로 정의되어야 합니다. 문자열 열에 대한 인덱싱은 숫자 열보다 더 정교하며 더 나은 필터링 성능을 제공합니다.
  • 열 데이터 형식을 이러한 열에 저장된 실제 데이터와 최적으로 일치합니다. 예를 들어, 문자열 열에는 날짜/시간 값을 저장하지 마세요.
  • 열이 많은 큰 스파스 테이블을 사용하지 말고 동적 열을 사용하여 스파스 속성을 저장합니다.
  • 자주 사용하는 속성을 비동기 데이터 형식을 사용하여 고유한 열에 저장합니다.
  • 데이터 비정규화하여 비교적 많은 CPU 리소스를 요구하는 조인을 방지합니다.

데이터 분할

데이터는 익스텐트(데이터 분할)의 형태로 저장되며 기본적으로 수집 시간별로 분할됩니다. 분할 정책을 사용하여 백그라운드 프로세스에서 단일 문자열 열이나 단일 날짜/시간 열을 기준으로 익스텐트를 다시 분할할 수 있습니다. 분할은 대부분의 쿼리가 파티션 키를 사용하여 필터링, 집계 또는 둘 다를 사용하는 경우 상당한 성능 향상을 제공할 수 있습니다.

참고 항목

분할 프로세스 자체는 CPU 리소스를 사용합니다. 그러나 쿼리 시간 동안 CPU 감소는 분할에 사용되는 CPU보다 큽니다.

구체화된 뷰를 사용하여 데이터 사전 집계

데이터를 미리 집계하여 쿼리 시간 동안 CPU 리소스를 크게 줄입니다. 예제 시나리오에는 제한된 시간 저장소 수에 대한 데이터 요소 요약, 지정된 레코드의 최신 레코드 유지 또는 데이터 세트 중복 제거가 포함됩니다. 원본 테이블에 대해 구성하기 쉬운 집계 뷰에 구체화된 뷰를 사용합니다. 이 기능은 해당 집계 뷰를 만들고 유지 관리하는 작업을 간소화합니다.

참고 항목

백그라운드 집계 프로세스는 CPU 리소스를 사용합니다. 그러나 쿼리 시간 동안 CPU 감소는 집계를 위한 CPU 사용량보다 커야 합니다.

캐싱 정책 구성

디스크 캐시라고도 하는 핫 스토리지에 저장된 데이터에서 쿼리가 실행되도록 캐싱 정책을 구성합니다. 콜드 스토리지 또는 외부 테이블에서 제한되고 신중하게 디자인된 시나리오만 실행합니다.

리더-팔로워 아키텍처 패턴 설정

팔로워 데이터베이스는 동일한 지역에 있는 다른 클러스터에서 데이터베이스 또는 데이터베이스의 테이블 집합을 따르는 기능입니다. 이 기능은 Azure Data Share, Azure Resource Manager API 및 클러스터 명령 집합을 통해 노출됩니다.

리더-팔로워 패턴을 사용하여 다양한 워크로드에 대한 컴퓨팅 리소스를 설정합니다. 예를 들어 수집을 위한 클러스터, 대시보드 또는 애플리케이션을 쿼리하거나 제공하는 클러스터 및 데이터 과학 워크로드를 제공하는 클러스터를 설정합니다. 이 경우 각 워크로드에는 독립적으로 확장할 수 있는 전용 컴퓨팅 리소스와 다양한 캐싱 및 보안 구성이 있습니다. 모든 클러스터는 리더가 데이터를 쓰고 팔로워가 데이터를 읽기 전용 모드로 사용하는 동일한 데이터를 사용합니다.

참고 항목

팔로워 데이터베이스는 일반적으로 몇 초 동안 리더에서 지연됩니다. 솔루션에 대기 시간이 없는 최신 데이터가 필요한 경우 이 솔루션이 유용할 수 있습니다. 리더와 팔로워의 데이터를 통합하고 리더의 최신 데이터와 팔로워의 나머지 데이터를 쿼리하는 팔로워 클러스터의 보기를 사용합니다.

팔로워 클러스터에서 쿼리 성능을 향상시키려면 프리페치 익스텐트 구성을 사용하도록 설정할 수 있습니다. 이 구성은 팔로워 데이터베이스의 데이터의 새로 고침에 영향을 줄 수 있으므로 신중하게 사용합니다.

쿼리 최적화

다음 방법을 사용하여 높은 동시성을 위해 쿼리를 최적화합니다.

쿼리가 가능한 한 효율적으로 수행되도록 쿼리 모범 사례를 따릅니다.

쿼리 결과 캐시 사용

두 명 이상의 사용자가 비슷한 시간에 동일한 대시보드를 로드하는 경우 두 번째 및 다음 사용자에게 대시보드를 캐시에서 제공될 수 있습니다. 이 설정은 CPU 사용량이 거의 없는 고성능을 제공합니다. 쿼리 결과 캐시 기능을 사용하고 문을 사용하여 쿼리 결과 캐시 구성을 쿼리와 함께 보냅니다set.

Grafana 는 데이터 원본 수준에서 쿼리 결과 캐시에 대한 구성 설정을 포함하므로 모든 대시보드는 기본적으로 이 설정을 사용하며 쿼리를 수정할 필요가 없습니다.

쿼리 일관성 구성

기본 쿼리 일관성 모드는 강력합니다. 이 모드에서 관리자 노드는 클러스터에 대한 메타데이터 및 수집을 관리하고 쿼리 계획 및 실행을 다른 노드에 위임합니다.

동시성이 높은 애플리케이션에서 쿼리를 관리하면 관리자 노드의 CPU 사용량이 높아지는 반면 다른 노드의 사용량이 적을 수 있습니다. 이로 인해 동시 쿼리 수가 증가할 수 없는 병목 현상이 발생할 수 있습니다. 그러나 클러스터의 평균 CPU 사용량을 표시하는 클러스터의 CPU 보고서(Azure Portal > {your_cluster} > 메트릭 > CPU 메트릭)에서는 이 정보가 표시되지 않을 수 있습니다.

이 시나리오에서는 약한 일관성 모드를 사용하는 것이 좋습니다. 이 모드에서는 더 많은 노드가 쿼리를 관리할 수 있으므로 동시 쿼리 수를 수평적으로 조정할 수 있습니다. 이 모드의 노드는 메타데이터 및 새로 수집된 데이터의 복사본을 주기적으로 새로 고치며, 이로 인해 데이터가 동기화될 때 일반적으로 1분 미만의 대기 시간이 발생합니다. 그러나 이 짧은 대기 시간은 강력한 일관성 모드를 사용할 때 발생할 수 있는 병목 상태보다 좋습니다.

워크로드 그룹 쿼리 일관성 정책, 클라이언트 요청 속성 또는 Grafana 데이터 원본 구성에서 일관성 모드를 설정할 수 있습니다.

클러스터 정책 설정

동시 요청 수는 기본적으로 제한되며 요청 속도 제한 정책에 의해 제어되므로 클러스터가 오버로드되지 않습니다. 동시성이 높은 상황에 맞게 이 정책을 조정할 수 있습니다. 이 정책은 프로덕션과 유사한 사용 패턴 및 데이터 세트에 대해 엄격한 테스트 후에만 조정해야 합니다. 테스트를 통해 클러스터가 수정된 값을 유지할 수 있습니다. 이 제한은 애플리케이션 요구 사항에 따라 구성할 수 있습니다.

Azure Data Explorer 클러스터 모니터링

클러스터 리소스의 상태를 모니터링하면 이전 섹션에서 제안된 기능을 사용하여 최적화 계획을 수립할 수 있습니다. Azure Data Explorer용 Azure Monitor는 클러스터의 성능, 작업, 사용량 및 실패에 대한 포괄적인 보기를 제공합니다. Azure Portal에서 Azure Data Explorer 클러스터의 모니터링 섹션 아래에서 인사이트(미리 보기) 탭을 선택하여 쿼리의 성능, 동시 쿼리, 제한된 쿼리, 다양한 기타 메트릭에 관한 인사이트를 얻습니다.

클러스터 모니터링에 대한 자세한 내용은 Azure Data Explorer용 Azure Monitor를 참조하세요. 개별 메트릭에 관한 내용은 Azure Data Explorer 메트릭을 참조하세요.