Unified Identity Management logo figure Unified Identity Management logo figure
Поиск Поиск по документации

Модели данных СУБД RooX UIDM и их версионирование (историчность)

В RooX UIDM все таблицы СУБД, содержащие бизнес-данные, содержат несколько обязательных полей, которые обеспечивают:

  • историчность данных,

  • уникальность идентификатора объекта (сущности),

  • хранение произвольных дополнительных данных для каждого объекта (сущности),

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

Таблица 1. Поля, общие для всех таблиц СУБД RooX UIDM, содержащих изменяемые данные
Наименование поля Описание поля Примечания

id

Первичный идентификатор

Непустая строка, сформированная по специальным правилам

fd

Дата и время начала действия версии объекта (fromDate)

Непустая метка времени

td

Дата и время окончания действия версии объекта (toDate)

Непустая метка времени. Для текущей версии объекта равна специальному значению 9999-01-01

ts

Дата и время изменения версии объекта (записи БД) (timestamp). Хранится для сведения, в выборке текущей версии не участвует

Непустая метка времени

extendedAttributes

Контейнер для расширенных атрибутов объекта

Формат: XML

dsc

Отладочная информация

Строка, возможно пустая

Поле идентификатора (id)

Наименование поля Описание поля Примечания

id

Первичный идентификатор

Непустая строка, сформированная по специальным правилам

Формат поля идентификатора: {prefix}_{identifier}.

Префикс (prefix) содержит краткое имя системы, которая является мастер-системой для объекта (сущности) этого типа. Если мастер-системой является RooX UIDM, используется префикс sso.

Идентификатор (identifier) является уникальным идентификатором сущности в модели данных мастер-системы. Если мастер-системой является RooX UIDM, используются UUIDv4 идентификаторы вида 63a8e700-4583-4e87-9881-ffbae9dea2f9, гарантирующие уникальность создаваемого идентификатора.

Подсказка

В связи с использованием историчной модели хранения данных, поле id не является уникальным, так как при изменении объекта создаётся новая запись с тем же id, но другим сроком действия.

Уникальной является комбинация id+fd.

Поля историчной модели данных (fd, td, ts)

Все таблицы баз данных RooX UIDM, хранящие изменяемые бизнес-данные, обладают историчностью. Это означает, что в тех случях, когда бизнес-логика допускает создание, изменение или удаление данных (например, в случае удаления учётной записи пользователя или изменения его сертификата электронной подписи), такие данные из СУБД не удаляются никогда. Вместо этого в ту же таблицу СУБД помещается новая версия объекта с указанием срока его действия, а предыдущая версия объекта обновляется: в поле окончания срока его действия устанавливается текущая дата.

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

Историчность применяется только при изменении бизнес-данных; изменение служебных полей записи в таблице, хранящей бизнес-данные, не влечёт за собой появления новых версий объектов.

Все таблицы, хранящие историчные данные, обладают несколькими полями данных.

Наименование поля Описание поля Примечания

fd

Дата и время начала действия версии объекта (fromDate)

Непустая метка времени

td

Дата и время окончания действия версии объекта (toDate)

Непустая метка времени. Для текущей версии объекта равна специальному значению 9999-01-01

ts

Дата и время изменения версии объекта (записи БД) (timestamp). Хранится для сведения, в выборке текущей версии не участвует

Непустая метка времени

Текущая версия определяется как fd ≤ now < td.

Подсказка
В приложении текущая версия объекта определяется как условие td == '9999-01-01'

Расширенные атрибуты (extendedAttributes)

RooX UIDM поддерживает хранение дополнительных данных, не учтенных в основной модели данных.

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

Хранилище — поле в СУБД — называется extendedAttributes и хранит в себе структурированный текст в формате XML.

Наименование поля Описание поля Примечания

extendedAttributes

Контейнер для расширенных атрибутов объекта

Формат: XML

По умолчанию объект extendedAttributes не индексируется.

Отладочная информация

В поле dsc сохраняется произвольная отладочная информация о сохранении объекта в БД.

Наименование поля Описание поля Примечания

dsc

Отладочная информация

Строка, возможно пустая

Если запись произвели сервисы (компоненты) RooX UIDM, то в поле отладочной информации сохраняется текст вида:

context-id: KOG6IWFR6DSIC1; // идентификатор запроса к бекенду
java-thread: http-bio-15018-exec-31;  // идентификатор Java-потока
host: dev; // идентификатор хоста
component: sso-server // имя сервиса
Подсказка
Состав сохраняемой информации не является контрактом и может быть изменён без какого-либо уведомления.