Zkratka NoSQL byla vytvořena v roce 1998. Mnoho lidí si myslí, že NoSQL je hanlivý termín vytvořený za účelem poke na SQL. Ve skutečnosti tento termín znamená nejen SQL. Myšlenka je, že obě technologie mohou koexistovat a každá má své místo. Hnutí NoSQL bylo v posledních několika letech ve zprávách, protože mnoho vůdců Web 2.0 přijalo technologii NoSQL. Společnosti jako Facebook, Twitter, Digg, Amazon, LinkedIn a Google používají NoSQL tak či onak. Pojďme rozebrat NoSQL, abyste to mohli vysvětlit svému CIO nebo dokonce vašim spolupracovníkům.
NoSQL vznikl z potřeby
Datové úložiště: Uložená digitální data na světě se měří v exabajtech. Exabajt se rovná jedné miliardě gigabajtů (GB) dat. Podle Internet.com bylo množství uložených dat přidaných v roce 2006 161 exabajtů. Pouhé 4 roky později v roce 2010 bude množství uložených dat téměř 1 000 ExaBytes, což je nárůst o více než 500%. Jinými slovy, na světě se ukládá spousta dat a jejich rozšiřování bude pokračovat.
Propojená data: Data se stále více propojují. Tvorba webu podporovaná hypertextovými odkazy, blogy mají pingbacky a každý hlavní systém sociálních sítí má značky, které spojují věci dohromady. Hlavní systémy jsou konstruovány tak, aby byly vzájemně propojeny.
Složitá datová struktura: NoSQL dokáže snadno zpracovat hierarchické vnořené datové struktury. Chcete-li dosáhnout stejné věci v SQL, budete potřebovat více relačních tabulek se všemi druhy klíčů. Kromě toho existuje vztah mezi výkonem a složitostí dat. Výkon se může v tradičním RDBMS snížit, protože ukládáme obrovské množství dat požadovaných v aplikacích sociálních sítí a sémantickém webu.
Co je NoSQL?
Myslím, že jedním ze způsobů, jak definovat NoSQL, je zvážit, co to není. Není to SQL a není to relační. Jak název napovídá, nejde o náhradu za RDBMS, ale doplňuje ji. NoSQL je určen pro úložiště distribuovaných dat pro potřeby dat ve velkém měřítku. Přemýšlejte o Facebooku s jeho 500 000 000 uživateli nebo Twitteru, který každý den shromažďuje Terabity dat. V databázi NoSQL neexistuje žádné pevné schéma a žádná spojení. RDBMS se „zvětšuje“ tím, že získává stále rychlejší hardware a přidává paměť. NoSQL, na druhé straně, může využít „škálování“. Škálování znamená rozložení zátěže na mnoho komoditních systémů. Toto je součást NoSQL, která z něj činí levné řešení pro velké datové sady.
Kategorie NoSQL
Současný svět NoSQL zapadá do 4 základních kategorií.
- Obchody klíč – hodnota jsou založeny primárně na Amazonově Dynamo Paper, který byl napsán v roce 2007. Hlavní myšlenkou je existence hash tabulky, kde je jedinečný klíč a ukazatel na konkrétní položku dat. Tato mapování jsou obvykle doprovázena mechanismy mezipaměti pro maximalizaci výkonu.
- Sloupové rodinné obchody byly vytvořeny pro ukládání a zpracování velmi velkého množství dat distribuovaných na mnoha strojích. Stále existují klíče, ale ukazují na více sloupců. V případě BigTable (model Google Column Family NoSQL) jsou řádky identifikovány klíčem řádku s daty tříděnými a uloženými tímto klíčem. Sloupce jsou uspořádány podle rodiny sloupců.
- Databáze dokumentů byly inspirovány Lotus Notes a jsou podobné obchodům s hodnotami klíčů. Model je v zásadě verzovanými dokumenty, které jsou kolekcemi dalších kolekcí klíč – hodnota. Polostrukturované dokumenty jsou uloženy ve formátech jako JSON.
- Databáze grafůs jsou vytvořeny s uzly, vztahy mezi poznámkami a vlastnostmi uzlů. Místo tabulek řádků a sloupců a rigidní struktury SQL se používá flexibilní model grafu, který lze škálovat napříč mnoha stroji.
Hlavní hráči NoSQL
Hlavní hráči v NoSQL se objevili především kvůli organizacím, které je přijaly. Mezi největší technologie NoSQL patří:
- Dynamo: Dynamo bylo vytvořeno na Amazon.com a je nejvýznamnější databází klíč-hodnota NoSQL. Amazon potřeboval vysoce škálovatelnou distribuovanou platformu pro své podnikání v oblasti elektronického obchodování, takže vyvinuli Dynamo. Amazon S3 používá jako mechanismus úložiště Dynamo.
- Cassandra: Cassandra byla otevřená ze zdrojů Facebooku a je to sloupcová databáze NoSQL.
- Velká tabulka: BigTable je proprietární sloupově orientovaná databáze společnosti Google. Google povoluje použití BigTable, ale pouze pro Google App Engine.
- SimpleDB: SimpleDB je další databáze Amazon. Používá se pro Amazon EC2 a S3 a je součástí Amazon Web Services, která účtuje poplatky v závislosti na použití.
- CouchDB: CouchDB spolu s MongoDB jsou open source databáze NoSQL orientované na dokumenty.
- Neo4J: Neo4j je databáze grafů s otevřeným zdrojovým kódem.
Dotazování na NoSQL
Většina vývojářů se zajímá o otázku, jak zadávat dotazy do databáze NoSQL. Koneckonců, data uložená v obrovské databázi nikomu neprospějí, pokud je nemůžete načíst a ukázat koncovým uživatelům nebo webovým službám. Databáze NoSQL neposkytují deklarativní dotazovací jazyk na vysoké úrovni, jako je SQL. Místo toho je dotazování na tyto databáze specifické pro daný model. Mnoho z NoSQL platforem umožňuje RESTful rozhraní k datům. Další API pro nabídku dotazů. Existuje několik dotazovacích nástrojů, které byly vyvinuty a které se pokoušejí dotazovat více databází NoSQL. Tyto nástroje obvykle fungují v jedné kategorii NoSQL. Jedním z příkladů je SPARQL. SPARQL je deklarativní specifikace dotazu určená pro databáze grafů. Zde je příklad dotazu SPARQL, který načte adresu URL konkrétního blogera (s laskavým svolením IBM):
PREFIX foaf:
VYBRAT? Url
Z
KDE {
„přispěvatel foaf: jméno„ Jon Foobar “.
„přispěvatel foaf: weblog“ url.
}
zadejte = „kód“>
Budoucnost NoSQL
Organizace, které mají obrovské požadavky na ukládání dat, se vážně dívají na NoSQL. Zdá se, že koncept nedostává tolik trakce v menších organizacích. V průzkumu provedeném Informačním týdnem neslyšelo 44% profesionálů v oboru IT IT o NoSQL. Pouze 1% respondentů dále uvedlo, že NoSQL je součástí jejich strategického směřování. Je zřejmé, že NoSQL má své místo v našem propojeném světě, ale bude se muset nadále vyvíjet, aby získal masovou přitažlivost, kterou si mnozí myslí, že by mohla mít.