Mis on MongoDB?
Suhtelised andmebaasid olid aastakümneid andmete haldamise jaoks parim lahendus. Kuid tänapäevaste veebirakenduste jaoks iseloomulik andmete mahu ja mitmekesisuse kasv on muutnud dokumendipõhised andmebaasid, nagu Mongo DB, tõsiseltvõetavaks konkurendiks. Selgitame, mis on dokumendipõhine lähenemisviis ja millised on selle andmehaldusmudeli eelised.
Kuidas erineb MongoDB teistest andmebaasidest?
Traditsioonilistes relatsioonilistes andmebaasides salvestatakse andmed struktureeritud tabelisse. MongoDB, mille nimi tuleneb sõnast „humongous” (hiiglaslik), on dokumendipõhine andmebaasisüsteem. MongoDB-s rühmitatakse andmed struktureerimata viisil, mida andmebaasiprogramm nimetab kogudeks.
Teine oluline erinevus on see, et MongoDB ei kasuta päringukeelena SQL-i ja seetõttu liigitatakse see NoSQL-andmebaasisüsteemiks. Selle asemel kasutab MongoDB päringukeelena JavaScript-põhist MongoDB päringukeelt (MQL). Seetõttu salvestatakse MongoDB-kirjed BSON-vormingus, mis on modelleeritud JSON-i järgi. See tähendab, et toetatakse kõiki JavaScript-andmetüüpe, mistõttu on MongoDB saanud ideaalseks valikuks paljudele JavaScript-põhistele platvormidele.
MongoDB andmebaaside teine eripära on nende horisontaalne skaleeritavus. See tähendab, et andmebaasi andmed ei ole salvestatud ühte kesksesse asukohta, vaid need on jaotatud mitme serveri vahel. Selline lähenemine suurendab andmete kättesaadavust ja parandab andmebaasi üldist jõudlust. Horisontaalne skaleerimine on sageli kulutõhusam kui ühe serveri võimsama riistvaraga uuendamine (vertikaalne skaleerimine).
Kuidas MongoDB töötab?
Erinevalt MySQL-ist kasutab MongoDB andmete salvestamiseks täiesti teistsugust lähenemisviisi ja töötab dokumendipõhiselt. Selle asemel, et salvestada andmeid tabelina, kus igal real on sama arv väli, mis tuleb väärtustega täita, salvestab MongoDB andmeid BSON-dokumentidesse, millel ei ole eelnevalt määratud struktuuri. Väljade arv võib dokumentide vahel erineda ja väljad ei pea olema üksteisega kooskõlas. Dokumendid täidavad sarnast rolli nagu read SQL-tabelis, samas kui nendes dokumentides määratletud väljad toimivad veergudena.
MongoDB andmebaasidega töötamisel on palju vahendeid, mida saate kasutada. Lisaks usaldusväärsele MongoDB Shellile saate MongoDB andmebaaside haldamiseks kasutada ka GUI MongoDB Compassit. Käesolevas artiklis keskendume siiski Shelli käskudele.
Kuna MQL põhineb JavaScriptil, on olemas juba mitmesugused eelmääratud funktsioonid, mida saab kasutada keerukate päringute ja käskude jaoks. Enamasti on kõik kirjutamis- ja lugemiskäsud sama struktuuriga kui allpool esitatud näites. Lisaks nendele käskudele on veel mitmeid teisi käske, mida saab kasutada MongoDB andmebaasi haldamiseks. Need on põhjalikult dokumenteeritud ja üksikasjalikult selgitatud MongoDB dokumentatsioonis.
> 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
})Eespool toodud näites on rida MongoDB andmebaasi käske, mis on kõik ühtmoodi üles ehitatud. Esiteks on „db”, mis viitab andmebaasile tervikuna, seejärel „students”, mis viitab konkreetsele kogule, kus vastavad toimingud tuleks teha. Kogu järel tuleb meetod (find, update, remove, insert), mida tuleks kasutada.
Konkreetset dokumenti saab otsida meetodiga find(). Kui jätate parameetri välja tühjaks, kuvatakse kõik valitud kogumikus olevad dokumendid. Eespool toodud näites otsib MongoDB kõik dokumendid, mille väljal „Name” on väärtus „Charlie”.
Meetodit updateOne() saab kasutada dokumendi väärtuste ülekirjutamiseks. Meetodil update() on kaks argumenti. Esimene argument on valikukriteeriumid ja teine on ülekirjutatav võti-väärtuse paar. Näites valitakse kõik õpilased nimega „Charlie”. Seejärel sisestatakse väärtus „2” väljale „Semester” õpilaste puhul, kelle nimi on Charlie.
Meetod deleteOne() võtab vastu ainult ühe argumendi. See on valikukriteerium, mis määrab, millised dokumendid andmebaasist eemaldada. Siin eemaldatakse andmebaasist kõik õpilased nimega Peter.
Meetod insertOne() võtab samuti vastu argumendi. Selle meetodi puhul on argumendiks dokumendi JSON-sisu, mida soovite lisada. Dokumentide lisamisel on oluline tagada, et igal MongoDB-kogumikus olev dokumendil oleks unikaalne 12-baidine kuueteistkümnendnumber. See number on dokumendi objekti ID. Kui seda dokumendi lisamisel ei määratud, genereerib MongoDB dokumendile automaatselt ID.
Millised on MongoDB eelised?
MongoDB struktuur pakub kasutajatele mitmeid eeliseid, eriti paindlikkuse ja skaleeritavuse osas. Dokumendipõhise andmesalvestuse üks peamisi eeliseid on see, et erinevalt relatsioonilistest andmebaasidest ei pea kõik kirjed olema sama atribuudiga. See võimaldab salvestada struktureerimata ja poolstruktureeritud andmeid. Lisaks on võimalik üksikuid dokumente ümber struktureerida (näiteks atribuudi/välja lisamise või kustutamisega) ilma, et oleks vaja ümber struktureerida teisi sama kogumiku dokumente. Kuna MongoDB-s salvestatakse dokumendid BSON-vormingus, pakuvad MongoDB-andmebaasid ka suurt ühilduvust paljude levinud JavaScript-platvormidega.
Lisaks struktureerimata andmete salvestamisele pakub MongoDB ka suurt horisontaalset skaleeritavust, rikkumata ACID-põhimõtteid (atomaarsus, järjepidevus, isoleeritus, püsivus). Jaotatud andmebaasides võib järjepidevuse tagamine olla sageli keeruline, kuna andmed salvestatakse erinevatele serveritele. Kui mitmesse dokumenti tehakse samaaegselt muudatusi, ei pruugi need muudatused kohe levida kõikidele andmebaasisüsteemi kasutatavatele serveritele. Kui päringuid on palju, võib see mõnikord viia andmete järjepidevuse kadumiseni. 2019. aastal välja tulnud MongoDB 4.2 versiooniga on nüüd võimalik teha muudatusi mitmesse dokumenti erinevatel serveritel, ohustamata järjepidevust ega kättesaadavust.
Vajate dokumendipõhist andmebaasi, mis kohandub teie veebirakenduse nõuetega? MongoDB on ideaalne lahendus!
Milleks saab MongoDB-d kasutada?
MongoDB on suurepärane valik veebiprojektidele, mis tuginevad äärmiselt suurtele struktureerimata andmekogumitele. Töötamine dokumendipõhise süsteemiga, millel puudub kindel skeem, on ideaalne lahendus mitmesuguste andmetüüpide töötlemiseks, mis nõuavad kiiret salvestamist ja töötlemist.
Andmebaasisüsteem võimaldab ka horisontaalset, peaaegu piiramatut skaleeritavust, kuna andmebaase saab hõlpsasti jaotada mitme serveri vahel, ilma et see mõjutaks funktsionaalsust. Lisaks võimaldab MongoDB hõlpsasti luua andmebaasi koopiaid ja teha need kättesaadavaks erinevatele serveritele, tagades andmete pikaajalise turvalisuse ja kättesaadavuse. Dokumendipõhine andmebaasiprogramm näitab muljetavaldavaid võimeid ka andmete koondamisel, olgu need siis ühest või mitmest allikast.
MongoDB sobib ideaalselt veebiprojektidele, millel on järgmised omadused:
- Skaalautuvus: veebiprojekti kasvades suureneb tavaliselt päringute arv, mis omakorda suurendab andmebaasi koormust.
- Kättesaadavus: veebirakendus peab olema katkematult kättesaadav isegi serveri rikke korral.
- Paindlikkus: teie projekt peaks võimaldama igal ajal dünaamilist kohandamist.
Ei ole kindel, milline andmebaasi mudel on teie veebiprojektile sobiv? Pole viga, sest te ei pea valima ainult ühte. On võimalik kombineerida erinevaid andmebaasi mudeleid ja mitme mudeli valimine võib olla teie projekti nõuetele kõige sobivam valik.