You are on page 1of 7

MongoDB

 Za tipove objekta MonogDB koristi specifikaciju koje se naziva


BISON, to je format koji omogucava binarnu serijalizaciju
dokumenata i na taj nacin, ta specifkacija kaze da mozemo da
korisitmo neke osnovne tipove (one na koje smo navikli) ali Mongo
dodaje i neke tipove koje su za njega specificni i sve to je sadrzano u
BISON specifikaciji. Ta struktura jako podseca na JSON, to je zapravo
binary json. BISON podrzava string, array, double, bool, date(to je
unix timestamp, odnosno broj miliseknde od unix epohe( od 1970.)
do ovog trenutka, pa tako svaki datum je predstavljen kao broj
misliseknudi od tog trenutka pa do nekog odgovarajuceg trenutka),
32-int. 64-int, regular expression, javascript(i to je tip podataka,
mozemo da uskladistimo citavu JS proceduru, odnsono neku
funkciju), object, DB pointer(u novim verzijama je depricated,
preporucuje se tipa objectID).
 ObjectID je specfican jer je to identifikator koji MongoDB dodeljuje
svakom dokumentu koji se nadje u bilo kojoj kolekciji, taj
identifikator kod monga ima specificniu strukturu. Object id se
sastoji od 12 byte-ova, pri cemu 4 byte-a odredjuju vremensku
odrednicu tj. Timestamp value (trenutak kada je kreiran neki
dokument u Monogu), zatim ima 5 byte-a koji predstavljaju slucajnu
nasumicnu vrednost(random value) i poslednjih 3 byte-a su
rezervisana za counter koji Monogo interno inkrementira i njegova
inicijalizacija je isto neka random value. Ovaj identifikator je
jedinstven i on igra ulogu primarnog kljuca kod relacionih baza
podataka. Ako recimo kod insert-a izostavimo ovaj identifikator,
monogdb ce za nas dodati property “_id” tipa ObjectID i imace
vrednost koja ce biti automatski generaisana od monogDB-a, ALI to
ne znaci da mi ne mozemo sami da dodelimo vrednost ovom filed-
u, ali ako ne uradimo tako nesto MonogDB ce se postarati da ta
vrednost uvek postoji i da bude jedinstvena.
 Dokumentima pristupamo preko indeksa. MongoDB ima razlicitu
strukturu indeksa u zavisnosti od toga da li se u indeksu nalazi samo
jedna vrednost ili je indeks compund odnosno slozeni indeks, koji
ukljucuje razlicita polja iz struktura dokumenta.

 Bitno je da shvatimo, da za razliku od relacionih sistema mi ovde


nemamo koncept referencijalnog integriteta, pa se postavlja
pitanje, na koj nacin se dokumenti povezuju. To povezivanje se radi
u zavisnosti od tipa veze (1:1, 1:N ili N:M), moguce je povezati
dokumenta koriscenjem necega sto se zove DB ref, koji u novijim
verzijama preporucuje da se ne korsiti jer efikasnost klijenata
opada, ali mi cemo da vidimo na jedan i na drugi nacin kako radi. Taj
DB ref sadrzi referencu jednog dokumenta na drugi dokument
(sadrzu ObjectID), taj DB ref mora obavezno da sadrzi naziv
kolekcije kojoj taj idenetifikator koji je sadrzan unutar DB ref
strukture pripda i opciono, treci deo sadrzi naziv baze podataka gde
taj dokument moze da se nadje(znaci mozemo da imamo cros data
povezivanje, odnosno mozemo da imamo referencu na neki
dokument koji je eksterni, odnsono nalazi se u nekoj drugoj bazi).

2
 Problem N:M veza. Jedno resenje je da imamo posebne entitete
koji ce nam sluziti samo za povezivanje kao kod relacionih baza
podataka. Drugo resenje je da ugradimo kod svakog, odgovarajuci
niz referenci ili da se odlucimo za dupliranje podataka. Ne postoji
najbolje resenje, sve zavisi od toga kako koristimo podatke.

Podesavanje MongoDB-a
 Kada skinemo MonogDB, i raspakujemo ga, unutar bin foldera
imamo razlicite bat i exe fajlove, za nas je bitan mongod i mongo:

3
 Pre nego sto pokrenemo bazu, moramo da kreiramo folder u kome
ce se smestati podaci. Pa tako kreiramo folder “db”, a unutrar njega
jos jedan folder sa nazivom “data” koji je inicijalno prazan, ali ce se
popuniti kada pokrenmo bazu.

 Sledeci korak je pokreatanje baze, to radimo tako sto se u cmd-u


pozicioniramo u bin folderu i unesemo komandu: “ mongod –

4
dbpath “<uneti putanju do foldera “data” koji smo prethodno
napravili>” ”
Rezultat ovoga je inicijalizacija data foldera.
Strelica pokazuje na kom portu se nalazi mongoDB
 Ako zelimo da unosimo komande za bazu, pozicioniramo se isto na
bin, i unesemo komandu “mongo”, gde se dobija CLI gde mozemo
da unosimo komande.

 Kada dodamo neke podatke, odnosno kreiramo bazu i dodamo


neke podatke, mozemo da ih vidimo iz CLI-a:

5
Komadnom “user preduzece” pozicioniramo se na tu bazu, i
mozemo da radimo operacije u njoj
Komadnom “show coolections” prikazuju se sve kolekcije unutar
baze
Da ne bi unutar pozcionoirane baze, unosili njeno puno ima,
mozemo da pisemo db.<operacija>
Da bi se lepo videli podaci kao json, umesto ove navedene operacije
db.radnici.find({ }), mozemo da iskoristimo:
db.radnici.find({ }).pretty()

 Pojasnjenje zasto kada prikazujemo podatke unutar cli, imamo


zapravo ove property-e koji su null,a na predavanjima smo rekli da
se prazni property-i ne pamte.

6
Razlog ovog je posledica tehnologije koju koristimo, da smo recimo
koristili NodeJS, mi bismo slali nesto sto nalikuje BISON objektu, i to
se ne bi prikazivalo da je null. Ali posto radimo u .NET odnsono sa
klasama, gde je struktura fiksna i kada uradimo serijalizaciju neke
klase, svi porperty unutar klase za mongo postoje. Takodje ako
recimo dodamo neki property u nekoj klasi, to nece promeniti
situaciju u vec upisanim podacima, samo ce novi podaci imati taj
property vise, znaci fleksibilna struktura.

You might also like