NoSQL vodič: Vrste NoSQL baza podataka i primjer
⚡ Pametni sažetak
NoSQL je nerelacijski sustav za upravljanje bazama podataka koji ne zahtijeva fiksnu shemu, izbjegava spajanja i lako se skalira. Ovaj resurs objašnjava što je NoSQL, zašto postoji, njegovu povijest, značajke, četiri vrste baza podataka, CAP teorem, konačnu konzistentnost te njegove prednosti i nedostatke.

Što je NoSQL?
NoSQL baza podataka je nerelacijski sustav za upravljanje podacima koji ne zahtijeva fiksnu shemu. Izbjegava spajanja i lako se skalira. Glavna svrha korištenja NoSQL baze podataka je distribuirana pohrana podataka s ogromnim potrebama za pohranom podataka. NoSQL se koristi za velike podatke i web aplikacije u stvarnom vremenu. Na primjer, tvrtke poput Twittera, Facebooka i Google prikupljaju terabajte korisničkih podataka svaki dan.
NoSQL baza podataka znači „Not Only SQL“ ili „Not SQL“. Iako bi bolji izraz bio „NoREL“, NoSQL se primio. Carl Strozzi predstavio je koncept NoSQL-a 1998. godine.
Tradicionalni RDBMS koristi SQL sintaksu za pohranu i dohvaćanje podataka radi daljnjih uvida. Umjesto toga, NoSQL sustav baze podataka obuhvaća širok raspon tehnologija baza podataka koje mogu pohranjivati strukturirane, polustrukturirane, nestrukturirane i polimorfne podatke. Razumijemo NoSQL pomoću dijagrama u ovom NoSQL vodiču za bazu podataka:
Zašto NoSQL?
Koncept NoSQL baza podataka postao je popularan među internetskim divovima poput Google, Facebook, Amazon, itd. koji rade s velikim količinama podataka. Vrijeme odziva sustava postaje sporo kada koristite RDBMS za velike količine podataka.
Da bismo riješili ovaj problem, mogli bismo "skalirati" svoje sustave nadogradnjom postojećeg hardvera. Ovaj proces je skup.
Alternativa ovom problemu je raspodjela opterećenja baze podataka na više hostova kad god se opterećenje poveća. Ova metoda poznata je kao "skaliranje".
NoSQL baza podataka nije relacijska, pa se bolje skalira od relacijskih baza podataka jer su dizajnirane imajući na umu web aplikacije.
Kratka povijest NoSQL baza podataka
- 1998. – Carlo Strozzi koristi termin NoSQL za svoju laganu relacijsku bazu podataka otvorenog koda.
- 2000. – Grafička baza podataka Neo4j je pokrenut.
- 2004 - Google BigTable je pokrenut.
- 2005 - CouchDB je pokrenut.
- 2007. – Istraživački rad o Amazon Dinamo je pušten.
- 2008. – Facebook otvara izvorni kod Cassandra Projekt.
- 2009. – Ponovno je uveden termin NoSQL.
Značajke NoSQL-a
Nerelacijski
- NoSQL baze podataka nikada ne slijede relacijski model.
- Nikada ne pružajte tablice s ravnim zapisima s fiksnim stupcima.
- Radite sa samostalnim agregatima ili BLOB-ovima.
- Ne zahtijeva objektno-relacijsku mapuping i normalizacija podataka.
- Nema složenih značajki poput jezika upita, planera upita, spojeva referencijalnog integriteta ili ACID-a.
Bez sheme
- NoSQL baze podataka su ili bez shema ili imaju opuštene sheme.
- Ne zahtijevajte nikakvu definiciju sheme podataka.
- Ponudite heterogene strukture podataka u istoj domeni.

Jednostavan API
- Nudi jednostavna sučelja za pohranu i upite podataka.
- API-ji omogućuju manipulaciju podacima niske razine i metode odabira.
- Tekstualni protokoli se uglavnom koriste s HTTP REST-om i JSON-om.
- Uglavnom se koristi NoSQL upitni jezik koji nije baziran na standardu.
- Web-baze podataka koje se pokreću kao internetske usluge.
distribuiran
- Više NoSQL baza podataka može se izvršavati na distribuirani način.
- Nudi mogućnosti automatskog skaliranja i prebacivanja u slučaju kvara.
- Često se ACID koncept može žrtvovati zbog skalabilnosti i propusnosti.
- Uglavnom nema sinkrone replikacije između distribuiranih čvorova; asinkrona replikacija s više glavnih čvorova, peer-to-peer, HDFS replikacija.
- Samo pružanje konačne dosljednosti.
- Arhitektura bez dijeljenja. To omogućuje manje koordinacije i veću distribuciju.
Vrste NoSQL baza podataka
NoSQL baze podataka Uglavnom se kategoriziraju u četiri vrste: par ključ-vrijednost, orijentirane na stupce, orijentirane na grafove i orijentirane na dokumente. Svaka kategorija ima svoje jedinstvene atribute i ograničenja. Nijedna od gore navedenih baza podataka ne rješava bolje sve probleme. Korisnici bi trebali odabrati bazu podataka na temelju svojih potreba za proizvodom.
Vrste NoSQL baza podataka:
- Na temelju para ključ-vrijednost
- Graf orijentiran na stupce
- Na temelju grafikona
- Orijentiran na dokumente
Na temelju para ključeva vrijednosti
Podaci se pohranjuju u parovima ključ/vrijednost. Dizajniran je na način da može podnijeti veliku količinu podataka i veliko opterećenje. Baze podataka za pohranu parova ključ-vrijednost pohranjuju podatke kao hash tablicu gdje je svaki ključ jedinstven, a vrijednost može biti JSON, BLOB (veliki binarni objekti), niz znakova itd.
Na primjer, par ključ-vrijednost može sadržavati ključ poput „Web-stranica“ povezan s vrijednošću poput „Guru99”.
To je jedan od najosnovnijih primjera NoSQL baze podataka. Ova vrsta NoSQL baze podataka koristi se kao kolekcija, rječnici, asocijativni nizovi itd. Spremišta ključ-vrijednost pomažu programeru da pohranjuje podatke bez sheme. Najbolje funkcioniraju za trgovineping sadržaj košarice.
Redis, Dynamo i Riak su neki NoSQL primjeri baza podataka za pohranu ključ-vrijednost. Sve su one temeljene na AmazonDinamov list.
Na temelju stupaca
Kolumnasto orijentirane baze podataka rade na stupcima i temelje se na radu o BigTableu od GoogleSvaki stupac se tretira zasebno. Vrijednosti baza podataka s jednim stupcem pohranjuju se kontinuirano.

Pružaju visoke performanse na upitima agregacije kao što su SUM, COUNT, AVG, MIN, itd., jer su podaci lako dostupni u stupcu. NoSQL baze podataka temeljene na stupcima široko se koriste za upravljanje skladištima podataka, Poslovna inteligencija, CRM i katalozi knjižničnih kartica.
HBase, Cassandrai Hypertable su primjeri NoSQL upita baza podataka temeljenih na stupcima.
Orijentiran na dokumente
Dokumentno orijentirana NoSQL baza podataka pohranjuje i dohvaća podatke kao par ključ-vrijednost, ali dio s vrijednošću pohranjuje se kao dokument. Dokument se pohranjuje u JSON ili XML formatu. Vrijednost razumije baza podataka i može se upitati.
Na ovom dijagramu s lijeve strane možete vidjeti retke i stupce, a s desne strane imamo bazu podataka dokumenata koja ima sličnu strukturu kao JSON. Za relacijsku bazu podataka morate znati koje stupce imate i tako dalje. Međutim, za bazu podataka dokumenata imate pohranu podataka poput JSON objekta. Ne morate je definirati, što je čini fleksibilnom.
Vrsta dokumenta se uglavnom koristi za CMS sustave, platforme za bloganje, analitiku u stvarnom vremenu i aplikacije za e-trgovinu. Ne bi se trebao koristiti za složene transakcije koje zahtijevaju više operacija ili upite prema različitim agregiranim strukturama.
Amazon SimpleDB, CouchDB, MongoDB, Riak i Lotus Notes su popularni programi orijentirani na dokumente DBMS sustavi.
Na temelju grafikona
Grafička baza podataka pohranjuje entitete kao i odnose među tim entitetima. Entitet se pohranjuje kao čvor, a odnos je prikazan kao brid. Brid daje odnos između čvorova. Svaki čvor i brid ima jedinstveni identifikator.
U usporedbi s relacijskom bazom podataka gdje su tablice labavo povezane, grafovska baza podataka je po prirodi multirelacijska. Prolazak kroz relacije je brz jer su već zabilježene u bazi podataka i nema potrebe za njihovim izračunavanjem. Grafovske baze podataka uglavnom se koriste za društvene mreže, logistiku i prostorne podatke.
Neo4J, beskonačni graf, OrientDBi FlockDB su neke popularne baze podataka temeljene na grafovima.
Alati mehanizma upita za NoSQL
Najčešći mehanizam dohvaćanja podataka je REST-bazirano dohvaćanje vrijednosti na temelju njenog ključa/ID-a s GET resursom.
Baze podataka za pohranu dokumenata nude složenije upite jer razumiju vrijednost u paru ključ-vrijednost. Na primjer CouchDB omogućuje definiranje prikaza pomoću MapReducea.
Što je CAP teorem?
CAP teorem se naziva i Brewerov teorem. On tvrdi da je nemoguće da distribuirano spremište podataka ponudi više od dva od tri jamstva:
- Dosljednost
- Dostupnost
- Tolerancija particije
Dosljednost: Podaci trebaju ostati dosljedni čak i nakon izvršenja operacije. To znači da kada se podaci zapišu, svaki budući zahtjev za čitanje treba sadržavati te podatke. Na primjer, nakon ažuriranja statusa naloga, svi bi klijenti trebali moći vidjeti iste podatke.
Dostupnost: Baza podataka treba uvijek biti dostupna i responzivna. Ne bi trebalo imati zastoja.
Tolerancija particije: Tolerancija particije znači da bi sustav trebao nastaviti funkcionirati čak i ako komunikacija između poslužitelja nije stabilna. Na primjer, poslužitelji se mogu podijeliti u više grupa koje možda neće međusobno komunicirati. Ovdje, ako je dio baze podataka nedostupan, drugi dijelovi su uvijek nepromijenjeni.
Eventualna dosljednost
Pojam „eventualna konzistentnost“ znači imati kopije podataka na više računala kako bi se postigla visoka dostupnost i skalabilnost. Stoga se promjene napravljene na bilo kojoj podatkovnoj stavci na jednom računalu moraju proširiti na druge replike.
Replikacija podataka možda neće biti trenutna, jer će se neke kopije ažurirati odmah, a druge s vremenom. Te kopije mogu biti međusobno nekonzistentne, ali s vremenom postaju konzistentne. Otuda i naziv konzistentnost.
BAZA: Basically Adostupno, Sčesto stanje, Eventualna konzistencija
- U osnovi dostupno znači da je baza podataka dostupna cijelo vrijeme prema CAP teoremu.
- Meko stanje znači da se stanje sustava može promijeniti čak i bez ulaznih podataka.
- Konačna konzistentnost znači da će sustav s vremenom postati konzistentan.
Prednosti NoSQL-a
- Može se koristiti kao primarni ili analitički izvor podataka.
- Mogućnost rada s velikim podacima.
- Nema niti jedne točke neuspjeha.
- Jednostavna replikacija.
- Nema potrebe za zasebnim slojem keširanja.
- Omogućuje brze performanse i horizontalnu skalabilnost.
- Može s jednakim učinkom obrađivati strukturirane, polustrukturirane i nestrukturirane podatke.
- Objektno orijentirano programiranje koje je jednostavno za korištenje i fleksibilno.
- NoSQL baze podataka ne zahtijevaju namjenski visokoučinkoviti poslužitelj.
- Podržava ključne razvojne jezike i platforme.
- Jednostavnije za implementaciju nego korištenje RDBMS-a.
- Može poslužiti kao primarni izvor podataka za online aplikacije.
- Obrađuje velike količine podataka, što znači da upravlja brzinom, raznolikošću, količinom i složenošću podataka.
- Izvrsno se snalazi u distribuiranim bazama podataka i operacijama s više podatkovnih centara.
- Eliminira potrebu za posebnim slojem predmemorije za pohranu podataka.
- Nudi fleksibilan dizajn sheme koji se može lako mijenjati bez zastoja ili prekida usluge.
Nedostaci NoSQL-a
- Nema pravila standardizacije.
- Ograničene mogućnosti upita.
- RDBMS baze podataka i alati su relativno zreli.
- Ne nudi nikakve tradicionalne mogućnosti baze podataka, poput dosljednosti kada se više transakcija izvodi istovremeno.
- Kada se količina podataka poveća, teško je održavati jedinstvene vrijednosti jer ključevi postaju teški.
- Ne funkcionira dobro s relacijskim podacima.
- Krivulja učenja je teška za nove developere.
- Opcije otvorenog koda nisu toliko popularne za poduzeća.






