Таблицы, на которые влияют текущие транзакции в Oracle - PullRequest
0 голосов
/ 13 февраля 2019

Мы разрабатываем веб-приложение с серверной частью Oracle для бронирования конференц-зала.Кроме того - мы решили использовать оптимистическую блокировку, потому что ожидаем, что число коллизий будет на нижней стороне.

Теперь - в случае оптимистической блокировки всегда есть возможность «Данные уже изменены кем-то еще»"сценарий.

И наш пользовательский интерфейс включает в себя довольно много полей для ввода.И отображение сообщения, такого как «Данные уже были изменены», не является приятным опытом для конечного пользователя;особенно после того, как он / она введет, скажем, поле 15+.

Я думаю о том, чтобы отобразить «Вероятность столкновения», когда конечный пользователь начинает свой сеанс пользовательского интерфейса на основании первых нескольких записей, которые он / она вводит вUI.

Этот CP (вероятность столкновения) будет динамически рассчитываться с учетом сеансов базы данных, которые выполняются с данной таблицей / столбцами.

Например, если и лицо A, и лицоB просматривает информацию для конференц-зала X - тогда обеим сторонам будет показан более высокий CP (вероятность столкновения).

В таком случае - любой из них может решить подождать несколько секунд.Это будет лучше, чем повторно вводить все данные.

Теперь мой вопрос: в Oracle есть ли способ определить, какие сеансы идут против каких таблиц и ROWID?

1 Ответ

0 голосов
/ 16 февраля 2019

"наш пользовательский интерфейс включает в себя довольно много полей для ввода."

Это похоже на проблему, которая может быть решена с помощью лучшего потока.Минимизируйте количество полей, которые необходимо ввести пользователю, прежде чем он сможет получить список доступных подходящих комнат.Когда они выбирают номер, используйте пессимистическую блокировку, чтобы никто другой не смог захватить комнату, пока они заполняют заявку на бронирование.Сохраните копию исходных полей, чтобы они могли повторно выполнить исходный запрос, если они передумают.

Конечно, это означает поддержание состояния сеанса и обработки, и мы все знаем, что веб-приложения не справляются с этим.Это способ сказать, что мы часто используем веб-технологии, когда они не подходят для приложения, которое мы пишем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...