TGViewer
rzv Data Engineering rzv Data Engineering @rzv_de · 3.01K subscribers
Post #475 597
Как равномерно размазывать данные

Часто в командах, где я работал, проверяли равномерность распределения уже после вставки. А сам ключ распределения/шардирования выбирали скорее интуитивно.

🔸 Будущее распределение можно посчитать, ничего не создавая и не перекладывая. Шард выбирается по остатку от деления значения ключа на число шардов, и этот остаток считается обычным SELECT. Удобно это проверить в ClickHouse через cityHash64().

Представим что у нас есть табличка с продажами. Допустим, что у нас 5 шардов.


SELECT
cityHash64(order_id) % 5 AS target_shard,
count() AS orders
FROM orders
GROUP BY target_shard
ORDER BY target_shard;


Если ключ заказов создаётся на источнике равномерно, мы скорее всего увидим 5 примерно одинаковых строк, с разницей до 10% (моя субъективная оценка равномерности).

🔸 Допустим, типов заказа может быть 3. Тогда получим следующий запрос:


SELECT
cityHash64(order_type) % 5 AS target_shard,
count() AS orders
FROM orders
GROUP BY target_shard
ORDER BY target_shard;


И если вы думали, что в худшем случае 3 шарда получат данные, а 2 - нет, то ситуация может быть ещё веселее :) Остаток хэша может совпадать для нескольких значений, и в худшем случае все данные попадут на один шард.

Понимаю, что пример синтетический, и вряд ли опытные инженеры выберут такой ключ. Но, может быть, этот пост поможет тем, кто ещё набирается опыта. Принимайте решения на основе данных ;)
  • 🔥 9
  • 😁 2
  • 👎 1
More from @rzv_de
  1. Sep 18, 2026#реклама Как разобраться в технологии глубже, чем по документации и чужим бенчмаркам? Допу…
  2. Sep 15, 2026Лаба по шардированному ClickHouse вышла в релиз 🔸 Вы своими руками соберёте реплицированн…
  3. Sep 3, 2026Ловите новости по учебным стендам 🔸 На неделе планирую релиз шардированного Clickhouse 2х…
  4. Aug 17, 2026Первый лабораторный стенд уходит в релиз! https://rzvde.pro/labs Надеюсь, что материалы и…
  5. Aug 15, 2026В какие темы и технологии было бы интересно погрузиться с практикой? Пиши в комментариях,…
  6. Aug 14, 2026В общем, по поводу розыгрыша билета на конференцию и обсуждения под удалённым постом с рек…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →