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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 105
  • Облачные технологии14 073
  • QA вакансии3 460
  • Backend вакансии2 098
  • Инженер данных1 805
  • Продакт-менеджер1 266

Разработка

  • Android1 866
  • iOS1 699
  • Fullstack вакансии979
  • AI вакансии951
  • Frontend вакансии742
  • Mobile вакансии44

По стеку

  • Go8 651
  • Java6 544
  • Node.js2 018
  • .NET1 719
  • Kotlin1 623
  • Rust1 453
  • C#709
  • PHP683
  • C++571

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

  • Kubernetes7 763
  • DevOps вакансии6 057
  • Linux-инфраструктура5 492
  • Terraform / IaC4 261
  • CI/CD3 240
  • Мониторинг и Observability1 783
  • SRE566
  • Кибербезопасность453

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

  • Data Scientist1 140
  • Бизнес-аналитик930
  • Аналитик данных853
  • Системный аналитик154

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

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

По регионам

  • Вакансии в США43 685
  • Вакансии в Европе23 862
  • Вакансии в Канаде4 413
  • Работа в России3 909

По формату

  • Удалённые вакансии73 887
  • Релокация в США43 685
  • Гибридная работа12 392
  • Офисная работа7 088

По уровню

  • Senior вакансии42 236
  • Middle вакансии20 545
  • Junior вакансии6 653

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab138 вакансий
  • Celonis39 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

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

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

Какие ошибки делают команды, когда используют ClickHouse как «просто SQL-базу» без учёта его особенностей?

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

Команды ошибаются, игнорируя колоночное хранение, MergeTree-особенности и пытаясь делать частые UPDATE/DELETE, маленькие INSERT, JOIN по нескольким большим таблицам как в OLTP.

Ошибка 1: частые одиночные INSERT

ClickHouse не предназначен для вставки по одной строке. Каждый INSERT создаёт новую part, которая затем асинхронно мержится. При высокой частоте вставок количество parts превысит лимит parts_to_delay_insert (по умолчанию 150) и сервер начнёт искусственно замедлять вставки, а при достижении parts_to_throw_insert (300) — падать с ошибкой.

-- Плохо: INSERT каждой строки отдельно в цикле
INSERT INTO events VALUES (1, now(), 'click');
INSERT INTO events VALUES (2, now(), 'view');

-- Хорошо: батч минимум от 1000 строк
INSERT INTO events VALUES
  (1, now(), 'click'),
  (2, now(), 'view'),
  -- ... тысячи строк
  (1000, now(), 'purchase');

Типичные ошибки при использовании ClickHouse

ClickHouse — колоночная OLAP СУБД, оптимизированная под аналитические запросы на больших объёмах данных. Попытка работать с ней как с PostgreSQL или MySQL приводит к деградации производительности и ошибкам в логике.

Ошибка 2: UPDATE и DELETE как в реляционных БД

Операции ALTER TABLE ... UPDATE/DELETE в ClickHouse — это мутации. Они не атомарные, выполняются асинхронно, перезаписывают целые части данных и очень дорогие. Мутации нельзя откатить.

-- Это мутация — запустится фоново, может занять минуты/часы
ALTER TABLE events UPDATE status = 'processed' WHERE id = 42;

-- Проверить статус мутации:
SELECT * FROM system.mutations WHERE table = 'events' AND is_done = 0;

Правильный подход — проектировать схему так, чтобы обновления не нужны были вовсе. Используйте движок ReplacingMergeTree для дедупликации или CollapsingMergeTree для отмены строк.

Ошибка 3: игнорирование ORDER BY при запросах

Primary index в ClickHouse — sparse index по колонкам из ORDER BY. Если фильтровать по колонкам, которых нет в начале ORDER BY, ClickHouse вынужден сканировать все гранулы. Команды ставят неподходящий ORDER BY при создании таблицы и удивляются полному скану.

-- Таблица с ORDER BY (date, user_id)
CREATE TABLE events (
  date Date,
  user_id UInt64,
  event_type String
) ENGINE = MergeTree() ORDER BY (date, user_id);

-- Быстро: фильтр по prefix
SELECT count() FROM events WHERE date = '2024-01-01';

-- Медленно: фильтр только по event_type — нет prefix в индексе
SELECT count() FROM events WHERE event_type = 'click';

Ошибка 4: SELECT * вместо нужных колонок

В колоночной БД чтение лишних колонок означает лишние I/O операции. SELECT * убивает главное преимущество ClickHouse.

Ошибка 5: JOIN больших таблиц без учёта алгоритма

По умолчанию ClickHouse использует hash join, загружая правую таблицу в память. JOIN двух многомиллиардных таблиц приведёт к OOM. Нужно использовать словари (dictGet) или правильно настроить join_algorithm.

Ошибка 6: игнорирование TTL и партиционирования

Без TTL данные накапливаются бесконечно. Без партиционирования по дате удаление старых данных потребует дорогих мутаций вместо простого ALTER TABLE DROP PARTITION.

CREATE TABLE events (
  date Date,
  user_id UInt64,
  event_type String
) ENGINE = MergeTree()
PARTITION BY toYYYYMM(date)
ORDER BY (date, user_id)
TTL date + INTERVAL 1 YEAR DELETE;

-- Быстрое удаление старой партиции:
ALTER TABLE events DROP PARTITION '202301';

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

  • parts_to_throw_insert: при вставке мелкими батчами сервер начинает бросать исключение Too many parts — никакого graceful degradation нет.
  • Мутации необратимы: нет ROLLBACK, нет транзакций — ошибочная мутация меняет данные навсегда.
  • Eventual consistency при репликации: ReplicatedMergeTree не даёт strong consistency — разные реплики могут возвращать разные результаты в один момент времени.
  • NULL в ORDER BY: NULL-значения в ключевых колонках сортируются специфично и могут ломать логику индексирования.
  • Тип String вместо LowCardinality: для колонок с малым числом уникальных значений (статусы, типы) надо использовать LowCardinality(String) — это в 3–5 раз быстрее по памяти и CPU.
  • Неправильное партиционирование: слишком гранулярное партиционирование (по дню при миллиардах строк в день) создаёт десятки тысяч parts и деградирует производительность.
  • Отсутствие материализованных представлений: команды пересчитывают агрегаты на лету вместо хранения преагрегированных данных в Materialized View с AggregatingMergeTree.
  • Игнорирование system.query_log: без анализа system.query_log и system.query_thread_log диагностика проблем идёт вслепую.

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

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

Что портит ответ

  • Перечислять ошибки без объяснения причин
  • Не отличать beginner mistakes от production failure modes
  • Не предлагать процесс, который предотвращает повторение ошибок

Что слушает интервьюер

  • Знает типичные ошибки при работе с ClickHouse
  • Понимает причины ошибок
  • Предлагает практики prevention и early detection

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

Проверить себя по теме ClickHouse →
←Предыдущий вопросВ чём разница между primary key и ORDER BY в ClickHouse?Следующий вопрос→Представьте, запросы к ClickHouse резко замедлились после релиза или роста данных. Как вы будете искать причину?

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

ClickHousetechnical-communicationtechnology-selectiontrade-off-analysis