Amazon Redshift에서 HyperLogLog 스케치 사용 - Amazon Redshift

Amazon Redshift에서 HyperLogLog 스케치 사용

HyperLogLog는 다중 집합의 카디널리티를 추정하는 데 사용되는 알고리즘입니다. 카디널리티는 다중 집합에서 고유한 값의 수를 나타냅니다. 예를 들어 {4,3,6,2,2,6,4,3,6,2,2,3} 집합에서 카디널리티는 4, 3, 6, 2의 고유한 값을 갖는 4입니다.

HyperLogLog 알고리즘의 정밀도(m 값이라고도 함)는 예상 카디널리티의 정확도에 영향을 줄 수 있습니다. 카디널리티 추정 중 Amazon Redshift는 기본 정밀도 값 15를 사용합니다. 이 값은 더 작은 데이터 집합의 경우 최대 26일 수 있습니다. 따라서 평균 상대 오차 범위는 0.01~0.6%입니다.

다중 집합의 카디널리티를 계산할 때 HyperLogLog 알고리즘은 HLL 스케치라는 구문을 생성합니다. HLL 스케치는 다중 집합의 고유 값에 대한 정보를 캡슐화합니다. Amazon Redshift 데이터 형식 HLLSKETCH는 이러한 스케치 값을 나타냅니다. 이 데이터 형식은 Amazon Redshift 테이블에 스케치를 저장하는 데 사용할 수 있습니다. 또한 Amazon Redshift는 HLLSKETCH 값에 집계 및 스칼라 함수로 적용할 수 있는 작업을 지원합니다. 이러한 함수를 사용하여 HLLSKETCH의 카디널리티를 추출하고 여러 HLLSKETCH 값을 결합할 수 있습니다.

HLLSKETCH 데이터 형식은 큰 데이터 집합에서 카디널리티를 추출할 때 상당한 쿼리 성능 이점을 제공합니다. HLLSKETCH 값을 사용하여 이러한 데이터 집합을 사전 집계하고 테이블에 저장할 수 있습니다. Amazon Redshift는 기본 데이터 집합에 액세스하지 않고 저장된 HLLSKETCH 값에서 직접 카디널리티를 추출할 수 있습니다.

HLL 스케치를 처리할 때 Amazon Redshift는 스케치의 메모리 공간을 최소화하고 추출된 카디널리티의 정밀도를 최대화하는 최적화를 수행합니다. Amazon Redshift는 HLL 스케치에 대해 희소 및 밀집의 두 가지 표현을 사용합니다. HLLSKETCH는 희소 형식으로 시작합니다. 새 값이 삽입되면 크기가 증가합니다. 크기가 밀집 표현의 크기에 도달하면 Amazon Redshift가 자동으로 스케치를 희소에서 밀집으로 변환합니다.

Amazon Redshift는 스케치가 희소 형식일 때 HLLSKETCH를 JSON으로 가져오고 내보내고 인쇄합니다. Amazon Redshift는 스케치가 밀집 형식일 때 HLLSKETCH를 Base64 문자열로 가져오고 내보내고 인쇄합니다. UNLOAD에 대한 자세한 내용은 HLLSKETCH 데이터 형식 언로드 섹션을 참조하세요. 텍스트 또는 쉼표로 구분된 값(CSV) 데이터를 Amazon Redshift로 가져오려면 COPY 명령을 사용합니다. 자세한 내용은 HLLSKETCH 데이터 형식 로드 단원을 참조하십시오.

HyperLogLog와 함께 사용되는 함수에 대한 자세한 내용은 HyperLogLog 함수 섹션을 참조하세요.