Часть 3. Объектная модель системы в БДСравнение БД FineBI и Tableau
Так как перед использованием FineBI был опыт использования Tableau, то напрашивается сравнение структур объектных моделей системы в БД для данных систем.
Можно отметить, что ключевым отличием по возможности мониторинга работы Tableau является предельно подробная БД по основным сущностям системы с описаниями для таблиц «из коробки». FineBI предоставляет в пользование существенно менее удобную систему, в которой администратору предлагается разобраться самостоятельно.
По сути, в FineBI присутствует только техническая система хранения информации для работы с ПО, и она не адаптирована под цели полноценного администрирования системы на основе данных БД.
В 2024 году вендор предоставил возможность формирования ряда системных таблиц с информацией о сущностях системы и иерархиях в формате датасетов на основе подключаемых классов java. Решение в целом правильное, но есть некоторые сложности с первоначальной настройкой. Подключается к платформе с помощью FineReport. Из минусов отметим, что данные хранятся во внутреннем формате датасетов, а не таблицах БД. Поэтому для ряда кейсов мониторинга потребуется дополнительная синхронизация их с данными в таблицах БД. Мы подключали его на тест, но решили не использовать на PROD-среде, так как большая часть кейсов была решена нами в рамках данных из FineDB и LogDB.
В FineBI существуют две связанные концептом БД — FineDB и LogDB. При этом это разные БД по своей организации. FineDB — это реляционная БД, в то время как LogDB — это файловая БД, доступная только через драйвер swift. В FineDB, в основном, содержатся параметры, объекты и связи объектов. В LogDB содержатся события изменений, которые разработчик ПО посчитал нужным логировать. Отмечу, что полная история переходов записей может быть получена только при мониторинге каждой записи управляющих структур FineDB. Данной реализации не предусмотрено.
Избыточность структур FineDB подразумевает, что БД ориентирована, в первую очередь, на работу с ПО. Поэтому часть таблиц БД мало информативна и содержит по факту только 2−3 значимых свойства сущности.
В Tableau БД одна. Она более простая по своей организации и содержит выделенные базовые сущности. Правка сущностей на уровне БД способна изменять их свойства.
В случае с FineBI примечательна ситуация, что вендор по общему правилу не рекомендует вносить самостоятельно какие-либо изменения в БД. Но иногда он даёт на это прямые указания, как в случае с внесением изменений в настроечные параметры (таблица fine_conf_entity БД FineDB). То есть корректировка управляющих структур теоретически возможна, но с этим есть сложности.
Описание FineDB
На сайте вендора существует в целом достаточно полное описание БД на английском и китайском языках. При этом готовых кейсов сбора основных сущностей и формирования связей в интернете крайне мало. По некоторым вопросам их вообще нет.
В связи с необходимостью мониторинга внутреннего состояния объектов системы нами была проведена большая работа по приведению в единое целое разрозненной и связанной неявно информации об основных сущностях и отношениях между ними на основании документации по БД FineDB, LogDB, а также собственных изысканий по интеграции с нашими процессами. По части вопросов мы обращались к GlowByte и разработчику ПО.
Подробнее вопросы о структуре БД, особенностях и практических кейсах для FineDB, а также LogDB будут рассмотрены в последующих публикациях позднее.
Системные отчёты для мониторингаОбъединение информации позволило разработать группы системных отчётов, отражающих отдельные аспекты работы системы. Мы активно используем их в своей работе и готовы поделиться наработками. При этом реализация конечного решения всегда остаётся за командой сопровождения. Вариантов организации FineDB уже сейчас как минимум четыре: на основе бесплатных MySQL, Oracle, SQL Server и платного решения на Postgres. Это разные диалекты построения SQL-запросов и формирования процедур.
Уверен, что многие команды администрирования системы также имеют свои кейсы построения системной отчётности по работе системы. При этом, как правило, команды разных компаний не делятся своими наработками по разным соображениям.
Потребности администрирования системы FineBI, как правило, определяются кейсами решения практических задач обслуживания.
Условно их можно разделить на группы:
- Мониторинг доступов УЗ на объекты через всю схему ролей (с целью проверки и планирования).
- Мониторинг использования:
- учётных записей,
- дашбордов,
- датасетов,
- подключений,
- API,
- других объектов системы.
3. Мониторинг нагрузки системы через потребление ресурса:
- пользователями (просмотр, выгрузка данных),
- разработчиками (просмотр, редактирование, экспорты),
- загрузкой данных в датасеты,
- расчётами для датасетов производных данных.
4. Алертинг на критичные сбои в нормальной работе приложения.
Базовые сущностиСписок базовых сущностей системы:
- дашборды;
- компоненты (в версии старше 6.0);
- датасеты, производные от первичных источников данных разных уровней,
- первичные источники данных (таблицы БД, SQL выборки, Excel и CSV Server Dataset);
- подключения к источникам (БД, файловые коннекторы, в т. ч. swift);
- ролевые группировки УЗ:
7. разрешения УЗ на объекты;
8. связи вышеперечисленных объектов между собой, в том числе построение иерархии объектов;
9. расписания обновлений на каталоги и непосредственно датасеты.
Неправильно сказать, что в системе отсутствует информация о сущностях, но часть кейсов требует глубокого погружения в структуру БД FineDB. Я предпочёл бы иметь готовые кейсы построения таблиц данных работы системы «из коробки» вместо самостоятельного построения структур и их потенциальной повторной сборке от одной «мажорной» версии к другой. Так как вендор оставляет на своё усмотрение изменение состава и структуры используемых таблиц, то это приводит к тому, что часть кейсов сборки структур и связей напрямую из FineDB версии 5 не может быть воспроизведена в версии 6.
Потенциально данные преобразования могут произойти и при переходе между «минорными» версиями. Это способно нарушать уже собранные решения при описании модели системы. Таким образом, это потенциально может нарушить отдельные части функционала системной отчётности.
Вопросы построения базовых сущностей для версии 6.0.+ мы рассмотрим подробнее в последующих статьях.