Управление данными в корпоративных информационных системах становится всё более сложной задачей. Вслед за ростом бизнеса увеличивается объём и разнообразие обрабатываемой информации, что увеличивает нагрузку на ИТ‑отделы.
Возьмём, к примеру, систему управления ИТ‑услугами (ITSM) в крупной компании. По мере развития компании расширяется номенклатура типовых запросов в каталоге услуг. При традиционном подходе к организации каталога услуг для каждого типового запроса создается отдельная таблица, что снижает производительность системы и усложняет процесс её администрирования.
Расширенная модель записи (REM) является решением этой проблемы. Этот подход позволяет использовать одну таблицу для хранения типовых запросов. REM — это не теоретическая концепция, а проверенный на практике подход, который уже помогает оптимизировать работу информационных систем, ускорять разработку и снижать затраты на поддержку. Все бизнес‑приложения SimpleOne используют REM подход: от систем управления ИТ‑услугами до инструментов автоматизации корпоративных продаж.
Разрабатывая приложение ITSM мы столкнулись с вопросом организации данных в каталоге услуг. Чтобы конкурировать с другими системами наш каталог должен был быть гибким и масштабируемым. Поэтому в нашей Low‑code платформе мы реализовали подход REM. Сегодня мы расскажем, как он устроен и почему использование REM подхода это важное преимущество для любой корпоративной системы — Александр Жуланов, руководитель команды бизнес‑решений SimpleOne.
Простыми словами о подходе REM
Расширенная модель записи (REM, Record Extended Model) — это подход к организации данных, который позволяет динамически расширять модель данных таблицы.
В основе подхода лежит идея хранения специфических полей отдельно от полей основной таблицы. Вместо добавления полей в основную таблицу, REM позволяет добавлять специфические поля в конкретную запись основной таблицы.
Прежде чем углубиться в технические детали, давайте рассмотрим аналогию, которая поможет лучше понять дальнейший материал.
Аналогия с книгой и стикерами
Представьте, что у вас есть книга. В среднем, на каждой странице книги помещается стандартный объем текста. Допустим, некоторые страницы книги нужно дополнить информацией. Для решения этой задачи удобно использовать стикеры.
Аналогично при использовании REM мы добавляем дополнительную информацию в некоторые записи основной таблицы.
Рассмотрим, как это работает в каталоге услуг. Запросы из каталога хранятся в единой таблице. Каждый запрос содержит базовую информацию — кто и когда создал запрос, трекинг номер запроса, тему запроса и т. д. При регистрации запроса может запрашиваться специфичная информация. Например, в запросе на выдачу оборудования нужно указать тип оборудования, а в запросе на отпуск поле «Тип оборудования» не пригодится. Для добавления специфичных атрибутов (полей) мы используем REM‑модель (далее по тексту — Модель). Модель будет привязана к запросу и будет хранить в себе специфические поля этого запроса. К каждому запросу может быть привязана одна модель.
Преимущества этого подхода:
Гибкость: легко добавить новый тип запросов, просто создав модель и добавив в нее атрибуты (поля).
Эффективность: запрос с моделью содержит только релевантные поля. При необходимости мы расширяем запись в основной таблице при помощи модели.
Масштабируемость: можно создать сколько угодно моделей для реализации всех запросов к каталоге услуг без увеличения количества полей в основной таблице.
Рассмотрим, почему возникла необходимость в таком подходе.
Сравнение с традиционным подходом к расширению модели данных
Существует основная таблица «Задачи» со следующими полями:
Трекинг‑номер
Название
Статус
Дата создания
Исполнитель
Создаются дочерние таблицы для разных типов задач:
а) Таблица «Задачи АХО»:
Все поля из таблицы «Задачи» + дополнительные поля:
Тип оборудования
Инвентарный номер
Местоположение
б) Таблица «Задачи на разработку»:
Все поля из таблицы «Задачи» + дополнительные поля:
Связанный проект
Продуктовый модуль
Тестовое покрытие
в) Таблица «Задачи техподдержки»:
Все поля из таблицы «Задачи» + дополнительные поля:
Связанная услуга
Влияние на бизнес
Срочность
Каждая дочерняя таблица наследует все поля родительской таблицы и дополняет их своими специфическими полями.
Такая модель данных работает нормально при небольшом количестве дочерних таблиц и полей в дочерних таблицах.
Предположим, что нам необходимо добавить обязательное поле в часть дочерних таблиц. Если добавить поле в основную таблицу, поле унаследуют все таблицы и нам придется дополнительно переопределять обязательность на уровне таблиц, где поле не будет использоваться.
Конечно мы можем поступить по‑другому и создать нужное поле в несколько дочерних таблиц. В таком случае нам придется совершать рутинные действия не только при создании но и при будущей настройке полей, если возникнет необходимость изменить свойства поля во всех дочерних таблицах. Один из базовых принципов программирования DRY (Don't Repeat Yourself, не повторяй себя) говорит нам о том, что совершать повторяющиеся действия нехорошо. Мы можем настроить атрибуты неодинаково, что приведет к нежелательному результату.
Основные недостатки традиционного подхода:
Избыточность данных: часть атрибутов родительской таблицы не используются в дочерних таблицах.
Сложность управления: создание множества полей усложняет настройку форм, построение условий фильтрации.
Снижение производительности: запросы в БД становятся тяжелее, что требует увеличения мощности системы.
Трудности с настройкой: сложно реализовать специфическую бизнес‑логику для отдельных дочерних таблиц.
Расширенная модель записи (REM) предлагает альтернативный подход:
Используется единая таблица для всех типов задач;
Создаются модели, определяющие наборы дополнительных атрибутов для разных типов задач;
Значения дополнительных атрибутов хранятся в отдельных таблицах и связываются с основной записью через модель.
Преимущества такого подхода:
Гибкость: легко добавлять типы записей и поля без изменения структуры БД;
Эффективность: хранятся только фактически используемые данные;
Улучшенная производительность: запросы к основной таблице остаются простыми;
Упрощенное управление: общая логика работы с записями унифицирована.
REM особенно эффективен в системах с большим разнообразием типов данных, где каждый тип записи будет иметь уникальный набор атрибутов.
Этот подход позволяет создавать гибкие и масштабируемые системы, способные адаптироваться к изменяющимся требованиям бизнеса без необходимости постоянного изменения структуры базы данных.
Структура и компоненты REM
Расширенная модель записи (REM) состоит из нескольких компонентов, которые взаимодействуют друг с другом, обеспечивая гибкость и эффективность управления данными. Рассмотрим каждый из этих компонентов подробнее.
Модель
Модель является ключевым элементом подхода REM и определяет набор полей (атрибутов). Каждая модель связана с основной таблицей.
Особенности моделей:
Модель содержит атрибуты или их коллекции;
Модель может быть связана только с одной таблицей.
Атрибут
Атрибуты — это поля, которые будут добавлены вместе с моделью к записи из основной таблицы. Значения атрибутов хранятся в отдельных таблицах и связываются с основной записью через модель.
Атрибуты могут быть таких же типов как и поля в таблицах: строковые, числовые, ссылочные и т. д.
Коллекция
Коллекции — это группы атрибутов, которые можно повторно использовать в разных моделях. Они позволяют создавать логические наборы связанных атрибутов и применять их в различных REM‑моделях.
Назначение коллекций:
Упрощение управления общими группами атрибутов;
Обеспечение согласованности данных между разными типами записей;
Возможность централизованного обновления группы атрибутов.
Пример:
Рассмотрим работу с коллекциями на примере расширения модели для таблицы ЗнО (Запросы на обслуживание). Допустим, нам необходимо добавить в каталог услуг «Запрос на выдачу оборудования». Для этого создадим модель, в которую будут добавлены атрибуты «Тип оборудования», «Модель оборудования», «Количество», «Адрес доставки», «Предпочтительная дата доставки».
Если часть атрибутов будут использоваться в других запросах следует вынести их в коллекцию. Создадим коллекцию «Доставка» с атрибутами «Адрес доставки», «Предпочтительная дата доставки» и свяжем ее с моделью «Запрос на выдачу оборудования».
При реализации другого запроса «Заказ расходных материалов», в которых будет необходимо указывать реквизиты доставки — используем коллекцию «Доставка».
Как работать с REM?
Создание и настройка моделей
Определите таблицу, к которой будет привязана модель;
Задайте уникальное имя и описание модели;
Укажите, будет ли модель доступна в каталоге услуг после её создания.
Пример:
Модель: «Запрос на выдачу оборудования»
Таблица: «Запросы на обслуживание»
Описание: «Запросите замену или выдачу нового оборудования»
Активна: Да
Работа с атрибутами
Атрибуты — это поля модели, которые будут размещены на форме запроса в каталоге услуг.
Шаги по созданию атрибута:
Перейдите в модель или коллекцию;
Выберите тип атрибута (строка, число, дата и т. д.);
Задайте заголовок и имя атрибута;
Определите, является ли атрибут обязательным для заполнения;
Пример:
Наименование: «Тип оборудования»
Тип: Список выбора
Обязательный: Да
Возможные значения (опции): «Ноутбук», «Монитор», «Клавиатура», «Мышь»
Создание и использование коллекций
Коллекции позволяют группировать атрибуты для повторного использования в разных моделях.
Процесс создания коллекции:
Укажите имя коллекции
Определите таблицу, к которой будет привязываться коллекция;
Добавьте в коллекцию атрибуты;
Свяжите коллекцию с моделями.
Пример:
Коллекция: «Доставка»
Атрибуты: «Адрес доставки», «Предпочтительная дата доставки»
Связана с моделями: «Запрос на оборудование», «Заказ расходных материалов».
Настройка клиентских скриптов модели
Еще одним преимуществом использования REM является удобное администрирование клиентских скриптов. Клиентские скрипты определяют бизнес логику (поведение) формы и могут связываться с моделью или с коллекцией. REM позволяет определять клиентские скрипты, которые будут срабатывать для конкретной модели, что существенно упрощает администрирование скриптов и ускоряет отклик формы (меньше общих скриптов, срабатывают только нужные скрипты)
Преимущества и особенности использования REM-подхода
Расширенная модель записи (REM) имеет ряд особенностей, которые важно учитывать при её использовании.
Область применения
REM наиболее эффективна в системах с большим разнообразием типов данных. Для небольших проектов с простой структурой данных использование REM может оказаться избыточным. По мере увеличения количества сущностей сложность настройки возрастает, но именно в таких случаях преимущества REM становятся наиболее очевидными.
Проектирование коллекций
Старайтесь не создавать коллекции с избыточным числом атрибутов. Все атрибуты в коллекции должны использоваться. Например, коллекция «ФИО» с атрибутами Фамилия, Имя, Отчество или коллекция «Габариты» с атрибутами Ширина, Высота, Глубина. Наборы атрибутов в этих коллекциях объединены семантически и не являются избыточными.
При добавлении опциональных атрибутов в коллекцию вам придется настраивать дополнительную логику для этих атрибутов (например, скрипт для скрытия незаполненных атрибутов). Рекомендуем оформлять опциональные атрибуты в виде отдельных коллекций (коллекция с одним атрибутом). Таким образом вы гарантируете применимость коллекции в максимальном количестве моделей без дополнительной настройки.
Ограничения связей между моделями и коллекциями
Существуют определенные правила, регулирующие взаимодействие моделей и коллекций:
Для добавления коллекции в модель, коллекция должна быть связана с той же таблицей, что и модель или быть связанной с таблицей, которая является родительской для таблицы, с которой связана модель;
Нельзя связать модель и коллекцию, если существует пересечение названий их атрибутов.
Технические ограничения
При проектировании системы следует учитывать технические особенности используемой СУБД, например, в PostgreSQL существует ограничение в 1600 колонок на таблицу, что может стать фактором при планировании очень крупных систем. REM позволяет обойти этот лимит на количество колонок в таблице.
Заключение
Расширенная модель записи (REM) представляет собой мощный и гибкий подход к организации данных в современных информационных системах. Этот метод особенно эффективен в условиях, где требуется работа с разнородными типами данных и существует потребность в частой адаптации структуры данных к изменяющимся бизнес‑требованиям. REM особенно хорошо подходит для систем с обширным каталогом услуг или продуктов, где каждый тип записи может иметь уникальный набор атрибутов.
Опыт использования REM в различных корпоративных решениях SimpleOne: ITSM, ITAM, HRMS, SDLC, B2B CRM подтверждает эффективность этого подхода. От управления ИТ‑активами до автоматизации корпоративных продаж — везде, где требуется гибкая работа с разнородными данными, REM демонстрирует свои преимущества.