1. Univerzitet u Beogradu
Matematiki fakultet
Nerelacione baze podataka
NoSql
Student Nemanja Veljkovi 1007/2012
Predmet Metodologija naunog i strunog rada
kolska godina 2012/2013
Nastavnik dr Vladimir Filipovi
Datum 10.06.2013
2. - 1 -
Sadr転aj
1 Uvod ......................................................................................................................................... 2
2 Skalabilnost............................................................................................................................... 2
3 NoSql baze podataka ................................................................................................................. 3
4 Vrste NoSql baza podataka......................................................................................................... 5
4.1 Ureeno sortirana skladi邸ta orijentisana ka kolonama .........................................................5
4.2 Klju/vrednost baze podataka ...................................................................................................6
4.3 Baze podataka orijentisane ka dokumentima .........................................................................6
4.4 Grafovske baze podataka ...........................................................................................................8
5 Zakljuak ................................................................................................................................... 9
6 Literatura................................................................................................................................. 10
3. - 2 -
1. Uvod
Kao i veina novih i dolazeih tehnologija, NoSql je obavijen oblakom straha, neizvesnosti i
sumnje. Svet programera se podelio u 3 kategorije kada je u pitanju NoSql:
1 Oni koji ga obo転avaju koriste ga, pobolj邸avaju i prate novine u svetu NoSql-a
2 Oni koji ga kritikuju uglavnom se fokusiraju na njegove nedostatke i trude se da poka転u
lo邸e strane NoSql-a
3 Oni koji ga ignori邸u mogu se podeliti u dve grupe: prvi ekaju da ova tehnologija sazri,
dok drugi veruju da je ova tehnologija samo trenutni hir kojeg e uskoro neka nova
tehnologija izbaciti sa tr転i邸ta
U savremenom razvoju softvera termin nerelacione baze podataka se odnosi na sisteme za
upravljanje kolekcijama podataka koje:
nemaju strogu statiku strukturu podataka
nemaju iscrpnu proveru uslova integriteta
ne koriste upitni jezik Sql
Naziv NoSql nastao je 1998. godine upravo zato 邸to je Sql simbol relacionih baza podataka.
Bilo je poku邸aja da se zovu i NonRel baze, ali je NoSql preovladao. Danas se tumai kao Not
only Sql. Bez obzira na bukvalno znaenje, NoSql se koristi danas kao op邸ti termin za sve
baze podataka i skladi邸ta podataka koje ne prate popularne i dobro-utvrene principe
relacionih baza podataka i esto se odnose na velike skupove podataka kojima je potrebno
brzo i efikasno pristupiti i menjati ih na Vebu. To znai da NoSql nije jedinstveni proizvod, ak
ni jedinstvena tehnologija. Predstavlja klasu proizvoda i koncepata u vezi skladi邸tenja
podataka i njihovog upravljanja.
2. Skalabilnost
Skalabilnost je mogunost aplikacije da podnese poveanje zahteva i broja korisnika, a da
sama aplikacija ne mora da se menja. to je aplikacija skalabilnija ona e lak邸e podneti
povean protok podataka. Cilj kojim te転e svi projektanti sistema jeste da se postigne
linearnost u brzini odgovora na zahtev i koliine podataka sa kojima se manipuli邸e.
Kada govorimo o samom hardveru postoji horizontalna skalabilnost i vertikalna skalabilnost.
Vertikalna skalabilnost je kada je aplikacija sme邸tena na jednom serveru, a na povean
protok se reaguje tako 邸to se serveru dodaje memorija, jai procesor, nova jezgra ili dodatni
hard disk.
Horizontalna skalabilnost je idealnije re邸enje, posebno za velike sisteme. Dodavanjem novih
vorova sistem nastavlja da radi kao do sada samo sa novim igraem (vorom) u timu. vor
predstavlja jedan server.
4. - 3 -
Kada Veb aplikacija doe do stadijuma da povean broj podataka sa kojima se manipuli邸e
utie na brzinu odgovora na zahtev, tj na uitavanje stranica, mo転e se reagovati na vi邸e
naina:
1. Ulo転iti gomilu novca
u kupovinu hardvera
koji e moi da se nosi
sa novonastalom
situacijom.
2. Misliti na vreme i
dizajnirati samu
aplikaciju tako da bude
skalabilna, a to se
posti転e tako 邸to se na
probleme odgovara
re邸enjima koja podi転u
performanse.
MapReduce model1
patentiran od strane Google-a predstavlja jednu od najpopularnijih
metoda za procesiranje takvih podataka. To je model paralelnog programiranja koji
omoguava distribuirano procesiranje velikih koliina podataka sme邸tenih na klasterima
raunara. Ova ideja potie iz sveta funkcionalnog programiranja, gde
ako imamo listu [1, 2, 3, 4] i na nju primenimo neku mapirajuu funkciju koja kreira novu listu
[2, 4, 6, 8], dok prethodna lista ostaje neizmenjena. Takodje postoji i koncept redukujue
funkcije, kod koje ako na primer primenimo funkciju zbira na listu [2, 4, 6, 8] dobijamo kao
rezultat zbir svih lanova liste, tj. 20.
Ova ideja se koristi i pri obradi velikih koliina podataka, s tim 邸to je izmenjena da radi sa
kolekcijama torki ili klju/vrednost parovima. Mapirajua funkcija se primenjuje na svaki
klju/vrednost par u kolekciji i generi邸e novu kolekciju, na koju se kasnije mo転e primeniti
redukujua funkcija.
3. NoSql baze podataka
Nedostatak relacionih baza podataka predstavlja relativno visoka cena itanja zbog
neredundantnosti i stroge strukture podataka. Ote転ano je distribuiranje pre svega zbog
konzistentnosti podataka. Skupa je promena strukture zbog povezanosti strukture sa
upotrebom i optimizacijama.
1
http://en.wikipedia.org/wiki/MapReduce
5. - 4 -
Dana邸nje veb aplikacije susreu se sa mnogim problemima. Konkurentni korisnici u
ogromnom broju koji se te邸ko odreuje, dnevna proizvodnja terabajta i petabajta podataka.
Obrada podataka je ote転ana, jer korisnici u svakom trenutku vr邸e izmenu tih podataka.
Optereenje je neravnomerno sa nepredvidivim porastom, neravnomerno velika
dinaminost, neprekidno dodavanje novih mogunosti, promena postojeih komponenti.
Nema jedinstvene definicije, ali se mo転e rei da je nerelaciona baza podataka je baza
podataka koja ne poiva na relacionom modelu podataka ili ga se bar ne dr転i vrsto. Lako se
distribuira, horizontalno je skalabilna tj. lako podnosi znaajne promene 邸eme.
Iako koncepti mogu da podseaju na RBP (katalog-tabela, vrednost-red,...) zapravo postoje
znaajne razlike. Struktura vrednosti obino nije strogo predefinisana, obino je netipizirana,
ne insistira se na neredundantnosti, praktino retko ima prirodnih kljueva, ne postoji
referencijalni integritet.
Druge este karakteristike su da nema statiku shemu, lako se replicira, poseduje jednostavan
API, omoguava ogromne koliine podataka, poiva na skupu principa BASE 2
(eng. Basically
Available, Soft state, Eventual consistency), a ne ACID (eng. Atomicity, Consistency, Isolation,
Durability).
Ovde je bitno navesti i CAP teoremu koja ka転e da je nemogue u distribuiranim raunarskim
sistemima da se istovremeno omogue sve tri garancije:
1) Konzistentnost da svi vorovi vide iste podatke u isto vreme
2) Raspolo転ivost svaki zahtev prima odgovor da li je uspe邸no izvr邸en ili ne
3) Prihvatanje razdvojenosti - sistem nastavlja rad bez obzira na poruku o neuspehu na nekom delu
sistema
Su邸tinski raspolo転iv: Ovo ogranienje tvrdi da sistem garantuje raspolo転ivost podataka vei
deo vremena. Na svaki zahtev e se vratiti odgovor. Meutim, ta potvrda zahteva mo転e
dovesti do neuspeha prilikom dobijanja zahtevanih podataka ili mo転e ostati u
nekonzistentnom stanju tokom obrade.
Nekonzistentno stanje: Baza podataka ne mora biti konzistentna u svakom trenutku. Stanje sistema
se menja tokom vremena, pa ak i kada nema unosa, ve do promene dolazi usled konvergentne
konzistencije. Tako da je stanje sistema uvek soft.
Konvergentna konzistencija: Dodatkom novog vora u sistem sadr転aj se mo転e replicirati na njega. Ne
postoji garancija da e u svakom trenutku svi vorovi sadr転ati identine kopije podataka. Te転i se
vremenskoj taki u kojoj e svi vorovi sadr転ati konzistentne podatke.
2
prevod ovih termina preuzet od profesora Ivana Lukovia sa Fakulteta Tehnikih Nauka u Novom Sadu
6. - 5 -
4. Vrste NoSql baza podataka
4.1 Ureeno sortirana skladi邸ta orijentisana ka kolonama
Guglov Bigtable 3
predstavlja model u kome se podaci uvaju ureeni prema kolonama, 邸to
predstavlja kontrast u odnosu na RSUBP (Sistemi za upravljanje relacionim bazama podataka),
gde se podaci uvaju ureeni u redovima. Ovako se podaci sme邸taju mnogo efikasnije zato
邸to ako nema podataka za datu kolonu oni prosto nee biti upisani, dok kod RSUBP se upisuju
NULL vrednosti.
Svaka jedinica mo転e da se posmatra kao skup parova klju/vrednost, gde se svaka jedinica
identifikuje sa primarnim identifikatorom, koji se esto naziva redni klju. Jedinice podataka
su rasporeene u ureeno-sortiranom poretku prema rednom kljuu.
Primer:
Imamo prostu tabelu koja sadr転i polja ime, prezime, zanimanje, post_kod, pol, i podatke:
ime: Jovan ime: Petar
prezime: Jovanovi post_kod: 18000
post_kod: 11000
pol: mu邸ki,
Redni klju prvog podatka je 1, a drugog 2. Podaci se uvaju sortirano po kolonama, tako da
e podatak sa rednim kljuem 1 biti upisan pre podatka sa rednim kljuem 2.
Podaci u Bigtable i njegovim klonovima su sme邸teni u sekvencijalnom redosledu. Kada podaci
napune jedan vor, oni se dele u vi邸e vorova. Podaci su sortirani ne samo na jednom voru
ve i na svim vorovima koji ine jedan veliki sekvencijalni skup. Podaci i dalje postoje u
redosledu tolerantnom na gre邸ke gde se odr転avaju 3 kopije istih podataka. Veina klonova
odr転ava distribuirani sistem datoteka za uvanje podataka na disku. Distribuirani sistem
datoteka omoguava da se podaci uvaju na klasterima.
Hbase 4
je popularno, open-source5
, ureeno prema kolonama, skladi邸te podataka koje je
modelovano na osnovu ideja Google-ovog Bigtable-a. Podacima u Hbase-u se mo転e upravljati
pomou Hadoop MapReduce alata6
. Implementiran je u Javi, kao upitni jezik mo転e se koristiti
Hive 7
(nalik na Sql) . Izdat je pod Apache License version 2. licencom, a od poznatih
kompanija ga koriste Facebook, Yahoo!, Adobe, itd.
3
http://en.wikipedia.org/wiki/BigTable
4
http://hbase.apache.org
5
http://en.wikipedia.org/wiki/Open-source_software
6
http://hadoop.apache.org
7
http://hive.apache.org/
7. - 6 -
4.2 Klju/vrednost baze podataka
He邸 mapa ili asocijativni niz je najjednostavnija struktura podataka koja mo転e uvati skup
klju/vrednost podataka. Takve strukture podataka su popularne zato 邸to je potrebno O(1)
vremena za pristup podacima. Klju iz para je jedinstvena vrednost u skupu pomou koje se
brzo pristupa podacima.
Klju/vrednost parovi su razliitih tipova: neki uvaju podatke u memoriji, a neki pru転aju
mogunost perzistencije podataka na disku. Klju/vrednost parovi se mogu distribuirati u
klasteru vorova.
Jedna od poznatijih baza ovog tipa je Oracle-ova BarkeleyDB 8
gde su i klju i vrednost nizovi
bajtova. Engine baze podataka ne pridaje znaenje kljuevima ili vrednostima, ve uzima
parove iz nizova bajtova i vraa iste pozivu. BarkeleyDB dopu邸ta da se podaci ke邸iraju u
memoriji i prebace na disk kada narastu. Takoe, postoji i indeksiranje kljueva za br転i
pregled i pristup.
Drugi tip klju/vrednost parova koji je u op邸toj upotrebi je ke邸. Ke邸 pru転a presek stanja u
memoriji najkori邸enijih podataka u aplikaciji. Cilj ke邸a je da redukuje ulazno-izlazne
operacije diska. Ke邸 sistemi mogu biti rudimentarne strukture mapa ili robustni sistemi sa
politikama isteka podataka iz ke邸a.
Ovi tipovi klju/vrednost parova pru転aju strogu konzistenciju podataka. Meutim postoje i
one koje istiu dostupnost ispred konzistencije u distribuiranom rasporeivanju. Najpoznatiji
predstavnik te klase je Amazonov Dynamo koji obeava izuzetnu dostupnost i skalabilnost i
predstavlja okosnicu Amazonovog sistema za skladi邸tenje podataka. Najva転niji koncept ovog
sistema je eventualna konzistentnost. Eventualna konzistentnost podrazumeva da mogu
postojati mali intervali nekonzistentnosti izmeu repliciranih vorova kada se podaci
a転uriraju izmeu peer-to-peer vorova.
Najpoznatija open-source implementacija ovog sistema je Appache Cassandra9
razvijena od
strane Facebook-a, a kasnije donirana Appache fondaciji. Implementirana je u Javi, a upitni
jezik je trenutno u fazi razvoja. Izdata je pod Apache License version 2. licencom, a od
poznatih kompanija je koriste Facebook, Digg, Reddit, Twitter, itd.
4.3 Baze podataka orijentisane ka dokumentima
Skladi邸ta orijentisana ka dokumentima nisu sistemi za upravljanje dokumentima. Re
dokument sugeri邸e labavo struktuirane skupove klju/vrednost parova u dokumentima,
obino JSON (JavaScript Object Notation). JSON jeste tekstualni standard namenjen razmeni
podataka u formi itljivoj i razumljivoj i za oveka i za raunar. JSON format je izveden iz
JavaScript jezika, ali sam format nije zavistan od bilo kog konkretnog programskog jezika.
MongoDB dokumente skladi邸ti u formatu koji se naziva BSON, i koristi ga za razmenu
8
http://en.wikipedia.org/wiki/Berkeley_DB
9
http://cassandra.apache.org
8. - 7 -
podataka sa aplikacijama na mre転i. BSON format se zasniva na JSON-u i nastao je od
skraenice Binary JSON. Baza tretira dokument kao celinu i izbegava podelu dokumenta na
sastavne klju/vrednost parove. Na nivou kolekcije, ovo omoguava skladi邸tenje razliitih
skupova dokumenata zajedno u jednu kolekciju.
Najpoznatija open-source implementacija ovog tipa je MongoDB10
. Kreirana je od strane
10Gen kompanije, implementirana u C++. Upitni jezik je napravljen u JavaScript-u, ali
podsea pomalo na Sql. Izdata je pod GNU Affero GPL licencom, a od poznatih kompanija je
koriste FourSquare, SAP, MTV, SourceForge, Github, itd.
Funkcionalnosti MongoDB:
Indeksiranje - indeksi obezbeuju visoke performanse izvr邸enja operacija kod naje邸e
kori邸enih upita. MongoDB indeks predstavlja strukturu podataka koja omoguava brzo
lociranje dokumenata na osnovu vrednosti odreenih polja u dokumentima.
Agregacija podataka MongoDB pru転a funkciju agregate() koja se koristi za agregaciju
podataka i koja se poziva nad odreenom kolekcijom. Koriste se i sledei operatori: sort
(sortiranje dokumenata), skip (ignori邸e odreeni broj dokumenata na poetku kolekcije),
match (filtriranje dokumenata na osnovu vrednosti polja), group (grupisanje dokumenata),
limit (defini邸e broj dokumenata koji prolaze kroz filter), project (odreuje polja iz dokumenta
koja e biti ukljuena u rezultat) i unwind (transformi邸e niz).
Mehanizam replikacije ovaj mehanizam omoguuje sinhronizaciju podataka izmeu veeg
broja MongoDB instanci. Postoji samo jedna primarna instanca, a sve ostale su sekundarne.
Replikacija ima zadatak da obezbedi redundantnost, povea dostupnost i olak邸a neke
administrativne zadatke poput pravljenja rezervnih kopija. MongoDB obezbeuje i
mehanizam ako otka転e primarna instanca, mehanizmom glasanja bira se nova primarna
instanca.
Mehanizam deljenja - ovaj mehanizam omoguuje particionisanje kolekcije dokumenata i
njihovu distribuciju na vei broj instanci. Ideja koja stoji iza mehanizma deljenja je da se
povea kapacitet sistema.
Map/Reduce omoguuje paralelnu obradu veih koliina podataka.
Ad-hoc upiti - Dinamiki (ad hoc) upiti omoguuju rad sa MongoDB-om na slian nain kao sa
RDBMS-om. Samim tim, ova karakteristika je pogodna pri prelasku sa nekog RDBMS sistema
na MongoDB.
GridFS mehanizam - ovaj mehanizam omoguuje pamenje velikih dokumenata. Konkretno,
MongoDB mo転e da radi sa dokumentom veliine 16MB. Zbog ovog ogranienja koristi se
GridFS mehanizam koji document deli u niz komada. Za uvanje velikih dokumenata koriste
10
http://www.mongodb.org
9. - 8 -
se dve kolekcije: kolekcija files koja sadr転i metapodatke o dokumentu i kolekcija chunks
koja sadr転i delove dokumenta. Veliina delova na koje se dokument deli obino je 256KB.
4.4 Grafovske baze podataka
Grafovske baze podataka koriste grafovske strukture sa vorovima (koji predstavljaju
entitete), granama (koje povezuju vorove) i svojstvima (predstavljaju atribute) za
reprezentaciju i uvanje podataka. Po definiciji grafovska baza je svaki sistem kod kojeg svaki
elemenat sadr転i direktni pokaziva na susedni element i nije potreban nikakav pregled
indeksa. Ove baze su moan alat za upite poput na primer izraunavanje najkraeg puta
izmeu dva vora u grafu.
Jedna od poznatijih baza ovog tipa je FlockDB11
. Kreirana je od strane Twitera i koristi se za
skladi邸tenje liste susednih pratilaca na Twiteru. Implementirana je u Scala programskom
jeziku i izdata pod Apache License version 2. licencom.
U nastavku sledi tabelarni prikaz poreenja razliitih NoSql re邸enja i Relacionih sistema za
upravljanje bazama podataka:
11
https://github.com/twitter/flockdb
10. - 9 -
5. Zakljuak
NoSql ne predstavlja re邸enje za sve probleme i ima svojih nedostataka. Su邸tina je da se NoSql
re邸enja pona邸aju dobro prilikom skaliranja, kada podaci rastu u velikim koliinama i potrebno
je da budu distribuirani na vi邸e vorova u klasteru. Procesiranje velikih koliina podataka
predstavlja jednako veliki izazov i zahteva nove metode.
Trenutna generacija programera je odrasla sa relacionim bazama podataka i navikavanje na
NoSql je te邸ko, jer je usaen ve jedan nain mi邸ljenja, koji se sada u potpunosti menja. To
znai da kao programer, ovek treba da prouava NoSql i razume ga dobro, pre nekog
kritikovanja, ega u dana邸nje vreme ima dosta. Takoe, mnogo ideja u NoSql-u se mogu
veoma dobro iskoristiti prilikom re邸avanja problema velike skalabilnosti u drugim tipovima
aplikacija.
Nerelacione baze podataka nee u bliskoj budunosti izbaciti relacione. To uop邸te nije i njihov
cilj. One dopunjuju RSUBP i u zavisnosti od potreba e se odluiti koji sistemi e se koristiti,
dok je u velikim kompanijama, poput Facebooka-a, praksa da se koriste i jedne i druge.
11. - 10 -
6. Literatura
(1) Shashank Tiwari, Professional NoSql, Wrox Press (2011)
(2) Sa邸a Malkov, Univerzitet u Beogradu - Matematiki fakultet, Materijal sa predavanja
DOBP http://poincare.matf.bg.ac.rs/~smalkov
(3) Ivan Lukovi, Univerzitet u Novom Sadu, Fakultet Tehnikih nauka, Materijal sa
predavanja SBP http://www.acs.uns.ac.rs/sr/sbp
(4) http://nosql-database.org/
(5) http://docs.mongodb.org/manual/
(6) http://www.10gen.com/nosql
(7) Slobodna encoklopedija, Wikipedia http://www.wikipedia.org