Seskupení více operací do transakce

Dokončeno

Pokud změna jedné části dat musí vést ke změně na jinou část dat, musí aplikace seskupit řadu aktualizací dat. Tyto aktualizace můžete seskupit pomocí transakcí. V transakci, pokud jedna událost v řadě aktualizací selže, lze celou řadu vrátit zpět nebo vrátit zpět.

Příkladem je online prodejce, který používá transakci k zadání objednávky, ověření platby a aktualizaci inventáře produktů. Seskupení souvisejících událostí zajistí, že nezmenšujete úrovně skladových zásob, dokud neobdržíte schválenou formu platby.

Dále se dozvíte o transakcích a o tom, jestli jsou pro vaše data vyžadovány.

Co je transakce?

Transakce je logická skupina databázových operací, které běží společně.

Tady je otázka, kterou byste se měli zeptat ohledně toho, jestli potřebujete ve své aplikaci používat transakce: Ovlivní změna jedné části dat v datové sadě jinou část dat? Pokud je odpověď ano, budete potřebovat podporu pro transakce ve vaší databázové službě.

Transakce jsou často definovány sadou čtyř požadavků volání ACID záruky. ACID je zkratka pro atomicitu, konzistenci, izolaci a stálost.

  • Atomicita znamená, že transakce musí běžet přesně jednou a musí být atomická. Buď je veškerá práce hotová, nebo žádná z nich není. Operace v rámci transakce obvykle mají společný účel a jsou vzájemně závislé.
  • Konzistence zajišťuje, že jsou data konzistentní před transakcí i po transakci.
  • Izolace zajišťuje, že každá transakce není ovlivněna jinými transakcemi.
  • Stálost znamená, že změny provedené v důsledku transakce jsou trvale uloženy v systému. Systém ukládá data potvrzená tak, aby i v případě selhání a restartování systému byla data k dispozici ve správném stavu.

Pokud databáze nabízí záruky ACID, tyto principy se konzistentně uplatňují na každou transakci.

OLTP vs. OLAP

Transakční databáze se často nazývají systémy online zpracování transakcí (OLTP ). Systémy OLTP běžně podporují mnoho uživatelů, mají rychlou dobu odezvy a zpracovávají velké objemy dat. Jsou také vysoce dostupné, což znamená, že mají minimální prostoje. Systémy OLTP obvykle zpracovávají malé transakce nebo relativně jednoduché transakce.

Příkladem služby Azure, která podporuje OLTP, je Azure SQL Database.

Systémy OLAP (Online Analytical Processing) obvykle podporují méně uživatelů, mají delší dobu odezvy, mohou být méně dostupné a obvykle zpracovávají velké transakce nebo složité transakce.

Příkladem služby Azure, která podporuje OLAP, je Azure Analysis Services.

Termíny OLTP a OLAP se už nepoužívají tak často jako dřív, ale jejich porozumění vám usnadní kategorizaci požadavků pro vaši aplikaci.

Transakce: Vyhodnocení datových typů

Zajištění, aby vaše data byla ve správném stavu, není vždy snadný úkol. Transakce vám v tom můžou pomoct tím, že pro vaše data vynucují požadavky na integritu dat. Pokud vaše data těží z principů ACID, zvolte řešení úložiště, které podporuje transakce.

Pojďme si projít jednotlivé datové sady ve scénáři online maloobchodu a určit potřebu transakcí.

Data v katalogu produktů

Data v katalogu produktů by měla být uložena v transakční databázi. Když uživatel zadá objednávku a ověří se platba, měl by se aktualizovat inventář položek. Podobně platí, že pokud se platební karta zákazníka odmítne, měla by se objednávka vrátit zpět a inventář by se neměl aktualizovat. Tyto relace vyžadují transakce.

Fotky a videa

Fotky a videa v katalogu produktů nevyžadují podporu transakcí. Tyto soubory se změní pouze při aktualizaci nebo přidání nových souborů. I když mezi obrázkem a skutečnými údaji o produktu existuje vztah, není to v podstatě transakční.

Firemní data

Vzhledem k tomu, že obchodní data jsou historická a neměnná, nevyžaduje se podpora transakcí. Obchodní analytici, kteří pracují s daty, mají také jedinečné požadavky na dotazy. Často pracují s agregacemi ve svých dotazech, aby mohli pracovat s celkovými součty jiných menších datových bodů.

Prověřte si své znalosti

1.

Jaký typ transakčního databázového systému by byl ideální pro data o produktech?

2.

Předpokládejme, že operace maloobchodního prodejce, které aktualizují inventarizaci a zpracovávají platby, jsou ve stejné transakci. Uživatel se snaží na objednávku ze svého přenosného počítače uplatnit kredit ve výši 30 USD a odesílá stejnou objednávku pomocí kreditu z obchodu (za celou částku) ze svého telefonu. Obdrží se dvě identické objednávky. Databáze na pozadí je databáze kompatibilní s acid. Co se stane?