Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин

929 views

Published on

— Как мы пришли к использованию ClickHouse.
— Сильные и слабые стороны.
— Практические кейсы использования ClickHouse для решения аналитических задач.

Published in: Data & Analytics
  • Login to see the comments

  • Be the first to like this

ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин

  1. 1. Clickhouse для бизнес аналитики
  2. 2. О себе 10+ лет разработки PHP, NodeJS, JAVA, LUA, и т.д. Outsource, Product На данный момент Head of Development @Clickky Clickhouse 2
  3. 3. Clickky 50Gb MYSQL 3.5Tb MongoDB (+3Gb/day) ~16k RPM == 20+KK requests/day Backend: PHP + JAVA + LUA + nodeJS ~1.5KK lines of code Clickhouse 3
  4. 4. Сложные запросы Проблемы в системе ElasticSearch MonetDB Clickhouse Проблемы Business Intelligence Clickhouse 4
  5. 5. SQL Линейная масштабируемость Фокус на быстром выполнении запросов Column-oriented Основные идеи при создании ClickHouse Clickhouse 6
  6. 6. Колоночные СУБД Хранение по столбцам Чтение 3х столбцов Хранение по строкам Чтение всех столбцов Clickhouse 5
  7. 7. Relative query processing time (lower is better): Clickhouse 7 https://clickhouse.yandex/benchmark.html
  8. 8. Консольный клиент HTTP JDBC Python, PHP, NodeJS Go и Perl коннекторы Интерфейсы Clickhouse 8
  9. 9. Чтобы выйти из клиента, нажмите Ctrl+D (или Ctrl+C), или наберите вместо запроса одно из: "exit", "quit", "logout", "учше", "йгше", "дщпщге", "exit;", "quit;", "logout;", "учшеж", "йгшеж", "дщпщгеж", "q", "й", "q", "Q", ":q", "й", "Й", "Жй" Консольный клиент: Clickhouse 9
  10. 10. https://github.com/smi2/tabix.ui GUI: Tabix Clickhouse 9 Links: Github: https://github.com/smi2/tabix.ui Online: http://ui.tabix.io/
  11. 11. Можно построить свой Data Warehouse и копать данные с невероятной скоростью Что делать: Берем Hadoop или другую “не такую быструю” базу Копируем все данные в ClickHouse Что получаем: Realtime аналитика бизнес-процессов Довольные аналитики и менеджеры Легко построить внутренние дашбордыметрики Кейс: внутренняя база для аналитики Clickhouse 10
  12. 12. Запросы Clickhouse SQL диалект Приблизительные вычисления, URI функции Массивы, кортежи Распределенные запросы из коробки Внешние словари 11
  13. 13. Конфигурация внешних словарей находится в отдельном файле или файлах, указанных в конфигурационном параметре dictionaries_config. Напримример - dictionaries/*.xml. <dictionaries> <comment>Не обязательный элемент с любым содержимым; полностью игнорируется.</comment> <dictionary> <name>os</name> <source> <mysql> <!- - настройки подключения к серверу - логин, пароль, порт и ты ды- -> </mysql> <structure> <!- - описание структуры таблицы - -> </structure> </source> </dictionary> </dictionaries> Внешние словари Clickhouse 10
  14. 14. ClickHouse: best practices Clickhouse Широкие таблицы, много колонок QPS относительно небольшой, но много данных используется в каждом запросе Большой поток входящих данных Аналитика по петабайтам данных 12
  15. 15. Clickhouse Когда НЕ надо использовать OLTP Key-value Document-oriented Модифицирование данных 12
  16. 16. URL: domainWithoutWWW() topLevelDomain() firstSignificantSubdomain() path() queryString() extractURLParameter(URL, name) cutWWW() IP: IPv4NumToString(num) IPv4StringToNum(s) IPv4NumToStringClassC(num) IPv6NumToString(x) IPv6StringToNum(s) Clickhouse Функции для URL и IP 14
  17. 17. regionToCity(id[, geobase]) regionToArea(id[, geobase]) regionToCountry(id[, geobase]) regionToContinent(id[, geobase]) regionIn(lhs, rhs[, geobase]) Clickhouse Функции яндекс метрики 15
  18. 18. Статистика по referer: SELECT splitByChar('?',referer)[1] as referrer, count() as count FROM stat.table WHERE toMonth(ds) = toMonth(yesterday()) AND toYear(ds) = toYear(yesterday()) GROUP BY referrer WITH TOTALS ORDER BY count DESC FORMAT CSVWithNames; Clickhouse Примеры из “реальности” 16
  19. 19. Лиды из одной подсети: SELECT toDateTime(dc) as date_time, app_id, IPv4NumToStringClassC(IPv4StringToNum(tr_ips)) as ip, concat(concat(toString(app_id),','),IPv4NumToStringClassC(IPv4StringToNum( tr_ips))) as uid, FROM stat.leads WHERE concat(concat(toString(app_id),','),IPv4NumToStringClassC(IPv4StringToNum(tr_i ps))) IN (...) Clickhouse Примеры из “реальности” 17
  20. 20. Очень быстро! Очень хорошая компрессия данных Привычный SQL с кучей доп. возможностей Нет транзакций, нет UPDATE / DELETE Нет UNIQUE KEY, нет авто-приведения типов Clickhouse Подведем итоги: 17
  21. 21. ★ Tutorial - https://clickhouse.yandex/tutorial.html ★ Вопросы - clickhouse-feedback@yandex-team.com ★ GitHub - https://github.com/yandex/ClickHouse ★ Документация - https://clickhouse.yandex/ Clickhouse С чего начать? 17
  22. 22. Спасибо за внимание

×