Kas yra MongoDB?
Dešimtmečius reliacinės duomenų bazės buvo populiariausias duomenų tvarkymo sprendimas. Tačiau dėl didėjančio duomenų kiekio ir įvairovės, būdingos šiuolaikinėms žiniatinklio programoms, dokumentais orientuotos duomenų bazės, pvz., Mongo DB, tapo rimtu konkurentu. Paaiškinsime, kas yra dokumentais orientuotas požiūris ir kokie yra šio duomenų tvarkymo modelio privalumai.
Kuo MongoDB skiriasi nuo kitų duomenų bazių?
Tradicinėse reliacinėse duomenų bazėse duomenys saugomi struktūrizuotoje lentelėje. MongoDB, kurios pavadinimas kilęs iš žodžio „humongous“ (milžiniškas), yra dokumentais orientuota duomenų bazės sistema. MongoDB duomenys sugrupuojami nestruktūrizuotu būdu į tai, ką duomenų bazės programa vadina kolekcijomis.
Kitas svarbus skirtumas yra tai, kad MongoDB nenaudoja SQL kaip užklausų kalbos, todėl ji priskiriama NoSQL duomenų bazių sistemoms. Vietoj to MongoDB naudoja JavaScript pagrįstą MongoDB užklausų kalbą (MQL) kaip užklausų kalbą. Todėl MongoDB įrašai saugomi BSON formatu, kuris yra sukurtas pagal JSON modelį. Tai reiškia, kad palaikomi visi JavaScript duomenų tipai, todėl MongoDB tapo idealiu pasirinkimu daugeliui JavaScript pagrįstų platformų.
Kita MongoDB duomenų bazių ypatybė yra jų gebėjimas horizontaliai keisti mastelį. Tai reiškia, kad duomenų bazės duomenys gali būti paskirstyti keliuose serveriuose, o ne saugomi vienoje centrinėje vietoje. Šis metodas leidžia padidinti duomenų prieinamumą ir pagerina bendrą duomenų bazės našumą. Horizontalus mastelio keitimas dažnai yra ekonomiškesnis nei vieno serverio atnaujinimas galingesne aparatine įranga (vertikalus mastelio keitimas).
Kaip veikia MongoDB?
Priešingai nei MySQL, MongoDB taiko visiškai kitokį duomenų saugojimo metodą ir veikia dokumentais orientuotu būdu. Vietoj duomenų saugojimo lentelės forma, kur kiekvienoje eilutėje yra vienodas skaičius laukelių, kuriuos reikia užpildyti reikšmėmis, MongoDB duomenų bazės saugo duomenis BSON dokumentuose, kurie neturi iš anksto nustatytos struktūros. Laukeliai gali skirtis tarp dokumentų, ir jie nebūtinai turi būti suderinti tarpusavyje. Dokumentai atlieka panašią funkciją kaip eilutės SQL lentelėje, o šiuose dokumentuose apibrėžti laukai atlieka stulpelių funkciją.
Dirbant su MongoDB duomenų bazėmis galima naudoti daugybę įrankių. Be patikimo MongoDB Shell, MongoDB duomenų bazes taip pat galima valdyti naudojant GUI MongoDB Compass. Tačiau šiame straipsnyje daugiausia dėmesio skirsime Shell komandoms.
Kadangi MQL yra pagrįsta JavaScript, jau yra daugybė iš anksto apibrėžtų funkcijų, kurias galite naudoti sudėtingiems užklausimams ir komandoms. Dauguma rašymo ir skaitymo komandų turi tokią pačią struktūrą kaip komandos, pateiktos žemiau esančiame pavyzdyje. Be šių komandų, yra daugybė kitų komandų, kurias galite naudoti savo MongoDB duomenų bazei valdyti. Jos yra išsamiai aprašytos ir paaiškintos MongoDB dokumentacijoje.
> 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
})Pateiktame pavyzdyje yra keletas MongoDB duomenų bazės komandų, kurios visos yra struktūriškai vienodos. Pirmiausia yra „db“, kuris nurodo visą duomenų bazę, tada „students“, kuris nurodo konkretų rinkinį, kuriame turi būti atliktos atitinkamos operacijos. Po rinkinio nurodomas metodas (ieškoti, atnaujinti, pašalinti, įterpti), kuris turi būti naudojamas.
Naudodami metodą find() galite ieškoti konkretaus dokumento. Jei parametro lauką paliksite tuščią, bus grąžinti visi pasirinktos kolekcijos dokumentai. Pateiktame pavyzdyje MongoDB ieško visų dokumentų, kurių lauke „Name“ yra reikšmė „Charlie“.
Metodą updateOne() galima naudoti dokumentų reikšmėms perrašyti. Metodas update() turi du argumentus. Pirmasis argumentas yra atrankos kriterijai, o antrasis – perrašytina raktų ir reikšmių pora. Pavyzdyje atrenkami visi studentai, kurių vardas yra „Charlie“. Tada studentų, kurių vardas yra Charlie, laukelyje „Semestras“ įrašoma reikšmė „2“.
Metodas deleteOne() priima tik vieną argumentą. Tai atrankos kriterijus, kuris nustato, kurie dokumentai turi būti pašalinti iš duomenų bazės. Šiuo atveju visi studentai, kurių vardas yra Peter, yra pašalinami iš duomenų bazės.
Metodas insertOne() taip pat priima argumentą. Šiuo metodu argumentas yra dokumento, kurį norite pridėti, JSON turinys. Įterpiant dokumentus, labai svarbu užtikrinti, kad kiekvienas dokumentas MongoDB kolekcijoje turėtų unikalų 12 baitų šešioliktainį skaičių. Šis skaičius yra dokumento objekto ID. Jei įterpiant dokumentą jis nenurodomas, MongoDB automatiškai sugeneruos dokumento ID.
Kokie yra MongoDB privalumai?
MongoDB struktūra vartotojams siūlo keletą privalumų, ypač lankstumo ir mastelio atžvilgiu. Vienas iš pagrindinių dokumentais pagrįsto duomenų saugojimo privalumų yra tai, kad, priešingai nei reliacinėse duomenų bazėse, ne visi įrašai turi turėti tuos pačius atributus. Tai leidžia saugoti nestruktūruotus ir pusiau struktūruotus duomenis. Be to, atskiri dokumentai gali būti pertvarkomi (pavyzdžiui, pridedant ar ištrinant atributą/laukelį) be būtinybės pertvarkyti kitus toje pačioje kolekcijoje esančius dokumentus. Kadangi MongoDB dokumentai saugomi BSON formatu, MongoDB duomenų bazės taip pat užtikrina aukštą suderinamumo lygį su daugeliu dažniausiai naudojamų JavaScript platformų.
Be nestruktūruotų duomenų saugojimo, MongoDB taip pat siūlo aukštą horizontalaus mastelio lankstumą, nepažeidžiant ACID (atomicity, consistency, isolation, durability) principų. Pasiskirstytose duomenų bazėse užtikrinti nuoseklumą dažnai gali būti sudėtinga, nes duomenys saugomi skirtinguose serveriuose. Kai pakeitimai atliekami keliuose dokumentuose vienu metu, šie pakeitimai gali būti ne iš karto paskirstyti visiems serveriams, kuriuos naudoja duomenų bazės sistema. Jei užklausų skaičius yra didelis, tai kartais gali sukelti duomenų nuoseklumo trūkumą. Tačiau 2019 m. išleidus MongoDB 4.2, dabar galima atlikti pakeitimus keliuose dokumentuose skirtinguose serveriuose, neprarandant nuoseklumo ar prieinamumo.
Reikia dokumentais orientuotos duomenų bazės, kuri prisitaiko prie jūsų internetinės programos reikalavimų? MongoDB yra puikus sprendimas!
Kam gali būti naudojama MongoDB?
MongoDB yra puikus pasirinkimas internetiniams projektams, kurie remiasi itin dideliais nestruktūrizuotais duomenų rinkiniais. Darbas su dokumentais pagrįsta sistema, neturinčia fiksuotos schemos, yra idealus sprendimas tvarkant įvairius duomenų tipus, kuriems reikalingas greitas saugojimas ir apdorojimas.
Duomenų bazės sistema taip pat leidžia horizontaliai beveik neribotai keisti mastelį, nes duomenų bazės gali būti lengvai paskirstytos keliuose serveriuose nepakenkiant jų funkcionalumui. Be to, naudodami MongoDB galite lengvai kurti duomenų bazės kopijas ir jas padaryti prieinamas įvairiems serveriams, užtikrindami ilgalaikį duomenų saugumą ir prieinamumą. Dokumentais orientuota duomenų bazės programa taip pat demonstruoja įspūdingas galimybes, kai reikia agreguoti duomenis iš vieno ar kelių šaltinių.
MongoDB idealiai tinka internetiniams projektams, kurie pasižymi šiomis savybėmis:
- Mastelio keitimas: augant jūsų interneto projektui, paprastai didėja užklausų skaičius, todėl didėja reikalavimai duomenų bazei.
- Prieinamumas: jums reikia nepertraukiamo prieinamumo prie savo internetinės programos, net ir serverio gedimo atveju.
- Lankstumas: jūsų projektas turėtų leisti bet kuriuo metu dinamiškai prisitaikyti.
Nežinote, kuris duomenų bazės modelis yra tinkamiausias jūsų internetiniam projektui? Nieko baisaus, nes jums nereikia rinktis tik vieno. Galima derinti skirtingų tipų duomenų bazės modelius, o pasirinkimas daugiau nei vieno modelio gali būti tinkamiausias sprendimas jūsų projekto reikalavimams.