Skip to main content
Edit this page

CityHash

ClickHouseは、古いバージョンの GoogleのCityHash を使用しています。

Info

CityHashは、ClickHouseに追加された後にアルゴリズムが変更されました。

CityHashのドキュメントでは、特定のハッシュ値に依存せず、保存やシャーディングキーとしての使用を控えるべきであると特に注意されています。

しかし、この関数をユーザーに公開したため、CityHashのバージョン(1.0.2)を固定する必要がありました。現在、SQLで使用可能なCityHash関数の動作は変わらないことを保証しています。

— Alexey Milovidov

注意

Googleの現在のCityHashのバージョンは、ClickHouseのcityHash64バリアントと異なります

GoogleのCityHashの値を取得する目的でfarmHash64を使用しないでください!FarmHashはCityHashの後継ですが、完全に互換性があるわけではありません。

文字列ClickHouse64CityHash64FarmHash64
Moscow1250790149629287863859927100784533574095992710078453357409
How can you write a big system without C++? -Paul Glick623794531165004562574929116295744250411716470977470720228

また、作成理由や説明についてはIntroducing CityHashも参照してください。要約すると、非暗号学的なハッシュで、MurmurHashよりも高速ですが、より複雑です。

実装

Go

両方のバリアントを実装しているGoパッケージgo-faster/cityを使用できます。