Раздел 38 · ClickHouse и аналитические базы

Что такое ClickHouse и где он применяется

junior~10 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Три урока подряд мы готовили почву: аналитика читает много строк и мало колонок, строковая база тратит силы зря, колоночная читает только нужное. Теперь познакомимся с базой, которая построена на этих идеях от первой до последней строчки кода. Это ClickHouse.

Откуда он взялся

В конце 2000-х в Яндексе делали Метрику, сервис веб-аналитики вроде Google Analytics. Каждый просмотр страницы на миллионах сайтов становился событием, и владельцы сайтов хотели видеть отчёты сразу, а не завтра утром. Готовые базы либо не тянули такой поток, либо требовали заранее считать каждый отчёт. Команда написала свою колоночную базу, которая строит отчёт по сырым событиям прямо в момент запроса.

В 2016 году ClickHouse выложили в открытый доступ под лицензией Apache 2.0, а в 2021 году вокруг него появилась отдельная компания ClickHouse, Inc. Сегодня база бесплатна и открыта, а компания продаёт облачную версию ClickHouse Cloud.

Название складывается из Clickstream и Data Warehouse: хранилище потока кликов.

Что внутри

Главные идеи ты уже знаешь, теперь назовём их своими именами:

  • Колоночное хранение. Каждая колонка лежит в отдельном файле и сжата. Запрос читает только нужные колонки.
  • Векторное выполнение. Данные обрабатываются пачками из десятков тысяч значений одной колонки, а не по строке. Процессор умеет складывать массивы чисел намного быстрее, чем перебирать строки.
  • Все ядра и все машины. Один запрос режется на куски по ядрам процессора, а в кластере ещё и по серверам.
  • Разреженный индекс. Вместо индекса на каждую строку ClickHouse помнит одну метку на несколько тысяч строк. Индекс маленький, лежит в памяти и позволяет пропускать целые куски таблицы. Подробно разберём в уроке про ORDER BY.
  • Только дописывание. Новые данные пишутся новыми кусками, а старые куски в фоне сливаются в большие. Править отдельные строки можно, но дорого.
  • SQL. Запросы пишутся на привычном SQL с добавками ClickHouse: сотни функций для дат, строк, массивов, приблизительные подсчёты.

урок из курса

Урок из курса «ClickHouse и аналитические базы». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.