Модели данных СУБД RooX UIDM и их версионирование (историчность)
В RooX UIDM все таблицы СУБД, содержащие бизнес-данные, содержат несколько обязательных полей, которые обеспечивают:
-
историчность данных,
-
уникальность идентификатора объекта (сущности),
-
хранение произвольных дополнительных данных для каждого объекта (сущности),
-
сохранение отладочной информации для инженеров и службы эксплуатации.
Наименование поля | Описание поля | Примечания |
---|---|---|
|
Первичный идентификатор |
Непустая строка, сформированная по специальным правилам |
|
Дата и время начала действия версии объекта ( |
Непустая метка времени |
|
Дата и время окончания действия версии объекта ( |
Непустая метка времени. Для текущей версии объекта равна специальному значению |
|
Дата и время изменения версии объекта (записи БД) ( |
Непустая метка времени |
|
Контейнер для расширенных атрибутов объекта |
Формат: XML |
|
Отладочная информация |
Строка, возможно пустая |
Поле идентификатора (id
)
Наименование поля | Описание поля | Примечания |
---|---|---|
|
Первичный идентификатор |
Непустая строка, сформированная по специальным правилам |
Формат поля идентификатора: {prefix}_{identifier}
.
Префикс (prefix
) содержит краткое имя системы, которая является
мастер-системой для объекта (сущности) этого типа. Если мастер-системой
является RooX UIDM, используется префикс sso
.
Идентификатор (identifier
) является уникальным идентификатором сущности
в модели данных мастер-системы. Если мастер-системой является RooX UIDM,
используются UUIDv4 идентификаторы вида
63a8e700-4583-4e87-9881-ffbae9dea2f9
, гарантирующие уникальность
создаваемого идентификатора.
Подсказка
|
В связи с использованием историчной модели хранения данных, поле Уникальной является комбинация |
Поля историчной модели данных (fd
, td
, ts
)
Все таблицы баз данных RooX UIDM, хранящие изменяемые бизнес-данные, обладают историчностью. Это означает, что в тех случях, когда бизнес-логика допускает создание, изменение или удаление данных (например, в случае удаления учётной записи пользователя или изменения его сертификата электронной подписи), такие данные из СУБД не удаляются никогда. Вместо этого в ту же таблицу СУБД помещается новая версия объекта с указанием срока его действия, а предыдущая версия объекта обновляется: в поле окончания срока его действия устанавливается текущая дата.
Историчностью не обладают только те таблицы баз данных, которые не допускают изменения или удаления данных. К таковым, например, относятся данные аудита или другие таблицы, которые поддерживают только создание объектов.
Историчность применяется только при изменении бизнес-данных; изменение служебных полей записи в таблице, хранящей бизнес-данные, не влечёт за собой появления новых версий объектов.
Все таблицы, хранящие историчные данные, обладают несколькими полями данных.
Наименование поля | Описание поля | Примечания |
---|---|---|
|
Дата и время начала действия версии объекта ( |
Непустая метка времени |
|
Дата и время окончания действия версии объекта ( |
Непустая метка времени. Для текущей версии объекта равна специальному значению |
|
Дата и время изменения версии объекта (записи БД) ( |
Непустая метка времени |
Текущая версия определяется как fd ≤ now < td
.
Подсказка
|
В приложении текущая версия объекта определяется как условие td == '9999-01-01'
|
Расширенные атрибуты (extendedAttributes
)
RooX UIDM поддерживает хранение дополнительных данных, не учтенных в основной модели данных.
Каждая сущность содержит хранилище формата ключ-значение для дополнительных данных, которые используются в соответствии с логикой, задаваемой заказчиком. RooX UIDM не выполняет никакой обработки таких данных.
Хранилище — поле в СУБД — называется extendedAttributes
и хранит в себе
структурированный текст в формате XML.
Наименование поля | Описание поля | Примечания |
---|---|---|
|
Контейнер для расширенных атрибутов объекта |
Формат: XML |
По умолчанию объект extendedAttributes
не индексируется.
Отладочная информация
В поле dsc
сохраняется произвольная отладочная информация о сохранении объекта в БД.
Наименование поля | Описание поля | Примечания |
---|---|---|
|
Отладочная информация |
Строка, возможно пустая |
Если запись произвели сервисы (компоненты) RooX UIDM, то в поле отладочной информации сохраняется текст вида:
context-id: KOG6IWFR6DSIC1; // идентификатор запроса к бекенду
java-thread: http-bio-15018-exec-31; // идентификатор Java-потока
host: dev; // идентификатор хоста
component: sso-server // имя сервиса
Подсказка
|
Состав сохраняемой информации не является контрактом и может быть изменён без какого-либо уведомления. |