해시 충돌
Adobe Analytics의 Dimension은 문자열 값을 수집합니다. 때로는 이러한 문자열의 길이가 수백 자인 반면 때로는 짧습니다. 성능을 향상시키기 위해 이러한 문자열 값은 처리에서 직접 사용되지 않습니다. 대신 각 값에 대해 해시가 계산되어 모든 값의 크기가 균일해집니다. 모든 보고서는 이러한 해시된 값에서 실행되므로 성능이 크게 향상됩니다.
대부분의 필드의 경우 문자열은 먼저 모두 소문자로 변환됩니다. 소문자 변환은 고유한 값의 수를 줄입니다. 값은 월별로 해시됩니다. 지정된 값의 경우 매월 표시되는 첫 번째 값을 사용합니다. 매월 두 개의 고유한 변수 값이 동일한 값으로 해시할 가능성은 작습니다. 이 개념을 해시 충돌 이라고 합니다.
해시 충돌은 다음과 같이 보고서에서 나타날 수 있습니다.
- 시간이 지남에 따라 보고서를 보고 예상치 못한 스파이크가 표시되면 해당 변수에 대한 여러 고유 값이 동일한 해시를 사용할 수 있습니다.
- 세그먼트를 사용하고 예기치 않은 값이 표시되면 예기치 않은 차원 항목이 세그먼트와 일치하는 다른 차원 항목과 동일한 해시를 사용할 수 있습니다.
해시 충돌 가능성
Adobe Analytics은 대부분의 차원에 32비트 해시를 사용하므로 가능한 해시 조합이 232개(약 43억)입니다. 각 차원에 대한 새 해시 테이블은 매월 생성됩니다. 고유 값의 수에 따라 해시 충돌이 발생할 대략적인 확률은 다음과 같다. 이러한 승산은 단일 달의 단일 차원을 기반으로 합니다.
생일 역설과 마찬가지로 고유한 값의 수가 증가하면 해시 충돌 가능성이 크게 증가합니다. 100만 개의 고유 값에서 해당 차원에 대해 최소 100개의 해시 충돌이 있을 수 있습니다.
해시 충돌 완화
대부분의 해시 충돌은 두 개의 흔하지 않은 값에서 발생하며, 이는 보고서에 의미 있는 영향을 미치지 않습니다. 해시가 공통적이고 흔하지 않은 값과 충돌하더라도 결과는 무시해도 된다. 그러나 두 개의 인기 있는 값이 해시 충돌을 경험하는 드문 경우, 그 효과를 명확하게 볼 수 있습니다. Adobe은 보고서에서 그 효과를 줄이려면 다음을 권장합니다.
- 날짜 범위를 변경합니다: 해시 테이블이 매월 변경됩니다. 날짜 범위를 다른 달에 걸쳐 변경하면 각 값에 충돌하지 않는 서로 다른 해시가 제공될 수 있습니다.
- 고유 값의 수를 줄입니다: 구현을 조정하거나 처리 규칙을 사용하여 차원에서 수집하는 고유 값의 수를 줄일 수 있습니다. 예를 들어 차원에서 URL을 수집하는 경우 쿼리 문자열 또는 프로토콜을 제거할 수 있습니다.