ClickHouse: очень быстро и очень удобно / Виктор Тарнавский,...

41

Transcript of ClickHouse: очень быстро и очень удобно / Виктор Тарнавский,...

Page 1: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)
Page 2: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

ClickHouse: очень быстро

и очень удобноВиктор Тарнавский

RGB

Page 3: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Разработчик, в прошлом разработка железа

Руководитель отдела аналитических продуктов

[email protected]

Пару слов обо мне

3

Page 4: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Немного истории

ClickHouse

Page 5: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Яндекс.Метрика - в тройке крупнейших веб-аналитических систем по количеству сайтов.

Более 20 млрд. событий в день

Более 1 млн. сайтов

Более 100 000 аналитиков каждый день

Яндекс.Метрика

5

Page 6: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Яндекс.Метрика

6

Page 7: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Как хранить данные?

Page 8: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Агрегированные данные

Много разных таблиц

Key → Metrics

Классический подход

8

Page 9: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Неагрегированные данные

Небольшое количество широких таблиц

Высокоэффективные фильтры и группировки

Event → Properties

Современный подход

9

Page 10: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Какую базу данных взять?

Page 11: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Максимально быстро выполнять запросы

Обработка данных в реальном времени

Возможность хранить петабайты данных

Отказоустойивость в терминах датацентров

Гибкий язык запросов

Что мы хотим от базы данных?

11

Page 12: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

На рынке пустота!

Page 13: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

SQL

Линейная мастабируемость

Фокус на быстром выполнении запросов

Column-oriented

Основные идеи при создании ClickHouse

13

Page 14: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

ClickHouse timeline

14

Prototype

Январь 2009 Август 2012

Data Transfer

Июнь 2014

Metrica 2.0

Декабрь 2014 Июнь 2016

Open Source

Production

Page 15: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Более 20 проектов в Яндексе

Open-source с Июля 2016

В продакшне вне Яндекса

ClickHouse сегодня

15

Page 16: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Возможности

ClickHouse

Page 17: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Масштабируется до петабайт данных

Cross-datacenter

High availability

Сжатие данных

Линейная масштабируемость

17

Page 18: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

3 Pb

412 серверов

6 датацентров

Часы даунтайма за 4 года

Кластер Яндекс.Метрики

18

Page 19: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

SQL диалект

Приблизительные вычисления, URI функции

Массивы, кортежи

Распределённые запросы из коробки

Внешние словари

Запросы

19

Page 20: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

20

# Weekly traffic and audience

SELECT count() as visits, sum(PageViews) as hits, uniq(UserID) as users FROM visits_all WHERE StartDate > today() - 7

Page 21: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

21

# Using external dictionary for regions

SELECT count() as visits, regionToName(regionToCountry(RegionID), 'en') as country FROM visits_all WHERE StartDate > today() - 7 GROUP BY country ORDER BY visits DESC LIMIT 10

Page 22: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Типичные запросы быстрей чем за секунду

>100 раз быстрей чем Hadoop>100 раз быстрей чем типичная DBMS

100 млн - 1 миллиард строк в секунду на одной ноде

До 2 терабайт в секундудля кластера на 400 нод

Скорость на грани фантастики

22

Page 23: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

23

1. Делаем запрос

2. Идём пить кофе

У тебя нет ClickHouse У тебя есть ClickHouse

Проверь 37 идей за 5 минут!

ВНИМАНИЕ: развидеть нельзя

Page 24: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

More info: https://clickhouse.yandex/benchmark.html

24

Page 25: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Консольный клиент

HTTP

JDBC

Python, PHP, NodeJS, Go и Perl коннекторы

Интерфейсы

25

Page 26: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Заглянем внутрь

ClickHouse

Page 27: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Код

Векторная обработка данных

Ориентированный на производительность C++14 код

Каждая фича оптимизируетсяпо производительности

Почему ClickHouse такой быстрый?

27

Page 28: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Данные

Колоночное хранение

Merge Treeминимум seek-ов

Обработка максимально близко к данным

Почему ClickHouse такой быстрый?

28

Page 29: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Возможности

Семплирование из коробки

Функции с вероятностными алгоритмами

Оптимизация производительности на уровне запроса

Почему ClickHouse такой быстрый?

29

Page 30: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Нет единой точки координации запросов

Асинхронная репликация

ZooKeeper для координации реплик (не используется в SELECT)

Масштабируемость и отказоустойчивость

30

Page 31: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Кластер Яндекс.Метрики

31

– Shard

Data Center

Page 32: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Кейсы

ClickHouse

Page 33: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

OLTP

Key-value

Document-oriented

Модифицирование данных

Когда НЕ надо использовать

33

Page 34: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Широкие таблицыМного колонок

QPS относительно небольшойно много данных используетсяв каждом запросе

Большой поток входящих данных

Аналитика по петабайтам данных

ClickHouse: best practises

34

Page 35: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

С этого обычно пробуют ClickHouse

Что делать:

Вставить access и серверные логи в ClickHouseпримерное время: несколько часов

Что получаем:

Анализируем любые инциденты за секунды

Мониторинг и дашборды по ошибкам, таймингам и прочему

Кейс: анализ серверных логов

35

Page 36: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Можно построить свой Data Warehouse и копать данные с невероятной скоростью

Что делать:

Берём Hadoop или другую "не такую быструю" базу

Копируем все данные в ClickHouse

Что получаем:

Realtime аналитика бизнес-процессов

Довольные аналитики и менеджеры

Легко построить внутренние дашборды/метрики

Кейс: внутренняя база для аналитики

36

Page 37: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

C чего начать?

ClickHouse

Page 38: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Tutorial: https://clickhouse.yandex/tutorial.html

Пишите вопросы: [email protected]

GitHub: https://github.com/yandex/ClickHouse

Больше информации: https://clickhouse.yandex

С чего начать?

38

Page 39: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Итого

ClickHouse

Page 40: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Open-source колоночная DBMS

Линейная масштабируемость

Невероятная скорость

SQL диалект с расширенными возможностями

ClickHouse за один слайд

40

Page 41: ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидов (Яндекс)

Виктор Тарнавский Руководитель отдела аналитических продуктов

[email protected]

[email protected]

telegram

Контакты