Перейти к содержанию
Автор: LUMD

10 лет ClickHouse в открытом коде: от эксперимента до лидера аналитики

15 июня 2016 года ClickHouse стал открытым проектом, а за десять лет превратился в крупнейшую аналитическую СУБД с более чем 2000 контрибуторов и тысячами запросов в секунду.

ClickHouse официально открыл исходный код 15 июня 2016 года. За десять лет проект вырос до самой популярной аналитической СУБД с более чем 2000 активных контрибуторов, став площадкой для экспериментов с новыми структурами данных и практиками разработки.

Как классифицируются уровни открытости проекта?

  • Уровень 0 – код доступен только для чтения (пример: архивные релизы Doom, MS‑DOS).
  • Уровень 1 – публичный репозиторий, но без приёма внешних патчей (SQLite, Ladybird).
  • Уровень 2 – принимаются вклады, однако процесс разработки закрыт.
  • Уровень 3 – открытые правила вклада, трекер задач, ревью, CI, дорожная карта и поддержка пользователей. ClickHouse стремится к этому уровню и считается образцом.

Что делало ClickHouse уникальным в начале?

Первый коммит (29 мая 2009) заменил медленные функции localtime, mktime, gmtime собственными реализациями. Затем автор, работая над системой веб‑аналитики, столкнулся с невозможностью обрабатывать 5‑минутные логи за 5 минут. Это привело к созданию прототипов OLAPServer и Metrage – колонко‑ориентированного хранилища и CRDT‑структуры для реального времени. Оба решения показали, что можно обрабатывать сотни миллиардов записей в день без традиционных СУБД.

Как формировалась архитектура ClickHouse?

  • Колонки в памяти – классы IColumn и Field появились в 2009 г., задав основу столбцового хранения.
  • Функции агрегации – добавлены в том же коммите, стали ядром аналитики.
  • Табличные движки – от TinyLog к MergeTree, позволяя инкрементальную сортировку и быстрый диапазонный поиск.
  • Сжатие – сначала QuickLZ, затем LZ4 после блога Янна Колле.
  • Потоковые блоки – позже заменены на Processors, открыв возможность гибкой обработки данных.
  • SQL‑парсер – сначала попытка с boost::spirit, затем собственный рекурсивный спуск.
  • Сервер и клиентclickhouse-server (9 марта 2012) и clickhouse-client (25 марта 2012) сделали продукт готовым к продакшн.

Как ClickHouse попал в продакшн?

В 2012 г. система использовалась как «персистентная очередь логов» с SQL‑запросами поверх сырых данных. Добавление MergeTree позволило заменить оба прототипа OLAPServer и Metrage, обеспечив быстрый поиск по времени и сайту. В 2014 г. появился ReplicatedMergeTree на базе ZooKeeper, обеспечив репликацию и консенсус между дата‑центрами. К концу 2014 г. ClickHouse обслуживал сотни миллиардов записей в день внутри одной компании и уже использовался в CERN для эксперимента LHCb.

Почему проект был открыт для всех?

Автор подготовил список плюсов (широкий охват, привлечение талантов) и рисков (поддержка, безопасность), убедил руководство и к 15 июню 2016 года запустил сайт, репозиторий и Debian‑репозиторий. С тех пор код остаётся полностью открытым, а каждый вклад отмечается в changelog и таблице system.contributors.

Что изменилось для разработчиков за эти годы?

  • Документация и комментарии – сложные концепции объясняются в коде, без необходимости обращаться к внешним источникам.
  • Экспериментальная ветка – любой может открыть pull‑request с новой аллокацией памяти, компрессором или хеш‑таблицей; изменения проходят тот же CI, что и продакшн.
  • Удаление «мусора» – более 100 коммитов с пометкой «remove trash», показывающих принцип «меньше кода – лучше».
  • Поддержка C++23 – репозиторий стал одним из самых популярных мест для изучения современных возможностей языка.

Что это значит для бизнеса?

Компания, использующая ClickHouse, может обрабатывать более 100 млрд строк в сутки с задержкой запросов в миллисекунды, экономя до 70 % расходов на хранение благодаря встроенному LZ4‑сжатию и эффективному MergeTree. Кроме того, открытая модель разработки позволяет быстро внедрять экспериментальные функции без длительных переговоров с вендорами.