ClickHouse meetup в Новосибирске

ClickHouse meetup
в Новосибирске

ClickHouse: настоящее и будущее

Что такое ClickHouse?

ClickHouse - distributed analytical column-oriented DBMS

Почему column-oriented?

Так работают row-oriented системы:

Почему column-oriented?

Так работают column-oriented системы:

Почему ClickHouse?

Ничего готового не подошло.

Тогда мы сделали ClickHouse.

«Эволюция структур данных в Яндекс.Метрике»

https://habrahabr.ru/company/yandex/blog/273305/

Метрика 2.0

Коротко

Основной кластер Метрики

* Если вы хотите попробовать ClickHouse, достаточно и одного сервера.

ClickHouse в Яндексе

Нам удалось сделать систему сравнительно удобной.

С самого начала мы имели подробную документацию.

В течение пары лет ClickHouse распространился по другим отделам Яндекса.

Почта, Маркет, Директ, Вебмастер, AdFox, Инфраструктура, Бизнес аналитика...

Есть случаи, когда аналитики самостоятельно устанавливали ClickHouse на виртуальные машины и успешно использовали без каких-либо вопросов.

Open-source

Потом мы решили — ClickHouse слишком хорошая система, чтобы нам одним на нём сидеть.

Чтобы было веселее, надо подсадить на ClickHouse людей снаружи, пусть радуются. Решили сделать open-source.

Open-source

Лицензия Apache 2.0 — минимум ограничений.

Цель — максимальное распространение продукта.

Мы хотим, чтобы продуктом Яндекса пользовались по всему миру.

См. “Яндекс открывает ClickHouse”

https://habrahabr.ru/company/yandex/blog/303282/

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

Хорошо структурированные, очищенные, неизменяемые события.

 

Click stream. Веб-аналитика. Рекламные сети. RTB. E-commerce.

Аналитика онлайн игр. Данные сенсоров и мониторингов. Телеком данные.

Финансовые транзакции. Биржевая аналитика.

Когда не надо использовать ClickHouse

OLTP
В ClickHouse нет UPDATE и полноценных транзакций.

Key-Value
Если нужны частые запросы на обновление по ключу, используйте другое решение.

Blob-store, document oriented
ClickHouse предназначен для большого количества мелко-гранулированных данных.

Излишне нормализованные данные
Лучше сделать широкую таблицу фактов.

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

 

— от безысходности.

Яндекс.Метрика должна работать.

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

Алгоритмическая оптимизация.

MergeTree, локальность расположения данных на диске
— быстрые диапазонные запросы.

Пример: функция uniqCombined состоит из комбинации трёх различных структур данных, подходящих под разные диапазоны кардинальностей.

Низкоуровневая оптимизация.

Пример: vectorized query execution.

Специализация и внимание к деталям.

Пример: у нас есть 17 разных алгоритмов выполнения GROUP BY. Для вашего запроса выбирается лучший.

Что нового в ClickHouse

Команда

Теперь 5 разработчиков.

В предыдущих сериях

— HTTP и executable источники;

— оптимизация мержей, вертикальный мерж;

— трассировка распределённых запросов;

— clickhouse-local;

— операторы BETWEEN, ||;

— функции UUID - text;

Новое в языке запросов

— KILL QUERY;

— LIMIT BY;

— SELECT INTO OUTFILE;

Сборка

— «правильная» сборка и пакеты;

— Таблица system.build_options;

Интерфейсы

— возможность получить прогресс выполнения в HTTP заголовках;

— возможность пропуска ошибок в текстовых форматах;

— правильные коды ответа в HTTP интерфейсе;

Словари

— производительность кэшируемых внешних словарей;

— инструментирование кэшируемых внешних словарей;

— HTTPS словари;

Инструментирование

— информация об использовании памяти под индекс;

— информация о размере столбцов в несжатом виде;

— метрики по потреблению оперативки кэшами;

— метрики про мержи;

Оптимизации

— оптимизация DISTINCT;

— производительность gzip в HTTP интерфейсе;

— оптимизация mark cache;

Функции

— правильная логика сравнений, least, greatest;

— groupUniqArray для всех типов данных;

— decodeURLComponent;

Что-то ещё

— защита от случайного DROP TABLE;

— use_client_time_zone; timezone в конфиге;

— fsync_metadata;

Сообщество

— интеграция с Grafana, Redash, Apache Zeppelin, Superset;

— правильные пакеты для CentOS, RHEL, GosLinux;

— драйвер native протокола для Go и C++;

— возможность передавать заголовки X-ClickHouse-*;

— бенчмарки NYC Taxi, Percona (Spark);

— бенчмарк Greenplum;

— англоязычный Telegram чат;

— встречи и доклады (Париж - февраль, Сан-Франциско - апрель);

ClickHouse vs. Spark

https://www.percona.com/blog/2017/02/13/clickhouse-new-opensource-columnar-database/

ClickHouse vs. Greenplum

TODO (март-апрель 2017)

— распределённые DDL запросы;

конфиги в ZooKeeper;

— полная поддержка NULL;

TODO (весна-лето 2017)

— работоспособность ODBC драйвера под Windows;

— переделать анализ запроса: правильная поддержка JOIN;

Сообщество

Сайт: https://clickhouse.yandex/

Google groups: https://groups.google.com/forum/#!forum/clickhouse

Рассылка: clickhouse-feedback@yandex-team.com

Telegram чат: https://telegram.me/clickhouse_en and https://telegram.me/clickhouse_ru (уже 500 участников)

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

 

+ встречи. Москва, Санкт-Петербург, Новосибирск... Далее: Екатеринбург, Киев, Минск, Сан-Франциско...

Бонус

Подключение к ClickHouse

HTTP REST

clickhouse-client

JDBC

 

Python, PHP, Go, Perl, Ruby, Node.JS, R, .NET

 

Web UI: https://github.com/smi2/clickhouse-frontend

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».

 

Bao Dang:

«Obviously, ClickHouse outperformed PostgreSQL at any metric».

https://github.com/AnalyticsGo/AnalyticsGo/issues/1

ClickHouse vs. Vertica

Timur Shenkao:

«ClickHouse is extremely fast at simple SELECTs without joins, much faster than Vertica».

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)»

ClickHouse vs. Spark

«Я потестировал Clickhouse, по скорости просто отлично = намного быстрее spark на одной машине (у меня получилось порядка 3x, но еще буду сравнивать). Кроме того compression получается лучше».

ClickHouse vs. Google BigQuery

«ClickHouse показывает сравнимую скорость на таком запросе за 30 дней и в 8 раз быстрее (!) на таком запросе. В планах есть протестировать и другие запросы, еще не добрались.

Скорость выполнения запросов стабильна. В Google BigQuery в период пиковых нагрузок, например в 4:00 p.m. PDT или в начале месяца, время выполнения запросов может заметно увеличиваться».

ClickHouse vs. Druid

«В этом году мы развернули сборку на основе Druid — Imply Analytics Platform, а также Tranquility, и уже приготовились запускать в продакшн… Но после выхода ClickHouse сразу отказались от Druid, хотя потратили два месяца на его изучение и внедрение».

https://habrahabr.ru/company/smi2/blog/314558/

ClickHouse vs. InfiniDB

«结论:clickhouse速度更快!»

«In conclusion, ClickHouse is faster!»

http://verynull.com/2016/08/22/infinidb与clickhouse对比/

ClickHouse for sensor data