nav line

BigData, NoSQL, využívání zdrojů a pár slov na závěr

V předchozích dílech jsem slíbil bližší pohled na pojem BigData a jednotlivé druhy nerelačních databází. K tomu přidám krátký popis využívání zdrojů. V závěru v rychlosti shrnu vše, co jsem v této třídílné sérii o databázích a databázových modelech zmínil. Bohužel, vzhledem k rozsahu, se v tomto dílu nedostane na všechna zmiňovaná témata. Proto se na produkty softwarové nadace Apache, pro snadnější manipulaci s daty, a na slíbené překvapení zaměřím až v dalším příspěvku.

BigData, NoSQL, využívání zdrojů
a pár slov na závěr

V předchozích dílech jsem slíbil bližší pohled na pojem BigData a jednotlivé druhy nerelačních databází. K tomu přidám krátký popis využívání zdrojů. V závěru v rychlosti shrnu vše, co jsem v této třídílné sérii o databázích a databázových modelech zmínil. Bohužel, vzhledem k rozsahu, se v tomto dílu nedostane na všechna zmiňovaná témata. Proto se na produkty softwarové nadace Apache, pro snadnější manipulaci s daty, a na slíbené překvapení zaměřím až v dalším příspěvku.

BigData

Ač se o BigData velice zajímám, nikde jsem přesnou definici tohoto pojmu nenašel. Proto se přikláním k definici společnosti Gartner, která pojem BigData definuje pomocí 3V - High Volume, High Velocity, High Variety (velký objem, vysoká rychlost, velká rozmanitost | zdroj 5). Jak je vidět, nejedná se pouze o množství dat, ale i o rychlost čtení/zápisu a zpracování a o rozmanitost struktury uložených dat. Příkladem pro pojem BigData může být velký hadronový urychlovač částic v CERNu, který by měl generovat přibližně 15 PB (1 PB = 250 B) dat za rok (zdroj 4). I když nejsou všechna data ukládána do databází, je toto množství ohromné.

Modely nerelačních databází

Vývoj v tomto odvětví je velmi progresivní. Pro snadnější orientaci můžeme rozčlenit nerelační databáze podle použitého databázového modelu. Jednotlivými základními modely jsou dokumentově orientovaný model, model typu klíč-hodnota, model BigTable, grafový model a model časových řad.

Dokumentově orientovaný model

Základním prvkem tohoto modelu je dokument, který obsahuje polostrukturovaná data. Kromě dat samotných je v dokumentu uložen i popis jejich struktury (metadata). Databáze tohoto typu povětšinou využívají pro uchování dat formáty XML, YAML, JSON nebo BSON. Údaje v databázi je možné indexovat a většina databází toto dělá automaticky. Díky tomu je možné přistupovat buď ke klíči nebo k samotnému obsahu dokumentu. Při organizaci dat je možné seskupovat dokumenty do logických celků (kolekcí) a přiřazovat k nim pravidla (například oprávnění přístupu apod.). Struktura dokumentů je nezávislá a v jedné kolekci mohou být různé dokumenty s rozdílnými záznamy. Databáze zároveň umožňují pracovat pouze s částí dokumentu. Dokumentově orientované databáze jsou vysoce flexibilním NoSQL řešením, vhodným pro ukládání nestrukturovaných dat, ale, v případě potřeby, s možností strukturu definovat. Použití je vhodné všude tam, kde je kladen důraz na univerzální, škálovatelné řešení s možností vyhledávání v rozsáhlých textech.

Model klíč-hodnota

Tento model je možné chápat jako slovník nebo jako obdobu dvousloupcové tabulky v RDBMS. Rozdíl je v přístupu k datům. Zatímco relační model umožňuje přístup jak ke klíči, tak k hodnotě, v nerelačním modelu bylo možné dotazovat se pouze na klíč (nicméně v dnešní době je díky sekundárním indexům i toto pravidlo prolomeno, např. Riak DB). Největší předností tohoto modelu je jednoduchost a snadná horizontální škálovatelnost. Databází s modelem klíč-hodnota je velké množství. Některé z nich umožňují plnou podporu ACID transakcí a zajišťují konzistenci (např. HyperDex DB). Proto mohou v některých případech nahradit relační databázi a stávajícímu řešení dodat výhodu snadné škálovatelnosti a vyššího výkonu. Jiné je, díky jejich vlastnostem, vhodné používat například jako cache (např. MemCached).

Model BigTable

Někdy bývá také nazýván modelem rodiny sloupců (column-family). Jelikož se jedná převážně o klony databáze BigTable (vyvíjenou společností Google), osobně preferuji označení modelu BigTable. Databáze používající tento model ukládají data jako vícerozměrné mapy. Tyto mapy si můžeme představit jako tabulku, kde se klíč skládá z identifikátoru "řádku" a "sloupce". K tomuto klíči se navíc přidává časové razítko (timestamp), které slouží k odhalování konfliktů při zápise a pro expiraci a skupinový, takzvaný column-family, identifikátor. BigTable databáze jsou výborně škálovatelné a umí pracovat s opravdu velkým množstvím dat. Výhodou je i snadné přidávání nových záznamů. Nevýhodami jsou pak nižší výkon při použití na malém množství uzlů (min. 3, zdroj 1) a nemožnost indexování. Díky takto navrženému modelu je také velmi neefektivní vyhledávání bez znalosti klíče. Tento model dnes nachází uplatnění například jako geolokační databáze nebo databáze pro sledování chování uživatelů na webu.

Grafový model

Grafové databáze se odlišují od databází zmíněných výše. Tento model reprezentuje strukturu dat jako graf. Záznamy jsou uzly a vazby jsou hrany, které jsou orientovány a doplněny o atributy a ohodnocení vztahu (vycházející z teorie grafů). Vztah (relace) mezi uzly grafu má vždy nějaký směr, který určuje jeho smysl a atributy poskytující užitečné informace. Směr si lze představit jako vztahy mezi lidmi. Petrovi se líbí Šárka, ale již nemusí platit, že Šárce se líbí Petr. V některých požadovaných situacích můžeme směr vztahu ignorovat. Jelikož je grafový model zaměřen na vazby mezi daty, lze tyto databáze jen velice obtížně škálovat. Při porovnání s relačními databázemi je, vhledem k manipulaci a zpracovávání dat, škálování u grafových databází stále efektivnější. NoSQL tedy není pouze o škálovatelnosti a struktuře dat. Tento druh databází je vhodné použít všude tam, kde chceme hledat nejkratší cesty, analyzovat vazby mezi objekty a získávat další výhody plynoucí z grafových analýz.

Model časových řad

Časová řada jsou věcně a prostorově srovnatelná pozorování (dat), která jsou jednoznačně uspořádána z hlediska času ve směru od minulosti do přítomnosti (zdroj 4). Můžeme rozlišovat časové řady několika typů - intervalové, okamžikové či odvozené. Data bývají zpravidla označována pomocí názvu, značky a metadat. Hodnota je většinou omezena na uložení jednoduchého datové typu bez složitější struktury. Databáze podporují výpočet základních statistik: suma, průměr, maximum a minimum. Jelikož sbíraná data mají většinou pravidelný charakter, lze je velmi dobře agregovat a škálovat. Vzhledem k povaze dat je možné zpracovávat velké množství záznamů téměř v reálném čase. Další výhodou modelu časových řad je skutečnost, že nezáleží na tom, který jejich typ použijeme.

Využívání zdrojů

Jak již bylo zmíněno dříve, vzrůstá požadavek na množství a rychlost zpracování dat pro prezentaci. Data je dobré prezentovat nejlépe v reálném čase. Proto je rychlost a efektivita využívání zdrojů klíčová. Pokud chceme z databáze získat data, je velký rozdíl v rychlosti, pokud nám budou data poskytnuta z operační paměti, nebo z fyzických disků (solid-state nebo pevných disků). Obecně se NoSQL databáze snaží co nejvíce relevantních dat držet v operační paměti. Při vhodném nastavení a vhodně zvoleném rozložení dat při škálování systému můžeme dosáhnout velice efektivního získávání dat, kdy je jejich většina poskytnuta z operační paměti. Nicméně ani při použití NoSQL databází se neobejdeme bez práce s daty fyzicky uloženými (čtení/zápis). To bývá kámen úrazu. Proto vznikají nové požadavky na práci s daty na fyzickém úložišti. Zlepšení výkonu by mohly přinést nové technologie na poli filesystémů. V systémech Solaris od firmy Sun/Oracle (souborový systém ZFS) nebo v Linuxových systémech (souborový systém Btrfs) jsou vyvíjeny copy-on-write souborové systémy. Tyto systémy nikdy nemodifikují původní bloky, ale modifikují pouze jejich kopie. Stejným způsobem modifikují metadata. Po dokončení provedou zneplatnění původních bloků a potvrdí platnost bloků nových. Souborový systém je vždy konzistentní a předejde se dvojímu zapisování dat, jako se to děje u běžných žurnálovacích souborových systémů. Nicméně na zhodnocení jejich skutečného přínosu ve využívání zdrojů si budeme muset ještě nějaký čas počkat.

Shrnutí

V tomto miniseriálu o databázích jsem prošel historii vývoje a pokusil se nastínit nové možnosti, které nám vývoj tohoto odvětví přináší. Ne vše staré je špatné a vše nové spásné. Vhodnou kombinací však lze dosáhnout zajímavých výsledků jak v rychlosti zpracování dat, tak i v úspoře využívání zdrojů. Nové trendy postupně směřují k využití a propojení myšlenek nerelačního a relačního modelu, které jsme uvedli do kontextu business inteligence a mohou znamenat konkurenční výhodu. Dále nám mohou poskytnout úspory v kontextu využívání systémových a hardwarových zdrojů a ukazují také nové možnosti při snaze dostat z těchto zdrojů maximum. Lpění pouze na relačním modelu, nebo úplný přechod na model nerelační se ukazuje v mnoha případech méně efektivní, než propojení obou modelů. V příštím článku vám, kromě seynámení s nástroji softwarová nadace Apache, popíši myšlenkové pochody, které nás s kolegou vedly k užití relační databáze v kombinaci s několika druhy nerelačních databází. Některá svá tvrzení pak podpořím grafy a čísly.

Loučím se s přáním krásných svátků vánočních a všeho dobrého v následujícím roce.

Zdroje:

Daniel G. McCreary and Ann M. Kelly
Making sense of NoSQL: a guide for managers and the rest of us.
(Shelter Island: Manning, 2013. ISBN 978-161-7291-074).
Christof Strauch,
NoSQL Databases, Hochschule der Medien,
(Stuttgart, http://www.christof-strauch.de/nosqldbs.pdf)
Dr. Eric A. Brewer,
Towards Robust. Distributed Systems
(July 19, 2000, https://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf)
www.wikipedie.org
www.gartner.com
www.oracle.com
btrfs.wiki.kernel.org

Ohodnoťte článek

BigData, NoSQL, využívání zdrojů  a pár slov na závěr

Související články

Vyhledávání na blogu

Webová integrace

Webová integrace jako nová oblast pro business „velkých" webových agentur.

o webové integraci

Profily blogujících