Tranzakciók és ACID
Adatbázis-tranzakció és ACID: atomicity, consistency, isolation, durability – és miért kell több összetartozó módosítást együtt kezelni?
Röviden
A tranzakció több adatbázis-műveletet egy logikai egységbe foghat. Ha egy összetett üzleti művelet közepén hiba történik, az atomicity lehetővé teszi, hogy ne maradjon félkész állapot.
Mit jelent a tranzakciók és acid?
A tranzakció több adatbázis-műveletet egy logikai egységbe foghat. Ha egy összetett üzleti művelet közepén hiba történik, az atomicity lehetővé teszi, hogy ne maradjon félkész állapot.
Tranzakció lépései
BEGIN
A tranzakció elindul.
Hogyan működik a gyakorlatban?
A klasszikus ACID rövidítés: Atomicity – mind vagy semmi; Consistency – a deklarált invariánsok érvényben maradnak; Isolation – konkurens tranzakciók kontrolláltan látják egymást; Durability – commit után az adat tartósan megőrzendő a rendszer garanciái szerint.
- BEGIN indít tranzakciós blokkot.
- COMMIT véglegesíti a módosításokat.
- ROLLBACK elveti az aktuális tranzakció változásait.
- Isolation level meghatározza bizonyos konkurenciajelenségek láthatóságát.
Gyakorlati fejlesztői szemlélet
Pénzmozgás, inventory módosítás vagy több összefüggő rekord létrehozása tipikus tranzakciós eset. Külső API hívást viszont nem lehet egyszerűen PostgreSQL rollbackkel visszacsinálni, ehhez workflow/idempotencia stratégia kell.
Gyakori hibák és félreértések
- Tranzakciót külső HTTP hívás alatt indokolatlanul nyitva tartani.
- ACID consistencyt üzleti logika automatikus helyességének hinni.
- Hosszú tranzakciók lock és bloat hatását figyelmen kívül hagyni.
Források és szabványok
A technikai részletekhez elsődleges szabványokat és karbantartott hivatalos dokumentációt használok. Frameworkök, böngészők és webes API-k idővel változhatnak, ezért implementálás előtt mindig ellenőrizd az aktuális dokumentációt is.
Kapcsolódó ByBence Academy