Перейти к основному содержимому
Перейти к основному содержимому

CityHash

ClickHouse использует одну из предыдущих версий CityHash от Google.

к сведению

CityHash изменил алгоритм после того, как мы добавили его в ClickHouse.

Документация CityHash особенно отмечает, что пользователю не следует полагаться на конкретные значения хеша и не следует сохранять их или использовать в качестве ключа шардирования.

Но так как мы предоставили эту функцию пользователю, нам пришлось зафиксировать версию CityHash (до 1.0.2). Теперь мы гарантируем, что поведение функций CityHash, доступных в SQL, не изменится.

— Alexey Milovidov

Заметка

Текущая версия CityHash от Google отличается от варианта ClickHouse cityHash64.

Не используйте farmHash64, чтобы получить значение CityHash от Google! FarmHash является преемником CityHash, но они не полностью совместимы.

СтрокаClickHouse64CityHash64FarmHash64
Москва1250790149629287863859927100784533574095992710078453357409
Как вы можете написать большую систему без C++? -Пол Глик623794531165004562574929116295744250411716470977470720228

Также смотрите Введение в CityHash для описания и обоснования создания. TL;DR некриптографический хеш, который быстрее, чем MurmurHash, но более сложный.

Реализации

Go

Вы можете использовать go-faster/city Go пакет, который реализует оба варианта.