Hadoop alebo NoSQL? Čo sú to NoSQL databázy a ako fungujú

Ak sa Hadoop často považuje synonymum pre big data, NoSQL sa mnohokrát používa ako ozanačenie pre Hadoop. V skutočnosti rozdiel medzi týmito tromi pojmami je podobný ako rozdiel medzi slovami slivky, kôstkoviny a ovocinárstvo.

Stručne povedané, Hadoop je konkrétna technologická platforma pre masívne paralelné spracovanie údajov, zvyčajne používaná pre veľké dáta. NoSQL je označenie pre širšiu skupinu (viac ako 200) databázových systémov určených pre spracovanie rôznych typov úloh pre veľké dáta, medzi ktoré patrí aj Hadoop.

Technológia pre big data je relatívne mladá a búrlivo sa vyvíja. Hranice medzi jednotlivými produktami nie sú celkom jasné a stále sa menia. V celku sa však riešenia dajú rozdeliť do piatich hlavných skupín:

  • Tabuľky typu kľúč-hodnota (key – value tables)
    • uložené v RAM pamäti – prchavé (volatilné)
    • uložené na diskoch – trváce (perzistentné)
  • Tabuľky so širokými stĺpcami (large colum tables)
  • Dokumentové  databázy
  • Diagramové databázy

Tabuľky kľúč-hodnota

key value datastore
databáza kľúč hodnota

Tieto databázové riešenia vychádzajú pôvodne z hašovacích tabuliek (hash tables). Sú to v
zásade dvojstĺpcové tabuľky, kde prvý stĺpec obsahuje kľúčové hodnoty, podľa
ktorých sa vyhľadáva a druhý stĺpec obsahuje hodnoty, ktoré sa vyhľadávajú.

databaza pacientov typu kluc hodnota
databáza pacientov typu kľúč hodnota

Vyhľadávané hodnoty nemusia byť pritom len jednoduché čísla alebo reťazce, môžu to byť objekty rôzneho typu, ktoré obsahujú rôzne údaje, alebo ďalšie objekty alebo napríklad aj video súbory a pod. Každá hodnota môže byť iného typu a jednotlivé hodnoty môžu mať úplne odlišnú vnútornú štruktúru.

Príkladom môže byť karta zdravotných záznamov pacientov z celej krajiny.

Najčastejšie používanými databázami typu kľúč-hodnota sú Redis, Amazon DynamoDB, Riak, Windows Azure a ďalšie.
veľké dáta 544x1pix

Tabuľky so širokými stĺpcami

Pokiaľ vieme, že jednotlivé záznamy majú rovnaké skupiny dát, napríklad databáza o pacientoch obashuje informácie o obvodnom lekárovi, o diagnózach o hospitalizáciách , môžeme na ich ukladať do tzv.  tabuliek so širokými stĺpcami (wide column database). Tieto databázy sú veľmi rýchle a vhodné na spracovanie spôsobom mapreduce.

Práca s nimi je ale o niečo zložitejšia ako s tabuľkami kľúč-hodnota. Je potrebné vopred definovať tzv. skupiny stĺpcov (column families), ako napríklad obvodný lekár, diagnózy, iné záznamy, hospitalizácie a pod. Toto musí byť rovnaké pre celú tabuľku. Jednotlivé riadky tabuľku môžu mať ale v daných skupinách rôzny počet a rôzne druhy stĺpcov.

large colum datastore
tabuľka so šorkými stĺpcami, odtiene oranžovej určujú skupiny stĺpcov

Prototypom tohto typu databázy je BigTable od Google. Ďalším typickým predstaviteľom je HBase, ktorú využíva Hadoop, Cassandra (Facebook), či Amazon SimpleDB. Variantu tohto systému používa aj MS SQL Server 2012 (columstore indexes a Analysis Services tabular models).

Dokumentové databázy

dokumentova databazaPokiaľ sú dáta uložené, alebo sa dajú jednoducho transformovať do dokumentu typu XML alebo JSON, či podobného polo-štruktúrovaného (semi-structured) formátu je vhodnejšie použiť dokumentovú databázu.  Sú to tiež tabuľky typu kľúč-hodnota, kde hodnota je typu dokument. V oblasti big data sa najčastejšie používajú dokumenty typu JSON. Oproti všeobecným databázam typu kľúč-hodnota  majú dokumentové databázy výhodu v tom, že sa na úrovni celej databázy dá pracovať nielen s vyhľadávaním podľa kľúča ale dajú sa využívať aj mnohé štandardné funkcie na prácu s dokumentmi a sú veľmi výkonné.

Dokumentové databázy sú najrozšírenejším typom databáz v NoSQL svete. Miláčikom je zvlášť MongoDB, bezkonkurenčne najpoužívanejšia NoSQL databáza, ktorá dokáže riešiť mnoho reálnych problémov. Výborný produkt je aj Couchbase.

Diagramové databázy

Dnes, zvlášť s rozširujúcim sa používaním sociálnych sietí, stále väčšiu popularitu získavajú diagramové databázy (graph databases) . Tieto databázy sú vhodné hlavne v prípadoch, keď je potrebné efektívne ukladať a analyzovať nielen údaje o jednotlivých uzloch siete (napr. sociálnej) ale rôzne druhy väzieb medzi nimi.diagramova databaza

Jednoznačným lídrom v tejto oblasti je Neo4j. Ďalšími hráčmi sú Titan, OrientDB alebo ArangoDB.

Záver

Veľké dáta sú novým, rýchle rastúcim odvetvím IT priemyslu s množstvom produktov. Každý dodávateľ sa snaží pritiahnuť na seba čo najväčšiu pozornosť a ukrojiť si čo najväčší kus koláča trhového podielu.

Základnou marketingovou mantrou je byť odlišný, byť jedinečný. Preto sa každý snaží vymýšľať nové označenia a nové charakteristiky pre svoj produkt. Aj z tohto dôvodu nie je jednoduché orientovať sa v NoSQL databázach. Dúfam, že tento článok v tom čitateľom aspoň trochu pomôže.

Dodatok – SQL databázy

Niekto sa môže pýtať, v akej pozícií sú tu databázy ako Access, Microsoft SQL Server,  FoxPro, MySQL, Oracle, DB/2 a podobné. Toto sú takzvané SQL databázy, alebo relačné databázy. Sú to práve tie tradičné databázové systémy, ktoré big data už kapacitne nezvládajú alebo sú na to príliš drahé. Dôvod je hlavne ten, že  SQL databázy neumožňujú ani z ďaleka taký masívny paralelizmus spracovania ako NoSQL. Samozrejme rozdielov medzi SQL a NoSQL (čo mimochodom je skratka z Not only SQL, teda Nie len SQL) je oveľa viac a zrejme tomu budem venovať samostatný článok.

NoSQL databázy nie sú náhradou “starších” SQL databáz. Tie určite ešte dlho budú hlavnými dátovými systémami pre životne dôležité (mission critical) systémy podnikov a ďalších organizácií. NoSQL databázy sú zatiaľ hlavne doplnkom relačných pre oblasť veľkých dát, teda tých ktoré sa vyznačujú aspoň jedným z troch “V”: Volume, Velocity, Variety.

Zdieľať na Sieti:

4 thoughts on “Hadoop alebo NoSQL? Čo sú to NoSQL databázy a ako fungujú

  1. Veľmi dobre napísané. Dalo by sa tam ešte doplniť pre laikov, že ktorá kategória sú napr. platformy DB2, MySQL, Access, Visual FoxPro Oracle,…?

  2. Ďakujem, Štefan. Doplnil som na záver SQL databázy a hádam sa mi v dohľadnom čase podarí napísať aj samostatný článok.

  3. Článok pekný ale dovolím si nesúhlasiť s tvrdením “sú to práve tie tradičné databázové systémy, ktoré big dáta už kapacitne nezvládajú alebo sú na to príliš drahé”. Všetko to záleží od spôsobu konfigurácie daného databázového systému, hardwaru a OS. Aj v prípade NoSql databázy pri nevhodnom nakonfigurovaní dosiahneme zlé výkony. Čo sa týka ceny, tak je pravda že Oracle je možno drahá (treba mať však na pamäti načo je ta db určená a čo všetko vieme nakonfigurovať a tým vhodne prispôsobovať naším požiadavkám a čo všetko nám ponúka. Dovolím si tvrdiť že Oracle je skôr hybridná databáza ako klasická RDBMS, ktorou bola možno na začiatku a predpokladám že týmto smerom pôjdu (idú) všetky tzv. klasické databázy.) ale hneď ako sa začne používať Enterprise riešenie nejakej NoSql napríklad MongoDb, tak zistíte že to tiež nie je lacná záležitosť, nehovoriac o tom, že celá architektúra je založená na tom, že databázy bežia na viacerých serveroch (replika sety) ktoré sa združujú do tzv. Shardov, čo vlastne umožňuje masívne paralelné spracovanie. To však vieme dosiahnuť aj u tzv. tradičných db systémoch. NoSql databázy samozrejme umožňujú aj rýchlejšie spracovanie na úkor iných vecí (CAP theorem). Musím však povedať že konfigurácia shardov pre mongo db je jednoduchá.
    Ešte doplním že téma big data je naozaj veľká a tak ako NoSql tak aj RDBMS tam majú svoje miesto

  4. Ďakujem za komentár. Súhlasím s tým. že Oracle je výborná databáza a tiež s tým, že to nie je čisto RDBMS. Nielen Oracle ale aj množstvo ďalších dodávateľov RDBMS sa snaží rozšíriť funkcionalitu svojich systémov aj o NoSQL, lebo je to veľmi rýchle rozvíjajúci sa trh.
    Tento blog si nenárokuje na vysokú odbornosť, je to popularizačný blog. Preto tu používam množstvo zejdnodušení, aby boli články zrozumiteľnejšie. V každom prípade Vaše spresnenie je užitočné.

Comments are closed.