Последовательности#
Последовательности это перзистентные объекты в БД IDM. Они функционально аналогичны автоматически инкрементирующимся колонкам. Последовательности можно использовать для надежного и эффективного назначения уникальных идентификаторов большому количеству объектов IDM. Последовательности можно использовать для автоматического назначения UID и GID UNIX, перзистентных идентификаторов пользователей и т.д.
Последовательность — очень простой объект:
<sequence>
<name>Unix UID numbers</name>
<counter>1001</counter>
<maxUnusedValues>10</maxUnusedValues>
</sequence>
Последовательность помнит только один важный параметр — счетчик (<counter>). Значение счетчика назначается объекту, затем инкрементируется.
Переиспользование значений счетчика#
Значение счетчика берется операцией только один раз. Значение, взятое для операции, запоминается в контексте, и переиспользуется каждый раз, когжа операция перерасчитывается. Однако значение не запоминается в глобальном контексте, для всех операций, поэтому рекомендуется использовать последовательности только в слабых маппингах.
При этом, операция, взявшая значение счетчика, может быть неуспешной, и не сохранить свой результат в перзистентном хранилище. В таком случае IDM вернет значение счетчика в последовательность, и оно будет переиспользовано в одной из следующих операций. Этот механизм позволяет экономить значения, однако он может привести к не строго последовательной цепочке значений в объектах.
Чтобы отключить такое переиспользование, установите значение параметра <maxUnusedValues> последовательности в 0.
Ограничения последовательностей#
Поскольку последовательности "помнят" только последнее значение своего счетчика, взятие значения операцией не полностью обратимо. Это может привести к "иссяканию" количества возможных идентификаторов. Поэтому рекомендуется использовать последовательности только в слабых маппингах, так как они гарантируют, что каждое значение счетчика будет назначено только один раз.