Pregled NoSQL
Akronim NoSQL je bil skovan leta 1998. Mnogi ljudje mislijo, da je NoSQL slabšalni izraz, ki je bil ustvarjen za pobadanje v SQL. V resnici izraz ne pomeni samo SQL. Ideja je, da lahko obe tehnologiji sobivata in da ima vsaka svoje mesto. Gibanje NoSQL je bilo v novicah v zadnjih nekaj letih, saj so številni voditelji Web 2.0 sprejeli tehnologijo NoSQL. Podjetja, kot so Facebook, Twitter, Digg, Amazon, LinkedIn in Google, na tak ali drugačen način uporabljajo NoSQL. Razčlenimo NoSQL, da ga lahko razložite svojemu CIO ali celo svojim sodelavcem.
NoSQL je nastal iz potrebe
Shranjevanje podatkov: Svetovno shranjeni digitalni podatki se merijo v eksabajtih. Eksabajt je enak eni milijardi gigabajtov (GB) podatkov. Po navedbah Internet.com, je bila količina shranjenih podatkov, dodanih v letu 2006, 161 eksabajtov. Samo 4 leta pozneje, leta 2010, bo količina shranjenih podatkov skoraj 1000 ExaBytes, kar je več kot 500-odstotno povečanje. Z drugimi besedami, na svetu je shranjenih veliko podatkov in bodo le še rasli.
Medsebojno povezani podatki: Podatki postajajo vedno bolj povezani. Ustvarjanje spleta spodbujajo hiperpovezave, blogi imajo povratne informacije in vsak večji sistem družbenih omrežij ima oznake, ki stvari povezujejo. Glavni sistemi so zgrajeni tako, da so medsebojno povezani.
Kompleksna podatkovna struktura: NoSQL lahko zlahka obravnava hierarhične ugnezdene podatkovne strukture. Če želite doseči isto stvar v SQL, bi potrebovali več relacijskih tabel z vsemi vrstami ključev. Poleg tega obstaja povezava med zmogljivostjo in kompleksnostjo podatkov. Zmogljivost se lahko poslabša v tradicionalnem RDBMS, saj shranjujemo ogromne količine podatkov, potrebnih v aplikacijah za družbena omrežja in semantični splet.
Kaj je NoSQL?
Predvidevam, da je eden od načinov za opredelitev NoSQL razmisliti, kaj ni. To ni SQL in ni relacijski. Kot že ime pove, ni nadomestilo za RDBMS, ampak ga dopolnjuje. NoSQL je zasnovan za porazdeljene podatkovne shrambe za zelo velike potrebe po podatkih. Pomislite na Facebook s 500.000.000 uporabniki ali Twitter, ki vsak dan nabira terabe podatkov.
V bazi podatkov NoSQL ni fiksne sheme in ni povezav. RDBMS se "razširja" s hitrejšo in hitrejšo strojno opremo in dodajanjem pomnilnika. NoSQL pa lahko izkoristi "pomanjšanje". Razširjanje se nanaša na razporeditev obremenitve na številne sisteme blaga. To je komponenta NoSQL, zaradi česar je poceni rešitev za velike nabore podatkov.
NoSQL kategorije
Trenutni svet NoSQL spada v 4 osnovne kategorije.
-
Trgovine ključev in vrednosti temeljijo predvsem na Amazonov papir Dynamo ki je bila napisana leta 2007. Glavna ideja je obstoj hash tabele, kjer je edinstven ključ in kazalec na določeno postavko podatkov. Te preslikave običajno spremljajo mehanizmi predpomnilnika za povečanje zmogljivosti.
- Družinske trgovine Column so bili ustvarjeni za shranjevanje in obdelavo zelo velikih količin podatkov, porazdeljenih po številnih strojih. Še vedno obstajajo ključi, vendar kažejo na več stolpcev. V primeru BigTable (Googlov model NoSQL družine stolpcev) so vrstice identificirane s ključem vrstice, podatki pa so razvrščeni in shranjeni po tem ključu. Stolpci so razvrščeni po družini stolpcev.
- Dokumentne baze podatkov so jih navdihnili Lotus Notes in so podobni trgovinam ključ/vrednost. Model so v bistvu dokumenti z različicami, ki so zbirke drugih zbirk ključ/vrednost. Delno strukturirani dokumenti so shranjeni v formatih, kot je JSON.
- Podatkovna baza grafovs so zgrajene z vozlišči, odnosi med opombami in lastnostmi vozlišč. Namesto tabel z vrsticami in stolpci ter togo strukturo SQL se uporablja prilagodljiv model grafov, ki se lahko razširi na številne stroje.
Glavni igralci NoSQL
Glavni akterji v NoSQL so se pojavili predvsem zaradi organizacij, ki so jih sprejele. Nekatere izmed največjih tehnologij NoSQL vključujejo:
- Dinamo: Dynamo je ustvaril Amazon.com in je najvidnejša baza podatkov ključ-vrednost NoSQL. Amazon je potreboval zelo razširljivo porazdeljeno platformo za svoja podjetja e-trgovine, zato so razvili Dynamo. Amazon S3 uporablja Dynamo kot mehanizem za shranjevanje.
- Cassandra:Cassandra je bil odprtokoden s strani Facebooka in je stolpno usmerjena baza podatkov NoSQL.
- BigTable: BigTable je Googlova lastniška stolpčna baza podatkov. Google dovoljuje uporabo BigTable, vendar samo za Google App Engine.
- SimpleDB: SimpleDB je še ena Amazonova baza podatkov. Uporablja se za Amazon EC2 in S3, je del spletnih storitev Amazon, ki zaračunavajo pristojbine glede na uporabo.
- CouchDB:CouchDB skupaj z MongoDB so odprtokodne dokumentno usmerjene baze podatkov NoSQL.
- Neo4J:Neo4j je odprtokodna grafična baza podatkov.
Poizvedba NoSQL
Večino razvijalcev zanima vprašanje, kako poizvedovati po bazi podatkov NoSQL. Navsezadnje podatki, shranjeni v ogromni bazi podatkov, nikomur ne koristijo, če jih ne morete pridobiti in pokazati končnim uporabnikom ali spletnim storitvam. Baze podatkov NoSQL ne zagotavljajo deklarativnega poizvedovalnega jezika na visoki ravni, kot je SQL. Namesto tega je poizvedovanje po teh bazah podatkov specifično za model podatkov.
Številne platforme NoSQL omogočajo vmesnike REST za podatke. Drugi API-ji za poizvedbo ponudb. Razvitih je nekaj orodij za poizvedbe, ki poskušajo poizvedovati po več bazah podatkov NoSQL. Ta orodja običajno delujejo v eni kategoriji NoSQL. En primer je SPARQL. SPARQL je specifikacija deklarativne poizvedbe, zasnovana za grafične baze podatkov. Tukaj je primer poizvedbe SPARQL, ki pridobi URL določenega blogerja (z dovoljenjem IBM):
PREFIX pena:
IZBERI ?url
IZ
KJE {
?sodelujoči foaf: ime "Jon Foobar" .
?sodelujoči foaf: spletni dnevnik ?url .
}
Prihodnost NoSQL
Organizacije, ki imajo velike potrebe po shranjevanju podatkov, resno gledajo na NoSQL. Očitno koncept v manjših organizacijah ni tako priljubljen. V raziskavi, ki jo je izvedel Information Week, 44 % poslovnih IT strokovnjakov še ni slišalo za NoSQL. Poleg tega je samo 1% anketirancev poročalo, da je NoSQL del njihove strateške usmeritve. Jasno je, da ima NoSQL svoje mesto v našem povezanem svetu, vendar se bo moral še naprej razvijati, da bo dobil množično privlačnost, za katero mnogi mislijo, da bi lahko imel.