Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 137новых вакансий за сутки·64 958вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 953
РезюмеAIПодготовкаСтатьи
ТарифыТарифы
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 394 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python13 555
  • Облачные технологии9 649
  • QA вакансии2 810
  • Android1 650
  • Инженер данных1 068
  • Продакт-менеджер414

Разработка

  • Backend вакансии1 534
  • iOS1 533
  • AI вакансии749
  • Fullstack вакансии623
  • Frontend вакансии536
  • Mobile вакансии28

По стеку

  • Go7 558
  • Java4 778
  • Node.js1 528
  • Kotlin1 348
  • Rust1 252
  • .NET1 154
  • PHP506
  • C++327
  • C#314

DevOps и инфраструктура

  • Kubernetes5 503
  • Linux-инфраструктура4 223
  • DevOps вакансии4 089
  • Terraform / IaC3 059
  • Мониторинг и Observability1 414
  • CI/CD1 240
  • SRE411
  • Кибербезопасность61

Аналитика и данные

  • Аналитик данных612
  • Бизнес-аналитик572
  • Data Scientist528
  • Системный аналитик69

Другие направления

  • Проджект-менеджер147
  • UI/UX дизайн80
  • Ручное тестирование14

По регионам

  • Вакансии в США30 650
  • Вакансии в Европе12 551
  • Работа в России3 510
  • Вакансии в Канаде2 658

По формату

  • Удалённые вакансии48 186
  • Релокация в США30 650
  • Гибридная работа7 410
  • Офисная работа5 407

По уровню

  • Senior вакансии26 826
  • Middle вакансии12 754
  • Junior вакансии4 519

Сейчас нанимают

Все компании
  • Rakuten189 вакансий
  • Wise189 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Celonis47 вакансий
  • Spotify37 вакансий
  • Infobip28 вакансий
  • Adyen27 вакансий
  • Darktrace17 вакансий
  • Monzo17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме ClickHouseВсе вопросы
ClickHouseSeniorПроектирование систем

Что такое distributed tables в ClickHouse и как работает шардирование?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Distributed — движок-маршрутизатор, который при SELECT опрашивает все шарды и агрегирует результаты, а при INSERT разбивает batch по шардам согласно выражению шардирования (например, cityHash64(user_id)); физические данные хранятся в локальных MergeTree-таблицах на каждом шарде.

Конфигурация кластера

<remote_servers>
  <my_cluster>
    <shard>
      <replica><host>ch-01</host><port>9000</port></replica>
      <replica><host>ch-02</host><port>9000</port></replica>
    </shard>
    <shard>
      <replica><host>ch-03</host><port>9000</port></replica>
      <replica><host>ch-04</host><port>9000</port></replica>
    </shard>
  </my_cluster>
</remote_servers>

Distributed Tables и шардирование в ClickHouse

Distributed — это виртуальный движок таблиц в ClickHouse, который не хранит данные сам, а служит маршрутизатором запросов к локальным таблицам на других шардах кластера. Физические данные живут в таблицах с движком MergeTree (или ReplicatedMergeTree) на каждом шарде.

Архитектура

  • Кластер описывается в config.xml или /etc/clickhouse-server/config.d/cluster.xml секцией <remote_servers>.
  • Каждый шард содержит одну или несколько реплик.
  • Distributed-таблица создаётся поверх локальных таблиц и ссылается на имя кластера.

Создание локальной и Distributed-таблицы

-- На каждом узле: локальная таблица
CREATE TABLE events_local ON CLUSTER my_cluster
(
    event_date Date,
    user_id    UInt64,
    event_type String
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/events', '{replica}')
PARTITION BY toYYYYMM(event_date)
ORDER BY (user_id, event_date);

-- Distributed-обёртка
CREATE TABLE events ON CLUSTER my_cluster
(
    event_date Date,
    user_id    UInt64,
    event_type String
)
ENGINE = Distributed(my_cluster, default, events_local, cityHash64(user_id));

Ключ шардирования

Четвёртый аргумент Distributed() — выражение шардирования. ClickHouse берёт cityHash64(user_id) % num_shards и направляет строку на нужный шард. Если выражение опущено, используется случайное распределение (round-robin).

Как работает вставка

  • При INSERT в Distributed-таблицу координирующая нода разбивает batch по шардам и асинхронно отправляет части на нужные узлы через внутренний TCP.
  • Настройка insert_distributed_sync = 1 делает вставку синхронной — нода ждёт подтверждения от всех шардов.
  • При асинхронной вставке данные сначала буферизуются в директории data/default/events/ на инициирующей ноде.

Как работает SELECT

Координирующая нода рассылает запрос всем шардам, получает результаты и выполняет финальную агрегацию. При наличии реплик в шарде выбирается одна — по стратегии load_balancing (round_robin, nearest_hostname, random и др.).

-- Проверка распределения данных по шардам
SELECT _shard_num, count()
FROM events
GROUP BY _shard_num
ORDER BY _shard_num;

Подводные камни

  • Ключ шардирования должен совпадать с частью ORDER BY — иначе агрегации по этому ключу будут требовать перегонки данных между шардами (distributed GROUP BY становится дорогим).
  • Асинхронная вставка через Distributed может потерять данные при падении координирующей ноды — буфер хранится локально, а не реплицируется.
  • JOIN между Distributed-таблицами выполняется через GLOBAL JOIN — без него каждый шард выполняет подзапрос независимо, что порождает N*M запросов.
  • Перешардирование (изменение числа шардов) — нет встроенного решения: нужно вручную перемещать партиции командой ALTER TABLE MOVE PARTITION.
  • Метаданные кластера в config.xml не реплицируются автоматически — конфиг нужно синхронизировать на все ноды вручную или через Ansible/Puppet.
  • ON CLUSTER DDL выполняется асинхронно — CREATE TABLE ON CLUSTER может завершиться на части нод, если какая-то недоступна.
  • При использовании insert_distributed_sync = 0 (по умолчанию) возможны дубликаты при retry вставки после таймаута.
  • Виртуальная колонка _shard_num доступна только при чтении через Distributed — нельзя использовать в локальных таблицах.

Частые вопросы на собеседовании

  • Что такое ClickHouse и к какому типу СУБД он относится?
  • Что такое колоночное хранение (columnar storage) и почему оно лучше подходит для аналитических нагрузок?
  • Что такое движок таблиц MergeTree и как он работает?
  • Что такое первичный ключ (primary key) в ClickHouse и чем он отличается от primary key в реляционных базах данных?

Типичные ошибки

  • Объяснять distributed tables и sharding как OLTP-механику row-store базы вместо аналитической колоночной модели ClickHouse.
  • Путать primary key ClickHouse с уникальным constraint из PostgreSQL или MySQL.
  • Игнорировать parts, merges, ORDER BY, sparse index и стоимость маленьких вставок.
  • Предлагать синтаксис или транзакционное поведение, которого в ClickHouse нет.

Что проверяет интервьюер

  • Кандидат объясняет distributed tables и sharding через реальный механизм ClickHouse, а не общими словами.
  • Приводит корректный SQL или диагностический запрос для этой СУБД.
  • Называет ограничения, версионные отличия или эксплуатационные последствия.
  • Связывает ответ с проектированием приложения, производительностью, надежностью или безопасностью.

Как вы знаете этот вопрос?

Проверить себя по теме ClickHouse →

Источники

  • https://clickhouse.com/docs/engines/table-engines/special/distributed
←Предыдущий вопросКакая модель хранения, индексации и выполнения запросов у ClickHouse влияет на архитектуру приложения?Следующий вопрос→Какие production-риски есть у ClickHouse: блокировки, bloat, replication lag, backup/restore, schema changes или плохие запросы?

Связанные темы

ClickHousedistributed-queryingha-design