Taskсделки и процедуры в Oracle
Пользователь может собрать только ONE бонус РАЗ на сайте в день. Структура сервера
:
- два веб-сервера
- одна база данных
Эти два веб-сервера развернуты с тем же кодом и подключены к одной и той же базе данных.
Запросы случайным образом направляются на один из веб-серверов.
То, что я
Я написал всю бизнес-логику, проверить, если это первый запрос пользователя дня, независимо от того, что этот пользователь законны и т.д., в одной процедуре.
Я использую @Transactional
в Spring Framework в надежде сделать процедуру, которую я написал транзакционной в БД.
Проблема
Пользователь отправлено 10000 запросов в то же время, и два из них были направлены к двум различным серверам и вызывать процедуру работать одновременно, что означает, что пользователь получил два бонуса в этот день.
Помощь
Таким образом, от того, что я понимаю, @Transactional
в Spring Framework блоков доступа к коду к БД, но не БД напрямую? Пользователи с сервера A все еще могут иметь доступ к таблицам в БД, когда сервер B запускает методы, аннотированные с помощью @Transactional
?
И как я могу использовать транзакцию в хранимой процедуре в Oracle?
Заранее спасибо.
Да, вы правы. Спасибо. –