Loginom – low-code аналитика на предельной скорости

В платформе Loginom реализованы подходы, позволяющие добиться высокой скорости обработки, эффективной работы с памятью и легкости масштабирования. Рассмотрим, за счет чего обеспечивается высокая производительность, и продемонстрируем сравнительные тесты с шестью самыми популярными в мире аналитическими low-code платформами.

Среди экспертов существуют различные мнения относительно той или иной технологии анализа данных: кто-то предпочитает написание кода, кто-то — применение low-code/no-code инструментов. При этом каждый может привести убедительные аргументы в пользу своей точки зрения.

Это связано с тем, что предпочтения определяются привычками, опытом и носят в значительной степени субъективный характер. Поэтому то, что одни считают достоинством, другие относят к недостаткам. Однако когда речь идет о производительности, дискуссии становятся бессмысленными, потому что все без исключения предпочтут высокую скорость обработки.

Долгие ожидания раздражают, поэтому скорость можно считать важным объективным критерием выбора того или иного продукта. Причем достижение высокой производительности должно обеспечиваться не сложными манипуляциями, а минимальными настройками, в идеале — вообще без них.

Оптимизация производительности основывается на нескольких базовых принципах:

  1. Оценивать производительность системы в целом, а не ее фрагментов.
  2. Улучшать то, что чаще используется.
  3. Учитывать возможности оборудования.
  4. Всегда искать первоисточник потери скорости.

При этом важно, чтобы для решения задачи требовалось минимально возможное количество продуктов и, как следствие, точек интеграции.

Можно привести аналогию с автострадой. На ней развивается максимальная скорость, но как только появляется плохой участок, она падает. Фактически скорость движения по дороге ограничивается самой медленной ее частью. Места интеграции являются аналогами плохих участков, соединяющих автострады.

Интеграции

Полностью исключить интеграции не получится, так как данные необходимо откуда-то получать, а результаты выгружать. Но чем больше инструментов, платформ и сред, где необходимо произвести обмен данными, тем больше потери производительности. Они потребляют ресурсы и тратят время, но не создают ценности для клиента.

Гарантии эффективной работы

Loginom — одна из самых быстрых в мире low-code платформ продвинутой аналитики. Высокого результата нельзя достичь за счет какого-то одно технологического решения. Это сложная комплексная задача, требующая оптимизации на всех уровнях.

Можно выделить основные факторы, влияющие на скорость работы Loginom:

  1. Архитектура платформы.
  2. Алгоритмы обработки.
  3. Способы визуализации.
  4. Работа с процессорами, памятью, дисками.
  5. Работа с источниками и приемниками данных.
  6. Интеграция модулей Loginom между собой.

Если не уделить должное внимание хотя бы одному пункту, то построить высокопроизводительную систему не получится, т.к. именно этот участок будет узким местом. Поэтому рассмотрим каждый фактор, влияющий на скорость работы, более подробно.

Архитектура платформы

Высокая производительность заложена в архитектуре Loginom, в частности в особенностях работы с памятью.

При обработке больших данных пользователи чаще всего сталкиваются с ограничениями, связанными с ОЗУ — ее всегда недостаточно. Особенно критична эта проблема для продуктов, основанных на технология in-memory, которые стремятся все операции производить в оперативной памяти. Loginom является именно такой системой.

Работа in-memory позволяет достичь очень высокой скорости, но требует экономного расходования ОЗУ. Поэтому в платформе используются все техники, позволяющие минимизировать потребление памяти:

  1. Операции ведутся с типизированными данными.
  2. В ОЗУ хранятся только уникальные значения.
  3. Используются ленивые вычисления.

На скриншоте представлен пример небольшого сценария.

Использование ленивых вычислений

Ленивые вычисления позволяют существенно снизить требования к памяти, т.к. данные хранятся не в каждом узле сценария, а только в тех, которые выделены цветом. Если принимать во внимание, что обычно сценарии содержат десятки и сотни узлов, то можно понять, насколько существенной получается экономия ресурсов.

Разработчики Loginom не остановились на реализации базового функционала и оптимизировали ленивые вычисления:

Оптимизация ленивых вычислений

Для понимания сути данной оптимизации можно провести аналогию с поиском человека. Например, надо узнать, на месте ли Сидоров.

Было: Сообщение проходит через множество людей. Каждому задается вопрос: «Ты Сидоров?». Если нет, то вопрос передается дальше, если да, то останавливается. Как только это происходит, обратно по цепочке передается сообщение: «Сидоров здесь». В случае Loginom эти шаги можно представить как цепочку, где запрос передается от одного узла к другому, пока не будет найден источник. Как только это произошло, значения передаются назад узлу, который запрашивал данные через весь сценарий.

Стало: Один раз задается вопрос, и Сидоров сразу отвечает, что он на месте. Так происходит потому, что при помощи Reader-ов сначала определяется, где находятся исходные данные, и именно информация о местоположении передается в узел, который запрашивает сведения. Далее данные передаются напрямую из одного узла в другой, минуя цепочку промежуточных обработчиков.

Следующая особенность, заложенная в архитектуру платформы, — это параллелизм «из коробки» и асинхронный пользовательский интерфейс.

Поддержка параллелизма критически важна для обеспечения высокой скорости обработки. На сегодня рост вычислительной мощности компьютеров достигается в основном за счет увеличения количества ядер. Однако далеко не все системы и языки программирования позволяют это сделать просто. Во многих случаях требуются специальные знания и множество дополнительных действий.

В Loginom любой сценарий, который может быть выполнен параллельно, выполняется параллельно. Это логика работы по умолчанию, не требующая каких-либо дополнительных действий от пользователя.

И, наконец, в Loginom реализована еще одна технология — асинхронный пользовательский интерфейс. Он не влияет на время обработки, т.е. его применение не обеспечивает реального повышения скорости. Однако он способствует улучшению отзывчивости системы и создает комфорт при работе. При длительных вычислениях пользовательский интерфейс не блокируется, аналитик может переключаться на другие задачи, что экономит время и создает ощущение высокой скорости.

Асинхронный пользовательский интерфейс

Алгоритмы обработки

Карл Саган сказал: «Если вы хотите испечь яблочный пирог с нуля, вам сначала надо создать Вселенную». Естественно, что компания старается не тратить время на разработку того, что уже хорошо реализовано, и воспользоваться готовыми библиотеками.

Для написания Loginom использовались современные быстрые низкоуровневые библиотеки:

  1. LIBLINEAR — построение моделей логистической регрессии.
  2. Intel MKL — операции с матрицами и задачи линейной алгебры.
  3. fast_float — преобразование строки в вещественное число.
  4. ALGLIB — расчет статистик, обучение нейросетей. И другие.

Библиотеки тестируются на производительность и выбираются самые быстрые из доступных. Если не удается найти быструю качественную библиотеку, программисты Loginom разрабатывают свои собственные модули. Командой специалистов было создано множество алгоритмов, вот некоторые из них:

  1. Использование параллелизма при построении индексов (Слияние и Дополнение данных).
  2. Приблизительные вычисления при построении моделей машинного обучения.
  3. Подбор гиперпараметров нейросетей.
  4. Алгоритмы децимации данных для диаграмм.
  5. Многомерные расчеты в кубе.

Кэширование данных

Ленивые вычисления чаще всего обеспечивают экономное расходование оперативной памяти и не сказываются на скорости обработки. Однако в некоторых специфичных случаях рациональнее кэшировать рассчитанные данные.

Такое происходит, когда используются сложные формулы или если данные, рассчитанные в одном месте, затем применяются во множестве других узлов сценария. В этом случае рациональнее кэшировать данные, что хотя и приводит к большему расходу ОЗУ, зато увеличивает скорость обработки данных в целом.

В Loginom предусмотрено множество вариантов кэширования: всего набора данных или некоторых столбцов, при активации узла или обращении к данным. Использование данного механизма обеспечивает возможность поиска компромисса между скоростью обработки и объемом используемой оперативной памяти.

Протокол обмена данными

Часто узким местом аналитических платформ является обмен данными между клиентом и сервером. Особенно это актуально, когда речь идет о работе с наборами данных, содержащих сотни миллионов записей и даже больше.

Для обеспечения высокой производительности в Loginom реализован собственный Remote Procedure Call (удаленный вызов процедур) — протокол обмена данными между клиентом и сервером. Основными функциями которого является следующее:

  1. Исключение всех промежуточных слоев.
  2. Обмен данными в бинарном виде для снижения объема передаваемой информации и минимизации потерь на сериализацию.
  3. Пакетная передача с объединением мелких запросов в крупные блоки.
  4. Асинхронный обмен.

Визуализация

При работе в браузере клиентская часть визуализатора обращается к серверной для получения информации, которую необходимо отобразить. Так как выборки могут быть огромных размеров, то для увеличения производительности передаются не все данные, а определенный фрагмент. Информация пересылается окнами или происходит децимация, т.е. на сервере уменьшается объем данных, но сохраняются статистические свойства выборки.

Децимация данных на сервере

Например, при отображении таблицы в миллион записей сервер передает клиенту только фрагмент выборки, который виден на экране, и небольшое количество записей до и после данной области. При перемещении по таблице окно смещается, и данные подгружаются. В результате обеспечивается высокая отзывчивость интерфейса, снижаются требования к объему передаваемой информации.

Работа с процессорами, памятью, дисками

Требование эффективной и прозрачной для пользователя многопоточной обработки привело к необходимости реализации собственного механизма:

  1. Формирование своего пула потоков.
  2. Мониторинг загруженности процессоров для добавления потока в случае недозагруженности.
  3. Освобождение потоков, если они не используются.
  4. Выполнение задач последовательно, если излишний параллелизм не выгоден.

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

В результате таких манипуляций Loginom эффективнее утилизирует доступные ресурсы и работает быстрее. Рассчитанные данные передаются на выход, и система приступает к обработке следующего блока.

Шаг 1. Оценивается уровень загрузки процессоров
Шаг 2. Создается поток, чтобы повысить уровень утилизации процессоров
Шаг 3. Подается на обработку следующий блок данных из очереди
Шаг 4. Подача блоков данных продолжается пока не будут обработаны все
Шаг 5. Освобождаются потоки, если блоков данных меньше, чем потоков
Шаг 6. По завершении освобождаются все потоки
 
 
 
 
 
 

Поддержка многопроцессорных систем учтена при работе со строками. В частности при фильтрации сравнение строк происходит с помощью специальной функции, исключающей атомарные операции обращения к общей памяти. Подобные действия блокируют конвейер всех ядер процессора. В результате блокировок, даже если ядер много, фактически система работает в один поток. Результат — увеличение на многоядерных серверах скорости фильтрации примерно на 20%.

Источники и приемники данных

Здесь тоже присутствуют нетривиальные решения. Дело в том, что при работе с базой данных через один коннектор запросы чаще всего выполняются последовательно, а не параллельно. Количество потоков обработки запросов пропорционально количеству коннекторов.

В Loginom при подключении к СУБД создается фабрика подключений, за счет чего обеспечивается более высокая степень параллелизма. По возможности коннекторы держатся в памяти, чтобы не терять время на подключение.

Разработчики Loginom смогли оптимизировать импорт из медленных источников (csv, xlsx):

  1. При чтении строковые данные кэшируются, кэш строк организован в виде хэш-таблицы.
  2. Используется wyhash (самая быстрая и качественная хэш-функция, 2019 г.) — алгоритм, оптимизированный под современные процессоры.
  3. Размер хеш-таблицы подобран так, чтобы он помещался в кэш-память и обеспечивал максимальную производительность.

В результате данных оптимизаций импорт немного замедлился, зато уменьшился расход памяти, ускорилось выполнение последующих узлов в сценарии.

Оптимизация формата Loginom Data File

Следующим шагом в повышении скорости работы стала оптимизация формата Loginom Data File. Для этого алгоритм сжатия LZ0 был заменен на LZ4 с добавлением расчета контрольной суммы.

В процессе экспорта в файле сохраняются уникальные строки, из-за чего скорость записи уменьшилась. В результате размер файла увеличился примерно на 10%, зато чтение стало быстрее на 39%. Кроме того при импорте снизился расход ОЗУ.

Интеграция компонентов платформы

Обычно Integrator и Server общаются между собой по TCP, но при работе на одной машине можно использовать Unix domain socket. При его применении отклик быстрее примерно на 15%.

Обмен данными

Еще одним важным аспектом является повышение производительности узла Python — своего рода соединение между Loginom и внешней системой. Для этого требуется обеспечить параллельное выполнение узла, которое по умолчанию Python не поддерживает.

Для параллельного выполнения узла Python анализируемые выборки выгружаются в файлы, запускается несколько интерпретаторов. Наборы записываются в файлы бинарного формата с хранением по столбцам и прозрачно для аналитика загружаются в Python. Это повышает скорость обмена данными между Python и другими узлами сценария.

Сравнение с конкурентами

Лучшим аргументом, демонстрирующим эффект от работ по оптимизации Loginom, является сравнение платформы с другими продуктами, представленными на рынке. В качестве конкурентов Loginom были выбраны продукты, занимающие лидирующие позиции на мировом рынке, по мнению Gartner:

  1. Alteryx.
  2. Dataiku.
  3. KNIME.
  4. Pentaho.
  5. PolyAnalyst.
  6. RapidMiner.

Выбор пал на настольные версии, т.к. корректное сравнение облачных продуктов требует воссоздания одинаковой инфраструктуры, что практически невозможно. Данные инструменты есть в открытом доступе. Каждый желающий может их бесплатно скачать и сравнить самостоятельно.

Сравнение проходило по трем критериям:

  1. Время выполнения задачи;
  2. Потребляемая оперативная память;
  3. Загрузка процессора.

Для сравнения продуктов были выбраны три задачи, которые можно реализовать в каждой системе.

Задача 1. Простой сценарий обработки

Построение отчетности по продажам, ABC и XYZ-анализ с минимальными настройками. Это тест производительности базовых операций работы с данными:

  1. Импорт csv-файлов.
  2. Слияние наборов данных.
  3. Расчет по формулам.
  4. Группировка и сортировка.
  5. Расчет простых статистик.
  6. Квантование.
  7. Экспорт csv-файлов.

Выбор такой задачи можно объяснить тем, что в реальной жизни, подобные операции проводятся аналитиком практически ежедневно.

Интерфейс аналитических платформ схожий:

Сценарий в Alteryx

Сценарий в Dataiku

Сценарий в KNIME

Сценарий в Pentaho

Сценарий в PolyAnalyst

Сценарий в RapidMiner

В Loginom использовались подмодели, которые являются специальным узлом, содержащим в себе другие узлы Сценария. Логика из-за этого не меняется. Во всех инструментах были реализованы абсолютно одинаковые операции.

Сценарий в Loginom

Параметры тестового компьютера: AMD Ryzen 5 5600G 3.9 GHz (6 ядер, 12 потоков), DDR 32 Gb 3200 MHz, SSD ADATA SP90.

Анализируемые данные:

  • CSV-файл – 49.7 млн. записей (7.1 Гб);
  • CSV-файл – 2.2 млн. записей (364 Мб).

Результаты первой задачи:

Результаты первого тестирования

Так как в RapidMiner для обработки данные необходимо сначала загрузить в репозиторий, а затем обработать, тут и далее время загрузки суммировалось с временем расчетов.

Задача 2. Увеличение объема данных, добавление расчетов

Данные загружаются один раз, а затем трижды продублированы ранее разработанные простые сценарии для демонстрации возможностей параллельной обработки. Эмуляция ситуации, при которой большие объемы данных единожды извлекаются из нескольких источников, а затем просчитываются множеством не очень сложных сценариев.

Анализируемые данные:

  • CSV-файл – 49.7 млн. записей (7.1 Гб);
  • CSV-файл – 31.0 млн. записей (7.4 Гб).

Результаты второго тестирования

Задача 3. Высоконагруженная обработка

Трижды продублированы все этапы обработки: от импорта данных до выгрузки результатов. Данные необходимо одновременно прогнать через все этапы обработки, а не только через блок расчетов. Это типичный кейс работы высоконагруженных систем.

Анализируемые данные:

  • 4 * CSV-файл – 49.7 млн. записей (7.1 Гб)
  • 4 * CSV-файл – 31.0 млн. записей (7.4 Гб)

Повторяется вся обработка полностью, включая импорт.

Результаты третьего тестирования

Заключение

Loginom демонстрирует выдающуюся эффективность и производительность в сравнении с любой аналитической low-code платформой даже при использовании настольной редакции без тонких настроек. Чем больше источников и объемы данных, тем сильнее отрыв.

Подробнее о техниках, позволяющих обеспечить высокую скорость обработки данных, экономном расходование памяти и возможности масштабирования в выступлении Арустамова Алексея, CEO Loginom Company:

pdfLoginom – low-code аналитика на предельной скорости.pdf

Если вы хотите применять аналитическую low-code платформу Loginom для решения задач бизнеса, свяжитесь с нами.

Другие материалы по теме:

Экосистема Loginom: что пользователю нужно знать о платформе

Loginom-ускорители: как сделать за полчаса аналитику, на которую обычно уходит месяц

#loginom day 2023#масштабирование#скорость

Смотрите также