____ _ _ _ _ ____ ___ _ _ _ _ ___ ____ _ _ _ _ _ ____ _ _ ___ ____ / ___| || | | | / ___/ _ \| \| | |/ / / _ \/ ___|\/\/| || | / \ | __| || | __| _ \ ( | _ | || | | | | ( | |_) | . | < | | | \__ | | | || | / _ \| _|| __ | __|| / | (_| |_||_||_| | | \___|\___/|_|\_|_|\_\ \_.^.\___|_| |_||_| /_/ \_\| |_||_|___|_|\_/

колонки. не строки.

OLAP-база данных, которая обрабатывает миллиарды строк, пока ты думаешь, ставить или не ставить.
▮ вставь. замерь. промажь — невозможно.

sudo apt-get install clickhouse-server ↗
SELECT * FROM life WHERE fun=true ORDER BY speed DESC • clickhouse • 100M rows/sec • clickhouse • LZ4 zstd • clickhouse • векторное исполнение • clickhouse • материализованные представления • clickhouse • MergeTree 🔥 • SELECT * FROM life WHERE fun=true ORDER BY speed DESC • clickhouse • 100M rows/sec • clickhouse • LZ4 zstd • clickhouse • векторное исполнение • clickhouse • материализованные представления • clickhouse • MergeTree 🔥 •
diman@clickhouse: ~/prod
diman@clickhouse:~$
clickhouse-client --query "SELECT count() FROM events WHERE date=today()"
┌────count()─┐ │ 482361730 │ <-- 482 млн строк └────────────┘ Elapsed: 0.041 sec

diman@clickhouse:~$
git commit -m "переехал с вешалки на кликхаус"
[main 1337c0ffee] 49 files changed, 1.2 TB compressed to 74 GB

diman@clickhouse:~$
psql --command "тот же запрос"
ERROR: canceling statement due to statement timeout... 30.000s
diman@clickhouse:~$
_

// почему кликхаус, а не что-то другое

Просто потому, что по топчику:

>_ колоночное хранение

Читаешь только нужные колонки. Аналитика по одной колонке из 50 — читаешь одну, а не всю строку. Сжатие ZSTD/LZ4 compresses твой SSD лучше, чем ты сжимал дедлайны.

>_ векторное исполнение

Запрос обрабатывается блоками по 65 536 строк SIMD-инструкциями. Это как читать книгу глазами всех CPU-ядер одновременно.

>_ репликация из коробки

ReplicatedMergeTree. Держишь данные на трёх серверах? Три строки в конфиге. Keeper следит, ты спишь.

>_ материализованные представления

Не хватает скорости на лету — считай заранее. Агрегация 482 млн событий в 340 строк за секунды. Гики одобряют.

>_ INSERT INSERT baby

Миллион строк в секунду на инсерте — норма, не рекорд. Kafka/Redpanda clickhouse-kafka-connect жуёт стримы на счёт.

>_ SQL, но настоящий

JOIN-ы (да, они есть и быстрые), окна, лямбды в array-функциях, eventFunnelMaxSteps... это уже не SQL, это язык супермена.

// бенчмарк по-честному*

* в вакууме, на моей машине, вечером вторника

агрегация 500M строквремястатус
ClickHouse0.8 sec✅ норм
~всё остальное row-basedtimeout❌ кофе остыл
excel-калькулятор>= heat death☠️ не советую
ClickHouse без индекса1.2 sec✅ всё равно норм
ты, объясняя начальнику3 meetings⛔ а зря

// фичи по гиковски

MergeTreeReplacingMergeTreeSummingMergeTree AggregatingMergeTreeCollapsingMergeTreekeeper Kafka engineDictionaryUUIDarrayJoin groupArrayuniqCombinedquantileTDigestzip embedding функцииfull-text searchvector indicesкогда надо, но не греп
fun FACTS
$ cat /var/log/geek_wisdom | grep -i clickhouse • создан в Яндексе (Метрика), а не в маркетинговом отделе • 100% open source, Apache 2.0 • на clickhouse.com — облако, если лень root-ить • материалайзы твои агрегаты быстрее, чем ты открываешь Grafana • clickhouse-local — бинарник без сервера, агрегируй файлы на лету • PlayUI в 24.3: есть даже WebUI-консоль, если ты с телефона

короче: ставь clickhouse.

ты не пожалеешь. разве что о том, что не поставил раньше.

github.com/ClickHouse/ClickHouse ↗