3. История
Яндекс.Метрика — сервис веб-аналитики.
В России первый, в мире — второй.
Ежедневно приходит ~25 млрд. событий.
Надо показывать отчёты в реальном времени.
4. Старая Метрика (2008–2014)
Всё отлично работало. Пользователь мог
получить примерно 50 разных отчётов.
Но есть проблема. Нам хочется большего.
Чтобы каждый отчёт был сколь угодно
кастомизируемым.
5. Конструктор отчётов
Быстро сделали прототип и на его основе
реализовали "Конструктор отчётов".
Это 2010 год.
Стало понятно, куда двигаться дальше.
Нам нужна хорошая column-oriented DBMS.
8. Почему ClickHouse?
Ничего готового не подошло.
Тогда мы сделали ClickHouse.
"Эволюция структур данных в
Яндекс.Метрике"
https://habrahabr.ru/company/yandex/blog/273305/
10. Коротко
● column-oriented
● линейная масштабируемость
● отказоустойчивость
● загрузка данных в реальном времени
● онлайн (sub-second) запросы
● поддержка диалекта SQL + расширения
(массивы, вложенные структуры данных, domain-
specific функции, сэмплирование)
11. Основной кластер Метрики
● 18.3 триллионов строк
● 426 серверов
● скорость обработки данных до двух
терабайт в секунду
* Если вы хотите попробовать ClickHouse, достаточно и одного сервера.
12. ClickHouse в Яндексе
● Нам удалось сделать систему сравнительно удобной.
●
С самого начала мы имели подробную документацию.
●
В течение пары лет ClickHouse распространился по другим
отделам Яндекса.
●
Почта, Маркет, Директ, Вебмастер, AdFox, Инфраструктура,
Бизнес аналитика...
● Есть случаи, когда аналитики самостоятельно устанавливали
ClickHouse на виртуальные машины и успешно использовали
без каких-либо вопросов.
13. Open-source
Потом мы решили — ClickHouse слишком
хорошая система, чтобы нам одним на нём
сидеть.
Чтобы было веселее, надо подсадить на
ClickHouse людей снаружи, пусть радуются.
Решили сделать open-source.
14. Open-source
Лицензия Apache 2.0 — минимум
ограничений.
Цель — максимальное распространение
продукта.
Мы хотим, чтобы продуктом Яндекса
пользовались по всему миру.
См. “Яндекс открывает ClickHouse”
https://habrahabr.ru/company/yandex/blog/303282/
15. Когда надо использовать
ClickHouse
Хорошо структурированные, очищенные,
неизменяемые события.
Click stream. Веб-аналитика. Рекламные сети.
RTB. E-commerce.
Аналитика онлайн игр. Данные сенсоров и
мониторингов. Телеком данные.
Финансовые транзакции. Биржевая аналитика.
16. Когда не надо использовать
ClickHouse
● OLTP.
В ClickHouse нет UPDATE и полноценных транзакций.
● Key-Value.
Если нужны частые запросы на обновление по ключу,
используйте другое решение.
● Blob-store, document oriented.
ClickHouse предназначен для большого количества мелко-
гранулированных данных.
● Излишне нормализованные данные.
Лучше сделать широкую таблицу фактов.
18. Почему ClickHouse такой
быстрый?
● Алгоритмическая оптимизация.
MergeTree, локальность расположения данных на диске
— быстрые диапазонные запросы.
Пример: функция uniqCombined состоит из комбинации трёх
различных структур данных, подходящих под разные диапазоны
кардинальностей.
● Низкоуровневая оптимизация.
Пример: vectorized query execution.
● Специализация и внимание к деталям.
Пример: у нас есть 17 разных алгоритмов выполнения GROUP BY.
Для вашего запроса выбирается лучший.
19. ClickHouse vs.
typical row-oriented DBMS
Itai Shirav: "I haven't made a rigorous
comparison, but I did convert a time-series
table with 9 million rows from Postgres to
ClickHouse.
Under ClickHouse queries run about 100 times
faster, and the table takes 20 times less disk
space. Which is pretty amazing if you ask me."
20. Bao Dang: "Obviously, ClickHouse
outperformed PostgreSQL at any metric."
https://github.com/AnalyticsGo/AnalyticsGo/issues/1
21. ClickHouse vs. Vertica
Timur Shenkao: "ClickHouse is extremely fast
at simple SELECTs without joins, much faster
than Vertica."
22. ClickHouse vs. PrestoDB
Ömer Osman Koçak: "When we evaluated ClickHouse the results
were great compared to Prestodb. Even though the columnar
storage optimizations for ORC and Clickhouse is quite similar,
Clickhouse uses CPU and Memory resources more efficiently
(Presto also uses vectorized execution but cannot take
advantage of hardware level optimizations such as SIMD
instruction sets because it's written in Java so that's fair) so we
also wanted to add support for Clickhouse for our open-source
analytics platform Rakam (https://github.com/rakam-io/rakam)"
23. ClickHouse vs. Spark
"Я потестировал Clickhouse, по скорости
просто отлично = намного быстрее spark на
одной машине (у меня получилось порядка
3x, но еще буду сравнивать). Кроме того
compression получается лучше."
24. ClickHouse vs. Google BigQuery
"ClickHouse показывает сравнимую скорость на
таком запросе за 30 дней и в 8 раз быстрее (!) на
таком запросе. В планах есть протестировать и
другие запросы, еще не добрались.
Скорость выполнения запросов стабильна. В
Google BigQuery в период пиковых нагрузок,
например в 4:00 p.m. PDT или в начале месяца,
время выполнения запросов может заметно
увеличиваться."
25. ClickHouse vs. Druid
"В этом году мы развернули сборку на
основе Druid — Imply Analytics Platform, а
также Tranquility, и уже приготовились
запускать в продакшн… Но после выхода
ClickHouse сразу отказались от Druid, хотя
потратили два месяца на его изучение и
внедрение."
https://habrahabr.ru/company/smi2/blog/314558/
26. ClickHouse vs. InfiniDB
" 结论: clickhouse 速度更快! "
"In conclusion, ClickHouse is faster!"
http://verynull.com/2016/08/22/infinidb clickhouse /与 对比