Shrnutí na Databázové transakce, SQL a architektury
Databázové transakce, SQL a Architektury – Kompletní Průvodce
Úvod
Transakce jsou základní jednotkou práce s relační databází. Slouží k zajištění konzistence dat při současném přístupu více uživatelů a při možných chybách systému. Tento materiál shrnuje pojmy, vlastnosti transakcí, chování v distribuovaném prostředí, protokoly potvrzování, zotavení po chybě a synchronizaci.
Definice: Transakce je posloupnost logicky souvisejících operací, které musí být vykonány buď všechny, nebo žádná; převádí databázi z jednoho konzistentního stavu do druhého.
Vlastnosti transakcí (ACID a další)
Atomičnost
- Celá posloupnost operací se považuje za jednu logickou jednotku. Buď jsou provedeny všechny operace, nebo se vrátí změny (ROLLBACK).
Definice: Atomičnost znamená, že transakce je nedělitelná; nedokončené změny se musí vrátit.
Izolovaná vratnost (isolation + no cascading)
- Vracení jedné transakce nesmí negativně ovlivnit jiné transakce. Pokud by ano, může nastat řetězové vrácení (cascading rollback).
Definice: Izolovaná vratnost zajišťuje, že nedokončené změny nejsou viditelné jiným transakcím.
Pernamentnost (durability)
- Jednou potvrzené (COMMIT) změny jsou trvale uloženy a nemohou být ztraceny.
Definice: Pernamentnost znamená, že po COMMITu jsou změny trvale zapsány na úložiště.
Uspořádatelnost (serializovatelnost)
- Výsledek paralelního provádění transakcí musí odpovídat nějakému sériovému (pořadovému) provedení těchto transakcí.
Definice: Serializovatelnost = možnost vysledovat výsledek paralelního běhu jako výsledek některého sériového rozvrhu.
Lokální vs. globální (distribuované) transakce
- Lokální transakce přistupuje pouze k datům na jednom uzlu.
- Globální (distribuovaná) transakce přesahuje hranice jednoho uzlu a skládá se z dílčích lokálních transakcí na různých uzlech.
Definice: Globální transakce je transakce, která koordinuje více lokálních transakcí napříč uzly.
Distribuovaný databázový systém — základní principy
- Databáze je fragmentována a alokována na více uzlech s komunikačními propojeními.
- Globální transakce startuje na primárním (koordinujícím) uzlu a rozpadá se na podtransakce.
- Primární transakce (koordinátor) řídí dělení, sběr odpovědí a závěrečné rozhodnutí (COMMIT/ABORT).
Komponenty na uzlu (přehled)
- Aplikační program
- Modul řízení transakcí (koordinační logika)
- Komunikační modul
- Moduly řízení dat (lokální DBMS)
- Operační systém, hardware
Definice: Modul řízení transakcí zpracovává požadavky, rozděluje globální transakci, sbírá podvýsledky a sestavuje finální odpověď.
Dvoufázový potvrzovací protokol (2PC)
Cíl: zajistit atomické potvrzení globální transakce v distribuovaném prostředí.
Fáze 1 — hlasování (voting / prepare)
- Koordinátor požádá všechny podtransakce, aby dosáhly bodu, kdy mohou říci, zda jsou připraveny COMMITovat (RC - ready to commit).
- Každá podtransakce provede lokální přípravu a odpoví: RC (ready / prepared) nebo ABORT.
- Po RC si lokální uzel ještě nezpřístupní změny ostatním transakcím.
Fáze 2 — jištění (commit/abort)
- Pokud všechny odpovědi jsou RC, koordinátor posílá globální COMMIT a podtransakce provedou své lokální COMMIT (a změny se zviditelní).
- Pokud alespoň jedna odpověď je ABORT nebo někdo nedosáhne RC v časovém limitu, koordinátor pošle globální ABORT a všechny podtransakce se vrátí.
Definice: 2PC zajišťuje, že všechny zúčastněné uzly dospějí ke stejnému rozhodnutí COMMIT nebo ABORT.
Chyby a časové ohraničení (timeouts)
Možné situace a řešení:
- Nelze inicializovat podtransakci -> koordinátor se pokusí o jiný uzel nebo pošle ABORT všem.
- Chybějící RC zpráva -> koordinátor obvykle pošle ABORT všem.
- Lokální uzel nemusí obdržet finální COMMIT/ABORT -> koordinátor zůstane aktivní dokud zprávu nedoručí.
- Koordinátor sám selže po obdržení RC -> ostatní čekají; po zotavení koordinátor rozhodne podle logu.
Už máš účet? Přihlásit se
Transakce - přehled
Klíčová slova: Transakce
Klíčové pojmy: Transakce je logická jednotka provedení operací, Atomičnost: vše nebo nic (ROLLBACK), Izolovaná vratnost zabraňuje cascading rollback, Pernamentnost zajišťuje trvalost po COMMITu, Globální transakce se skládají z lokálních podtransakcí, Dvoufázový protokol (2PC): prepare + commit/abort, Žurnál a checkpointy umožňují UNDO/REDO zotavení, Uzamykání + 2PL zajišťují serializovatelnost, Deadlock se detekuje čekacím grafem (hledání cyklů), Time-stamp metody: Wait-Die a Wound-Wait, SAVEPOINT umožňuje částečný ROLLBACK v SQL