Přehled NoSQL
Zkratka NoSQL byla vytvořena v roce 1998. Mnoho lidí si myslí, že NoSQL je hanlivý výraz vytvořený k tomu, aby šťoural do SQL. Ve skutečnosti tento termín znamená nejen SQL. Myšlenka je taková, ž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 předních představitelů Webu 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 svým spolupracovníkům.
NoSQL se vynořil z potřeby
Datové úložiště: Světově uložená digitální data se měří v exabajtech. Exabajt se rovná jedné miliardě gigabajtů (GB) dat. Podle Internet.com, množství uložených dat přidaných v roce 2006 bylo 161 exabajtů. Jen o 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ě je uloženo mnoho dat a jejich růst 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é věci spojují dohromady. Hlavní systémy jsou stavěny tak, aby byly vzájemně propojeny.
Složitá datová struktura: NoSQL si snadno poradí s hierarchickými vnořenými datovými strukturami. K dosažení stejné věci v SQL byste potřebovali 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 zhoršit, protože ukládáme obrovské množství dat požadovaných v aplikacích sociálních sítí a dalších sémantický web.
Co je NoSQL?
Myslím, že jedním ze způsobů, jak definovat NoSQL, je zvážit, co není. Není to SQL a není to relační. Jak název napovídá, není to náhrada za RDBMS, ale doplňuje jej. NoSQL je navrženo pro distribuovaná úložiště dat pro velmi rozsáhlé datové potřeby. Vzpomeňte si na Facebook s jeho 500 000 000 uživateli nebo Twitter, který každý den shromažďuje terabity dat.
V databázi NoSQL neexistuje žádné pevné schéma a žádná spojení. RDBMS se „škáluje“ získáváním rychlejšího a rychlejšího hardwaru a přidáváním paměti. NoSQL na druhou stranu může využít výhod „škálování“. Scaling out se týká rozložení zátěže na mnoho komoditních systémů. Toto je komponenta NoSQL, která z něj dělá levné řešení pro velké datové sady.
NoSQL kategorie
Současný svět NoSQL se vejde do 4 základních kategorií.
-
Obchody s páry klíč–hodnota jsou založeny především na Dynamo Paper od Amazonu který byl napsán v roce 2007. Hlavní myšlenkou je existence hashovací 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.
- Sloupec Rodinné obchody byly vytvořeny pro ukládání a zpracování 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 NoSQL rodiny Column od Googlu) jsou řádky identifikovány klíčem řádku s daty tříděnými a uloženými podle tohoto klíče. Sloupce jsou uspořádány podle rodiny sloupců.
- Databáze dokumentů byli inspirováni Lotus Notes a jsou podobné obchodům s páry klíč–hodnota. Model jsou v zásadě verzované dokumenty, které jsou kolekcemi jiný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í grafový model, který lze škálovat na mnoha strojích.
Hlavní hráči NoSQL
Hlavní hráči v NoSQL se objevili především díky organizacím, které je přijaly. Některé z největších technologií NoSQL zahrnují:
- Dynamo: Dynamo bylo vytvořeno Amazon.com a je nejvýznamnější databází Key-Value NoSQL. Amazon potřeboval vysoce škálovatelnou distribuovanou platformu pro své e-commerce podnikání, takže vyvinul Dynamo. Amazon S3 používá jako úložný mechanismus Dynamo.
- Cassandra:Cassandra byl open source od Facebooku a jde o sloupcově orientovanou NoSQL databázi.
- BigTable: BigTable je vlastní sloupcově orientovaná databáze společnosti Google. Google umožňuje použití BigTable, ale pouze pro Google App Engine.
- SimpleDB: SimpleDB je další databáze Amazonu. 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 dokumentově orientované NoSQL databáze.
- Neo4J:Neo4j je open source grafová databáze.
Dotazování NoSQL
Otázka, jak se dotazovat na NoSQL databázi, je to, co zajímá většinu vývojářů. Data uložená v obrovské databázi totiž nikomu nedělají dobře, pokud je nemůžete získat 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í těchto databází specifické pro datový model.
Mnoho platforem NoSQL umožňuje RESTful rozhraní k datům. Další rozhraní API dotazů na nabídku. Bylo vyvinuto několik dotazovacích nástrojů, které se pokoušejí dotazovat více databází NoSQL. Tyto nástroje obvykle fungují v rámci jedné kategorie NoSQL. Jedním z příkladů je SPARQL. SPARQL je deklarativní specifikace dotazu určená pro grafové databáze. Zde je příklad dotazu SPARQL, který získá adresu URL konkrétního bloggera (s laskavým svolením IBM):
PREFIX foaf:
VYBERTE ?url
Z
KDE {
?přispěvatel foaf: jméno "Jon Foobar" .
?přispěvatel foaf: weblog ?url .
}
Budoucnost NoSQL
Organizace, které potřebují masivní úložiště dat, se vážně zajímají o NoSQL. Zdá se, že tento koncept se v menších organizacích tolik neprosazuje. V průzkumu, který provedl Information Week, 44 % podnikových IT profesionálů neslyšelo o NoSQL. Dále pouze 1 % respondentů 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, o které si mnozí myslí, že by mohl mít.