Bronze слой

Слой Bronze содержит две отдельные схемы данных, каждая из которых обслуживает разные аспекты платформы телематики и бизнес-аналитики:

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

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

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

raw_business_data структура

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

circle-info

Интерактивная диаграмма схемы raw_business_data доступна на dbdiagram.io: https://dbdiagram.io/d/V3-bronze-layer-68ecfd1c2e68d21b4131089aarrow-up-right

Ниже приведены детали схемы raw business data.

chevron-rightсхема raw_business_datahashtag

Частота обновления

Данные в этой схеме синхронизируются с основной БД. Обновления происходят инкрементально по мере изменений в исходной базе данных MySQL, как правило, с задержкой менее 5 минут от момента изменения в источнике.

description_parameters

Система включает справочные данные для стандартизации значений по всей базе данных:

Тип справочника
Описание
Примеры значений

Определения типов

Стандартные типы сущностей

vehicle_type: car, truck, bus

Коды статусов

Значения статусов задач и системы

tasks_status: unassigned, assigned, done

Определения единиц

Единицы измерения для датчиков

units_type: liter, gallon, celsius

Классификации сущностей

Категории бизнес-сущностей

entities_type: place, task, customer

Ключевые таблицы по категориям

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

Основные бизнес-сущности

chevron-rightusershashtag

Назначение: Информация об учетной записи и профиле пользователя

Атрибут
Детали

Ключевые поля

user_id, company_label, first_name, last_name, middle_name, locale, timezone_label, master_id, registration_datetime

Связи

Родительский пользователь через master_id, связанный с employees, departments, places, tasks через user_id

Особые замечания

Центральная сущность, связывающая организационные данные; master_id обеспечивает иерархии пользователей для многоуровневых структур аккаунтов

chevron-rightemployeeshashtag

Назначение: Записи сотрудников и водителей с данными о лицензиях и назначениях

Атрибут
Детали

Ключевые поля

employee_id, user_id, object_id, department_id, first_name, last_name, driver_license_number, driver_license_valid_till, hardware_key

Связи

Связи с users, departments, objects (назначенный трекер), отслеживается в driver_history и checkins

Особые замечания

Аппаратный ключ позволяет идентифицировать водителя через iButton или RFID; поддерживает геозоны с latitude, longitude, radius поля

chevron-rightdepartmentshashtag

Назначение: Организационные подразделения с географическим расположением

Атрибут
Детали

Ключевые поля

department_id, user_id, department_label, latitude, longitude, radius, address

Связи

Связывает сотрудников с организационной структурой через department_id

Особые замечания

Поля местоположения поддерживают аналитики на основе геозон для отчетности на уровне подразделений

Отслеживание и мониторинг

chevron-rightdeviceshashtag

Назначение: Информация о физическом трекере и состоянии сети

Атрибут
Детали

Ключевые поля

device_id, owner_id, device_imei, phone, status_listing_id, network_label, signal_level, has_roaming, created_at

Связи

Основная сущность, связывающая с objects, models, sensor_description, counters; owner_id references users.user_id

Особые замечания

Все телематические данные в raw_telematics_data схеме ссылаются на эту таблицу через device_id

chevron-rightobjectshashtag

Назначение: Контролируемые сущности (транспортные средства, активы, персонал)

Атрибут
Детали

Ключевые поля

object_id, client_id, device_id, object_label, model, group_id, create_datetime, is_deleted

Связи

Центральный узел, связывающий устройства с пользователями (client_id), сведениями о транспортных средствах, историей отслеживания, заданиями и правилами

Особые замечания

Представляет «отслеживаемую единицу» в системе; один объект на устройство в активном использовании

chevron-rightmodelshashtag

Назначение: Технические характеристики и возможности устройства

Атрибут
Детали

Ключевые поля

model_id, model, vendor, alternative_label, analog_amount, digital_amount, outputs_amount, has_battery_level, has_altitude, has_phone

Содержимое

Булевы флаги возможностей указывают, какие поля данных доступны для этого типа устройства

Особые замечания

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

chevron-rightsensor_descriptionhashtag

Назначение: Конфигурация и калибровочные данные датчика

Атрибут
Детали

Ключевые поля

sensor_id, device_id, sensor_label, input_label, sensor_type, units_type, multiplier, divider, accuracy, calibration_data

Связи

Связывает входы устройства (из raw_telematics_data.inputs) с бизнес-логикой через device_id и input_label matching

Особые замечания

calibration_data (JSONB) хранит калибровочные таблицы, специфичные для датчиков уровня топлива; multiplier и divider преобразовывать сырые значения в единицы

Управление активами

chevron-rightvehicleshashtag

Назначение: Технические характеристики транспортных средств, документация и эксплуатационные параметры

Атрибут
Детали

Ключевые поля

vehicle_id, user_id, object_id, garage_id, vehicle_label, registration_number, vin, manufacture_year, fuel_type, fuel_cost, standard_fuel_consumption, max_speed

Связи

Связи с objects (текущий трекер), garages (место обслуживания), vehicle_service_tasks; отслеживается в vehicle_trackers_history

Особые замечания

Поля физических размеров (payload_length, payload_width, payload_height, gross_weight) поддерживают аналитику планирования загрузок; даты страхования обеспечивают отслеживание соответствия требованиям

chevron-rightgarageshashtag

Назначение: Места обслуживания и ремонтные площадки

Атрибут
Детали

Ключевые поля

garage_id, user_id, latitude, longitude, radius, address, organization_label, mechanic_name, dispatcher_name

Связи

Ссылается из vehicles.garage_id для назначения места обслуживания

Особые замечания

Поля местоположения позволяют обнаруживать посещения сервисов на основе геозон и выполнять анализ близости

chevron-rightvehicle_service_taskshashtag

Назначение: Графики обслуживания и история ремонтов

Атрибут
Детали

Ключевые поля

service_task_id, vehicle_id, description, status, cost, start_date, end_date, completion_date, predicted_datetime, mileage_limit, engine_hours_limit

Содержимое

Поддерживает три типа триггеров: по дате, по пробегу, по часам работы двигателя; настройки уведомлений для электронной почты, SMS, push

Особые замечания

is_repeat и поля интервала позволяют создавать повторяющиеся графики обслуживания; is_unplanned различает плановое и реактивное обслуживание

Местоположение и маршрутизация

chevron-rightzoneshashtag

Назначение: Геозоны для мониторинга и автоматизации

Атрибут
Детали

Ключевые поля

zone_id, client_id, zone_label, zone_type, latitude, longitude, circle_center_latitude, circle_center_longitude, radius, address, color

Содержимое

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

Связи

Ссылается из rules2zones, users2zones; вершины полигона хранятся в geofence_points

Особые замечания

Функции PostGIS можно использовать для проверки принадлежности точки многоугольнику при сложном анализе геозон

chevron-rightplaceshashtag

Назначение: Точки интереса с пользовательскими атрибутами

Атрибут
Детали

Ключевые поля

place_id, user_id, place_label, latitude, longitude, radius, address, description, external_id, custom_fields

Связи

Расширяется значениями пользовательских полей через places_text_fields, places_decimal_fields, places_bigint_fields, places_longtext_fields, places_linked_entity_fields

Особые замечания

custom_fields JSONB обеспечивает быстрый доступ; связанные таблицы позволяют фильтровать и сортировать по пользовательским атрибутам

chevron-rightgeofence_pointshashtag

Назначение: Координаты вершин полигона для сложных форм геозон

Атрибут
Детали

Ключевые поля

zone_id, number, latitude, longitude

Связи

Несколько записей на zone_id определяют границы полигона; number поле определяет порядок вершин

Особые замечания

Запрашивайте с ORDER BY number чтобы восстановить путь полигона; используйте вместе с PostGIS ST_MakePolygon для геометрических операций

Управление задачами и рабочими процессами

chevron-righttaskshashtag

Назначение: Назначения работ и отслеживание выполнения

Атрибут
Детали

Ключевые поля

task_id, user_id, object_id, parent_task_id, task_label, status, task_type, latitude, longitude, radius, arrival_datetime, created_at, status_change_datetime, custom_fields

Содержимое

Поддерживает иерархические задачи через parent_task_id; временные окна определяются с помощью time_from/time_to; проверка по геозоне с местоположением и радиусом

Связи

Связи с forms (сбор данных), task_history (изменения статусов), objects (назначенный трекер)

Особые замечания

stay_duration и arrival_duration_minutes позволяют контролировать соответствие требованиям для задач доставки и обслуживания

chevron-rightformshashtag

Назначение: Формы сбора данных и отправки

Атрибут
Детали

Ключевые поля

form_id, task_id, object_id, form_label, поля, values, submitted_at, submission_latitude, submission_longitude, is_submission_in_zone

Содержимое

поля определяет структуру формы (JSON); values содержит отправленные данные (JSON)

Связи

Связи с tasks (связанная рабочая заявка), objects (отправитель), ссылается в checkins

Особые замечания

Флаг проверки местоположения is_submission_in_zone включает правила отправки форм, основанные на геозонах

chevron-rightcheckinshashtag

Назначение: Записи посещений и активности с привязкой к местоположению

Атрибут
Детали

Ключевые поля

checkin_id, employee_id, object_id, form_id, user_id, planned_datetime, actual_datetime, latitude, longitude, radius, address, comment

Связи

Связывает сотрудников с формами и местоположениями; отслеживает отклонения от планового расписания

Особые замечания

Разница во времени между planned_datetime и actual_datetime позволяет формировать отчеты о пунктуальности; радиус определяет допустимую погрешность по местоположению

chevron-righttask_historyhashtag

Назначение: Журнал аудита жизненного цикла задачи

Атрибут
Детали

Ключевые поля

task_history_id, task_id, user_id, activity, event_datetime, payload

Содержимое

Типы активности определены в description_parametrs; payload хранит детали, специфичные для события (текст)

Особые замечания

Необходим для анализа завершения задач, отчетности по переходам статусов и отслеживания активности пользователей

Правила и автоматизация

chevron-rightruleshashtag

Назначение: Триггеры событий и настройки оповещений

Атрибут
Детали

Ключевые поля

rule_id, object_id, client_id, event_type, event_label, event_group, description, parameters, alert_email, alert_sms, alert_phone, is_push_enabled, created_at, is_deleted

Содержимое

Параметры правила (JSONB) определяют условия срабатывания; поддерживаются уведомления по электронной почте, SMS, телефону и push

Связи

Связи с объектами через rules2objects, зонами через rules2zones

Особые замечания

event_type определяет конкретный сценарий мониторинга (превышение скорости, нарушение геозоны, порог датчика); maximum поле позволяет агрегировать события для оповещений на основе порогов

chevron-rightrules2objectshashtag

Назначение: Связи правила с объектами с параметрами, специфичными для экземпляра

Атрибут
Детали

Ключевые поля

rule_id, object_id, param_group_number, object_params

Содержимое

object_params (JSONB) позволяет настраивать правила для каждого объекта (например, разные ограничения скорости для разных транспортных средств)

Особые замечания

Отношение многие-ко-многим позволяет одному правилу контролировать несколько объектов с разными параметрами

chevron-rightrules2zoneshashtag

Назначение: Ассоциирует правила с триггерами геозон

Атрибут
Детали

Ключевые поля

rule_id, zone_id

Особые замечания

Отношение многие-ко-многим позволяет одному правилу контролировать несколько зон (например, оповещать при входе в любую из нескольких запрещенных зон)

Статусы и категоризация

chevron-rightstatuseshashtag

Назначение: Пользовательские определения статусов для списков статусов

Атрибут
Детали

Ключевые поля

status_id, listing_id, status_label, color, order_sort, is_deleted

Связи

Группы статусов, организованные по listing_id (ссылки на status_listings); используются в status_history

Особые замечания

order_sort определяет последовательность отображения; цвет обеспечивает визуальное различие в отчетах

chevron-rightstatus_listingshashtag

Назначение: Наборы статусов для устройств или сотрудников

Атрибут
Детали

Ключевые поля

status_listing_id, user_id, status_listing_label, is_supervisor_controlled, is_employee_controlled, is_deleted

Связи

Ссылается из devices.status_listing_id и statuses.listing_id

Особые замечания

Флаги контроля определяют, кто может изменять статусы: только руководитель, самостоятельное управление сотрудником или оба варианта

chevron-rightstatus_historyhashtag

Назначение: Журнал аудита изменений статусов

Атрибут
Детали

Ключевые поля

status_history_id, device_id, old_status_id, new_status_id, updated_by, changed_datetime, server_datetime, latitude, longitude, address

Связи

Связи с devices, statuses (старый и новый), description_parametrs (для updated_by role)

Особые замечания

Фиксация местоположения позволяет проводить географический анализ переходов статусов; полезно для отчетов о местах начала/окончания рабочего дня

chevron-righttagshashtag

Назначение: Метки категоризации, определяемые пользователем

Атрибут
Детали

Ключевые поля

tag_id, user_id, tag_label, color

Связи

Применяется к сущностям через tag_links; область действия определяется пользователем

Особые замечания

Гибкая система категоризации с поддержкой нескольких меток для одной сущности

Группы и иерархия

chevron-rightgroupshashtag

Назначение: Организационная группировка объектов (трекеров)

Атрибут
Детали

Ключевые поля

group_id, client_id, group_label, group_color

Связи

Ссылается из objects.group_id; владение клиентом через client_id (ссылки на users)

Особые замечания

Обеспечивает организацию сущностей мониторинга в виде папок для отчетности и управления правами

chevron-rightgroups_objectshashtag

Назначение: Отношение многие-ко-многим между группами и объектами

Атрибут
Детали

Ключевые поля

Составной первичный ключ: groups_client_id, objects_client_id

Особые замечания

Позволяет объектам одновременно принадлежать нескольким группам; запрашивайте по обоим client_id значениям для членства в группе

Пользовательские поля и сущности

chevron-rightentitieshashtag

Назначение: Определения типов сущностей для фреймворка пользовательских полей

Атрибут
Детали

Ключевые поля

entity_id, user_id, entity_label, builtin_type

Связи

Ссылается из custom_fields для определения, какие пользовательские поля применимы к каким типам сущностей

Особые замечания

builtin_type связи с description_parametrs для системно-определенных классификаций сущностей

chevron-rightcustom_fieldshashtag

Назначение: Определения пользовательских полей

Атрибут
Детали

Ключевые поля

custom_field_id, entity_id, custom_field_label, custom_field_type, description, is_required, parameters

Содержимое

parameters (JSONB) хранит конфигурацию, специфичную для типа поля (правила валидации, варианты выпадающих списков и т.д.)

Связи

Определяет доступные пользовательские атрибуты для сущностей; тип поля ссылается на description_parametrs

Особые замечания

Позволяет динамически расширять схему без изменений базы данных; широко используется в places и tasks

Историческое отслеживание

chevron-rightdriver_historyhashtag

Назначение: Журнал изменений назначения сотрудника к объекту

Атрибут
Детали

Ключевые поля

driver_history_id, object_id, old_employee_id, new_employee_id, hardware_key, changed_datetime, server_datetime, updated_by, latitude, longitude, address

Связи

Отслеживает назначения водителей на транспортные средства во времени; ссылается на employees и objects

Особые замечания

Необходим для отчетности по водителям при смене ими транспортных средств; фиксация местоположения позволяет анализировать место смены назначения

chevron-rightvehicle_trackers_historyhashtag

Назначение: Журнал изменений назначения транспортного средства к трекеру

Атрибут
Детали

Ключевые поля

vehicle_tracker_history_id, vehicle_id, object_id, changed_datetime

Связи

Отслеживает, какое GPS-устройство было установлено в какое транспортное средство со временем

Особые замечания

Критично для анализа исторических данных при переносе трекеров между транспортными средствами; обеспечивает точное распределение пробега и использования

Справочные и справочные данные

chevron-rightdescription_parametrshashtag

Назначение: Системные справочные данные и значения перечислений

Атрибут
Детали

Ключевые поля

key, type, description

Содержимое

Обеспечивает человекочитаемые метки для кодированных значений по всей базе данных (статус задачи, типы топлива, типы счетчиков и т.д.)

Связи

Ссылается через внешние ключи из множества таблиц для стандартизированной категоризации

Особые замечания

Необходимо для преобразования целочисленных кодов в читаемые значения в отчетах; type группы полей, связанные перечисления

chevron-rightcountershashtag

Назначение: Конфигурация отслеживания одометра и часов работы двигателя

Атрибут
Детали

Ключевые поля

counter_id, device_id, counter_type, sensor_id, multiplier

Связи

Связывает устройства с показаниями датчиков, представляющими счетчики расстояния или времени

Особые замечания

multiplier преобразует импульсы датчика в реальные единицы (км, мили, часы); counter_type от description_parametrs определяет тип измерения

chevron-rightdevice_output_namehashtag

Назначение: Пользовательские метки для каналов вывода устройства

Атрибут
Детали

Ключевые поля

device_id, number, метка

Содержимое

Сопоставляет номера каналов вывода с именами, заданными пользователем (например, "Door Lock", "Engine Block")

Особые замечания

Обеспечивает читаемую отчетность при анализе команд и состояний вывода устройства

raw_telematics_data структура

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

Bronze layer raw telematics data ERD
ERD необработанных телематических данных бронзового уровня
circle-info

Интерактивная диаграмма схемы raw_telematics_data доступна на dbdiagram.io: https://dbdiagram.io/d/v1-schema-telematics-bd-67a0acef263d6cf9a0d8e750arrow-up-right

Ниже приведены подробности схемы необработанных телематических данных.

chevron-rightсхема raw_telematics_datahashtag

Ключевые таблицы по категориям

Каждая таблица выполняет определенную функцию в фиксации различных аспектов информации об устройстве:

chevron-righttracking_data_corehashtag

Назначение: Основные данные о местоположении и движении

Атрибут
Детали

Ключевые поля

device_id, device_time, platform_time, latitude, longitude, speed, altitude, satellites, hdop, event_id

Индексация

Оптимизирована с индексом по (device_id, device_time)

Особые замечания

Данные о местоположении (широта и долгота) используют целочисленный формат с точностью 10⁷ для оптимальной производительности TimescaleDB Скорость также хранится как целое число, поэтому её необходимо делить на 100

chevron-rightinputshashtag

Назначение: Считывания датчиков с устройств

Атрибут
Детали

Ключевые поля

input_id, device_id, device_time, sensor_name, value

Содержимое

Аналоговые показания (уровень топлива, температура, напряжение), вычисляемые значения (обороты двигателя)

Связи

chevron-rightstateshashtag

Назначение: Индикаторы состояния устройства и режимы работы

Атрибут
Детали

Ключевые поля

state_id, device_id, device_time, state_name, value

Содержимое

Индикаторы режимов работы (работа, холостой ход, выключено), состояния компонентов (зажигание, двери)

Формат значения

Булевы значения (1/0) или специфические коды состояния

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

Дополнительная информация

Проверка данных

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

  • CONSTRAINT CHECK проверяют, что значения находятся в допустимых пределах

  • Внешние ключи обеспечивают согласованность связей между таблицами

  • Ограничения NOT NULL гарантируют, что обязательные поля всегда имеют значения

  • ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ обеспечивают резервный вариант, когда данные явно не предоставлены

Оптимизация запросов

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

  • Все таблицы включают индексы, основанные на времени по record_added_at

  • Столбцы внешних ключей имеют выделенные индексы для повышения производительности соединений

  • Часто используемые сочетания колонок имеют составные индексы

  • TimescaleDB предоставляет специализированные индексы для запросов по временным рядам

repo структура данных

circle-exclamation

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

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

circle-info

Интерактивная диаграммаrepo схемы данных доступна на dbdiagram.io: https://dbdiagram.io/d/Navixy-Repo-data-schema-68ad788c1e7a611967a0930earrow-up-right

Ниже найдите repo подробности схемы.

chevron-rightrepo схема данныхhashtag

Частота обновления

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

ci_base

Схема repo схема использует шаблон Single Table Inheritance для всех справочных данных через ci_base таблицу:

Схема repo схема использует Single Table Inheritance шаблон для всех справочных данных через ci_base таблицу. Такой дизайн объединяет системные словари, классификации и элементы справочника, определяемые пользователем, в единую структуру, обеспечивая согласованность и гибкость во всей схеме.

Архитектура:

Схема ci_base таблица служит основой для всех справочных данных, используя дискриминатор поле для идентификации конкретного типа справочника. У каждого типа справочника есть соответствующая таблица (например ci_device_type, ci_asset_type), которая разделяет тот же id что и ci_base, создавая типобезопасное отношение наследования.

Как бизнес-сущности подключаются к ci_base:

Все бизнес-сущности в repo схеме ссылаются на ci_base подтипы для определения своей классификации и поведения:

  • organization → ссылается на ci_organization_type (который наследует от ci_entity_typeci_base)

  • user → ссылается на ci_user_type (который наследует от ci_entity_typeci_base)

  • device → ссылается на ci_device_type и ci_device_status (оба наследуют от ci_base)

  • asset → ссылается на ci_asset_type (который наследует от ci_entity_typeci_base)

  • inventory → ссылается на ci_inventory_type (который наследует от ci_entity_typeci_base)

  • asset_group → ссылается на ci_asset_group_type (который наследует от ci_entity_typeci_base)

Категории типов справочников:

Категория
Таблицы
Назначение

Конфигурация системы

ci_module, ci_country, ci_role

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

Определения типов сущностей

ci_entity_type, ci_device_type, ci_asset_type, ci_inventory_type, ci_organization_type, ci_user_type, ci_asset_group_type

Классифицируют все бизнес-сущности по типам

Статусы и классификация

ci_device_status, ci_asset_type_category

Отслеживают состояния сущностей и группируют типы в категории

Контроль доступа

ci_permission_scope

Определяют, какие разрешения могут быть предоставлены (связано с ci_module и ci_entity_type)

Связи

ci_device_relation_type

Определяют типы отношений между устройствами (master-slave, backup и т. д.)

Категоризация

ci_tag, ci_catalog_category

Обеспечивают гибкую систему тегирования и организацию каталога

chevron-rightПримеры шаблонов запросовhashtag

Ключевые таблицы по категориям

Таблицы в repo схема организована по функциональным категориям. Описания ниже суммируют наиболее важные таблицы по их бизнес-целям.

chevron-rightorganizationhashtag

Назначение: Иерархическое управление организацией

Атрибут
Детали

Ключевые поля

id, parent_id, path, organization_type_id, title_en, is_active, deleted_at

Индексация

GiST-индекс на path для иерархических запросов, индексы на parent_id и organization_type_id

Особые замечания

Использует ltree для многоуровневых иерархий, наследует от customizable_entity для поддержки настраиваемых полей

chevron-rightuserhashtag

Назначение: Учетные записи пользователей и аутентификация

Атрибут
Детали

Ключевые поля

id, organization_id, user_type_id, identity_provider, identity_provider_id, full_name, is_active

Индексация

Уникальный индекс на (organization_id, identity_provider, identity_provider_id)

Особые замечания

Интеграция внешних провайдеров идентификации (Keycloak, Auth0, Okta), наследует от customizable_entity

chevron-rightdevicehashtag

Назначение: Физические трекер-устройства

Атрибут
Детали

Ключевые поля

id, organization_id, device_type_id, status_id, hw_id, метка

Индексация

Индексы на organization_id, device_type_id, status_id, hw_id

Особые замечания

Аппаратный идентификатор для отслеживания устройств, наследует от customizable_entity для настраиваемых полей

chevron-rightassethashtag

Назначение: Физические или виртуальные активы

Атрибут
Детали

Ключевые поля

id, organization_id, asset_type_id, метка, description

Индексация

Индексы на organization_id и asset_type_id

Особые замечания

Наследует от customizable_entity, связаны с устройствами через device_asset_link

chevron-rightinventoryhashtag

Назначение: Записи об инвентаризации и складские записи

Атрибут
Детали

Ключевые поля

id, organization_id, inventory_type_id, code

Индексация

Уникальный индекс на (organization_id, code)

Особые замечания

Уникальные коды в рамках организации, связаны с устройствами через device_inventory_link

chevron-rightasset_grouphashtag

Назначение: Группировка активов с историческим учетом

Атрибут
Детали

Ключевые поля

id, organization_id, group_type_id, title_en, description

Связи

FROM repo.asset_group AS ag JOIN repo.asset_group_item AS agi ON agi.group_id = ag.id JOIN repo.asset AS a ON a.id = agi.asset_id WHERE agi.detached_at IS NULL

Особые замечания

Членство, основанное на времени, через asset_group_item, текущих участников запросить с помощью WHERE detached_at IS NULL

chevron-rightcustom_field_defhashtag

Назначение: Определения и метаданные настраиваемых полей

Атрибут
Детали

Ключевые поля

id, organization_id, owner_entity_type_id, code, field_type, is_multi, is_required

Содержимое

Типы полей включают text, number, boolean, date, datetime, entity_ref, catalog_item_ref

Особые замечания

Обеспечивает гибкие настраиваемые поля для любых типов сущностей, значения хранятся в тип-специфичных custom_field_value_* таблицах

chevron-rightacl_role_permissionhashtag

Назначение: Управление разрешениями на основе ролей

Атрибут
Детали

Ключевые поля

id, role_id, permission_scope_id, target_entity_id, actions

Содержимое

Битовая маска действий (READ=1, UPDATE=2, DELETE=4, CREATE=8), разрешения целенаправленные на конкретный объект или на уровне типа сущности

Связи

FROM repo.user_role AS ur JOIN repo.acl_role_permission AS rp ON rp.role_id = ur.role_id WHERE ur.user_id = $user_id

Особые замечания

Работает с user_role и acl_user_scope для определения итоговых разрешений пользователя

chevron-rightaudit_eventhashtag

Назначение: Единый журнал аудита для всех изменений в системе

Атрибут
Детали

Ключевые поля

id, event_category, user_id, aggregate_type, aggregate_id, event_type, event_data, occurred_at

Индексация

Индексы на (user_id, occurred_at), (aggregate_type, aggregate_id, occurred_at), (event_category, occurred_at)

Особые замечания

Разделяется по occurred_at (ежемесячно), две категории: auth (аутентификация) и domain (бизнес-события), хранит дельты изменения по полям в event_data JSONB

Связи данных

Схема repo схема реализует сложные шаблоны связей для гибкого моделирования данных:

Иерархические структуры

  • Организации используют пути ltree для эффективных древовидных запросов

  • Элементы справочника (ci_base) поддерживают необязательные иерархии

  • Автоматическое поддержание путей с помощью триггеров базы данных

Шаблоны наследования

  • Наследование таблиц: customizable_entity → бизнес-сущности (organization, user, device, asset, inventory, asset_group)

  • Наследование ID: ci_base → таблицы типов справочников

  • Различение типов через entity_type_id и дискриминатор поля

Полиморфные связи

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

  • acl_role_permission.target_entity_id → любой customizable_entity

  • acl_user_scope.target_entity_id → любой customizable_entity

  • entity_tag.entity_id → любой customizable_entity

Эти связи проверяются на уровне приложения.

Дополнительная информация

Проверка данных

Схема repo схема обеспечивает целостность данных с помощью нескольких механизмов:

Ограничения базы данных

  • UNIQUE-ограничения с поддержкой мягкого удаления (частичные индексы WHERE deleted_at IS NULL)

  • CHECK-ограничения (например, device_relation обеспечивает master_idslave_id)

  • NOT NULL-ограничения для обязательных полей

  • ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ для временных меток и булевых флагов

Проверка на уровне приложения

  • Проверка типа сущности для полиморфных ссылок

  • Проверка каталога для ссылок на настраиваемые поля

  • Проверка типов настраиваемых полей

  • Управление массивами для полей с несколькими значениями

Оптимизация запросов

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

Стандартные индексы:

  • У всех внешних ключей имеются соответствующие индексы

  • Временные индексы на created_at, updated_at, deleted_at

  • Составные индексы для часто объединяемых столбцов

Специализированные индексы:

  • GiST-индексы на путях ltree для иерархических запросов

  • Частичные уникальные индексы с поддержкой мягкого удаления

  • Индексы значений настраиваемых полей для фильтрации и сортировки

  • Индексы событий аудита по времени + сущности для эффективных поисков

Соображения по производительности:

  • Рекомендуется пул соединений (PgBouncer)

  • Регулярное выполнение VACUUM для больших таблиц

  • Возможное будущее разделение по партициям для device таблицы по organization_id

  • Материализованные представления для сложных вычислений контроля доступа

Последнее обновление

Это было полезно?