Download the PHP package sbooker/persistent-sequences without Composer
On this page you can find all versions of the php package sbooker/persistent-sequences. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package persistent-sequences
Read in English
Persistent Sequences (sbooker/persistent-sequences
)
Конкурентно-безопасная, транзакционная библиотека для создания и управления именованными персистентными последовательностями.
Назначение библиотеки
Эта библиотека является идеальным инструментом для построения единых центров генерации идентификаторов (ID) и бизнес-номеров.
В сложных системах стандартного AUTO_INCREMENT
бывает недостаточно. SequenceGenerator
решает следующие задачи:
- Централизованная генерация ID: В распределенных системах или при использовании подхода DDD, где ID сущности должен быть сгенерирован до ее сохранения,
SequenceGenerator
может выступать как надежный и транзакционный источник уникальных ID. - Именованные бизнес-последовательности: Создание независимых последовательностей для счетов (
INV-001
), заказов (ORD-002
) и т.д. - Атомарность: Гарантированное получение следующего значения в последовательности вместе с другими операциями в рамках одной транзакции.
- Надежность: Безопасная генерация в СУБД, где
AUTO_INCREMENT
имеет проблемы в кластерных конфигурациях.
Библиотека интегрирована с sbooker/transaction-manager, что гарантирует безопасность при одновременном доступе.
Ключевые особенности
- Централизованная генерация ID: Может использоваться как единый источник правды для генерации уникальных идентификаторов сущностей.
- Транзакционная безопасность: Генерация нового значения происходит внутри транзакции, управляемой
transaction-manager
. - Безопасность при конкурентном доступе: Использует
getLocked()
для предотвращения гонок данных. - Именованные последовательности: Неограниченное количество независимых последовательностей.
- Гибкие алгоритмы: Используйте встроенный
Increment
или создайте собственную реализацию интерфейсаAlgorithm
. - Разделение чтения и записи (CQRS):
SequenceGenerator
для изменения иSequenceReader
для безопасного чтения текущего значения.
Установка
Вам также понадобится sbooker/transaction-manager
и его адаптер для вашей ORM.
Быстрый старт
Шаг 1: Конечная цель — простое получение ID
Ваш прикладной код для генерации уникальных ID или бизнес-номеров будет выглядеть максимально просто:
Шаг 2: Сборка зависимостей
Для работы SequenceGenerator
требуется TransactionManager
.
Шаг 3: Чтение текущего значения без блокировки (опционально)
Если вам нужно просто узнать последнее сгенерированное значение, не увеличивая его, используйте SequenceReader
.
1. Реализуйте SequenceReadStorage
:
2. Соберите и используйте SequenceReader
:
Продвинутое использование: собственный алгоритм
Вы можете легко создать свой алгоритм, реализовав интерфейс Algorithm
.
License
See LICENSE file.