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