Relační databáze jsou navrženy se spolehlivostí a konzistencí v jejich jádru. Inženýři, kteří je vyvinuli, se zaměřili na transakční model, který zajišťuje, že čtyři principy modelu ACID budou vždy zachovány. Příchod nového nestrukturovaného databázového modelu však obrátil ACID na hlavu. Databázový model NoSQL se vyhýbá vysoce strukturovanému relačnímu modelu ve prospěch flexibilního přístupu úložiště klíč / hodnota. Tento nestrukturovaný přístup k datům vyžaduje alternativu k modelu ACID: model BASE.
Základní principy modelu ACID
Existují čtyři základní principy modelu ACID:
- The atomicita transakcí zajišťuje, že každá databázová transakce je jedna jednotka, která k provedení používá přístup „vše nebo nic“. Pokud některý příkaz v transakci selže, je vrácena celá transakce.
- Relační databáze rovněž zajišťují konzistence každé transakce s obchodními pravidly databáze. Pokud by jakýkoli prvek atomové transakce narušil konzistenci databáze, celá transakce selže.
- Databázový stroj vynucuje izolace mezi více transakcemi, ke kterým dochází současně nebo v jejich blízkosti. Každá transakce nastává před nebo po každé další transakci a zobrazení databáze, které transakce vidí na jejím začátku, je změněna pouze samotnou transakcí před jejím uzavřením. Žádná transakce by nikdy neměla vidět meziprodukt jiné transakce.
- Konečný princip ACID, trvanlivost, zajišťuje, že jakmile je transakce potvrzena do databáze, je trvale chráněna pomocí záloh a protokolů transakcí. V případě selhání lze tyto mechanismy použít k obnovení potvrzených transakcí.
Základní principy BASE
Databáze NoSQL na druhé straně zahrnují situace, kdy je model ACID nadměrný nebo by ve skutečnosti bránil fungování databáze. Místo toho se NoSQL spoléhá na měkčí model známý vhodně jako model BASE. Tento model umožňuje flexibilitu, kterou nabízí NoSQL a podobné přístupy ke správě a správě nestrukturovaných dat. BASE se skládá ze tří principů:
- Základní dostupnost. Přístup NoSQL databáze se zaměřuje na dostupnost dat i v případě více selhání. Dosahuje toho pomocí vysoce distribuovaného přístupu ke správě databáze. Místo toho, aby udržovaly jediné velké úložiště dat a zaměřily se na odolnost tohoto úložiště proti chybám, databáze NoSQL šíří data napříč mnoha úložnými systémy s vysokou mírou replikace. V nepravděpodobném případě, že porucha naruší přístup k segmentu dat, nemusí to nutně vést k úplnému výpadku databáze.
- Soft State. Databáze BASE téměř úplně opouštějí požadavky na konzistenci modelu ACID. Jedním ze základních konceptů za BASE je, že konzistence dat je problémem vývojáře a neměla by být zpracována databází.
- Případná konzistence. Jediným požadavkem, který mají databáze NoSQL ohledně konzistence, je požadavek, aby v určitém okamžiku v budoucnosti došlo ke konvergenci dat do konzistentního stavu. Nejsou však poskytovány žádné záruky ohledně toho, kdy k tomu dojde. To je úplný odklon od požadavku okamžité konzistence ACID, který zakazuje provádění transakce, dokud nedojde k dokončení předchozí transakce a konvergování databáze do konzistentního stavu.
V BASE může základní dostupnost znamenat, že nemáte pod kontrolou ani zdroje dat. Například můžete část svého úsilí propojit s veřejnými datovými sadami.
Případy relativního použití
Model BASE není vhodný pro každou situaci, ale je to jistě flexibilní alternativa k modelu ACID pro databáze, které nevyžadují přísné dodržování relačního modelu. Optimální případy použití pro databáze využívající ACID závisí na vysoce strukturovaných datech s předvídatelnými vstupy a výstupy. Databáze lidských zdrojů, maloobchodní databáze a elektronické lékařské záznamy tedy těží z robustní kontroly vnitřní konzistence, kterou ACID nabízí. Základní řešení jsou však lepší pro fuzzy subjekty, jako je sentimentální analýza. Například projekt se strukturou BASE by mohl skenovat zdroj na Twitteru a hledat slova, která implikují emoce na základě konkrétního hashtagu. Zdroj Twitter není dobře strukturovaný ani lokálně vytvořený, ale datový proud nabízí informace, které jsou naprogramovány do dotazů, i když rozsah a povaha těchto dat nejsou čistě ohraničené.