Все истории

💸 Что такое транзакции и зачем они спасают деньги

Копия публикации из архива канала. Дата и текст сохранены.

Представь: ты переводишь другу 1000 рублей за пиццу 🍕

Приложение должно сделать две вещи:
1️⃣ списать 1000 рублей у тебя
2️⃣ зачислить 1000 рублей другу
Вроде всё просто.

Но теперь представь, что деньги у тебя уже списались, а в этот момент сервер такой:
«Ой, я устал» — и упал 🫠🔥

И что получается?
У тебя денег нет.
У друга денег нет.
Пицца есть только у курьера.
Все грустят 😭🍕

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

Транзакция — это когда несколько действий выполняются как одна цельная операция.

Либо всё получилось ✅
Либо не получилось ничего ❌

Без состояния «ну тут почти получилось, только деньги потерялись где-то между таблицами» 😄

Например, банковский перевод:
💳 списали деньги с одного счёта
🏦 добавили деньги на другой счёт
🧾 сохранили историю операции
📲 отправили уведомление

Если все шаги прошли успешно — транзакция подтверждается.
Это называется commit ✅

А если где-то что-то сломалось — база откатывает изменения назад.
Это называется rollback ↩️

То есть система говорит:
«Так, операция пошла криво. Давайте вернём всё как было, пока пользователи не начали писать в поддержку капсом» 😅

Транзакции особенно важны там, где ошибка стоит дорого:
💸 банковские переводы
🛒 интернет-магазины
🎟 покупка билетов
📦 списание товаров со склада
📚 оплата подписки
🎮 покупка предметов в игре

Потому что пользователю всё равно, что у тебя там:
база данных,
API,
микросервисы,
очереди,
сервер в депрессии.

Пользователь видит только одно:
деньги списались, а товар не появился 😡

И вот тут начинается веселье для поддержки, разработчиков и всех, кто просто хотел спокойно попить чай ☕️🔥

Поэтому транзакции — это не какая-то скучная теория из базы данных.
Это механизм, который помогает приложению не превращать важные операции в лотерею 🎰

Главная мысль простая:
Транзакция защищает данные от состояния “что-то пошло не туда посередине”.

Если операция важная — она должна выполниться полностью.
Или не выполниться вообще.

Без магии, без потерь, без «ой» 😄

А ты уже сталкивался с транзакциями в коде или пока только видел страшные слова commit и rollback? 👀