mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-11 08:52:06 +00:00
2.2 KiB
2.2 KiB
slug | sidebar_position |
---|---|
/ja/native-protocol/hash | 5 |
CityHash
ClickHouseは、古いバージョンの GoogleのCityHash を使用しています。
:::info CityHashは、ClickHouseに追加された後にアルゴリズムが変更されました。
CityHashのドキュメントでは、特定のハッシュ値に依存せず、保存やシャーディングキーとしての使用を控えるべきであると特に注意されています。
しかし、この関数をユーザーに公開したため、CityHashのバージョン(1.0.2)を固定する必要がありました。現在、SQLで使用可能なCityHash関数の動作は変わらないことを保証しています。
— Alexey Milovidov :::
:::note 注意
Googleの現在のCityHashのバージョンは、ClickHouseのcityHash64
バリアントと異なります。
GoogleのCityHashの値を取得する目的でfarmHash64
を使用しないでください!FarmHashはCityHashの後継ですが、完全に互換性があるわけではありません。
文字列 | ClickHouse64 | CityHash64 | FarmHash64 |
---|---|---|---|
Moscow |
12507901496292878638 | 5992710078453357409 | 5992710078453357409 |
How can you write a big system without C++? -Paul Glick |
6237945311650045625 | 749291162957442504 | 11716470977470720228 |
:::
また、作成理由や説明についてはIntroducing CityHashも参照してください。要約すると、非暗号学的なハッシュで、MurmurHashよりも高速ですが、より複雑です。
実装
Go
両方のバリアントを実装しているGoパッケージgo-faster/cityを使用できます。