Loginom: что под «капотом»

4 апреля 2023
0 комментариев

Описание технологического базиса low-code платформы Loginom: состав, архитектура, реализация фронт- и бэкенда, функционал, производительность. Ответы на наиболее часто задаваемые технические вопросы.

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

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

Cостав платформы

Loginom функционирует как серверное приложение для коллективной работы, либо как настольное приложение для персональной аналитики.

Серверные редакции

Серверные редакции платформы включают следующие компоненты:

  1. Server. Основной обязательный компонент платформы, предназначен для развертывания во внутренней сети или облаке. Предполагает коллективную работу нескольких пользователей с различных рабочих мест.
  2. Studio. Тонкий клиент — браузер. Клиентское веб-приложение, предназначенно для проектирования сценариев обработки, визуализации данных, настройки сервера, управления правами пользователей. Фактическая обработка данных выполняется Loginom Server-ом.
  3. Integrator. Опциональный компонент платформы. Предоставляет возможность публиковать собственные веб-сервисы: REST (JSON) и SOAP (XML).
  4. Adapter. Опциональный компонент, который обеспечивает интеграцию Loginom Server с нестандартными веб-сервисами, например, Бюро кредитных историй. Позволяет проводить сложные преобразования для приведения XML-запроса к стандартному виду, который может быть обработан другими компонентами платформы Loginom.

Настольные редакции

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

Loginom Desktop — это обычное приложение, выполняемое на компьютере пользователя. В него встроен локальный сервер Loginom для расчетов и Chromium Embedded Framework для отображения пользовательского интерфейса. Доступ к локальной сети или интернету приложению не требуется.

Редакция функционирует под Windows не ниже версии 10 и Linux не ниже версии ядра 5.3.

Loginom Desktop под Linux использует кроссплатформенную библиотеку элементов интерфейса GTK3 и может быть установлен на дистрибутивы операционной системы, поддерживающие GTK3, с минимальной версией ядра 5.3 Если планируется использование Python-a, то минимальная версия ядра 4.11. Кроме того, в некоторых случаях используются утилиты xdg-open и dbus-send, значение переменной окружения DESKTOP_SESSION.

Варианты развертывания

Loginom не накладывает ограничения на способы развертывания. Доступны следующие варианты:

  • персональный компьютер;
  • серверы предприятия;
  • частное облако (private cloud);
  • публичное облако (public cloud).

Платформа готова для работы в облаке. При наличии документации компании-провайдера Loginom Company подготовит образ для развертывания в любом облаке. Готовый к использованию сервис с оплатой за время работы доступен на платформе Yandex Cloud.

Серверные редакции могут функционировать в контейнерах. Тестировалось со следующими версиями инструментов контейнеризации:

  • Docker (20.10.16 и выше) и Docker Compose (1.27.1 и выше).
  • Podman (4.2.1 и выше) и Podman Compose (1.0.3 и выше).

В дистрибутив Loginom под Linux включены скрипты для создания собственных образов. Следовательно возможно создание контейнеров, включающих не только компоненты платформы Loginom, но и вспомогательное ПО: клиенты для доступа к базам данных, интерпретатор Python с инсталлированными библиотеками, пакеты Loginom, файлы с данными и прочее.

Использование Docker и Podman позволяет обеспечить выполнение политик безопасности, ограничить объем потребляемых ресурсов (памяти, процессоров...), повысить отказоустойчивость, упросить мониторинг, автоматизировать процессы развертывания и масштабирования. Кроме того контейнеры предоставляют возможность работы поверх устаревших версий ОС, в которых отсутствуют необходимые библиотеки.

Особенности реализации

Технологический стек

Для разработки платформы используются 7 языков программирования: Assembler, C, C++, C#, Pascal, TypeScript, JavaScript. Выбор обоснован требованиями обеспечения высокой производительности и экономного расхода оперативной памяти.

Используемые библиотеки: Acorn, ALGLIB, Ararat Synapse, AvlTree.TypeScript , Brian Gladman's SHA, BrianGladman's AES, CEF4Delphi , ChakraCore, ClickHouse C++ client, CodeMirror, DateTimeField, Ext JS, FileSaver.js, Firebird, ICU, jsPDF, LIBLINEAR, librdkafka , libxml2, libxslt, Log4D, LZ4, MariaDB Connector/C , Mbed TLS, Metadata Reflection API, MKL, Newtonsoft.Json, NLog, NSwag, OpenSSL , PCRE2 , Plotly.js, Promise Polyfill, SoapCore, SQLCipher, Swagger UI, SynLZO , TCMalloc, Tern, xxHash.

Кроме этого в Loginom используется .NET Core, веб-сервер Apache HTTP Server, фреймворк Chromium Embedded Framework и семейство шрифтов Source Sans Pro.

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

Архитектура

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

Поддерживаемые браузеры: Chrome, Firefox, Opera, Safari, Edge.

Studio — тонкий клиент, обменивается данными с Loginom Server по протоколу WebSocket. Соединение между ними может устанавливаться одним из двух способов — напрямую с сервером Loginom, либо через WebSocket proxy, настроенном на web-сервере.

Взаимодействие Server — Studio без wsproxy (по умолчанию):

Взаимодействие с Loginom Server без wsproxy

Взаимодействие Server — Studio с использованием wsproxy:

Взаимодействие с Loginom Server с wsproxy

Веб-сервер, указанный в схемах, используется для предоставления статических данных, например, JavaScript-файлов, таблиц стилей или иконок. При необходимости он же может выступать в качестве прокси между браузером и Loginom Server.

В случае применения Integrator обеспечивается возможность обращаться к Loginom Server извне посредством API (SOAP+WSDL или REST JSON).

Взаимодействие Loginom Integrator с Server при работе поверх Windows:

Взаимодействие Loginom Integrator с Server — Windows

При работе поверх Linux вызов сервисов Loginom может осуществляться как за счет обращения напрямую к Integrator, так и опционально через Apache HTTP Server:

Взаимодействие Loginom Integrator с Server — Linux

Loginom Server и Integrator в редакции Team могут быть установлены только на одном сервере. Для коммуникаций между ними используется Unix domain socket.

В редакциях Standard и Enterprise компоненты Server и Integrator могут функционировать как на одной машине, так и на разных. При работе на одном сервере взаимодействие между ними осуществляется посредством Unix domain socket или TCP, а на разнесенных — только при помощи TCP.

В платформе имеются компоненты интеграции с SOAP и REST сервисами, которые реализуют наиболее распространенные варианты взаимодействия с веб-сервисами.

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

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

Loginom Adapter выполняет следующие функции:

  • Преобразует полученный из сценария Loginom SOAP-запрос к формату запроса внешнего веб-сервиса;
  • Направляет преобразованный запрос во внешний веб-сервис;
  • Получает ответ внешнего веб-сервиса;
  • Преобразует полученный ответ и в формате SOAP возвращает его сценарию Loginom.

Типичная схема взаимодействия компонентов системы с использованием Adapter

Взаимодействие между Loginom Server и Adapter происходит по протоколу SOAP при помощи компонента «SOAP-запрос». Далее Adapter обращается к нестандартному сервису по индивидуальному протоколу с возможностью шифрования с использованием сертификатов.

Если для работы с нестандартными веб-сервисами Loginom Adapter потребуются сторонние инструменты, например, криптопровайдеры (Cryptography Service Provider, CSP) или Java Runtime Environment (JRE), то эти компоненты необходимо установить на сервер вместе с Adapter.

Loginom Server, Integrator и Adapter способны функционировать в гетерогенной IT среде. Например, возможна работа Server под Linux совместно с Adapter под Windows, либо любые другие сочетания операционных систем и компонентов платформы.

Операционные системы

Серверные компоненты аналитической платформы функционируют на операционных системах Windows и Linux.

Windows:

  • Loginom Server. Работает поверх Windows Server версии 2019 и выше. Установка дополнительных продуктов или фреймворков не требуется
  • Loginom Integrator. Функционирует поверх Microsoft IIS версии IIS 8.0 и выше. Необходим ASP.NET Core 6.0.
  • Loginom Adapter. Требует наличия ряда компонентов IIS и .Net Framework. Подробное описание см. в разделе Установка Loginom Adapter.

Linux:

  • Loginom Server. Функционирует под Linux (Kernel 5.3 и выше, стандартная библиотека glibc 2.28 и выше).
  • Loginom Integrator. Запускается под Linux на базе .Net Core.

Server и Integrator при работе без контейнеров запускаются как сервис systemd, а в случае работы внутри контейнера как процесс с PID 1.

Протестированные дистрибутивы: Astra Linux 1.7.3, Debian 11.5, Fedora 36, OpenSUSE 15.4, Ubuntu 22.04, РЕД ОС 7.3.2.

Реализация Back-End

Loginom сервер спроектирован как монолитная система, но при использовании кластера серверов возможна организация взаимодействия по принципам слабосвязанных распределенных компонентов (сервисов).

Loginom Server обеспечивает вертикальное масштабирование и эффективную утилизацию ресурсов одного сервера:

  • поддержка параллелизма;
  • In-Memory Computing — вычисления в оперативной памяти;
  • оптимальное хранение данных в ОЗУ;
  • специализированный менеджер памяти;
  • исключение промежуточных слоев абстракции за счет низкоуровневого кодирования ядра.

При использовании нескольких Server и Integrator возможно построение кластера серверов, обеспечивающих отказоустойчивость, горячую и холодную замену, горизонтальное масштабирование и балансировку нагрузки.

В Loginom Integrator реализован тривиальный способ распределения задач и балансировки нагрузки между серверами Loginom: распределение задач по циклу между серверами с учетом загруженности узла. Для реализации более сложной оркестрации необходимо применение дополнительного программного обеспечения.

Возможна реализация различных кластерных архитектур, например, единый кластер серверов, где все Intergator-ы связаны cо всеми Server-ами,

Схема единого кластера серверов

либо кластер, состоящий из независимых контуров, каждый из которых включает один Integrator и один Server.

Схема кластера, состоящего из независимых контуров

либо любой их комбинации.

При функционировании в режиме кластера каждый ее компонент (сервис) является самодостаточным и автономным в разрезе исполнения возложенной на него задачи.

Реализация Front-End

Клиент реализован как одностраничное приложение (Single Page Application), использующее единственный HTML-документ как оболочку для всех веб-страниц и организующее взаимодействие с пользователем через динамически подгружаемые HTML, CSS, JavaScript, обычно посредством AJAX. Постоянный доступ к сети обязателен, т.к. вся реальная обработка происходит на сервере.

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

Для экономии веб-трафика используется сжатие и пакетная передача данных через собственный быстрый Remote Procedure Call (RPC), оптимизированный для обработки больших объемов данных и минимизации количества обращений клиента к серверу.

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

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

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

Возможности стилизации пользовательского интерфейса под корпоративные стандарты отсутствуют.

Функциональные возможности

Проектирование сценариев

Логической единицей платформы является пакет. Он представляет собой XML и бинарные файлы, упакованные ZIP-ом. Пакет включает в себе все сущности, которые доступны в Loginom, а также ссылки на другие пакеты, компоненты которых могут быть импортированы.

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

Loginom базируется на идее объектно-ориентированного моделирования, т.е. каждый узел сценария является не просто обработчиком, а классом с возможностью наследования. Ключевым компонентом платформы является подмодель — контейнер, включающий в себя другие узлы. Уровень вложенности подмоделей не ограничен.

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

Поддерживаются две стратегии проектирования сценариев:

  1. Cнизу вверх. Разработка всегда начинается с импорта данных, к которым последовательно применяются те или иные алгоритмы обработки. Подобный подход оптимален для быстрого прототипирования и реализации относительно простой логики трансформации данных.
  2. Сверху вниз. Сначала определяются входы и выходы подмодели, т.е. описывается логика интеграции подмодели в сценарий. Затем реализуется собственно алгоритм обработки, с учетом определенных ранее требований к входам и выходам. Данный подход лучше использовать для создания компонентов, которые планируется в будущем переиспользовать.

Использование кода в сценариях

Low-code идеология допускает применение языков программирования для реализации сложной логики. В Loginom встроена поддержка 2-х популярных языков программирования: Python и JavaScript.

Python

Взаимодействие между узлом Python и другими узлами сценария Loginom происходит посредством Data API, реализующего интерфейсы получения и передачи данных на входных и выходных портах.

Применение Python в однопоточном режиме не требует загрузки/выгрузки данных в файлы или какие-либо другие приемники/источники. Data API позволяет «лениво» получать данные (переменные и таблицы) из входного потока и выгружать обработанные результаты (таблицу) в выходной поток.

При включенной опции запускать в отдельном процессе анализируемые данные выгружаются в промежуточные файлы и запускаются отдельные процессы интерпретатора Python для каждого узла.

В узле Python доступен вспомогательный модуль builtin_pandas_utils, позволяющий преобразовывать наборы данных Loginom в pandas DataFrame и обратно.

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

JavaScript

Для получения и передачи данных на входных и выходных портах узел JavaScript используется интерфейс Data API, полностью идентичный реализованному в компоненте Python. Data API предоставляет данные в узел JavaScript «лениво».

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

Кроме этого компонент JavaScript поддерживает:

  • Fetch API — интерфейс для работы с HTTP-запросами и ответами, предоставляющий возможность взаимодействия с веб-сервисами и ресурсами сети непосредственно из узла JavaScript.
  • File Storage API — интерфейс, позволяющий выполнять все файловые операции: чтение/запись файлов, создание папок и прочее. Достоинством реализации данного API в компоненте JavaScript является то, что данные действия выполняются безопасно как в настольных, так и в серверных версиях. В настольных редакциях допускается обращение ко всей файловой системе (с учетом прав пользователя), в серверных редакциях предоставляется доступ только к изолированной области файлового хранилища и к общим папкам, настроенным администратором. Благодаря этому File Storage API не требует предоставления пользователю Loginom прав администратора или выполнения иных небезопасных действий.

Предоставляется возможность подгружать готовые библиотеки JavaScript. Поддерживаются 2 модульные спецификации: EcmaScript 6 и CommonJS.

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

Файловое хранилище

Настольные редакции имеют доступ ко всем объектам на рабочей станции с учетом прав пользователя, а в серверных редакциях для работы с файлами и папками предназначено файловое хранилище:

  • Хранилище физически расположено на сервере, где запущен Loginom;
  • Каждому пользователю предоставляется собственное изолированное пространство в хранилище;
  • Имеется возможность создавать общие папки, права на которые раздаются администратором.

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

Отчетность

В платформу встроено множество вариантов визуализации, в том числе и OLAP-модуль — Куб. Куб является мощным средством многомерного анализа, отображающий данные в виде кросс-таблиц и кросс-диаграмм. Он поддерживает все варианты интерактивного манипулирования данными: группировку, сортировку, drill-down, детализацию, расчет многомерных показателей и прочее. Просмотреть данные при помощи куба можно после любого шага обработки.

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

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

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

В случае, если возможностей визуализации средствами платформы не достаточно, предусмотрена интеграция со специализированными BI системами: Visiology, Tableau, Yandex Datalens и прочее.

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

Логирование и мониторинг

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

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

В Windows редакциях для записи в лог-файл Loginom используется формат Log4j (проект Apache Logging Project). Парсинг файлов данного формата поддерживается множеством библиотек и инструментов.

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

  1. Централизованное управление логами
  2. Просмотр логов в режиме реального времени
  3. Возможности фильтрации и поиска
  4. Конвертация в текст и JSON
  5. Отправка логов на сторонний сервер
  6. Множество готовых инструментов анализа логов

Благодаря наличию стандартных логов возможно построение систем мониторинга «здоровья» сервера с применением дополнительных инструментов, например, Elasticsearch, Grafana и прочее.

Контроль версий, DevOps, CI/CD

Loginom не имеет встроенной поддержки репозитория моделей, DevOps, CI/CD. Для реализаций данного функционала предлагается решение Loginom DevOps, представляющее собой набор инструментов, преднастроенных сред, скриптов и соглашений об оформлении, автоматизирующих все этапы жизненного цикла разработки и эксплуатации моделей.

Loginom DevOps построен на базе популярного стека: Git, GitLab, Docker, NGINX, Gitbook, NodeJS. Ввод в эксплуатацию Loginom DevOps требует адаптации скриптов к инфраструктуре заказчика.

Интеграционные возможности

Взаимодействие с внешними системами

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

Способы интеграции с внешними системами:

  • Чтение и запись в файлы;
  • Импорт и экспорт в базу данных;
  • HTTP запросы (SOAP и JSON);
  • Взаимодействие с системами посредством фирменного API, SDK или библиотек.

При реализации HTTP запросов для создания TLS-соединения используется OpenSSL, а в качестве HTTP-клиента — Synapse. В редакции Loginom под Windows если требуется аутентификация при помощи сертификата клиента, размещенного в хранилище сертификатов Windows, используется Secure Channel.

Для импорта из 1Сv8 используется COM-соединение. В Loginom задается запрос к учетной системе на SQL-подобном языке 1С. Запросы можно составлять как на кириллице, так и на латинице. В запросе используются сущности учетной системы (регистры, журналы, справочники...), т.к. он обрабатывается сервером 1С. Для работы через COM-соединение необходима установка толстого клиента 1С той же разрядности, что и разрядность приложения/сервера Loginom.

Для экспорта в Tableau применяется Tableau SDK, позволяющий сформировать файлы в форматах hyper и tde. Созданный файл с загруженными данными можно опубликовать, отправив на сервер Tableau при помощи REST запроса (посредством Synapse + OpenSSL).

Поддерживаемые базы данных

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

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

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

Поддерживаются следующие системы.

Тип источника данныхНаименование/формат
ФайлыExcel, Loginom Data File, XML, CSV-файл
Реляционные базы данныхRedDB, Firebird, Interbase, MS Access, MS SQL, MySQL, Oracle, PostgreSQL, SQLite
Колоночные базы данныхBigQuery, Yandex ClickHouse
ODBCTeradata, Hive, HP Vertica и др.
Веб-сервисыSOAP (XML + WSDL), REST-сервисы (OpenAPI)
Бизнес-системы1C: Предприятие 8.x*
BI-системыVisiology, Yandex DataLens, Tableau*
Брокеры сообщенийKafka

*только в редакции Loginom под Windows.

Loginom поддерживает встраиваемую СУБД SQLite, не требующую развертывания и администрирования. SQLite представляют собой библиотеку, присоединённую к серверу Loginom. Она обеспечивает высокую производительностью и малый расход памяти, благодаря специализированному API, минимизирующему число операций чтения-записи. SQLite поддерживает шифрование.

Для работы с NoSQL базами возможно использование механизма REST-запросов, также поддерживаемого платформой Loginom.

Хранилище данных

Loginom имеет встроенную поддержку реляционного хранилища данных (ROLAP) на базе 3-х СУБД: Oracle, MS SQL, Firebird. При помощи конструктора разрабатывается схема хранилища, т.е. устанавливается соответствие между объектами предметной области: процессами, измерениями и фактами, формируя семантический слой. Есть встроенные обработчики для импорта и экспорта в хранилище данных.

Благодаря семантическому слою, пользователь оперирует не полями и колонками таблиц базы данных, а бизнес-терминами, такими как клиент, товар, сумма продажи и прочее. При импорте/экспорте данных система автоматически производит все требуемые манипуляции, необходимые для работы с реляционной СУБД и формирует корректный SQL-запрос. Таким образом, семантический слой дает пользователю возможность сосредоточиться на анализе и не задумываться о механизмах получения данных.

Импорт из хранилища данных

Импорт из хранилища данных

Публикация веб-сервисов

Для публикации собственных веб-сервисов необходимо применение опционального компонента платформы — Loginom Integrator. Пользователю, публикующему веб-сервис, должны быть предоставлены соответствующие права.

В качестве веб-сервиса можно опубликовать любой узел сценария, но чаще всего объектом публикации является подмодель. Кодирование не обязательно. Создается одновременно 2 типа сервисов: XML с WSDL описанием и REST JSON с OpenAPI описанием. Документация по API формируется автоматически.

При вызове GET или POST методов можно передать параметры на входные порты опубликованного узла, реализующего логику обработки. GET позволяет передать только переменные, а POST — переменные, таблицы, деревья.

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

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

Пакетное выполнение

Настроенные сценарии можно запустить не только в интерактивном, но и в пакетном режиме. Для этого необходимо дать серверу Loginom команду выполнить сценарий, что можно сделать 2-мя способами:

  1. При помощи утилиты BatchLauncher;
  2. Отправив запрос к веб-сервису.

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

В утилиту пакетного выполнения можно передавать параметры, а по окончанию BatchLauncher возвращает код завершения программы. Ошибки выполнения выводятся в консоль и записываются в лог на сервере.

При наличии прав, дать команду на запуск пакетной обработки можно как с сервера, так и с любой рабочей станции, имеющей доступ к Loginom Server. В этом случае BatchLauncher подключится к серверу по TCP протоколу и запустит сценарий.

Для запуска пакетной обработки необходимо использовать внешний планировщик задач, например, Task Scheduler в Windows или Cron в Linux.

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

Таким образом, пакетное выполнение может быть запущено как по регламенту при помощи утилиты, так и по событию за счет вызова веб-сервиса.

Масштабируемость и производительность

Производительность

Loginom — одна из самых высокопроизводительных low-code платформ продвинутой аналитики в мире, что достигается за счет оптимизации на всех уровнях:

  1. Собственный формат хранения. Loginom Data File — самый быстрый из реализованных в платформе источников данных. Потоковое сжатие/распаковка в момент записи/чтения, экономия дискового пространства благодаря оптимальному хранению строк, асинхронное чтение данных.
  2. Быстрый доступ к базам данных. Работа с большинством СУБД осуществляется напрямую с использованием быстрых библиотек доступа и поддержкой пакетного чтения/записи (batch read/write).
  3. Совместная память с базой данных. При работе на одном сервере, некоторые базы данных, например, такие как Firebird и MySQL позволяет использовать механизм shared memory. В этом случае данные не передаются между СУБД и Loginom, а аналитическая платформа получает результаты из общей памяти.
  4. Параллелизм. Loginom эффективно утилизирует ресурсы многоядерных систем, выполняя в параллельном режиме все возможные операции: сценарии обработки, чтение/запись, машинное обучение, циклы и прочее. При необходимости имеется возможность ручного задания порядка выполнения.
  5. MapReduce. Узел Цикл предоставляет возможность реализации паттерна MapReduce на многоядерной системе, т.е. разбиения набора данных на блоки, параллельная обработка каждого блока с последующим объединением полученных результатов в единый выходной набор. При корректном проектировании сценариев, это обеспечивает практически линейный рост скорости обработки с увеличением количества ядер.
  6. In-memory. Loginom выполняет расчеты в памяти, старается данные удерживать в ОЗУ и по умолчанию хранит только уникальные записи. Скорость работы с ОЗУ оптимизирована за счет выделения и освобождения памяти большими блоками. Используются структуры данных, вмещающиеся в кэш процессора.
  7. Ленивые вычисления. Используется стратегия расчетов, согласно которой вычисления откладываются до тех пор, пока не понадобится их результат. Это позволяет экономить ресурсы и повысить производительность, ограничивая расчеты только теми ситуациями, когда они действительно необходимы.
  8. Управление кэшированием. При необходимости аналитик может гибко управлять кэшированием данных в сценариях. Можно настроить кэширование при активации узла или при обращении к данным, доступно кэширование всего набора данных или выбранных полей.
  9. Быстрые алгоритмы. Применяются самые быстрые математические библиотеки, написанные на низкоуровневых языках программирования. Данные обрабатываются окнами и хранятся в памяти в специальных структурах с учетом особенностей каждого алгоритма. Алгоритмы реализованы таким образом, чтобы обеспечить эффективную работу в многоядерных системах.
  10. Формулы и код. При использовании формул строятся и кэшируется синтаксические деревья выражений. Производится Just-in-Time компиляция и кэширование JavaScript кода и регулярных выражений.

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

Пропускная способность

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

Для оценки пропускной способности платформы указаны некоторые показатели, которые были достигнуты в проектах:

  1. Среднее время обработки запроса для 95% заявок в кредитном конвейере, без учета времени ожидания ответов внешних сервисов — 1-2 секунды.
  2. Пропускная способность системы принятия решений для 95% заявок, без учета времени ожидания ответов внешних сервисов, при пиковом потоке запросов — 5000 запросов в час на 1 сервер.
  3. Пиковые запросы к системе принятия решений — в кластере из 3-х северов более 10 000 заявок в час.

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

Безопасность

Пользователи

Серверные редакции платформы предоставляют возможность управления пользователями, которые могут заводиться локально. В Enterprise редакции платформы доступно использование LDAP аутентификации. В качестве LDAP сервера может использоваться как Active Directory, так и OpenLDAP.

Предусмотрено 4 роли пользователей:

  • Проектирование сценариев
  • Просмотр отчетов
  • Пакетное выполнение
  • Администрирование

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

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

Обращение к внешним ресурсам

Сервер Loginom не собирает и не отправляет в скрытом фоновом режиме информацию на внешние ресурсы. Однако клиент обращается к сайту loginom.ru при помощи вызова REST API для получения следующей информации:

  • Новости компании, отображаемые на странице Начало;
  • Номер последней версии Loginom для информирования о наличии обновлений на странице Начало и О программе.

При этом обращения к сайту loginom.ru осуществляются не сервером, а браузером или настольным приложением.

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

Если ваша компания заинтересована во внедрении Loginom, свяжитесь с нами.

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

Loginom 7.0 — описание изменений

Loginom Help — онлайн-документация для пользователей и администраторов

#low-code#архитектура#аналитический инструмент

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