Каков наилучший способ генерации последовательных значений при наличии балансированной нагрузки базы данных и экземпляров приложения?
Например, у меня есть база данных mysql, сбалансированная по нагрузке. Мое приложение PHP, развернуто с докером и имеет 3 контейнера
Я должен генерировать последовательные идентификаторы. Я не могу использовать автоматическое увеличение, потому что я должен генерировать уникальные идентификаторы в зависимости от отношений (например, я должен генерировать уникальный номер счета, в зависимости от общества ведьмы, это связано)
Мой счет может быть сгенерирован, но не включен. Я должен создать уникальное значение, когда выставляется счет.
TRIGGER ON UPDATE - хорошее решение или нет?
Thnks для ваших ответов
Я бы сохранил текущий идентификатор в таблице db. Каждый раз, когда вы хотите увеличить id, выполните следующие действия:
Я бы пошел на MAX (id) +1. Вы можете получить следующий номер в последовательности с запросом типа:
SELECT COALESCE(MAX(id),0) + 1 FROM bill
WHERE society = 'XYZ'
Вам нужно будет предпринять шаги для обеспечения того, чтобы два процесса не генерировали одинаковое число, и это может быть сложным, но не непреодолимым.
Лично я всегда избегал триггера. Я никогда не использовал триггер и не сожалел об этом позже.