38
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 I

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

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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