4. Система онлайн-аналитики

[к списку решений]

Дата: 2025-01-23

Статус

Принято

Контекст

С целью аудита и аналитики требуется хранить big data: бизнес-события вида «продукт добавлен», «заказ оплачен».

К слову, Uptrace хранит технические метрики в ClickHouse и никак иначе. Это намекает на то, что логично использовать одно хранилище для обоих типов данных.

Решение

ClickHouse и Metabase.

Что даст внедрение решения?

Разнообразные и многочисленные бизнес-события хранятся и агрегируются таким способом, что время агрегации сотен миллионов записей - типично не более 1 сек. (зависит от правильной организации данных и запросов к ним). Возможность визуализировать данные в онлайн-конструкторе в виде графиков и таблиц.

Варианты

ElasticSearch и Kibana

[наверх]

Эта система хранит и визуализирует big data, но только в части агрегированных логов. Разумеется, там можно хранить любые данные, однако набор аналитических возможностей ограничен (находится примерно на уровне реляционных БД), а язык запросов своеобразен.

ElasticSearch был стандартным решением до появления OLAP-систем нового поколения, который возможно и не появились бы, если бы ElasticSearch отвечал возросшим требованиям в этой области. Тем не менее, в области поиска и визуализации логов, а также полнотекстового поиска (любых данных) он остается лидером. Для сравнения, в ClickHouse полнотекстовый поиск находится в экспериментальной стадии.

Лицензия ElasticSearch 8 запрещает предоставлять продукт в виде сервиса (чтобы облака не перепродавали изначально бесплатный продукт), а для внутреннего использования в проектах - позволяет.

ClickHouse и Metabase

[наверх]

ClickHouse был разработан Яндексом, с 2009 г. обслуживает «Яндекс Метрику», а в 2016 г. стал общедоступен под лицензией Apache. На сайте производителя предлагается облачный вариант, но можно хостить самому, бесплатно.

Преимущества и недостатки

Преимущества
  • Преимущества этой системы рассмотрены во многих статьях, например в этой.
  • Преимущества по сравнению с ElasticSearch рассмотрены в статье на сайте ClickHouse, в частности значительно выше степерь сжатия данных на диске и скорость агрегации, что даёт экономию и времени, и аппаратных ресурсов. Вот картинка из этой статьи - пример агрегации одного миллиарда записей:
    картинка
  • Для разработчиков порог вхождения значительно снижен благодаря тому, что язык запросов - SQL и в Spring есть драйвер для JdbcTemplate.
Недостатки
  • Имеет большие аппетиты по части RAM: не менее 4Gb, а лучше 8Gb и более.
  • «Не любит» принимать частые маленькие батчи данных - решается посылкой событий не напрямую (что к тому же замедлило бы приложения, т.к. это синхронная операция), а через Kafka.
  • Для эффективного использования требуется изучение специфических подходов к организации и обработке данных, таких как AggregatingMergeTree, что, впрочем, облегчается хорошими руководствами.

Для визуализации аналитических данных есть Metabase. Этот онлайн-конструктор визуализаций не привязан к конкретному источнику данных: есть плагины для ClickHouse, Postgres и др.

Apache Superset

[наверх]

Преимущества и недостатки

Преимущества
Недостатки
  • Как отмечено на сайте конкурентов (Metabase) - и это совпадает с результатами личных экспериментов по настройке и использованию обеих систем, – Apache Superset ощутимо сложнее в настройке и менее интуитивен в части интерфейса.