Daniel Kolman

GOTO 2013 Amsterdam - Big Data a NoSQL

| 0 comments |

Na konci června jsem se díky Vendavu podíval do Amsterdamu na konferenci GOTO 2013, zřejmě jako jediný z Česko-Slovenska. Díky tomu jsem měl příležitost osobně potkat lidi, jejichž knížky čtu a které považuju za superstar mezi programátory.

V posledních letech jsem navštívil pár konferencí v česku a začínám mít pocit, že se tu začínají opakovat lidi i témata. Rozhodl jsem se proto poohlédnout se po nějaké "first-class" konferenci v zahraničí, a jelikož jsem si dobře vybral zaměstnavatele, sen se stal skutečností a já mohl strávit dva skvělé dny v Amsterdamu a vidět a mluvit s lidmi, kteří patří celosvětově mezi špičky v IT.

Program konference byl rozdělen do více než deseti tracků, mě nejvíc zajímaly tři: Big Data NoSQL Search, Legacy & Big Systems a Bring your own Language. Pokusím se shrnout to nejpodstatnější z mého dvoudenního programu. Bylo toho opravdu hodně a tak rozdělím článek na víc částí. Dnes se dozvíte něco o databázích, příště budeme pokračovat o legacy systémech, machine learningu a agilním hype.

Hadoop, Hive a HBase

Vypadá to, že základním stavebním kamenem všeho distribuovaného se stává Hadoop. Hadoop je distribuovaný souborový systém, který umožňuje data zpracovávat pomocí map-reduce. První den konference byly hned dvě přednášky o nástrojích na Hadoopu postavených.

Friso van Vollenhoven představil Hive, data warehouse, který umožňuje přistupovat k datům uloženým v Hadoopu pomocí SQL syntaxe. Klasické řešení warehousu spočívá v procesu ETL (= Extract Transform Load). Každá větší organizace má data uložena v několika různých systémech. Aby bylo možné tato data společně analyzovat, je nutné je z těchto systémů vytáhnout (=extract), převést do nějaké jednotné formy (=transform) a nahrát do jedné databáze (=load), které se pak říká warehouse. Protože taková operace není nejrychlejší, provádí se v dávkách, většinou jednou denně. Problém nastane, když potřebujete přidat další sloupec, nebo sledovat data po hodinách a ne po dnech. V těchto případech musíte upravit ETL proces a spustit ho znova.

Hive umožňuje ponechat data ve zdrojových formátech (vynechat transform) a dělat dotazy přímo nad textovými soubory v jazyce podobnému SQL (HiveQL). Výhodou je, že Hadoop, na rozdíl od tradičních warehousů, jednoduše a levně škáluje. Podobně jako v relační databázi i v Hive vytváříte tabulky, s tím rozdílem že definujete ze kterého souboru se má načítat a jaký regulární výraz se má použít pro parsování řádku.

Další přednáška (Jean-Daniel Cryans) byla o HBase, což je NoSQL databáze inspirovaná BigTable ale postavená nad Hadoopem. Hlavní výhoda je, že umožňuje ukládat hodně velká data (miliardy řádků x milióny sloupců) na běžném serverovém hardware. Například Facebook ji používá k ukládání messages, nebo Mozilla k analýze crash reportů.

V přednášce byl také zmíněn zajímavý nástroj k monitorování distribuovaných aplikací, OpenTSDB (Time Series Database). OpenTSDB je postaven nad HBase a umožňuje jednoduše analyzovat a graficky zobrazit metriky běžícího systému.

O pivu a grafových databázích

Sympatický příklad si pro vysvětlení principu grafových databází zvolil Rik van Bruggen. Rik je belgičan a belgičani mají rádi pivo. Ale dělají ho tolik různých druhů, že i oni sami mají problém se v nich vyznat (to se českovi jen tak nestane). A tak vznikla grafová databáze mapující různá piva, pivovary a jejich vlastnosti. Data jsou v grafové databázi uložena v podobě propojených uzlů, přičemž jak uzly, tak hrany mohou mít vlastnosti. Hledání v takové databázi probíhá ve dvou fázích - nejdřív se podle indexu najde výchozí uzel (např. "pivo s názvem Duval") a pak se v jeho okolí hledá pattern (např. "piva vařená stejným pivovarem jako Duval"). Rik o tom sepsal dost obsáhlý článek, případně je dostupná přednáška v češtině z loňského WebExpa.

NoSQL neznamená No Schema

Na Martina Fowlera jsem se opravdu těšil. Pokládám ho za jednu z největších osobností IT. Jeho knihu Patterns of Enterprise Application Architecture by měl znát každý, kdo se chystá navrhnout aplikaci nad relační databází, a neuškodí ani nikomu, kdo na takové aplikaci pracuje (aspoň by bylo víc lidí kteří znají identity map). Jeho webové stránky jsou nevyčerpatelnou studnicí moudrosti v podstatě o čemkoliv, co se týká vývoje enterprise software, navíc byl jedním ze zakládajících signatářů dokumentu, který odstartoval agilní revoluci.

Zřejmě kvůli vysokým očekáváním mě jeho přednáška, nazvaná Schemaless, trochu zklamala. Ne že by byla špatná, nebo špatně přednesená, naopak, Martin má přesně utříděné o čem mluví a dokáže to podat velmi srozumitelným způsobem. Jen mi přišlo že obsah je poněkud banální a nepřináší nic nového. Nakonec, posuďte sami: Přednáška byla téměř identická s první částí tohoto videa (čas 2:20-25:50), a to včetně slovních obratů a úvodních vtípků.

Hlavní informací bylo, že ačkoliv v NoSQL databázích nemusíte definovat žádné schema, data přesto implicitní schema obsahují. Argumenty, že absence schema je výhoda, jsou liché, protože pokud se nechcete dostat do problémů s různými verzemi dat v databázi, musíte data držet konzistentní a data migrovat na novou verzi schema, stejně jako v relační databázi musíte spouštět upgrade scripty. Implicitní schema je špatná věc, a proto se i v NoSQL databázích snažte schema vyjádřit explicitně. Další body přednášky (jak držet dynamické vlastnosti v objektech a kontextuální validace) považuju za všeobecně známé, pokud vás zajímají detaily, pusťte si tu přednášku.

Pokračování příště.

(0) Comments

Leave a Response