다음을 통해 공유


스키마 최적화 모범 사례

테이블 스키마는 테이블에 있는 모든 열의 이름 및 데이터 형식을 정의합니다. 테이블 스키마는 테이블 생성 동안 또는 해당 수집 매핑을 수정하여 데이터 수집 프로세스의 일부로 설정할 수 있습니다. 테이블 스키마가 정의되는 방식은 쿼리 성능에 큰 영향을 줄 수 있습니다. 데이터에 이상적인 스키마는 사용 사례, 데이터 액세스 패턴 및 저장하려는 특정 데이터를 비롯한 여러 요인에 따라 달라집니다. 이 문서에서는 효율적인 스키마를 디자인하여 성능을 최적화하기 위한 모범 사례를 설명합니다.

데이터 유형

데이터 형식에 대한 일반적인 정보는 스칼라 데이터 형식을 참조하세요.

  • 일반적으로 사용되는 필드는 동적 형식이 아닌 형식화된 열이어야 합니다.

  • 동적 열에서 자주 검색되거나 집계된 JSON 속성은 문자열, long 또는 real과 같은 보다 구체적인 형식의 테이블의 일반 열로 변환되어야 합니다.

  • 필터 및 집계에 일반적으로 사용되지 않는 스파스 열은 DropMappedFields 매핑 변환을 사용하여 동적 열에서 속성 모음으로 수집되어야 합니다.

  • 날짜 시간 열은 datetime으로 입력해야 하며 long 또는 기타 데이터 형식으로 입력하지 않아야 합니다.

    • 예를 들어 unix 변환 매핑의 DateTime을 사용합니다(예: DateTimeFromUnixMilliseconds). .
  • 10진수 형식은 정확한 정밀도를 제공하므로 정확한 정확도가 필요한 재무 및 기타 애플리케이션에 가장 적합합니다. 그러나 real 형식보다 훨씬 느립니다. 필요한 경우에만 10진수 형식을 사용합니다.

  • 모든 ID 열은 숫자가 아닌 문자열로 입력해야 합니다. 이 형식을 사용하면 인덱스 효과가 개선되고 검색 시간이 크게 향상될 수 있습니다. 또한 분할은 문자열 열에서만 정의할 수 있으므로 분할을 사용하도록 설정합니다. 이 열에 사용되는 쿼리 필터가 동등 필터만 있는 경우(예: 열에 GUID가 있는 경우) 인코딩 프로필 Identifier를 사용할 수 있습니다. 자세한 내용은 인코딩 정책을 참조하세요.

테이블

  • 좁은 테이블에 맞게 최적화합니다. 좁은 테이블은 수백 개의 열이 있는 넓은 테이블보다 선호됩니다.
  • 쿼리 시간 동안 비용이 많이 드는 조인을 방지하려면 수집 중에 차원 데이터를 보강하여 비정규화합니다. 보강에 사용되는 차원 테이블이 업데이트되고 시나리오에 최신 값이 필요한 경우 구체화된 뷰를 사용하여 최신 값만 유지합니다.
  • 스파스가 20개 이상인 경우 많은 값이 null이고 이러한 열이 검색 또는 집계에 거의 사용되지 않는 경우 DropMappedFields 변환 매핑을 사용하여 동적 열에서 열을 JSON 속성 모음으로 그룹화합니다.

인덱싱

검색되지 않는 필드에서는 인덱싱을 사용 중지할 수 있습니다. 인코딩 정책을 프로필 BigObject와 함께 사용하여 문자열 또는 동적 형식 열에 대한 인덱싱을 사용하지 않도록 설정합니다.