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

CityHash

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

к сведению

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

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

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

— Алексей Миловидов

Примечание

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

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

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

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

Реализации

Go

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