Re­la­ci­o­nal­ne baze podatkov so bile de­se­tle­tja najbolj pri­lju­blje­na rešitev za upra­vlja­nje podatkov. Vendar pa je zaradi na­ra­šča­jo­če­ga obsega in ra­zno­li­ko­sti podatkov, ki so značilni za sodobne spletne apli­ka­ci­je, do­ku­men­tno usmerjene baze podatkov, kot je Mongo DB, postale resna kon­ku­ren­ca. Razložili bomo, kaj je do­ku­men­tno usmerjen pristop in kakšne so prednosti tega modela upra­vlja­nja podatkov.

V čem se MongoDB razlikuje od drugih po­dat­kov­nih baz?

V tra­di­ci­o­nal­nih re­la­cij­skih po­dat­kov­nih bazah so podatki shranjeni v struk­tu­ri­ra­ni tabeli. MongoDB, katerega ime izhaja iz besede humongous (ogromen), je do­ku­men­tno usmerjen po­dat­kov­ni sistem. V MongoDB so podatki združeni na ne­struk­tu­ri­ran način v t. i. zbirke.

Druga ključna razlika je, da MongoDB ne uporablja SQL kot jezik za poizvedbe, zato je uvrščen med NoSQL po­dat­kov­ne sisteme. Namesto tega MongoDB kot jezik za poizvedbe uporablja jezik MongoDB Query Language (MQL), ki temelji na Ja­va­Scrip­tu. Po­sle­dič­no so zapisi MongoDB shranjeni v formatu BSON, ki je oblikovan po vzoru JSON. To pomeni, da so podprti vsi po­dat­kov­ni tipi Ja­va­Script, zato je MongoDB postal idealna izbira za številne platforme, ki temeljijo na Ja­va­Scrip­tu.

Druga zna­čil­nost po­dat­kov­nih baz MongoDB je njihova spo­sob­nost ho­ri­zon­tal­ne­ga ska­li­ra­nja. To pomeni, da se podatki v po­dat­kov­ni bazi lahko raz­po­re­di­jo na več stre­žni­kov, namesto da bi bili shranjeni na enem cen­tral­nem mestu. Ta pristop omogoča večjo raz­po­lo­žlji­vost podatkov in izboljša splošno zmo­glji­vost po­dat­kov­ne baze. Ho­ri­zon­tal­no ska­li­ra­nje je pogosto bolj stro­škov­no učin­ko­vi­to kot nad­gra­dnja enega strežnika z zmo­glji­vej­šo strojno opremo (ver­ti­kal­no ska­li­ra­nje).

Kako deluje MongoDB?

V nasprotju z MySQL, MongoDB uporablja popolnoma drugačen pristop k shra­nje­va­nju podatkov in deluje na način, ki je usmerjen v dokumente. Namesto da bi podatke shra­nje­val v ta­be­la­rič­ni obliki, kjer ima vsaka vrstica enako število polj, ki jih je treba izpolniti z vre­dnost­mi, MongoDB baze podatkov shra­nju­je­jo podatke v BSON do­ku­men­tih, ki nimajo vnaprej določene strukture. Število polj se lahko med dokumenti razlikuje, polja pa med seboj niso nujno skladna. Dokumenti imajo podobno vlogo kot vrstice v tabeli SQL, medtem ko polja, ki so bila opre­de­lje­na v teh do­ku­men­tih, služijo kot stolpci.

Pri delu z bazami podatkov MongoDB lahko upo­ra­blja­te številna orodja. Poleg za­ne­slji­ve­ga MongoDB Shell lahko za upra­vlja­nje baz podatkov MongoDB upo­ra­blja­te tudi grafični vmesnik MongoDB Compass. V tem članku pa se bomo osre­do­to­či­li na ukaze Shell.

Ker je MQL zasnovan na Ja­va­Scrip­tu, obstaja že vrsta vnaprej določenih funkcij, ki jih lahko uporabite za zapletena po­i­zve­do­va­nja in ukaze. Večina ukazov za pisanje in branje ima enako strukturo kot ukazi, prikazani v spodnjem primeru. Poleg teh ukazov obstaja še vrsta drugih ukazov, ki jih lahko uporabite za upra­vlja­nje svoje zbirke podatkov MongoDB. Ti so podrobno do­ku­men­ti­ra­ni in po­ja­snje­ni v do­ku­men­ta­ci­ji za MongoDB.

> db.students.find(Name : "Charlie")
> db.students.updateOne(Name : "Charlie", Semester : 2)
> db.students.deleteOne(Name : "Peter")
> db.students.insertOne({
Name : "Elsie"
Age : 18
Semester : 1
})

V zgornjem primeru je navedena vrsta ukazov za bazo podatkov MongoDB, ki so vsi struk­tu­ri­ra­ni na enak način. Najprej je naveden »db«, ki se nanaša na celotno bazo podatkov, nato »students«, ki se nanaša na določeno zbirko, v kateri je treba izvesti ustrezne operacije. Po zbirki sledi metoda (find, update, remove, insert), ki jo je treba uporabiti.

Za iskanje do­lo­če­ne­ga dokumenta lahko uporabite metodo find(). Če polje parametra pustite prazno, se prikažejo vsi dokumenti v izbrani zbirki. V zgornjem primeru MongoDB poišče vse dokumente, v katerih ima polje „Ime“ vrednost „Charlie“.

Metoda updateOne() se lahko uporabi za pre­pi­so­va­nje vrednosti v dokumentu. Metoda update() sprejme dva argumenta. Prvi argument je izbirno merilo, drugi pa je par ključ-vrednost, ki ga je treba prepisati. V primeru so izbrani vsi študenti z imenom „Charlie“. V polje „Semester“ se nato vnese vrednost „2“ za študente, katerih ime je Charlie.

Metoda deleteOne() sprejme le en argument. To je izbirno merilo, ki določa, kateri dokumenti naj se od­stra­ni­jo iz zbirke podatkov. V tem primeru se iz zbirke podatkov od­stra­ni­jo vsi študenti z imenom Peter.

Metoda insertOne() prav tako sprejema argument. Pri tej metodi je argument JSON vsebina dokumenta, ki ga želite dodati. Pri vsta­vlja­nju do­ku­men­tov je ključnega pomena, da vsak dokument v zbirki MongoDB ima edin­stve­no 12-bajtno šest­naj­sti­ško število. To število služi kot ID objekta dokumenta. Če to ni določeno ob vsta­vlja­nju dokumenta, bo MongoDB samodejno ustvaril ID za dokument.

Kakšne so prednosti MongoDB?

Struktura MongoDB ponuja upo­rab­ni­kom več prednosti, zlasti v smislu pri­la­go­dlji­vo­sti in ska­la­bil­no­sti. Ena od ključnih prednosti shra­nje­va­nja podatkov na podlagi do­ku­men­tov je, da v nasprotju z re­la­cij­ski­mi bazami podatkov vsi vnosi ne po­tre­bu­je­jo enakih atributov. To omogoča shra­nje­va­nje ne­struk­tu­ri­ra­nih in pol­struk­tu­ri­ra­nih podatkov. Poleg tega je mogoče posamezne dokumente pre­struk­tu­ri­ra­ti (na primer z do­da­ja­njem ali brisanjem atributa/polja), ne da bi bilo treba pre­struk­tu­ri­ra­ti druge dokumente v isti zbirki. Ker so dokumenti v MongoDB shranjeni v formatu BSON, baze podatkov MongoDB za­go­ta­vlja­jo tudi visoko stopnjo zdru­žlji­vo­sti z mnogimi pogosto upo­ra­blja­ni­mi plat­for­ma­mi Ja­va­Script.

Poleg shra­nje­va­nja ne­struk­tu­ri­ra­nih podatkov MongoDB ponuja tudi visoko stopnjo ho­ri­zon­tal­ne ska­la­bil­no­sti, ne da bi pri tem kršil načela ACID (ato­mar­nost, do­sle­dnost, izolacija, trajnost). V po­raz­de­lje­nih po­dat­kov­nih bazah je za­go­ta­vlja­nje do­sle­dno­sti pogosto izziv, saj so podatki shranjeni na različnih stre­žni­kih. Ko se hkrati spre­me­ni­jo več do­ku­men­tov, se te spremembe morda ne razširijo takoj na vse strežnike, ki jih uporablja po­dat­kov­ni sistem. Če je obseg poizvedb velik, lahko to včasih vodi do ne­skla­dno­sti podatkov. Vendar je z izdajo MongoDB 4.2 leta 2019 zdaj mogoče spre­mi­nja­ti več do­ku­men­tov na različnih stre­žni­kih, ne da bi pri tem žrtvovali skladnost ali raz­po­lo­žlji­vost.

Tip

Po­tre­bu­je­te do­ku­men­tno usmerjeno bazo podatkov, ki se prilagaja zahtevam vaše spletne apli­ka­ci­je? MongoDB je idealna rešitev!

Za kaj se lahko uporablja MongoDB?

MongoDB je odlična izbira za spletne projekte, ki temeljijo na izredno velikih ne­struk­tu­ri­ra­nih po­dat­kov­nih nizih. Delovanje s sistemom, ki temelji na do­ku­men­tih in nima fiksne sheme, je idealno za obdelavo širokega spektra po­dat­kov­nih tipov, ki zahtevajo hitro shra­nje­va­nje in obdelavo.

Sistem baz podatkov omogoča tudi ho­ri­zon­tal­no, skoraj neomejeno ska­la­bil­nost, saj se baze podatkov lahko brez težav raz­po­re­di­jo na več stre­žni­kov, ne da bi to vplivalo na njihovo funk­ci­o­nal­nost. Poleg tega lahko z MongoDB enostavno ustvarite kopije svoje baze podatkov in jih daste na voljo različnim stre­žni­kom, s čimer za­go­to­vi­te dol­go­roč­no varnost in do­sto­pnost svojih podatkov. Program baze podatkov, usmerjen v dokumente, ima tudi im­pre­siv­ne zmo­glji­vo­sti, ko gre za zdru­že­va­nje podatkov, bodisi iz enega vira bodisi iz več virov.

MongoDB je idealen za spletne projekte, ki imajo naslednje zna­čil­no­sti:

  • Ska­la­bil­nost: ko vaš spletni projekt raste, se običajno poveča število zahtevkov, kar povzroči večje zahteve na bazo podatkov.
  • Raz­po­lo­žlji­vost: po­tre­bu­je­te ne­pre­ki­nje­no do­sto­pnost za svojo spletno apli­ka­ci­jo, tudi v primeru okvare strežnika.
  • Pri­la­go­dlji­vost: vaš projekt mora omogočati dinamično pri­la­ga­ja­nje v vsakem trenutku.

Niste pre­pri­ča­ni, kateri model baze podatkov je pravi za vaš spletni projekt? Nič hudega, saj vam ni treba izbrati le enega. Različne vrste modelov baz podatkov je mogoče kom­bi­ni­ra­ti, zato je izbira več kot enega morda najbolj primerna za zahteve vašega projekta.

Go to Main Menu