никак не может быть атомарной операцией, мне все равно нужно проверить и только потом списать
Как же транзакции мне будут гарантировать , что у меня два потока не получат доступ к одному и тому же значению остатка и не спишут лишнее?
Есть такое понятие как transaction isolation. Не нужны «грязные чтения» используй правильный уровень изоляции. Но это все применимо к обычной СУБД. Как там у монги с этим я не в курса
Владислав, а почитайте книжку с кабаном на обложке. прямо вот рекомендую.
Транзакция атомарна. Все это решили уже до тебя. Тебе это гарантирует поставщик БД. Ты сам должен это делать, только для тренировки навыков.
как вариант - помимо проводок хранить еще и остаток по счету с версией (а на версиях сделать оптимистичную блокировку для защиты от конкурентных изменений). Только тогда нужна субд с поддержкой транзакций, одной лишь атомарностью не отделаешься.
Книга с кабаном это "Высоконагруженные приложения. Программирование, масштабирование, поддержка"?)
Обсуждают сегодня