Pull to refresh

Comments 2

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


Как бы определение, что такое «транзакция», при этом ссылающееся на ту же «транзакцию», представляется несколько рекурсивным некорректным.

Чем не угодило определение типа «Транзакция — это логическая единица работы...»?

Статью можно в разы улучшить буквально парой абзацев.
1. В примере более явно подчеркнуть, что наша тестовая транзакция Т про перевод рупий содержит две задачи — А (снять деньги) и В (зачислить деньги), которые выполняются последовательно. Привести псевдокод транзакции Т (начать транзакцию; снять деньги; зачислить деньги; зафиксировать транзакцию).
2. Добавить в задачу А явную проверку, что на счете есть эти 500 рупий. Если нет — прерывать и откатывать транзакцию целиком.
3. Пояснить за атомарность в нашем примере. Атомарность значит, что всегда, при любых условиях будет выполнено либо 0 задач, либо 2. Но никогда — одна (деньги ушли и не пришли). Даже если вырубило свет, перезагрузился сервер и т.п. Именно ради этого транзакции и придумали.
4. Можно, например, ввести журнал операций по счету. Тогда текущий баланс на счете должен быть точно равен сумме всех операций по счету с момента его открытия. Если нет, то база несогласована.
5. Предположить, что счет Б — это счет мобильного оператора, и переводы на него льются рекой. Показать, как из-за гонок портятся данные без блокировок и сериализации.
Sign up to leave a comment.