Size: a a a

2019 October 10

S

Serg in ErlangRus
"пока батч не завершится, разумеется, никаких изменений со счетом не произойдет,  но блокировки тут не при чем - их там нет"  -  

У вас на счете 100 руб

текущая транзакция хочет списать 99 руб
паралельная транзакция хочет списать еще +2 руб

99 + 2 = 101 (больше чем 100)

пока батч на 99 рублей не завершился, может придти еще одна операция по тому же счету на 2 руб. и если блокировки записи о счете нет, то получается вы стартуете новый batch_list для 2 руб по этому же счету списывая средства которых на карте нет? то есть в отрицательный баланс?

и учитывая что на чтение блокировки нет, значит паралельная транзакция на 2 руб будет думать что баланс 100! хотя реально там 1 руб и списывать нельзя...
источник

S

Serg in ErlangRus
по идее транзакция на 2 руб должна в очереди ждать пока не освободится блокировка записи по текущему счету...не так?
источник

EM

Evgeny M. in ErlangRus
вообще с транзакциями это не так работает. Там периодически появляется технический овердрафт именно из-за отложенных транзакций
источник

PK

Petr Kozorezov in ErlangRus
как всегда упоротые до невозможности имена 😄🙈
источник

AK

Anton Kuranda in ErlangRus
традиции ¯\_(ツ)_/¯
источник

AK

Anton Kuranda in ErlangRus
Сергей, отвечу позже
источник

S

Serg in ErlangRus
Anton Kuranda
традиции ¯\_(ツ)_/¯
благодарю!
источник

VK

Vadim Kuzmin in ErlangRus
Спасибо всем за ответы и за проявленный интерес к вопросу!
Я еще по изучаю эту тему.
источник

VK

Vadim Kuzmin in ErlangRus
Alex Bubnov
2PC это механизм соблюдения транзакционности действий, затрагивающих несколько не связанных между собой хранилищ данных.
А почему не связанных между собой? Они же вроде как под управлением одной СУБД должны быть?
источник

AB

Alex Bubnov in ErlangRus
Vadim Kuzmin
А почему не связанных между собой? Они же вроде как под управлением одной СУБД должны быть?
Нет, 2pc это как раз для независимых сущностей.
источник

AB

Alex Bubnov in ErlangRus
Например, 2pc может использоваться в случае транзакции одновременно над базой и брокером очередей, которые друг о друге ничего не знают
источник

AB

Alex Bubnov in ErlangRus
То есть, 2pc это координация двух и более независимых локальных транзакций
источник

VK

Vadim Kuzmin in ErlangRus
Alex Bubnov
Нет, 2pc это как раз для независимых сущностей.
т.е в теории например одна нода(хранилище) пдо управлением постгрес, другая mysql. Такая реализация возможна?
источник

AB

Alex Bubnov in ErlangRus
Vadim Kuzmin
т.е в теории например одна нода(хранилище) пдо управлением постгрес, другая mysql. Такая реализация возможна?
Да, что-то вроде того
источник

VK

Vadim Kuzmin in ErlangRus
Alex Bubnov
Например, 2pc может использоваться в случае транзакции одновременно над базой и брокером очередей, которые друг о друге ничего не знают
а можно какой нибудь пример такого использования конкретный или ссылку на статью какую. или описания этого протокола который утверждает независимость лок транзакций а отсюда независымых нод/сущностей/хранилищ

Просто я к чему это пишу ведь в случае с использованием разных субд на нодах нет единого интерфейса репликации.
В описании к 2pc я  не видел что ноды могут быть независимы
источник

AB

Alex Bubnov in ErlangRus
Vadim Kuzmin
а можно какой нибудь пример такого использования конкретный или ссылку на статью какую. или описания этого протокола который утверждает независимость лок транзакций а отсюда независымых нод/сущностей/хранилищ

Просто я к чему это пишу ведь в случае с использованием разных субд на нодах нет единого интерфейса репликации.
В описании к 2pc я  не видел что ноды могут быть независимы
Я не очень понимаю, как бы это пояснить. Если ноды координируются друг с другом сами, 2pc просто не нужен, и всё.
источник

AB

Alex Bubnov in ErlangRus
Ну то есть, это протокол распределенной транзакции с одним координатором, он придуман для независимых и ничего друг о друге не знающих хранилищ
источник

M

Mark in ErlangRus
источник

СИ

Сергей Иванов in ErlangRus
А чего он не нарисовал что делать если один done а другой нет?
источник

M

Mark in ErlangRus
В 2PC после того как все участники ответили согласием на pre-commit не имеют права ответить отказом на commit
источник