Архитектура
Yupana — аналитическая платформа с открытым исходным кодом для анализа больших данных.
Она обеспечивает:
- перевод транзакционной информации в форму пригодную для бизнес анализа;
- хранение обработанной информации в формате оптимизированном для выполнения аналитических задач на многомерных временных рядах;
- массовую и Online обработку данных.
Платформа поддерживает SQL-подобный синтаксис запросов, которые могут выполнятся на выделенном сервере или в кластере Apache Spark.
Архитектура Yupana не привязана к конкретному хранилищу. Существующая реализация использует в качестве хранилища Apache HBase. Данные сохраняются в виде отдельных временных рядов.
Временной ряд — это собранные в разные моменты времени данные о значении наблюдаемых параметров.
Структура временных рядов:
- Время измерения — обязательная размерность временного ряда, является частью первичного составного ключа. При выполнении запросов всегда должны быть указаны ограничения по времени;
- Измерения — поля сущности, которые являются частью первичного составного ключа и позволяют выполнять быстрый поиск. Например: идентификатор устройства или название товара;
- Метрики — значения наблюдений. Например: сумма и количество;
- Внешние связи — интерфейсы отображения и/или группировки размерностей, которые позволяют определить древовидные размерности временного ряда. Например: Город отображается в уникальный идентификатор устройства.
Модули Yupana
yupana-api
Этот модуль содержит определения базовых примитивов Yupana таких как типы данных и операции над ними, таблица, схема, свертка, внешняя связь и др.
yupana-core
Реализация ядра хранилища. В этом модуле содержится реализация работы с временными рядами, вне зависимости от типа используемого хранилища.
yupana-hbase
Реализация хранилища поверх HBase.
yupana-proto
Протокол взаимодействия между JDBC драйвером и сервером.
yupana-jdbc
JDBC драйвер для Yupana.
yupana-akka
Базовые части для реализации сервера поверх Akka. Принимает запросы через TCP.
yupana-pekko
Базовые части для реализации сервера поверх Apache Pekko. Принимает запросы через TCP.
yupana-spark
Реализация TSDB работающая поверх HBase внутри Apache Spark.
Настройки
- spark.hbase.regions.initial.max - настройка ограничивающая максимальное количество регионов при создании таблицы временного ряда в hbase, по-умолчанию 50. Начальное кол-во регионов считается как количество интервалов, которое помещается во временной ряд (текущее время + год - начало эпохи хранения данных table.epochTime делённое на rowTimeSpan и умноженное на 10). Если полученное значение превышает значение настройки hbase.regions.initial.max, то используется значение настройки.
yupana-schema
Минимальное определение схемы для выполнения аналитики ОФД.
yupana-metrics
Утилиты для сбора метрик производительности.
yupana-settings
Модуль чтения настроек. Типобезопасная обертка над Java properties, но можно имплементировать и другие хранилища настроек.
yupana-external-links
Реализация внешних связей, таких как инвертированный индекс, поиск сопутствующих товаров и связи на базе SQL таблиц.
yupana-caffeine
Реализация кэшей на базе Caffeine.
yupana-ehcache
Реализация кэшей на базе EhCache.
yupana-ignite
Реализация кэшей на базе Apache Ignite.
yupana-utils
Различные утилиты специфичные для работы с данными ОФД.
yupana-examples
Пример использования Yupana. Содержит типичный набор приложений для работы с Yupana: сервер обработки запросов, ETL для загрузки данных и приложения для запуска тяжелых вычислений на Spark.
Кэширование
Для ускорения работы Yupana использует кэши. Имеется несколько реализаций кэшей для Yupana:
yupana-ehache
yupana-caffeine
yupana-ignite
При использовании Yupana рекомендуется выбрать одну или несколько реализаций кэшей и сделать соответствующие настройки.