|
|
|
асинхронная обработка
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток, уважаемые знатоки Не бейте за ламерский вопрос, прошу у Вас консультации, как у опытных мира сего В общем ситуация следующая: в моей БД есть пакет, функции из которого периодически вызываются из Java приложения, причем некоторые из них отрабатывают на запись в БД. Подскажите пожалуйста, может ли возникнуть такая ситуация, когда пользователь отправляет первый запрос на запись в БД, он ещё не выполнился, а пользователь отправляет второй запрос на осуществление той же записи в БД...? Не возникнет ли коллизия в этом случае? Прочитал перед этим про транзакции,и вроде как не должно, но потом прочитал про асинхронное выполнение, и получается что вроде как и может быть. Поэтому прошу не ругать сильно, а пожалуйста помочь разобраться в понимании ситуации, при каких же все таки случаях может быть возможна данная ошибка? Спасибо большое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2017, 15:04 |
|
||
|
асинхронная обработка
|
|||
|---|---|---|---|
|
#18+
igor_ptoovНе возникнет ли коллизиячто это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2017, 15:17 |
|
||
|
асинхронная обработка
|
|||
|---|---|---|---|
|
#18+
ламерский вопрос, Образно описал этим словом описанную мною ситуацию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2017, 15:24 |
|
||
|
асинхронная обработка
|
|||
|---|---|---|---|
|
#18+
при каких же все таки случаях может быть возможна данная ошибка? Как запрограммируете операции пользователя и ограничения в БД, так и будет. Может быть две строки с ID=1 - будет. Введено ограничение - не будет, один сеанс отвалится с ошибкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2017, 15:38 |
|
||
|
асинхронная обработка
|
|||
|---|---|---|---|
|
#18+
dmdmdm, говоря об ограничении, вы имеете ввиду к примеру констрейны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2017, 15:42 |
|
||
|
асинхронная обработка
|
|||
|---|---|---|---|
|
#18+
igor_ptoovПодскажите пожалуйста, может ли возникнуть такая ситуация, когда пользователь отправляет первый запрос на запись в БД, он ещё не выполнился, а пользователь отправляет второй запрос на осуществление той же записи в БД...?Я дотошный. Вопросы к выделенному красным: 1) В какой сессии? В другой? Почему не указываешь явно? 2) Запрос чего? 3) Есть ли уникальные индексы на таблице? В принципе уже из этих вопросов можно выбрать правильное направление для поиска. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2017, 15:49 |
|
||
|
асинхронная обработка
|
|||
|---|---|---|---|
|
#18+
AmKadigor_ptoovПодскажите пожалуйста, может ли возникнуть такая ситуация, когда пользователь отправляет первый запрос на запись в БД, он ещё не выполнился, а пользователь отправляет второй запрос на осуществление той же записи в БД...?Я дотошный. Вопросы к выделенному красным: 1) В какой сессии? В другой? Почему не указываешь явно? 2) Запрос чего? 3) Есть ли уникальные индексы на таблице? В принципе уже из этих вопросов можно выбрать правильное направление для поиска. Сессия та же запрос на вставку строки в таблицу уникальный индекс есть - в принципе он скорее всего и не даст осуществить задуманное Спсибо большое, если я что-то недопонял, поправьте меня пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2017, 15:52 |
|
||
|
асинхронная обработка
|
|||
|---|---|---|---|
|
#18+
igor_ptoovСессия та жеХа. Вот не зря же я дотошный. Когда спрашивал, был на 99.99% уверен, что сессия другая. А ты говоришь обратное. Хотя, с учетом того, что у тебя Java, я все равно не верю тебе на все 100. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2017, 15:58 |
|
||
|
асинхронная обработка
|
|||
|---|---|---|---|
|
#18+
Я понимаю так: Внес человек данные в форму Нажал "добавить". Клиент тупанул. Человек нажал "добавить" второй раз. Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2017, 16:00 |
|
||
|
асинхронная обработка
|
|||
|---|---|---|---|
|
#18+
982183Я понимаю так: Внес человек данные в форму Нажал "добавить". Клиент тупанул. Человек нажал "добавить" второй раз. Так? Да да, именно так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2017, 16:04 |
|
||
|
асинхронная обработка
|
|||
|---|---|---|---|
|
#18+
igor_ptoov, У ВАс сайт или десктоп приложение.. Если десктоп то скорее всего не будет проблем ибо JDBC ждёт отклика от сервера. И по идее главный поток должен замереть. И вообще как бы после операции CRUD(create,update,delete) должно быть refresh... Вы перечитываете базу.(и таким образом у Вас обратная связь ...пользователь видит добавленную(изменённую) запись(или что нет записи в соучае удаления)) А если web...то Request у вас синхронный или асинхронный. Если синхронный смотрим раздел десктоп... А вот если асинхронный...то от таких коллизий надо генереить(во всяком случае я так делаю mini guid) И в субд он уникален. и таки образом повтор будет отвергнут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2017, 16:21 |
|
||
|
асинхронная обработка
|
|||
|---|---|---|---|
|
#18+
igor_ptoovДа да, именно так А ты проверь. Асинхронного режима не бывает. В той же сессии тебе не удастся выполнить второй запрос пока не отработал первый. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2017, 16:26 |
|
||
|
асинхронная обработка
|
|||
|---|---|---|---|
|
#18+
igor_ptoovговоря об ограничении, вы имеете ввиду к примеру констрейны? Никто не мешает совмещать ограничения БД с ограничениями и проверками на стороне приложения. Транзакцию (или процедуру создания некоего бизнес-объекта, если вы не уверены в непрерывности транзакции у web приложения) можно начинать с блокировки некоего уникального ID/имени, чтобы повторный запрос на такой же ID вызвал ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2017, 16:56 |
|
||
|
асинхронная обработка
|
|||
|---|---|---|---|
|
#18+
dmdmdm, Я вас понял, проверки на сторон клиента гарантировано разработчиками клиента, но кто знает, вдруг что А транзакции должна блокировать запись исходя из ее смысла У нас web, сервер приложений на java Вот думаю, если сессия отвалится, тогда клиент перезайдет, а процесс как-нибудь зависнет Можно ли делать килл подобным процессам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2017, 17:39 |
|
||
|
асинхронная обработка
|
|||
|---|---|---|---|
|
#18+
Stark.....если сессия отвалитсято все незакоммиченные изменения отроллбэчатся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2017, 17:54 |
|
||
|
асинхронная обработка
|
|||
|---|---|---|---|
|
#18+
коллизий не будет, а вот чтобы не было дублей, надо при сохранении, например, клиента, чекать такой телефон/em@il ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2017, 21:33 |
|
||
|
асинхронная обработка
|
|||
|---|---|---|---|
|
#18+
tip78коллизий не будет, а вот чтобы не было дублей, надо при сохранении, например, клиента, чекать такой телефон/em@il а зачем чекать телефон/em@il, если есть огграничение уникальности на ID ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2017, 10:31 |
|
||
|
асинхронная обработка
|
|||
|---|---|---|---|
|
#18+
igor_ptoovtip78коллизий не будет, а вот чтобы не было дублей, надо при сохранении, например, клиента, чекать такой телефон/em@il а зачем чекать телефон/em@il, если есть огграничение уникальности на ID ? на новом юзере оно вам не поможет дубль получит другой ID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2017, 13:16 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=148&tid=1885357]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
297ms |
get topic data: |
11ms |
get forum data: |
4ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 201ms |
| total: | 600ms |

| 0 / 0 |
