Управление данными в корпоративных информационных системах становится всё более сложной задачей. Вслед за ростом бизнеса увеличивается объём и разнообразие обрабатываемой информации, что увеличивает нагрузку на ИТ‑отделы.

Возьмём, к примеру, систему управления ИТ‑услугами (ITSM) в крупной компании. По мере развития компании расширяется номенклатура типовых запросов в каталоге услуг. При традиционном подходе к организации каталога услуг для каждого типового запроса создается отдельная таблица, что снижает производительность системы и усложняет процесс её администрирования.

Расширенная модель записи (REM) является решением этой проблемы. Этот подход позволяет использовать одну таблицу для хранения типовых запросов. REM — это не теоретическая концепция, а проверенный на практике подход, который уже помогает оптимизировать работу информационных систем, ускорять разработку и снижать затраты на поддержку. Все бизнес‑приложения SimpleOne используют REM подход: от систем управления ИТ‑услугами до инструментов автоматизации корпоративных продаж.

Разрабатывая приложение ITSM мы столкнулись с вопросом организации данных в каталоге услуг. Чтобы конкурировать с другими системами наш каталог должен был быть гибким и масштабируемым. Поэтому в нашей Low‑code платформе мы реализовали подход REM. Сегодня мы расскажем, как он устроен и почему использование REM подхода это важное преимущество для любой корпоративной системы — Александр Жуланов, руководитель команды бизнес‑решений SimpleOne.

Простыми словами о подходе REM

Расширенная модель записи (REM, Record Extended Model) — это подход к организации данных, который позволяет динамически расширять модель данных таблицы.

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

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

Аналогия с книгой и стикерами

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

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

Рассмотрим, как это работает в каталоге услуг. Запросы из каталога хранятся в единой таблице. Каждый запрос содержит базовую информацию — кто и когда создал запрос, трекинг номер запроса, тему запроса и т. д. При регистрации запроса может запрашиваться специфичная информация. Например, в запросе на выдачу оборудования нужно указать тип оборудования, а в запросе на отпуск поле «Тип оборудования» не пригодится. Для добавления специфичных атрибутов (полей) мы используем REM‑модель (далее по тексту — Модель). Модель будет привязана к запросу и будет хранить в себе специфические поля этого запроса. К каждому запросу может быть привязана одна модель.

Преимущества этого подхода:

  • Гибкость: легко добавить новый тип запросов, просто создав модель и добавив в нее атрибуты (поля).

  • Эффективность: запрос с моделью содержит только релевантные поля. При необходимости мы расширяем запись в основной таблице при помощи модели.

  • Масштабируемость: можно создать сколько угодно моделей для реализации всех запросов к каталоге услуг без увеличения количества полей в основной таблице.

Рассмотрим, почему возникла необходимость в таком подходе.

Сравнение с традиционным подходом к расширению модели данных

  1. Существует основная таблица «Задачи» со следующими полями:

    • Трекинг‑номер

    • Название

    • Статус

    • Дата создания

    • Исполнитель

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

а) Таблица «Задачи АХО»:

  • Все поля из таблицы «Задачи» + дополнительные поля:

    • Тип оборудования

    • Инвентарный номер

    • Местоположение

б) Таблица «Задачи на разработку»:

  • Все поля из таблицы «Задачи» + дополнительные поля:

    • Связанный проект

    • Продуктовый модуль

    • Тестовое покрытие

в) Таблица «Задачи техподдержки»:

  • Все поля из таблицы «Задачи» + дополнительные поля:

    • Связанная услуга

    • Влияние на бизнес

    • Срочность

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

Расширение модели данных путем создания дочерних таблиц
Расширение модели данных путем создания дочерних таблиц

Такая модель данных работает нормально при небольшом количестве дочерних таблиц и полей в дочерних таблицах.

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

Конечно мы можем поступить по‑другому и создать нужное поле в несколько дочерних таблиц. В таком случае нам придется совершать рутинные действия не только при создании но и при будущей настройке полей, если возникнет необходимость изменить свойства поля во всех дочерних таблицах. Один из базовых принципов программирования DRY (Don't Repeat Yourself, не повторяй себя) говорит нам о том, что совершать повторяющиеся действия нехорошо. Мы можем настроить атрибуты неодинаково, что приведет к нежелательному результату.

Основные недостатки традиционного подхода:

  • Избыточность данных: часть атрибутов родительской таблицы не используются в дочерних таблицах.

  • Сложность управления: создание множества полей усложняет настройку форм, построение условий фильтрации.

  • Снижение производительности: запросы в БД становятся тяжелее, что требует увеличения мощности системы.

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

Расширенная модель записи (REM) предлагает альтернативный подход:

  1. Используется единая таблица для всех типов задач;

  2. Создаются модели, определяющие наборы дополнительных атрибутов для разных типов задач;

  3. Значения дополнительных атрибутов хранятся в отдельных таблицах и связываются с основной записью через модель.

Расширение модели данных при помощи моделей REM
Расширение модели данных при помощи моделей REM

Преимущества такого подхода:

  • Гибкость: легко добавлять типы записей и поля без изменения структуры БД;

  • Эффективность: хранятся только фактически используемые данные;

  • Улучшенная производительность: запросы к основной таблице остаются простыми;

  • Упрощенное управление: общая логика работы с записями унифицирована.

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

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

Структура и компоненты REM

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

  1. Модель

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

Особенности моделей:

  • Модель содержит атрибуты или их коллекции;

  • Модель может быть связана только с одной таблицей.

  1. Атрибут

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

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

  1. Коллекция

Коллекции — это группы атрибутов, которые можно повторно использовать в разных моделях. Они позволяют создавать логические наборы связанных атрибутов и применять их в различных REM‑моделях.

Назначение коллекций:

  • Упрощение управления общими группами атрибутов;

  • Обеспечение согласованности данных между разными типами записей;

  • Возможность централизованного обновления группы атрибутов.

Пример:

Рассмотрим работу с коллекциями на примере расширения модели для таблицы ЗнО (Запросы на обслуживание). Допустим, нам необходимо добавить в каталог услуг «Запрос на выдачу оборудования». Для этого создадим модель, в которую будут добавлены атрибуты «Тип оборудования», «Модель оборудования», «Количество», «Адрес доставки», «Предпочтительная дата доставки».

Если часть атрибутов будут использоваться в других запросах следует вынести их в коллекцию. Создадим коллекцию «Доставка» с атрибутами «Адрес доставки», «Предпочтительная дата доставки» и свяжем ее с моделью «Запрос на выдачу оборудования».

При реализации другого запроса «Заказ расходных материалов», в которых будет необходимо указывать реквизиты доставки — используем коллекцию «Доставка».

Структурная схема компонентов REM
Структурная схема компонентов REM

Как работать с REM?

Создание и настройка моделей

  1. Определите таблицу, к которой будет привязана модель;

  2. Задайте уникальное имя и описание модели;

  3. Укажите, будет ли модель доступна в каталоге услуг после её создания.

Пример:

  • Модель: «Запрос на выдачу оборудования»

  • Таблица: «Запросы на обслуживание»

  • Описание: «Запросите замену или выдачу нового оборудования»

  • Активна: Да

Работа с атрибутами

Атрибуты — это поля модели, которые будут размещены на форме запроса в каталоге услуг.

Шаги по созданию атрибута:

  1. Перейдите в модель или коллекцию;

  2. Выберите тип атрибута (строка, число, дата и т. д.);

  3. Задайте заголовок и имя атрибута;

  4. Определите, является ли атрибут обязательным для заполнения;

Пример:

  • Наименование: «Тип оборудования»

  • Тип: Список выбора

  • Обязательный: Да

  • Возможные значения (опции): «Ноутбук», «Монитор», «Клавиатура», «Мышь»

Создание и использование коллекций

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

Процесс создания коллекции:

  1. Укажите имя коллекции

  2. Определите таблицу, к которой будет привязываться коллекция;

  3. Добавьте в коллекцию атрибуты;

  4. Свяжите коллекцию с моделями.

Пример:

  • Коллекция: «Доставка»

  • Атрибуты: «Адрес доставки», «Предпочтительная дата доставки»

  • Связана с моделями: «Запрос на оборудование», «Заказ расходных материалов».

Настройка клиентских скриптов модели

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

Преимущества и особенности использования REM-подхода

Расширенная модель записи (REM) имеет ряд особенностей, которые важно учитывать при её использовании.

  1. Область применения

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

  1. Проектирование коллекций

Старайтесь не создавать коллекции с избыточным числом атрибутов. Все атрибуты в коллекции должны использоваться. Например, коллекция «ФИО» с атрибутами Фамилия, Имя, Отчество или коллекция «Габариты» с атрибутами Ширина, Высота, Глубина. Наборы атрибутов в этих коллекциях объединены семантически и не являются избыточными.

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

  1. Ограничения связей между моделями и коллекциями

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

  • Для добавления коллекции в модель, коллекция должна быть связана с той же таблицей, что и модель или быть связанной с таблицей, которая является родительской для таблицы, с которой связана модель;

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

  1. Технические ограничения

При проектировании системы следует учитывать технические особенности используемой СУБД, например, в PostgreSQL существует ограничение в 1600 колонок на таблицу, что может стать фактором при планировании очень крупных систем. REM позволяет обойти этот лимит на количество колонок в таблице.

Заключение

Расширенная модель записи (REM) представляет собой мощный и гибкий подход к организации данных в современных информационных системах. Этот метод особенно эффективен в условиях, где требуется работа с разнородными типами данных и существует потребность в частой адаптации структуры данных к изменяющимся бизнес‑требованиям. REM особенно хорошо подходит для систем с обширным каталогом услуг или продуктов, где каждый тип записи может иметь уникальный набор атрибутов.

Опыт использования REM в различных корпоративных решениях SimpleOne: ITSM, ITAM, HRMS, SDLC, B2B CRM подтверждает эффективность этого подхода. От управления ИТ‑активами до автоматизации корпоративных продаж — везде, где требуется гибкая работа с разнородными данными, REM демонстрирует свои преимущества.

Комментарии (3)


  1. zodchiy
    21.11.2024 08:12

    Прочитал и не понял, REM это что-то типа EAV? Или чем-то отличается?


    1. alixa
      21.11.2024 08:12

      Тоже не понял, сначала подумал что-то более крутое, а так похоже на EAV просто ребрендинг


    1. FireproofFenix Автор
      21.11.2024 08:12

      Подход REM является улучшенной версией модели EAV (Entity–attribute–value). Основное отличие для пользователя это возможность повторного использования атрибутов в нескольких моделях (через коллекции).