ClickHouse/docs/ja/native-protocol/hash.md
2024-11-18 11:58:58 +09:00

2.2 KiB
Raw Permalink Blame History

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を使用できます。