본문으로 바로가기
본문으로 바로가기

CityHash

ClickHouse는 Google의 CityHash 이전 버전 중 하나를 사용합니다.

참조

CityHash는 ClickHouse에 추가한 이후 알고리즘이 변경되었습니다.

CityHash 문서에서는 특정 해시 값에 의존하거나, 이를 어디엔가 저장하거나 세그먼트 키로 사용하지 말라고 명시적으로 안내합니다.

그러나 이 함수를 사용자에게 노출했기 때문에 CityHash의 버전을 1.0.2로 고정해야 했습니다. 이제 SQL에서 사용할 수 있는 CityHash 함수의 동작은 변경되지 않음을 보장합니다.

— Alexey Milovidov

Note

현재 Google의 CityHash 버전은 ClickHouse cityHash64 변형과 다릅니다.

Google의 CityHash 값을 얻기 위해 farmHash64를 사용하지 마십시오! FarmHash는 CityHash의 후속 버전이지만, 완전히 호환되지는 않습니다.

StringClickHouse64CityHash64FarmHash64
Moscow1250790149629287863859927100784533574095992710078453357409
How can you write a big system without C++? -Paul Glick623794531165004562574929116295744250411716470977470720228

또한 CityHash의 설명과 설계 배경은 Introducing CityHash를 참고하십시오. 요약하면, 비암호화(non-cryptographic) 해시이며 MurmurHash보다 빠르지만 더 복잡합니다.

구현체

Go

두 가지 버전 모두를 구현한 go-faster/city Go 패키지를 사용할 수 있습니다.