De­šimt­me­čius re­lia­ci­nės duomenų bazės buvo po­pu­lia­riau­sias duomenų tvarkymo spren­di­mas. Tačiau dėl di­dė­jan­čio duomenų kiekio ir įvairovės, būdingos šiuo­lai­ki­nėms ži­nia­tink­lio prog­ra­moms, do­ku­men­tais ori­en­tuo­tos duomenų bazės, pvz., Mongo DB, tapo rimtu kon­ku­ren­tu. Pa­aiš­kin­si­me, kas yra do­ku­men­tais ori­en­tuo­tas požiūris ir kokie yra šio duomenų tvarkymo modelio pri­va­lu­mai.

Kuo MongoDB skiriasi nuo kitų duomenų bazių?

Tra­di­ci­nė­se re­lia­ci­nė­se duomenų bazėse duomenys saugomi struk­tū­ri­zuo­to­je lentelėje. MongoDB, kurios pa­va­di­ni­mas kilęs iš žodžio „humongous“ (mil­ži­niš­kas), yra do­ku­men­tais ori­en­tuo­ta duomenų bazės sistema. MongoDB duomenys su­gru­puo­ja­mi ne­struk­tū­ri­zuo­tu būdu į tai, ką duomenų bazės programa vadina ko­lek­ci­jo­mis.

Kitas svarbus skirtumas yra tai, kad MongoDB nenaudoja SQL kaip užklausų kalbos, todėl ji pri­ski­ria­ma NoSQL duomenų bazių sistemoms. Vietoj to MongoDB naudoja Ja­vaSc­ript 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 Ja­vaSc­ript duomenų tipai, todėl MongoDB tapo idealiu pa­si­rin­ki­mu daugeliui Ja­vaSc­ript pagrįstų platformų.

Kita MongoDB duomenų bazių ypatybė yra jų gebėjimas ho­ri­zon­ta­liai keisti mastelį. Tai reiškia, kad duomenų bazės duomenys gali būti pa­skirs­ty­ti keliuose ser­ve­riuo­se, o ne saugomi vienoje cent­ri­nė­je vietoje. Šis metodas leidžia padidinti duomenų pri­ei­na­mu­mą ir pagerina bendrą duomenų bazės našumą. Ho­ri­zon­ta­lus mastelio keitimas dažnai yra eko­no­miš­kes­nis nei vieno serverio at­nau­ji­ni­mas ga­lin­ges­ne aparatine įranga (ver­ti­ka­lus mastelio keitimas).

Kaip veikia MongoDB?

Prie­šin­gai nei MySQL, MongoDB taiko visiškai kitokį duomenų saugojimo metodą ir veikia do­ku­men­tais ori­en­tuo­tu būdu. Vietoj duomenų saugojimo lentelės forma, kur kiek­vie­no­je eilutėje yra vienodas skaičius laukelių, kuriuos reikia užpildyti reikš­mė­mis, MongoDB duomenų bazės saugo duomenis BSON do­ku­men­tuo­se, kurie neturi iš anksto nu­sta­ty­tos struk­tū­ros. Laukeliai gali skirtis tarp dokumentų, ir jie nebūtinai turi būti suderinti tar­pu­sa­vy­je. Do­ku­men­tai atlieka panašią funkciją kaip eilutės SQL lentelėje, o šiuose do­ku­men­tuo­se 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 straips­ny­je dau­giau­sia dėmesio skirsime Shell komandoms.

Kadangi MQL yra pagrįsta Ja­vaSc­ript, jau yra daugybė iš anksto apibrėžtų funkcijų, kurias galite naudoti su­dė­tin­giems už­klau­si­mams 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 pa­aiš­kin­tos MongoDB do­ku­men­ta­ci­jo­je.

> 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
})

Pa­teik­ta­me pavyzdyje yra keletas MongoDB duomenų bazės komandų, kurios visos yra struk­tū­riš­kai vienodos. Pir­miau­sia yra „db“, kuris nurodo visą duomenų bazę, tada „students“, kuris nurodo konkretų rinkinį, kuriame turi būti atliktos ati­tin­ka­mos ope­ra­ci­jos. Po rinkinio nurodomas metodas (ieškoti, at­nau­jin­ti, pašalinti, įterpti), kuris turi būti nau­do­ja­mas.

Naudodami metodą find() galite ieškoti konk­re­taus dokumento. Jei parametro lauką paliksite tuščią, bus grąžinti visi pa­si­rink­tos ko­lek­ci­jos do­ku­men­tai. Pa­teik­ta­me 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 ar­gu­men­tus. Pirmasis ar­gu­men­tas yra atrankos kri­te­ri­jai, o antrasis – per­ra­šy­ti­na 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 kri­te­ri­jus, kuris nustato, kurie do­ku­men­tai turi būti pašalinti iš duomenų bazės. Šiuo atveju visi studentai, kurių vardas yra Peter, yra pa­ša­li­na­mi iš duomenų bazės.

Metodas insertOne() taip pat priima argumentą. Šiuo metodu ar­gu­men­tas yra dokumento, kurį norite pridėti, JSON turinys. Įterpiant do­ku­men­tus, labai svarbu už­tik­rin­ti, kad kiek­vie­nas do­ku­men­tas MongoDB ko­lek­ci­jo­je turėtų unikalų 12 baitų še­šio­lik­tai­nį skaičių. Šis skaičius yra dokumento objekto ID. Jei įterpiant dokumentą jis ne­nu­ro­do­mas, MongoDB au­to­ma­tiš­kai su­ge­ne­ruos dokumento ID.

Kokie yra MongoDB pri­va­lu­mai?

MongoDB struktūra var­to­to­jams siūlo keletą privalumų, ypač lankstumo ir mastelio atžvilgiu. Vienas iš pag­rin­di­nių do­ku­men­tais pagrįsto duomenų saugojimo privalumų yra tai, kad, prie­šin­gai nei re­lia­ci­nė­se duomenų bazėse, ne visi įrašai turi turėti tuos pačius atributus. Tai leidžia saugoti ne­struk­tū­ruo­tus ir pusiau struk­tū­ruo­tus duomenis. Be to, atskiri do­ku­men­tai gali būti per­tvar­ko­mi (pa­vyz­džiui, pridedant ar ištrinant atributą/laukelį) be būtinybės per­tvar­ky­ti kitus toje pačioje ko­lek­ci­jo­je esančius do­ku­men­tus. Kadangi MongoDB do­ku­men­tai saugomi BSON formatu, MongoDB duomenų bazės taip pat užtikrina aukštą su­de­ri­na­mu­mo lygį su daugeliu daž­niau­siai naudojamų Ja­vaSc­ript platformų.

Be ne­struk­tū­ruo­tų duomenų saugojimo, MongoDB taip pat siūlo aukštą ho­ri­zon­ta­laus mastelio lankstumą, ne­pa­žei­džiant ACID (atomicity, con­sisten­cy, isolation, du­ra­bi­li­ty) principų. Pa­si­skirs­ty­to­se duomenų bazėse už­tik­rin­ti nuo­sek­lu­mą dažnai gali būti sudėtinga, nes duomenys saugomi skir­tin­guo­se ser­ve­riuo­se. Kai pa­kei­ti­mai atliekami keliuose do­ku­men­tuo­se vienu metu, šie pa­kei­ti­mai gali būti ne iš karto pa­skirs­ty­ti visiems ser­ve­riams, kuriuos naudoja duomenų bazės sistema. Jei užklausų skaičius yra didelis, tai kartais gali sukelti duomenų nuo­sek­lu­mo trūkumą. Tačiau 2019 m. išleidus MongoDB 4.2, dabar galima atlikti pa­kei­ti­mus keliuose do­ku­men­tuo­se skir­tin­guo­se ser­ve­riuo­se, ne­pra­ran­dant nuo­sek­lu­mo ar pri­ei­na­mu­mo.

Tip

Reikia do­ku­men­tais ori­en­tuo­tos duomenų bazės, kuri pri­si­tai­ko prie jūsų in­ter­ne­ti­nės programos rei­ka­la­vi­mų? MongoDB yra puikus spren­di­mas!

Kam gali būti naudojama MongoDB?

MongoDB yra puikus pa­si­rin­ki­mas in­ter­ne­ti­niams pro­jek­tams, kurie remiasi itin dideliais ne­struk­tū­ri­zuo­tais duomenų rin­ki­niais. Darbas su do­ku­men­tais pagrįsta sistema, ne­tu­rin­čia fiksuotos schemos, yra idealus spren­di­mas tvarkant įvairius duomenų tipus, kuriems rei­ka­lin­gas greitas sau­go­ji­mas ir ap­do­ro­ji­mas.

Duomenų bazės sistema taip pat leidžia ho­ri­zon­ta­liai beveik neribotai keisti mastelį, nes duomenų bazės gali būti lengvai pa­skirs­ty­tos keliuose ser­ve­riuo­se ne­pa­ken­kiant jų funk­cio­na­lu­mui. Be to, naudodami MongoDB galite lengvai kurti duomenų bazės kopijas ir jas padaryti pri­ei­na­mas įvairiems ser­ve­riams, už­tik­rin­da­mi ilgalaikį duomenų saugumą ir pri­ei­na­mu­mą. Do­ku­men­tais ori­en­tuo­ta duomenų bazės programa taip pat de­monst­ruo­ja įspū­din­gas galimybes, kai reikia agreguoti duomenis iš vieno ar kelių šaltinių.

MongoDB idealiai tinka in­ter­ne­ti­niams pro­jek­tams, kurie pasižymi šiomis savybėmis:

  • Mastelio keitimas: augant jūsų interneto projektui, paprastai didėja užklausų skaičius, todėl didėja rei­ka­la­vi­mai duomenų bazei.
  • Pri­ei­na­mu­mas: jums reikia ne­per­trau­kia­mo pri­ei­na­mu­mo prie savo in­ter­ne­ti­nės programos, net ir serverio gedimo atveju.
  • Lanks­tu­mas: jūsų projektas turėtų leisti bet kuriuo metu di­na­miš­kai pri­si­tai­ky­ti.

Nežinote, kuris duomenų bazės modelis yra tin­ka­miau­sias jūsų in­ter­ne­ti­niam projektui? Nieko baisaus, nes jums nereikia rinktis tik vieno. Galima derinti skirtingų tipų duomenų bazės modelius, o pa­si­rin­ki­mas daugiau nei vieno modelio gali būti tin­ka­miau­sias spren­di­mas jūsų projekto rei­ka­la­vi­mams.

Go to Main Menu