メインコンテンツへスキップ
ClickHouse は、Google の CityHash以前のバージョンの 1 つを使用しています。
CityHash は、ClickHouse に追加された後でアルゴリズムが変更されました。CityHash のドキュメントでは、特定のハッシュ値に依存したり、 それをどこかに保存したり、分片キーとして使ったりすべきではないと明記されています。しかし、この関数をユーザーに公開したため、CityHash のバージョンを 1.0.2 に固定する必要がありました。現在では、SQL で利用できる CityHash 関数の動作は今後も変わらないことを保証しています。— Alexey Milovidov
注記現在の Google の CityHash は、ClickHouse の cityHash64 バリアントとは異なりますGoogle の CityHash 値を得るために farmHash64 を使わないでください。FarmHash は CityHash の後継ですが、完全な互換性はありません。
StringClickHouse64CityHash64FarmHash64
Moscow1250790149629287863859927100784533574095992710078453357409
How can you write a big system without C++? -Paul Glick623794531165004562574929116295744250411716470977470720228
説明と作成の背景については、Introducing CityHash も参照してください。要するに、MurmurHash より高速な非暗号学的ハッシュですが、より複雑です。

実装

Go

両方のバリアントを実装した go-faster/city の Go パッケージを利用できます。
最終更新日 2026年6月10日