Анализ временных рядов в ClickHouse и Greenplum

Анализ данных временных рядов, ClickHouse vs Greenplum PostgreSQL, TimescaleDB vs ClickHouse, ClickHouse Greenplum примеры курсы обучение, Школа больших данных учебный центр Коммерсант

Анализ временных рядов нужен не только в Data Science, но и в мониторинге системных событий. Чем столбец с отметками времени в ClickHouse отличается от гипертаблиц в PostgreSQL и Greenplum c расширением TimescaleDB, и что выбирать для аналитики больших данных.

ClickHouse для анализа временных рядов

ClickHouse является колоночной СУБД для аналитической обработки огромных объемов данных в реальном времени. Это обеспечивается архитектурными решениями, включая приблизительные вычисления, разреженную индексацию и использование первичного ключа в качестве ключа сортировки по умолчанию. Изначально ClickHouse создавался именно для сквозной аналитики больших данных, исследования метрик и выгрузки отчетов по сотням атрибутов с учетом времени событий. Благодаря поддержке типов DateTime и DateTime64, эта колоночная СУБД отлично подходит для хранения данных временных рядов, т.е. тех, которые изменяются со временем. Например, курсы валют, перемещение транспорта, статистика событий пользовательского поведения, изменение системных метрик.

При этом ClickHouse позиционируется как универсальная OLAP-СУБД для больших данных в реальном времени, а не как специализированная база данных временных рядов типа InfluxDB, Kdb+, Prometheus, Graphite, Apache Druid, QuestDB, OpenTSDB, GridDB и прочие аналоги, о которых мы писали здесь. Хотя аналитические нагрузки похожи на временные ряды из-за привязки ко времени событий, ClickHouse ориентирован на работу с потоковыми событиями, такими как обработка данных рекламных сетей или онлайн-игры.

В ClickHouse есть специальные кодеки, которые позволяют эффективно работать с данными временных рядов: стандартные алгоритмы DoubleDelta, Gorilla а также T64. На практике запросы к временным рядам часто затрагивают только недавние данные, в пределах недели. Чтобы ускорить выполнение таких запросов в ClickHouse можно использовать быстрые SSD-диски для хранения свежих данных, к которым часто идут запросы. А исторические данные перемещать в архив — на более медленные, но емкие HDD-диски. Для этого следует настроить время жизни данных в таблицах (TTL, Time To Live). Также можно использовать материализованные представления, подробнее о которых мы расскажем в следующий раз.

Из-за ориентации на чтение транзакционные операции в Clickhouse выполняются не очень быстро. А при небольших объемах данных могут вообще оказаться намного медленнее, чем в специализированных time-series решениях, таких как TimescaleDB — расширение PostgreSQL для работы с временными рядами. Как оно работает, рассмотрим далее.

TimescaleDB для работы с данными временных рядов в PostgreSQL и Greenplum

Хотя временные ряды можно хранить в самом PostgreSQL и основанной на ней MPP-СУБД Greenplum безо всяких дополнений, TimescaleDB обеспечивает более высокую производительность на той же самой инфраструктуре благодаря гипертаблицам, партиционированным по отметке времени.

Например, бенчмаркинговое сравнение Clickhouse с TimescaleDB показали преимущество последнего на операциях вставки при пакетной обработке небольшого количества строк (100-300). Впрочем, при пакетной обработке строк от 5 000 до 15 000 строк вставку в ClickHouse выполняется быстрее.

ClickHouse vs TimescaleDB, PostgreSQL TimescaleDB, анализ данных временных рядов
Бенчмаркинговое сравнение обработки SQL-запросов к временным рядам в ClickHouse и TimescaleDB

TimescaleDB является open-source решением, которое расширяет возможности PostgreSQL для данных временных рядов. Оно обеспечивает автоматическое партиционирование во времени и пространстве (ключ разделения), а также полностью поддерживает SQL, сохраняя стандартный интерфейс PostgreSQL.

По сути, TimescaleDB является абстракцией (виртуальным представлением) многих отдельных таблиц, содержащих фактические данные. Это представление одной таблицы — гипертаблица, состоит из множества фрагментов, которые создаются путем разделения ее данных в одном или двух измерениях: по временному интервалу и (необязательно) ключу разделения.

Практически все взаимодействия пользователя с TimescaleDB осуществляются с помощью гипертаблиц: создание таблиц и индексов, их изменение, вставка и выбор данных. Таким образом, расширение позволяет оперировать стандартными командами популярной объектно-реляционной СУБД, работая с данными временных рядов.

Это удобно, в том числе для мониторинга системных метрик, особенно когда речь идет о высоконагруженных системах. Поскольку Greenplum основана на PostgreSQL, эта MPP-СУБД также может использовать TimescaleDB. А визуализировать системные метрики можно с помощью типовых инструментов мониторинга, таких как Grafana и Prometheus.

Например, в Grafana уже встроена нативная поддержка TimescaleDB в качестве источника данных, поэтому можно прямо из Greenplum строить графики временных рядов без сложных SQL-запросов. А если ранее для мониторинга использовалась СУБД Prometheus, от него можно отказаться, с помощью адаптера перенести данные в TimescaleDB. Также можно считывать системные метрики ИТ-инфраструктуры с помощью плагина Telegraf и передавать их сразу в TimescaleDB, чтобы надежно хранить в Greenplum.

В заключение отметим, что выбор СУБД для анализа временных рядов зависит от нескольких факторов. Когда проект предполагает аналитику огромных массивов данных в реальном времени, причем скорость выполнения запроса более приоритетна, чем точность, ClickHouse отлично справится с этим. Если помимо аналитических сценариев, СУБД ориентирована на быструю обработку транзакций с большими массивами данных, в т.ч. time-series, Greenplum/PostgreSQL и TimescaleDB, подойдут лучше. Кроме того, надо учитывать компетенции команды, которая будет разрабатывать и поддерживать решение.

Освойте администрирование и эксплуатацию ClickHouse и Greenplum для аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://clickhouse.com/docs/ru/faq/use-cases/time-series
  2. https://selectel.ru/blog/timescaledb-vs-world/
  3. https://habr.com/ru/companies/oleg-bunin/articles/464303/
  4. https://eax.me/timescaledb/
  5. https://github.com/timescale/timescaledb
Поиск по сайту