Size: a a a

2019 October 10

GK

Gleb Kolokolov in ErlangRus
В жяве дистрибьютед транзицкии могут управляться или контейнером самим. Или отдельным менеджером
источник

GK

Gleb Kolokolov in ErlangRus
В конкретных случаях алгоритмы подьверждения транзакций стандартизированы
источник

GK

Gleb Kolokolov in ErlangRus
Надеюсь обьяснил как мог. Подробнее если интересно то в мире жявы
источник

GK

Gleb Kolokolov in ErlangRus
Вот что пишет оракл о жвухфазном коммите
источник

GK

Gleb Kolokolov in ErlangRus
Two-phase commit

In a JTA implementation, the transaction manager commits the distributed branches of a global transaction by using a two-phase commit protocol.

In phase 1, the transaction manager directs each resource manager to prepare to commit, which is to verify and guarantee it can commit its respective branch of the global transaction. If a resource manager cannot commit its branch, the transaction manager rolls back the entire transaction in phase 2.

In phase 2, the transaction manager either directs each resource manager to commit its branch or, if a resource manager reported it was unable to commit in phase 1, rolls back the global transaction.
источник

S

Serg in ErlangRus
"В субд запись висит чо статусом процессинг. Мой банк формирует клиринговый документ и шлет его например по свифту. "

а параллельная транзакция на тот же договор/карту (=эту же записьв таблице) висит и ждет пока статус не поменяется(пока не ответит "свифт")? так что ли?
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Serg
"В субд запись висит чо статусом процессинг. Мой банк формирует клиринговый документ и шлет его например по свифту. "

а параллельная транзакция на тот же договор/карту (=эту же записьв таблице) висит и ждет пока статус не поменяется(пока не ответит "свифт")? так что ли?
Это еще хорошо, если всю базу не заблочит
источник

GK

Gleb Kolokolov in ErlangRus
Ну это упрощенный пример. А так да. Блокировку на строку можно выставить. Все зависит от случая
источник

GK

Gleb Kolokolov in ErlangRus
Źmićer Rubinštejn
Это еще хорошо, если всю базу не заблочит
Норм субд умеют в блокировки строк и столбцов
источник

GK

Gleb Kolokolov in ErlangRus
А не полностью таблиц
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Gleb Kolokolov
Норм субд умеют в блокировки строк и столбцов
Ты имеешь ввиду норм программисты
источник

S

Serg in ErlangRus
так даже если блокировка строки - на 35-40 fps приложение съест все соединения в базу
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Я честно говоря не понимаю - вот у тебя в транзакции дернуло таблицу. Пофик как. Любой select count запрос в ту же таблицу будет по идее ждать
источник

AK

Anton Kuranda in ErlangRus
зачем блокировать строку, если в приведенном примере уже изменено состояние платежа на "процессинг"?
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Źmićer Rubinštejn
Я честно говоря не понимаю - вот у тебя в транзакции дернуло таблицу. Пофик как. Любой select count запрос в ту же таблицу будет по идее ждать
Потому что это count шоедингера - пока нету commit или rollback - нету числа
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Вселенной придется во времени отматываться назад потом, чтобы вернуть верный count
источник

GK

Gleb Kolokolov in ErlangRus
Anton Kuranda
зачем блокировать строку, если в приведенном примере уже изменено состояние платежа на "процессинг"?
Я написал же что можно залочить. Изначально про статус
источник

S

Serg in ErlangRus
Anton Kuranda
зачем блокировать строку, если в приведенном примере уже изменено состояние платежа на "процессинг"?
чтобы не допустить новой транзакции без окончания текущей. иначе в отрицательный баланс зайти можно
источник

GK

Gleb Kolokolov in ErlangRus
Реальный процессинг не лочит
источник

AK

Anton Kuranda in ErlangRus
для контроля баланса не обязательно лочить строки в бд, можно рассчитывать баланс исходя из статуса платежей
источник