bib.irb.hr · web viewza praktični dio ovoga rada prikazan je rad u mongo shell-u. detaljno...
TRANSCRIPT
![Page 1: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/1.jpg)
SVEUČILIŠTE U ZAGREBU
FAKULTET ORGANIZACIJE I INFORMATIKE
V A R A Ž D I N
Kristina Ivatović
Sustav za upravljanje polustrukturiranim bazama podataka
ZAVRŠNI RAD
Varaždin, 2017.
I
![Page 2: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/2.jpg)
SVEUČILIŠTE U ZAGREBU
FAKULTET ORGANIZACIJE I INFORMATIKE
V A R A Ž D I N
Kristina Ivatović
Matični broj: 41188/12–R
Studij: Informacijski sustavi
Sustav za upravljanje polustrukturiranim bazama podataka
ZAVRŠNI RAD
Mentor:
izv.prof.dr.sc. Markus Schatten
Varaždin, rujan 2017.
II
![Page 3: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/3.jpg)
Sadržaj
1. Uvod.......................................................................................................................................12. Baze podataka........................................................................................................................2
2.1. Modeli podataka..............................................................................................................22.2. Polustrukturirani modeli..................................................................................................2
2.2.1. Općenito...................................................................................................................22.2.2. Naprednije................................................................................................................52.2.3. Prikaz.......................................................................................................................6
2.2.3.1. Relacijske baze podataka..................................................................................62.2.3.2. Objektno orijentirane baze podataka................................................................8
3. JSON....................................................................................................................................103.1. Struktura........................................................................................................................103.2. Tipovi podatka..............................................................................................................10
4. NoSQL.................................................................................................................................135. Praktični dio.........................................................................................................................14
5.1. Opis alata.......................................................................................................................145.2. Instalacija......................................................................................................................145.3. The mongo Shell...........................................................................................................15
5.3.1. Naredbe..................................................................................................................155.4. Opis primjera.................................................................................................................175.5. Funkcionalnost..............................................................................................................175.6. Prikaz primjera..............................................................................................................18
6. Zaključak..............................................................................................................................21Literatura...................................................................................................................................22
III
![Page 4: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/4.jpg)
1. Uvod
Razvojem informatike kao znanosti, razvile su se i baze podataka. Sam razvoj znanosti
zahtjeva i razvoj, nadogradnju, proširenje ili novi sustava u kojem se kreće. Počevši od
primitivnih i jednostavnih baza podataka do danas izmijenili smo mnoge sustave i jezike.
Jedan od najbitnijih i najraširenijih jezika zasigurno je SQL, od sustava jedan od
najpopularnijih je Oracle, dok za besplatne sustave ima više sustava koji se nalaze na tržištu i
koji se koriste i za privatne i poslovne potrebe, za velike i male baze podataka ovisno o
mogućnostima koje sustavi nude i samim potrebama koje korisnici imaju i žele.
Razvojem interneta, njegove potrebe za brzim dohvatom podataka također rastu, tako
da od tradicionalnih baza kao što su relacijske, korist opada i stvara se potreba za bržim i
lakšim načinom, unosa, pretraživanja i samim radom s bazom podataka. Rad mnogih web
aplikacija ovisi o dobro strukturiranim bazama podataka. Današnji tempo života zahtjeva
pristup informacijama na što brži i lakši način, a svi modeli podataka nisu u mogućnosti to
ostvariti, tako da danas razlikujemo više modela podataka. Glavni model ovog rada su
polustrukturirani model, a spomenut ćemo i ostale modele te ih usporediti.
Za praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana
instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi i povezati s
aplikacijom kako bi mogao uistinu iskoristiti sve svoje prednosti za rad u gotovom okruženju.
Neki od sustava i jezika koje ćemo spomenuti, koristiti i slično su JavaScript Object
Notation (JSON), Not [only] Structured Query Language (NoSQL), Structured Query
Language (SQL) i MongoDB.
1
![Page 5: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/5.jpg)
2. Baze podataka
Danas kada kažemo baza podataka, mislimo na kompjutoriziranu bazu podatka, koja
se sastoji od tablica, stupaca i redaka. Podaci su smješteni na disku u obliku koji nije uvijek
prepoznatljiv krajnjem korisniku, tako da on nije u mogućnosti doći do podataka bez
određenog sustava za upravljanje bazama podataka. Prema [9], str 4.
2.1. Modeli podatakaPoznajemo više modela podataka, ali najpoznatiji i najkorišteniji modeli baza podataka
su hijerarhijski model podataka, mrežni model podataka i relacijski model podataka, pri čemu
su relacijske jedne od temeljnih modela podataka, njih je teorijski definirao Codd
1970.godine. Relacijski model je jednostavan kod korištenja i razumijevanja. Prema [14].
Nekada je predstavljao revoluciju u pohrani podataka, podaci su bili organizirani u tablice,
koje su po potrebi bile povezane, što dovodi do toga da su podaci bili vrlo čvrsto strukturirani.
Razvitkom Interneta, potreba za pohranom podataka mrežnim putem na način da podaci više
nisu strukturirani rezultira pojavom polustrukturiranog modela podataka. Prema [11], str 1.
2.2. Polustrukturirani modeli
Polustrukturirani model podataka nema shemu te je poznat kao samoopisujući (eng.
self-describing). Da polustrukturiranom modelu nije potreban opis strukture znači da mu nije
potrebno definirati tipove podataka. Detaljnije ćemo vidjeti u sljedećim poglavljima gdje
ćemo imati i neke primjere.
2.2.1. Općenito
Kao što je već spomenuto, kod polustrukturiranih podataka nije potrebna struktura pa
se podaci prikazuju kao ključ : “vrijednost“ što je prikazano sljedećim primjerom :
{ ime: “Gospodin Nitko“, žanr: “Fantazija“, redatelj: “Jaco Van Dormael“}
2
![Page 6: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/6.jpg)
Prikaz koda 1. Primjer jednostavnog polustrukturiranog tipa podatka
Podaci ne moraju nužno biti zapisani samo na prethodni način, već je moguć prikaz i
više objekata odjednom. U primjeru dolje prikazan je upis više filmova odjednom :
{ film: { ime: “Gospodin Nitko“, žanr: “Fantazija“, redatelj: “Jaco Van Dormael“ }, film: { ime: “ Teorija svega“, žanr: “Biografija“, redatelj: “James Marsh“ }
}
Prikaz koda 2. Primjer više podataka pod istim objektom
Moguće je prikazati i više atributa pod jednim objektom, tj. ključem, što se može
vidjeti na sljedećem primjeru u kojemu se vidi da postoji više filmova i redatelja koji su
podijeljeni po imenu i prezimenu, a što nije izričit potrebno da bude slučaj i kod nekog drugog
filma :
{ film: { ime: “Gospodin Nitko“, žanr: “Fantazija“, redatelj:“Jaco Van Dormael“ }, film: { ime: “ Teorija svega“, žanr: “Biografija“, redatelj: { ime:“James“, prezime:“Marsh“, } }
}
Prikaz koda 3. Primjer složenijeg polustrukturiranog tipa podatka
3
![Page 7: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/7.jpg)
Kod ovog primjera prikazujemo više žanrova, jedan film sadrži ocjenu zapisanu
riječima, drugi brojem, te je dodan još jedan novi objekt serija :
{ film: { ime: “Gospodin Nitko“, žanr:{ prvi:“Fantazija“, drugi:“Drama“ }, redatelj: { ime:“Jaco Van Dormael“ } ocjena: “sedam“ }, film: { ime: “ Teorija svega“, žanr:{ prvi:“Biografija“, drugi:“Drama“ }, redatelj: { ime:“James“, prezime:“Marsh“ } ocjena: “7“ }, serija: { ime: “Igra prijestolja“, žanr:{ prvi:“Akcija“, drugi:“Drama“, treći:“Fantazija“ } }}
Prikaz koda 4. Primjer složenog polustrukturiranog tipa podatka
Polustrukturirani tip podataka nije potrebno prethodno definirati tipom niti strukturno
opisati. Objekti ne moraju imati iste atribute, atributi nisu obavezno istoga tipa, što je
slobodnije i za potrebe internetskih pohrana, pretraga i slično vrlo praktično i potrebni.
4
![Page 8: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/8.jpg)
2.2.2. Naprednije
Polustrukturirani model podatak temelji se na prikazu podataka pomoću grafova, tako
da u nastavku slijede neke definicije iz teorije grafova. Prema [11], str 1-2.
Definicija 1. - Usmjereni graf
Neka V bude skup vrhova, a 𝐵⊆𝑉×𝑉 skup bridova. Usmjereni graf je G jest par (𝑉,𝐵). Za
svaki brid 𝑏=(𝑣𝑖,𝑣𝑗) kažemo da je 𝑣𝑖 početak, a 𝑣𝑗 završetak brida.
Definicija 2. - Ciklus
Ciklus u usmjerenom grafu je svaki put od jednog vrha u taj isti vrh. Graf bez ciklusa se
naziva acikličnim grafom.
Definicija 3. - Stablo
Usmjereni graf (𝑉,𝐵) je stablo ako postoji jedinstveni put od 𝑣𝑘 do 𝑣𝑖 za svaki 𝑣𝑖∈𝑉, 𝑖≠𝑘.
Svako stablo je ujedno i aciklički graf te ima jedinstven korijen stabla.
Definicija 4. - Podatkovni graf
Podatkovni graf je usmjereni graf (𝑉,𝐵) čiji su bridovi imenovani, a vrhovi su podatkovni
objekti te mogu biti:
atomski (listovi)
složeni (imaju bridove prema drugim vrhovima)
Svaki složeni vrh ima svoj identitet koji je jedinstven u danom podatkovnom grafu.
Upoznati s ovim definicijama, sada ćemo prikazati grafove nekoliko primjera koje smo prethodno samo prikazali pomoću koda.
Slika 1. Primjer jednostavnog polustrukturiranog podatkovnog grafa
5
![Page 9: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/9.jpg)
Slika 2. Primjer složenog polustrukturiranog podatkovnog grafa
2.2.3. Prikaz
Polustrukturirane baze podataka mogu prikazati strukturne podatke. U sljedećim
poglavljima prikazat ćemo kako se relacijske i orijentirane baze podataka mogu prikazati u
polustrukturiranom modelu podataka. To ćemo prikazati primjerom programskog koda i
grafova, kako bi što više približili i objasnili logiku polustrukturiranih baza podataka tako da
možemo usporediti s nekim češće korištenim i kroz obrazovanje poznatijim načinima pohrane
u bazu podataka.
2.2.3.1. Relacijske baze podataka
Polustrukturirani podaci mogu prikazati strukturirane podatke. U sljedećem primjeru
moći ćemo to i vidjeti. prema [1], str. 14.
Imamo relacijsku bazu podataka strukturno opisanu r1(a, b, c), r2(b, d) i r3(b, c, d, e).
Naziv relacija su r1 i r2, dok su a, b, c, d, e nazivi stupaca tih relacija. Ne smijemo zanemariti
kako bi u praksi ovim tipovima podataka trebali dodijeliti i određene tipove podataka ovisno o
potrebama i samoj svrsi podatka koji se pohranjuju. Kod polustrukturiranog prikaza možemo
primijetiti kako su vrijednosti za svaku relaciju zapisane u niz podataka u sklopu jednog
objekta.
6
![Page 10: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/10.jpg)
r1 a b c r2 b d r3 b c d e1 0 3 3 2 0 5 1 02 0 0 4 4 3 2 4 53 1 2 0 3
1 5
Tabica 1. Prikaz relacija
{ r1: { niz: {a: “1“, b: “0“, c: “3“}, niz: {a: “2“, b: “0“, c: “0“}, niz: {a: “3“, b: “1“, c: “2“} }, r2: { niz: {b: “3“, d: “2“}, niz: {b: “4“, d: “4“}, niz: {b: “0“, d: “3“}, niz: {b: “1“, d: “5“} }, r3: { niz: {b: “0“, c: “5“, d: “1“, e: “0“}, niz: {b: “3“, c: “2“, d: “4“, e: “5“} }}
Prikaz koda 5. Prikaz relacija polustrukturiranim oblikom
Slika 3. Prikaz relacija polustrukturiranim oblikom
2.2.3.2. Objektno orijentirane baze podataka
7
![Page 11: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/11.jpg)
Do objektno orijentiranih baza podataka dolazi radi potrebe za postizanjem što veće
sličnosti između modela i same aplikacije. Polako iz tradicionalnih implementacijskih modela
gubimo semantiku, što za posljedicu dovodi do toga da se aplikacije teže primjenjuju zbog
razlika između posla koji se do tada obavljao ručno. Prema [5], str. 137.
Možemo vidjeti na primjeru serija, tj. epizoda kako je epizoda koja prethodi sljedećoj
epizodi roditelj. Veze dijete-roditelj između dva objekta kod polustrukturiranog oblika
prikazane pomoću operatora koji označava referencu, koja nam je za ovaj primjer potrebna, a
to je znak “&“. Slijede prikaz koda za ovaj primjer i slika na kojoj je grafički prikazan isti.
Kod prikaza koda vidimo kako epizoda Winter Is Coming ide prije epizode The
Kingsroad, tako da je e1 roditelj od epizode e2.
{ epizoda: &e1{ ime: “Winter Is Coming“, sezona: “1“, prije: &e2 }, epizoda: &e2{ ime: “The Kingsroad“, sezona: “1“, poslije: &e1 }}
Prikaz koda 6. Prikaz objektnih polustrukturiranim oblikom
Slika 4. Prikaz objektnih polustrukturiranim oblikom
8
![Page 12: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/12.jpg)
Ovim primjerom još više smo približili i objasnili prednosti polustrukturiranih baza
podataka i potrebu za njihovim načinom pohranjivanja podataka za potrebe današnjih
aplikacija.
9
![Page 13: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/13.jpg)
3. JSON
Format koji služi za razmjenu podataka koji ćemo ovdje detaljnije opisati i prikazati je
JSON (JavaScript Object Notation). Riječ je o tekstualnom formatu koji je jednostavan
računalima i ljudima. Računalima je jednostavan za analiziranje i generiranje, dok ljudima za
lako čitanje i pisanje. JSON je neovisan jezik, ali koristi konvencije programskih jezika C, C+
+, C#, Java, JavaScript, Perl, Python i još nekih. Prema [4].
3.1. Struktura JSON se temelji na dvije strukture koja ga čine idealnim jezikom za razmjenu podataka.
Prva se temelji na objektima, strukturi, listi ključeva i asocijativnom nizu, dok se drugi temelji
na naredbenom popisu vrijednosti kao što su na primjer niz, vektor, popis ili slijed. Prema [4].
3.2. Tipovi podatkaTipovi podatka koje JSON koristi su objekt, niz, vrijednost, string i broj. Prema [4], slike
su preuzete s istog izvora.
Vrijednosti koje sve JSON podržava su prikazane na slici 5. Neke od njih u nastavku
ćemo detaljnije opisati.
Slika 5. Prikaz vrijednosti
Objekt je nesortirani niz parova u obliku “ime/vrijednost“, koji se odvajaju dvotočjem,
a nizovi se odvajaju vitičastim zagradama, kao što je prikazano na slici 6.
10
![Page 14: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/14.jpg)
Slika 6. Prikaz objekata
Niz je sortirani niz čiji elementi mogu biti bilo koji podržani tipovi podataka. Nizovi
se dijele uglatim zagradama, dok se vrijednosti odvajaju zarezom, kao što je prikazano na slici
7.
Slika 7. Prikaz niza
String je niz znakova, isključujući navodnike i obrnutu kosu crtu (eng. backslash). U
kombinaciji s obrnutom kosom crtom, neki znakovi dobivaju neko novo značenje, na
primjer \“ tvore upitnik, \n tvore novi red i tako dalje, više je prikazano na slici 8.
Slika 8. Prikaz string
11
![Page 15: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/15.jpg)
Brojevi mogu biti pozitivni ili negativni te cijeli ili decimalni. Sve oblike brojeva koje
JSON podržava prikazani su na slici 9.
Slika 9. Prikaz broj
12
![Page 16: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/16.jpg)
4. NoSQL
Zamjenom tradicionalnih relacijskih baza podataka došla je i potreba za novim
sustavima koji su spremni biti uz korak sa potrebama korisnika, novih načina pohrane
podataka i samim novim rukovanjem s istima. Jedan od sustava koji ćemo u ovom radu
spominjati je NoSQL, dok je njegov vodeći sustav za pohranu podatak, otvorenog koda
MongoDB o kojem ćemo više u nastavku, te ćemo i praktični dio realizirati pomoću njega.
NoSQL sustavi su jedni od novijih, tako da im je broj opcija širok i formiraju se prema
potrebama, što je vrlo praktično za potrebe aplikacija. Kako je potražnja i za strukturiranim,
polustrukturiranim, ne strukturiranim i polimorfnim bazama podataka potrebno je da sustav
može pružiti sve. Ovisno o zahtjevima koji su potrebni u određenim slučajevima tako se i
primjenjuju određene strukture.
Kad pogledamo Google na primjer, njegov način rada bio bi nezamišljiv pomoću samo
strukturiranih baza podataka. Zamislite da morate upisati točan poredak riječi kako bi dobili
željene podatke, mi danas zahvaljujući NoSQL sustavu dolazimo do podataka, ne sam ako
upišemo ključne riječi i pojmove nego je toliko razvijen da on i sam predlaže što nam treba.
Kod NoSQL je specifično i to što ne koristi SQL (eng. Structured Query Language) upite.
Zahvaljujući NoSQL izbjegava se vodopadna metoda razvoja programa, dolazi do
agilnog pristupa, što znači da manji timovi rade u kratkim sprintovima, koji se međusobno
nadograđuju gotovo svaki tjedan. Danas se najčešće programira objektno orijentirano,
sukladno tome javlja se potreba za bazom podataka koja je prikladna tome.
Neke od prednosti smo već spomenuli, ali najčešće spominjane prednosti NoSQL su
skalabilnost i pružanje boljih performansi od relacijskih sustava. NoSQL dijelimo na tri tri
osnovne vrste: Document model, Graph model i Key-value model. NoSQL sustavi najčešće
sadrže više kopija podatak, zbog dostupnosti podataka dijelimo ih u dvije skupine
konzistentne i gotovo konzistentne sustave. Konzistentni sustavi su odmah vidljivi u danim
upitima, dok gotovo konzistentni sustavi nisu u mogućnosti odmah prikazati podatke.
Osim MongoDB, NoSQL ima još sustava koji su osnovani na temelju njega. Neki od
njih su Elastic, ArangoDB, OrientDB, gunDB, Cloud Datastore, Azure DocumentDB,
RethinkDB, CouchDB, ToroDB, NosDB i mnogi drugi, prema [15].
13
![Page 17: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/17.jpg)
5. Praktični dio
5.1. Opis alata
Alat u kojem ćemo prikazati polustrukturirane baze podataka je MongoDB. Besplatni alat
koji se koristi u osobnoj i poslovnoj primjeni. Za potrebe ovog rada koristit ćemo mongo
Shell.
MongoDB je alat koji je pisan u C++, C i JavaScript jeziku, platforme koje ga podržavaju
su Windows Vista na dalje i Linux. MongoDB deklarira se u NoSQL sustav. Koristi JSON
format, koji smo prije detaljno objasnili i opisali.
5.2. Instalacija
Kako bi rad bio moguć potrebno je odabrati jednu od mogućnosti, kao što su MongoDB
Atlas, Enterprise Server, Ops Manager, Compass ili Connector for BI. MongoDB Atlas nudi
bazu podataka i server, što olakšava nastanak aplikacije i kasnije održavanje i brigu o istoj.
Enterprise Server komercionalna verzija MongoDB u kojoj će u nastavku biti riječ. Ops
Manager olakšava brigu o bazi, pregled, održavanje, spremanje sigurnosnih kopija, lakše
pronalaženje grešaka i slično za potrebe većih i kompleksnijih sustava. Compass omogućuje
korisnicima lakše indeksiranje i donošenje odluka kao što je potreban prostor za bazu
podataka, pravila, optimizacija upita i sličn. Connector for BI omogućuje izvještaje,
otkrivanje o podacima u MongoDB.
Za potrebe ovog rada koristili smo Enterprise Server verziju 3.4.7, koja je instalirana na
Windows 10. Prema službenoj dokumentaciji potrebno je provjeriti koju verziju je potrebno
preuzeti. Na slici 10. možemo vidjeti koje se naredbe koriste, te koje su povratne.
Slika 10. Naredbe
14
![Page 18: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/18.jpg)
Sljedeći korak je sama instalacija u shellu. Sljedeće navedene naredbe je potrebno izvršiti
kako bi se MongoDB moga koristi.
msiexec.exe /q /i mongodb-win32-x86_64-2008plus-ssl-3.4.7-signed.msi INSTALLLOCATION="C:\Program Files\MongoDB\Server\3.4.7\"ADDLOCAL="all"
Prikaz koda 7. Prikaz naredbe za instalaciju
Slijedeći korak je postavljanje prostora za pohranu podataka, tj. izrada direktorija gdje će
se podaci spremati.
md \data\db
Prikaz koda 8. Prikaz naredbe za izradu mape
Nakon uspješne instalacije i izrade datoteke rad sa MongoDB sustavom je moguć.
Potrebno je pokrenuti MongoDB servis i krenuti sa radom. Upute za instalaciju su slijeđenje
prema službenoj dokumentaciji [7]
5.3. The mongo ShellMongo Shell je interaktivno sučelje za MongoDB, koje omogućuje rad s podacima i
obavljanje administrativnih operacija nad bazom. Za lakše razumijevanje sliedećih poglavlja i
samo korištenje Mongo Shell za početnike u nastavku su neki od najbitnijih upita i naredbi za
rad.
5.3.1. NaredbeKako bi rad u mongo Shellu bio što jednostavniji ovdje su neke naredbe pomoću kojih
se podaci unose, pronalaze, ažuriraju, brišu i združuju.
Pomoću naredbe koja slijedi moguće je upisati podatke u bazu podataka. Prvo se po
standardu piše db, zatim ime kolekcije i sama naredba insert, detaljnije će biti prikazano u
poglavlju 6.6. Prikaz primjera, gdje će biti korištena ova naredba, kao i većina sljedećih
naredbi.
db.kolekcija.insert( { … })
Prikaz koda 9. Prikaz naredbe za upis
15
![Page 19: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/19.jpg)
Potrebno je pregledati bazu podataka, vidjeti koji su podaci nalaze u njoj. Za te
potrebe koristimo naredbu find.
db.kolekcija.find()
Prikaz koda 10. Prikaz naredbe za ispis
Ponekad je potrebno izvršiti ažuriranje, ovisno o samoj logici i načinu rada s bazom
podataka, naredba koja se dodaje nakon imena kolekcije je update.
db.kolekcija.update( { … })
Prikaz koda 11. Prikaz naredbe za ažuriranje
Brisanje iz baze podataka izvršava se naredbom remove i drop. Ovisno o tome što je
potrebno izvršiti nad bazom koristi se jedna od njih.
db.kolekcija.remove( { … })
Prikaz koda 12. Prikaz naredbe za uklanjanje
db.kolekcija.drop()
Prikaz koda 13. Prikaz naredbe za brisanje
Zadnja naredba koju ćemo ovdje objasniti je naredba aggregate, pomoću koje podatke
koji su upisani u bazi možemo grupirati i ispisati željene podatke.
db.kolekcija.aggregate( [ <uvjet1>, <uvjet2>, ... ] )
Prikaz koda 14. Prikaz naredbe za združivanje
16
![Page 20: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/20.jpg)
5.4. Opis primjera
Primjer koji ćemo uzeti za ovaj završni rad je popis filmova. Baza koju ćemo prikazati bit
će polustrukturirana i njeno korištenje će biti moguće i za aplikacije koje se mogu izgraditi na
temelju nje. Kao što smo prije objasnili kod polustrukturiranih baza podataka lako se može
manipulirati s podacima, tako da unos novih objekata neće biti veliki problem, ako će
aplikacija to tražiti ili ako će to njoj olakšavati rad s zadanom bazom.
U mongo Shellu će biti napravljena baza filmova, naredbe koje su navedene u poglavlju
6.3.1. Naredbe će biti prikazane na toj bazi.
5.5. Funkcionalnost
Svrha ove baze podataka je da pohrani podatke o filmovima, kako bi imali pregled istih na
jednom mjestu. Prvenstveno je osmišljena kako bi korisnici pomoću aplikacije mogli
pretraživati filmove po nekim ključnim riječima, ostavljati komentare i pročitati tuđe
komentare na film. Pomoću mongo Shella će biti prikazano kako će baza funkcionirati u
određenim scenarijima. Primjeri će omogućiti svima koji se prvi put susreću s MongoDB ili
sa samim radom s bazama da mogu napraviti jednostavnu bazu podataka pomoću navedenih
naredbi koje su prije nabrojane i ukratko objašnjene.
17
![Page 21: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/21.jpg)
5.6. Prikaz primjera
Za početak potrebno je pokrenuti mongo i pokrenuti željenu kolekciju, u ovom primjeru
radimo u kolekciji zavrsni. U tu kolekciju upisan je za početak jedan podatak ključ :
“vrijednost“ što prikazuje slika 11. Upis se izvršio s naredbom db.zavrsni.insert, a pregled se
izvršava naredbom db.zavrsni.find().
Slika 11. Upis
Ovdje je primjer ažuriranja, u ovom slučaju ažurirani su svi podaci pod _id : 1 , tako da su se
svi prethodni podaci izbrisali. Slika 12 prikazuje kako se naredbom db.zavrsni.update radi
ažuriranje i što se nakon dane naredbe događa s podacima. U nastavku slijede slični primjeri,
gdje su ipak svi podaci koji su prethodno postojali i dalje ostali te je samo dodano još ključ :
“vrijednost“.
Slika 12. Ažuriranje s gubitkom
Upisivanjem u bazu podataka može doći do pogreške, kao što je prikazano ovim primjerom
gdje MongoDB upozorava da postoji podatak sa _id:4, tako da sa naredbom db.zavrsni.insert
nije moguće napisati podatak preko podatka, već promijeniti određenu vrijednost ključa, u
ovom slučaju _id. Na slici 13 prikazana je pogreška i obavijest sustava prema kojoj se može
ispraviti upit.
Slika 13. Pogreška kod unosa
18
![Page 22: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/22.jpg)
Prije je korištena naredba db.zavrsni.find(), a ovdje je pregled svih podataka s koji se nalaze u
kolekciji zavrsni, sve je prikazano na slici 14.
Slika 14. Prikaz podataka
Na slici 12 je bilo prikazano ažuriranje s gubitkom, tj. podaci su se izgubili ažuriranjem
podataka, jer je upit bio pogrešno napisan. Slika 15 prikazuje kako ažurirati podatke pod
željenim ključem, u ovom slučaju nije izgubljen niti jedan podatak, nego su samo ažurirani.
Slika 15. Ažuriranje
Prikazane su dvije naredbe s istom zadaćom, ali drugačijim načinom zapisa. Prva naredba kao
što se vidi na slici 16 nije ne točno napisana, ali ne mijenja ništa u zapisu, dok druga naredba
mijenja. MongoDB nije javio nikakvu grešku, jer su sva pravila koje on provjerava
zadovoljna. Kako bi izbjegli takvu grešku potrebno je minimalizirati odvajanje objekata, jer
prema ovom primjeru imamo tri objekta, te treći uopće nije uzet u obzir i nije unesen, tj.
ažuriran.
Slika 16. Ažuriranja
19
![Page 23: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/23.jpg)
Brisanje kod MongoDB prikazano je na slici 17. Obrisani su svi podaci pod _id : 5, u slučaju
da je potrebno obrisati sve podatke koji sadrže odrešenu vrijednost pod nekim ključem
potrebno je samo napisati naredbu db.zavrsni.remove({ključ : “vrijednost“}).
Slika 17. Brisanje
Ponekad je potrebno grupirati neke podatke, u ovom primjeru za potrebe ispisa _id smo
zamijenili sa imenima filmova. Pomoću naredbe db.zavrsni.aggregate izvršili smo zamisao, te
smo pomoću $ime ispisali pod _id imena filmova, ti podaci nisu tako spremljeni i oblik zapisa
se nije promijenio, ovdje je samo tako ispisan radi naredbe, koja se u aplikaciji može
iskoristiti radi boljeg i bržeg rada.
Slika 18. Grupiranje
Na kraju je ostala još jedna naredba, db.zavrsni.drop() koja uklanja sve što je zapisano, nakon
što se naredba izvrši ispisuje se true i ukoliko ponovo napišemo naredbu za pregled ne
ispisuje se ništa jer je sve uklonjeno, na slici 19 je prikazano kako to izgleda u mongo Shellu.
Slika 19. Uklanjanje
20
![Page 24: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/24.jpg)
6. Zaključak
U današnje vrijeme navikli smo da su informacije na dohvat ruke uvijek i svugdje.
Kako se Internet proširio, postao je stavka u životu koja se podrazumijeva, zato je i naš način
uzimanja podataka s istog postao sastavni dio. U većini slučajeva više se ne pamte domene
stranica nego se pretražuju, a pohranjene su baš pomoću polustrukturiranih baza podataka.
Zahvaljujući polustrukturiranim bazama podataka današnji rad aplikacija vrlo je brz,
što ide u korak s našim ubrzanim načinom života. Uzmemo li za primjer kako su se nekada
pisali završni radovi nekad i danas, fizička literatura u obliku članaka, knjiga i slično bila je
dostupna isključivo u knjižarama i knjižicama, dok danas upisom samo ključnih riječi
dolazimo do puno više informacija. Izvori informacija kao što su knjige i članci postali
digitalizirani i dostupni svima i u svako doba.
Jedan od sustava koji radi sa polustrukturiranim bazama podataka razvio je već i
mnoge načine kako olakšavati spajanje aplikacije i baze podataka je MongoDB. Sustav nudi
više mogućnosti, prvenstveno rad je započet u MongoDB Atlasu, ali sučelje nije intuitivno i
dokumentacija nije jasna kao što je za mongo Shell u kojem je rad napravljen.
21
![Page 25: bib.irb.hr · Web viewZa praktični dio ovoga rada prikazan je rad u mongo Shell-u. Detaljno opisana instalacija samog monga, naredbe i način rada. Primjer je moguće nadograditi](https://reader036.vdocuments.site/reader036/viewer/2022081606/5e3b12aaee546759d4692f79/html5/thumbnails/25.jpg)
Literatura
[1] Abiteboul S., Buneman P., Suciu D., (2000), Data on the Web - From Relations to
Semistructured Data and XML, Morgan Kaufmann Publishers, San Francisco,
California
[2] Informacijska tehnologija u poslovanju (urednici Čerić, V., Varga, M.). Element,
Zagreb, 2004.
[3] Informacijski sustavi u poslovanju / Mirjana Pejić Bach...Zagreb : Ekonomski fakultet,
2016.
[4] JSON, Dostupno na: http://www.json.org/ [Pokušaj pristupa 11. 9. 2017.].
[5] Maleković, M., (2008), Teorija baza podataka - skripta, FOI Varaždin
[6] Manger, R. Baze podataka : Element, 2012.
[7] MongoDB, Install MongoDB Community Edition on Windows — MongoDB Manual
3.4, Dostupno na: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-
windows/ [Pokušaj pristupa 11. 9. 2017.].
[8] MongoDB, Inc. (2016), Top 5 Considerations When Evaluating NoSQL Databases,
Dostupno na: http://www.mongodb.com/lp/whitepaper/nosql-considerations [Pokušaj
pristupa 11. 9. 2017.].
[9] Rabuzin, K. Uvod u baze podataka. Varaždin : Fakultet organizacije i informatike,
2016.
[10] Rabuzin, K. SQL - napredne teme. Varaždin : Fakutet organizacije i
informatike, 2014.
[11] Schatten, M., Ivković, K., (2012), Regular Path Expression for Querying
Semistructured Data - Implementation in Prolog, Central European Conference on
Information and Intelligent Systems, FOI Varaţdin
[12] Šimović, V. Uvod u baze podatka. Zagreb : Minerva, 2013.
[13] Varga, M. Baze podataka; Konceptualno, logičko i fizičko modeliranje
podataka. Drip, Zagreb, 1994.
[14]
[15]RELACIJSKI MODEL PODATAKA, Dostupno na:
http://tecajevi.freeservers.com/isrelac.htm [Pokušaj pristupa 11. 9. 2017.].
[16] Prof. Dr.StefanEdlich, NOSQL Databases, Dostupno na : http://nosql-
database.org/ [Pokušaj pristupa 11. 9. 2017.].
22