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. Кроме того, открытая модель разработки позволяет быстро внедрять экспериментальные функции без длительных переговоров с вендорами.