You are on page 1of 28

Sta je NoSQL?

● NoSQL je ne-relacijski DMS, za koji nije potrebna fiksna šema, izbegava


pridruživanje i lako je skalirati.  NoSQL se koristi za velike podatke i web
aplikacije u realnom vremenu. Na primer, kompanije poput Twitter-a,
Facebook-a i Google-a, koje prikupljaju terabajte korisničkih podataka
svaki dan.
● NoSQL baza podataka označava „Ne samo SQL“ ili „Nije SQL“. Koncept
NoSQL predstavio je Carl Strozz 1998. godine.
● Tradicionalni RDBMS koristi SQL sintaksu za čuvanje i preuzimanje
podataka za dalji uvid. Umesto toga, sistem baza podataka NoSQL
obuhvata širok spektar tehnologija baza podataka koje mogu da skladište
strukturirane, polustrukturirane, nestrukturirane i polimorfne podatke.
NoSQL  je pristup dizajniranju baza podataka koji može primiti široku paletu modela podataka, uključujući formate
ključ-vrednost, dokument, kolona i grafikon.
Zašto NoSQL ?
● Koncept NoSQL baza podataka postao je popularan kod internetskih
giganta poput Google-a, Facebook-a, Amazon-a itd. koji se bave ogromnim
količinama podataka. Vreme odziva sistema postaje sporo kada koristite
RDBMS za ogromne količine podataka.

● Da bismo rešili ovaj problem, mogli bismo da „pojačamo“ naše sisteme


nadogradnjom postojećeg hardvera. Ovaj postupak je skup.

● Alternativa ovom pitanju je distribucija opterećenja baze podataka na više


hostova kad god se povećava opterećenje. Ova metoda je poznata kao
"skaliranje".
NoSQL baza podataka nije relacijska, pa se bolje koristi
od relacijskih baza podataka, jer su dizajnirane s
obzirom na web aplikacije.
Kratka istorija baza podataka NoSQL

●1998. - Carlo Strozzi koristi izraz NoSQL za svoju laganu, relacijsku bazu otvorenog koda
●1999. - Berkelei DB je komercijalno izdao Sleepycat Software
●2000- Pokrenuta je baza podataka grafikona Neo4j
●2004 - lansirana je Google BigTable
●2005 - lansirana je CouchDB
●2006. - Kompaniju Berkelei DB je kupio Oracle
●2007 - Objavljen je istraživački rad o Amazon Dinamu
●2008- Facebooks open source Cassandra projekat
●2009- Ponovo je uveden izraz NoSQL

Karakteristike NoSQL-a

● NoSQL baze podataka nikada ne slede relacijski model


● Radi se sa samostalnim agregatima
● Ne zahteva objektno-relacijsko mapiranje i normalizaciju podataka
● Nema složenih funkcija kao što su jezici upita, planeri upita,
pridružuje se referentni integritet , ACID
Bez šema

● NoSQL baze podataka ne sadrže šeme ili imaju opuštene šeme


● Ne zahtevajte bilo kakvu definiciju šeme podataka
● Nudi heterogene strukture podataka na istom domenu
Jednostavan API

● Nudi jednostavne interfejse za dostupne podatke za


skladištenje i upite
● API-jevi omogućavaju manipulaciju podacima i metode
odabira podataka na niskom nivou
● Tekstualni protokoli koji se uglavnom koriste sa HTTP REST
sa JSON
● Uglavnom se ne koristi standardni jezik upita
● Web-baze podataka koje rade kao usluge okrenute
internetu
● Višestruke NoSQL baze podataka mogu se izvoditi distribuirano
● Nudi mogućnosti automatskog skaliranja i prebacivanja
● Često ACID koncept se može žrtvovati za skalabilnost i
propusnost
● Uglavnom nema sinhrone replikacije između distribuiranih
čvorova
● Samo pružanje eventualne konzistentnosti
● Shared Nothing Architecture. To omogućava manju koordinaciju
i veću distribuciju.
Vrste NoSQL baza podataka

● Postoje uglavnom četiri kategorije NoSQL baza podataka. Svaka


od ovih kategorija ima svoje jedinstvene atribute i ograničenja.
Nijedna posebna baza podataka nije bolja za rešavanje svih
problema. Trebalo bi odabrati bazu podataka na osnovu potreba
vašeg proizvoda. :
● Na osnovu parova ključ-vrednost
● Graf orijentisan na kolonu
● Grafikoni
● Dokumentski orijentisan na osnovu parove ključne vrednosti
Podaci se čuvaju u parovima ključ / vrednost.
● Dizajniran je na takav način da obrađuje puno podataka i veliko opterećenje.
Baze podataka skladištenja parova ključeva i vrednosti upisuju podatke u
obliku hash tabele u kojoj je svaki ključ jedinstven, a vrednost može biti
JSON, BLOB (Binarni veliki objekti), string itd.
Na osnovu kolona
● Baze podataka orijentisane na kolone rade na kolonama i bazirane su na BigTable papiru od strane Google-a. Svaka
kolona se tretira odvojeno. Vrednosti baza podataka u jednoj koloni se neprekidno čuvaju.
● Oni pružaju visoke performanse na agregacionim upitima poput SUM, COUNT, AVG, MIN itd., jer su podaci lako
dostupni u koloni.
● NoSQL baze podataka zasnovane na koloni široko se koriste za upravljanje skladištima podataka, poslovnom
inteligencijom, CRM-om, katalozima bibliotekarskih kartica, HBase, Cassandra, Hipertable su primeri baze podataka na
bazi kolona.
Cassandra

Predstavlja projekat Apache korporacije, napisan u Java programskom jeziku


pod Apache 2.0 licencom koja se može smatrati open source licencom.
Cassandra se koristi u kompanijama kao što su Netflix, eBay, Twitter i raznim
drugim koje imaju velike skupove podataka. Najveći klaster gde je Cassandra
u upotrebi sadrži preko 300 TB podataka na preko 400 mašina. Replikacija
podataka je automatska na više različitih mesta radi potpune kontrole nad
greškama. U slučaju pada nekog čvora, on može biti zamenjen bez prekida
rada. Cassandra je pogodna za aplikacije koje ne dozvoljavaju gubitak
podataka čak i kad ceo centar podataka iz nekog razloga prekine sa radom.
Nudi kontrolu nad sinhronom ili asinhronom replikacijom za svaku operaciju
ažuriranja. Propusnost čitanja i pisanja raste linearno sa dodavanjem novih
mašina, bez prekida ili usporavanja rada aplikacija
HBase

Predstavlja takođe projekat Apache korporacije, u Java programskom jeziku


pod Apache 2.0 licencom. Koriste ga kompanije kao što su Adobe, Facebook,
Yahoo! i mnoge druge. Hbase je distribuirano, skalabilno skladište za velike
količine podataka (Big Data) koje se nudi kao rešenje kad je potrebno u
realnom vremenu pročitati ili uneti podatke i imati potpun i brz pristup svim
podacima koje čuvamo, a koji su veliki u smislu tabela koje sadrže milijarde
redova miliona kolona. Hbase koristi HDFS (HadoopDistributed File System)
koji služi i kao izvor i kao odredište za poslove izvršene na Map-Reduce
frejmvorku na Hadoop-u.
Dokumentski orijentisan
● NoSQL DB orijentisan na dokument upisuje i nalazi podatke kao par
ključeva vrednosti, ali vrednosni deo se čuva kao dokument. Dokument se
čuva u JSON ili KSML formatu. Vrednost DB je razumljiva i može se
zatražiti.
Grafički
● Baza podataka grafikona čuva entitete, kao i odnose među tim entitetima.
Entitet se čuva kao čvor sa odnosom kao ivice. Ivica daje odnos između
čvorova. Svaki čvor i ivica imaju jedinstveni identifikator.
Alat za mehanizam upita za NoSQL

● Najčešći mehanizam za pretraživanje podataka je


pronalaženje vrednosti zasnovano na REST-u zasnovano na
njegovom ključu / ID-u sa GET resursom
● Baza podataka trgovine dokumentima nudi teže upite pošto
razumeju vrednost u paru ključ-vrednost. Na primer,
CouchDB omogućava definisanje prikaza pomoću
MapReduce.
Doslednost
● Podaci bi trebali ostati dosledni i nakon izvršenja operacije. To znači da
nakon što se podaci upišu, svaki budući zahtev za čitanje treba da sadrži te
podatke. Na primer, nakon ažuriranja statusa narudžbine, svi klijenti bi
trebalo biti u mogućnosti da vide iste podatke.

Dostupnost:
  Baza podataka uvek treba da bude dostupna i da reaguje. Ne bi trebalo da
ima zastoja.
 
Tolerancija particije:
 
Tolerancija particije znači da bi sistem trebalo da nastavi da funkcioniše čak i
ako komunikacija među serverima nije stabilna. Na primer, serveri se mogu
podeliti u više grupa koje možda međusobno ne komuniciraju. Ovde, ako deo
baze podataka nije dostupan, ostali delovi uvek nisu pogođeni.
Eventualna konzistentnost
● Izraz "eventualna konzistentnost" znači imati kopije podataka na više mašina
kako bi se dobila velika dostupnost i skalabilnost. Stoga se izmene unešene
u bilo koji podatak na jednoj mašini moraju preneti na druge replike.

● Replikacija podataka možda neće biti trenutna jer će se neke kopije odmah
ažurirati, a druge u dogledno vreme. Te kopije mogu biti obostrano, ali
vremenom postaju dosledne. Otuda i ime eventualne konzistentnosti.
BASE: Basically Available, Soft state, Eventual
consistency
● Basically available znači da je DB dostupan sve vreme prema teoriji CAP
● Soft state znači čak i bez ulaza; stanje sistema se može promeniti
● Eventual consistency znači da će sistem vremenom postati dosledan
Oracle NoSql
Dostupne su dve verzije, jedna za slobodnu upotrebu i druga za komercijalnu,
mada se i ona može skinuti i koristiti u edukativne svrhe. Podaci se čuvaju u
obliku Ključ-Vrednost i svaki zapis je jednoznačno određen tim parom.
Ključ je najčešće tipa string i njime se određuje vrednost. Ključ može da se
sastoji od glavnih i sporednih komponenti koje možemo sami da definišemo.
Kako definišemo komponente ključa to se kasnije odražava na performanse
aplikacije.
Vrednost predstavlja objekat koji želimo da čuvamo i ona se pamti kao niz
bajtova bez obzira kog je tipa objekat ( slika, tekst..). Glavne odlike Oracle
NoSQL baze su kao i kod ostalih rešenja ovog tipa visoka skalabilnost,
dostupnost, prost model podataka i kratko vreme odziva.
Prednosti NoSQL-a
● Može se koristiti kao primarni ili analitički izvor podataka
● Velika sposobnost podataka
● Nema jedinstvene tačke kvara
● Laka replikacija
● Nema potrebe za odvojenim slojem za kreiranje
● Omogućava brze performanse i horizontalnu skalabilnost.
● Može da obrađuje strukturirane, polustrukturirane i nestrukturirane podatke sa jednakim efektom
● Objektno orijentisano programiranje koje je lako za upotrebu i fleksibilno
● NoSQL bazama podataka nije potreban namenski server visokih performansi
● Ključni jezici i platforme za razvojne programere
● Jednostavnije za implementaciju nego korišćenje RDBMS-a
● Može poslužiti kao primarni izvor podataka za online aplikacije.
● Rukuje velikim podacima koji upravljaju brzinom, raznolikošću, volumenom i složenošću podataka
● Odlikuje se operacijama distribuirane baze podataka i centra za više podataka
● Eliminiše potrebu za određenim slojem keširanja za čuvanje podataka
● Nudi fleksibilan dizajn šeme koji se može lako izmeniti bez prekida rada ili prekida usluge
Nedostaci NoSQL-a
● Nema pravila za standardizaciju
● Ograničene mogućnosti upita
● Baza podataka i alati RDBMS su relativno zreli
● Ne nudi nikakve tradicionalne mogućnosti baze podataka, poput
doslednosti kada se više transakcija obavlja istovremeno.
● Kada se količina podataka povećava, teško je održavati jedinstvene
vrednosti jer ključevi postaju teški
● Ne funkcioniše dobro sa relacijskim podacima
● Kriva učenja je kruta za nove programere
● Opcije otvorenog koda, koje nisu toliko popularne za preduzeća.
Zaključak
Napravljen je kratak pregled postojećih NoSQL rešenja iz određenih grupa, uočeno je da poseduju uglavnom
iste karakteristike i da su principi na kojima se zasnivaju vrlo slični. Glavne razlike se ogledaju u osnovnim
razlikama između grupa što su između ostalog način organizacije podataka, pravila čuvanja objekata, način
pristupa itd.

Bitno je naglasiti da se u današnje vreme generišu skoro svakog trenutka velike količine podataka koje je
potrebno negde čuvati i obraditi. Struktura i oblik podataka koji pristižu se ne mogu sa sigurnošću znati
unapred tako da zbog toga relaciona baza podataka sa fiksnom šemom ne može biti pogodno rešenje. NoSQL
baze podataka lako se nose sa tim problemom i sa te strane one i predstavljaju rešenje tog problema i uz
visoku skalabilnost i dostupnost, brz i lak pristup podacima čine rešenje koje svakako ima sjajnu budućnost.

Ono što se izvlači kao poenta je da su relacioni sistemi ipak stariji sistemi, nastali u vreme kada je takav model
zadovoljavao tadašnje potrebe i zahteve korisnika i preduzeća kao i mogućnosti hardvera i tehnologije. Danas
imamo drugačije potrebe, nova tržišta i slučajeve upotrebe kojima se standardni relacioni sistemi teško
prilagođavaju, i NoSQL je isplivao kao rešenje za taj izazov.

Ostaje možda pitanje da li će u potpunosti zameniti relacione baze podataka i na osnovu svega zaključak je
da neće, jer ipak za određeni domen problema relaciono rešenje ostaje bolji izbor od NoSQL baza podataka, a
to će vreme pokazati.
HVALA na pažnji ! ! !

You might also like