Kaj je MongoDB?
Relacionalne baze podatkov so bile desetletja najbolj priljubljena rešitev za upravljanje podatkov. Vendar pa je zaradi naraščajočega obsega in raznolikosti podatkov, ki so značilni za sodobne spletne aplikacije, dokumentno usmerjene baze podatkov, kot je Mongo DB, postale resna konkurenca. Razložili bomo, kaj je dokumentno usmerjen pristop in kakšne so prednosti tega modela upravljanja podatkov.
V čem se MongoDB razlikuje od drugih podatkovnih baz?
V tradicionalnih relacijskih podatkovnih bazah so podatki shranjeni v strukturirani tabeli. MongoDB, katerega ime izhaja iz besede humongous (ogromen), je dokumentno usmerjen podatkovni sistem. V MongoDB so podatki združeni na nestrukturiran 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 podatkovne sisteme. Namesto tega MongoDB kot jezik za poizvedbe uporablja jezik MongoDB Query Language (MQL), ki temelji na JavaScriptu. Posledično so zapisi MongoDB shranjeni v formatu BSON, ki je oblikovan po vzoru JSON. To pomeni, da so podprti vsi podatkovni tipi JavaScript, zato je MongoDB postal idealna izbira za številne platforme, ki temeljijo na JavaScriptu.
Druga značilnost podatkovnih baz MongoDB je njihova sposobnost horizontalnega skaliranja. To pomeni, da se podatki v podatkovni bazi lahko razporedijo na več strežnikov, namesto da bi bili shranjeni na enem centralnem mestu. Ta pristop omogoča večjo razpoložljivost podatkov in izboljša splošno zmogljivost podatkovne baze. Horizontalno skaliranje je pogosto bolj stroškovno učinkovito kot nadgradnja enega strežnika z zmogljivejšo strojno opremo (vertikalno skaliranje).
Kako deluje MongoDB?
V nasprotju z MySQL, MongoDB uporablja popolnoma drugačen pristop k shranjevanju podatkov in deluje na način, ki je usmerjen v dokumente. Namesto da bi podatke shranjeval v tabelarični obliki, kjer ima vsaka vrstica enako število polj, ki jih je treba izpolniti z vrednostmi, MongoDB baze podatkov shranjujejo podatke v BSON dokumentih, 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 opredeljena v teh dokumentih, služijo kot stolpci.
Pri delu z bazami podatkov MongoDB lahko uporabljate številna orodja. Poleg zanesljivega MongoDB Shell lahko za upravljanje baz podatkov MongoDB uporabljate tudi grafični vmesnik MongoDB Compass. V tem članku pa se bomo osredotočili na ukaze Shell.
Ker je MQL zasnovan na JavaScriptu, obstaja že vrsta vnaprej določenih funkcij, ki jih lahko uporabite za zapletena poizvedovanja 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 upravljanje svoje zbirke podatkov MongoDB. Ti so podrobno dokumentirani in pojasnjeni v dokumentaciji 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 strukturirani 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 določenega 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 prepisovanje 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 odstranijo iz zbirke podatkov. V tem primeru se iz zbirke podatkov odstranijo vsi študenti z imenom Peter.
Metoda insertOne() prav tako sprejema argument. Pri tej metodi je argument JSON vsebina dokumenta, ki ga želite dodati. Pri vstavljanju dokumentov je ključnega pomena, da vsak dokument v zbirki MongoDB ima edinstveno 12-bajtno šestnajstiško število. To število služi kot ID objekta dokumenta. Če to ni določeno ob vstavljanju dokumenta, bo MongoDB samodejno ustvaril ID za dokument.
Kakšne so prednosti MongoDB?
Struktura MongoDB ponuja uporabnikom več prednosti, zlasti v smislu prilagodljivosti in skalabilnosti. Ena od ključnih prednosti shranjevanja podatkov na podlagi dokumentov je, da v nasprotju z relacijskimi bazami podatkov vsi vnosi ne potrebujejo enakih atributov. To omogoča shranjevanje nestrukturiranih in polstrukturiranih podatkov. Poleg tega je mogoče posamezne dokumente prestrukturirati (na primer z dodajanjem ali brisanjem atributa/polja), ne da bi bilo treba prestrukturirati druge dokumente v isti zbirki. Ker so dokumenti v MongoDB shranjeni v formatu BSON, baze podatkov MongoDB zagotavljajo tudi visoko stopnjo združljivosti z mnogimi pogosto uporabljanimi platformami JavaScript.
Poleg shranjevanja nestrukturiranih podatkov MongoDB ponuja tudi visoko stopnjo horizontalne skalabilnosti, ne da bi pri tem kršil načela ACID (atomarnost, doslednost, izolacija, trajnost). V porazdeljenih podatkovnih bazah je zagotavljanje doslednosti pogosto izziv, saj so podatki shranjeni na različnih strežnikih. Ko se hkrati spremenijo več dokumentov, se te spremembe morda ne razširijo takoj na vse strežnike, ki jih uporablja podatkovni sistem. Če je obseg poizvedb velik, lahko to včasih vodi do neskladnosti podatkov. Vendar je z izdajo MongoDB 4.2 leta 2019 zdaj mogoče spreminjati več dokumentov na različnih strežnikih, ne da bi pri tem žrtvovali skladnost ali razpoložljivost.
Potrebujete dokumentno usmerjeno bazo podatkov, ki se prilagaja zahtevam vaše spletne aplikacije? MongoDB je idealna rešitev!
Za kaj se lahko uporablja MongoDB?
MongoDB je odlična izbira za spletne projekte, ki temeljijo na izredno velikih nestrukturiranih podatkovnih nizih. Delovanje s sistemom, ki temelji na dokumentih in nima fiksne sheme, je idealno za obdelavo širokega spektra podatkovnih tipov, ki zahtevajo hitro shranjevanje in obdelavo.
Sistem baz podatkov omogoča tudi horizontalno, skoraj neomejeno skalabilnost, saj se baze podatkov lahko brez težav razporedijo na več strežnikov, ne da bi to vplivalo na njihovo funkcionalnost. Poleg tega lahko z MongoDB enostavno ustvarite kopije svoje baze podatkov in jih daste na voljo različnim strežnikom, s čimer zagotovite dolgoročno varnost in dostopnost svojih podatkov. Program baze podatkov, usmerjen v dokumente, ima tudi impresivne zmogljivosti, ko gre za združevanje podatkov, bodisi iz enega vira bodisi iz več virov.
MongoDB je idealen za spletne projekte, ki imajo naslednje značilnosti:
- Skalabilnost: ko vaš spletni projekt raste, se običajno poveča število zahtevkov, kar povzroči večje zahteve na bazo podatkov.
- Razpoložljivost: potrebujete neprekinjeno dostopnost za svojo spletno aplikacijo, tudi v primeru okvare strežnika.
- Prilagodljivost: vaš projekt mora omogočati dinamično prilagajanje v vsakem trenutku.
Niste prepričani, 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 kombinirati, zato je izbira več kot enega morda najbolj primerna za zahteve vašega projekta.